288 lines
11 KiB
Java
288 lines
11 KiB
Java
package com.xkrs.controller;
|
|
|
|
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
|
|
import com.aliyuncs.exceptions.ClientException;
|
|
import com.xkrs.common.encapsulation.PromptMessageEnum;
|
|
import com.xkrs.common.tool.TokenUtil;
|
|
import com.xkrs.dao.SysUserDao;
|
|
import com.xkrs.model.entity.SysUserEntity;
|
|
import com.xkrs.model.qo.SysUserQo;
|
|
import com.xkrs.model.validation.SysUserQoInsert;
|
|
import com.xkrs.model.validation.SysUserQoUpdate;
|
|
import com.xkrs.model.vo.SysUserVo;
|
|
import com.xkrs.service.RedisService;
|
|
import com.xkrs.service.SysUserService;
|
|
import com.xkrs.utils.RandomUtil;
|
|
import org.springframework.context.i18n.LocaleContextHolder;
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
import org.springframework.validation.BindingResult;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
import java.util.Map;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationErrorList;
|
|
import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
|
import static com.xkrs.utils.AliYunSmsUtils.sendSms;
|
|
|
|
/**
|
|
* 系统用户Controller
|
|
* @author tajocehn
|
|
*/
|
|
@RestController
|
|
@RequestMapping(value = "/api/user")
|
|
public class SysUserController {
|
|
|
|
@Resource
|
|
private SysUserService sysUserService;
|
|
|
|
@Resource
|
|
private SysUserDao sysUserDao;
|
|
|
|
@Resource
|
|
private RedisService redisService;
|
|
|
|
/**
|
|
* 登录用户Token验证
|
|
* @return
|
|
*/
|
|
@RequestMapping(value = "/logged/check",method = RequestMethod.POST)
|
|
public String loginUserTokenCheck(){
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
|
|
}
|
|
|
|
@RequestMapping(value = "/check/duplicate", method = RequestMethod.POST)
|
|
public String checkDuplicate(@RequestParam(value="userName", required=false) String userName){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
// 验证用户名是否重复
|
|
if(!sysUserService.checkUserName(userName)){
|
|
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"",locale);
|
|
}
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"OK",locale);
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/add", method = RequestMethod.POST)
|
|
public String addUser(@Validated({SysUserQoInsert.class}) @RequestBody SysUserQo userQo,
|
|
BindingResult bindingResult){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
// 验证数据合法性
|
|
if(bindingResult.hasErrors()){
|
|
return outputEncapsulationErrorList(bindingResult.getFieldErrors(),locale);
|
|
}
|
|
// 验证用户名是否重复
|
|
if(!sysUserService.checkUserName(userQo.getUserName())){
|
|
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"该账号已经注册,请勿重复注册",locale);
|
|
}
|
|
// 添加新用户
|
|
return sysUserService.addUser(userQo);
|
|
}
|
|
|
|
|
|
/*@RequestMapping(value="/get/all", method = RequestMethod.GET)
|
|
@PreAuthorize("hasAnyAuthority('auth_system_manager','auth_administor')")
|
|
public String getAllSysUser(){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
Iterable<SysUserVo> sysUserDtoList = sysUserService.getAllSysUser();
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,sysUserDtoList,locale);
|
|
}*/
|
|
|
|
/**
|
|
* 软删除指定id的普通用户
|
|
* @param id
|
|
* @return
|
|
*/
|
|
@RequestMapping(value = "/general/delete", method = RequestMethod.DELETE)
|
|
@PreAuthorize("hasAnyAuthority('auth_system_manager','auth_general_user')")
|
|
public String deleteCustomUser(@RequestParam(value="userId", required=false) int id){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
// 验证数据合法性
|
|
int res = sysUserService.softDeleteGeneralUser(id);
|
|
if(res==1){
|
|
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"",locale);
|
|
} else {
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value = "/update", method = RequestMethod.POST)
|
|
@PreAuthorize("hasAnyAuthority('auth_system_manager','auth_administor')")
|
|
public String updateUser(@Validated({SysUserQoUpdate.class}) @RequestBody SysUserQo userQo,
|
|
BindingResult bindingResult){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
// 验证数据合法性
|
|
if(bindingResult.hasErrors()){
|
|
return outputEncapsulationErrorList(bindingResult.getFieldErrors(),locale);
|
|
}
|
|
// 修改用户
|
|
sysUserService.updateSysUser(userQo);
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"OK",locale);
|
|
}
|
|
|
|
/**
|
|
* 判断用户名是否存在
|
|
* @param userName
|
|
* @return
|
|
*/
|
|
@GetMapping("/booleanUserName")
|
|
public String booleanUserName(@RequestParam("userName") String userName){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
Map map = new HashMap(3);
|
|
SysUserEntity sysUserEntity = sysUserDao.selectByUserName(userName);
|
|
if(sysUserEntity == null){
|
|
map.put("status",0);
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,map,locale);
|
|
}else {
|
|
map.put("status",1);
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,map,locale);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 查看用户信息
|
|
* @return
|
|
*/
|
|
@GetMapping("/selectAllUser")
|
|
@PreAuthorize("hasAnyAuthority('auth_administor')")
|
|
public String selectAllUser(@RequestHeader(value="Authorization") String token){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
// 验证token
|
|
String tokenUserName = TokenUtil.getTokenUserName(token);
|
|
SysUserEntity sysUserEntity = sysUserDao.selectByUserName(tokenUserName);
|
|
if(sysUserEntity == null){
|
|
return outputEncapsulationObject(PromptMessageEnum.USER_LOGIN_ERROR,"您还没有注册登录,请先注册登录",locale);
|
|
}
|
|
List<SysUserVo> sysUserVos = sysUserService.selectAllUser();
|
|
if(sysUserVos == null || sysUserVos.size() == 0){
|
|
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时还没有任何用户数据",locale);
|
|
}
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,sysUserVos,locale);
|
|
}
|
|
|
|
/**
|
|
* 管理员进行启用禁用的操作
|
|
* @param map
|
|
* @param token
|
|
* @return
|
|
*/
|
|
@PostMapping("/operateActiveFlag")
|
|
@PreAuthorize("hasAnyAuthority('auth_administor')")
|
|
public String operateActiveFlag(@RequestBody Map map,@RequestHeader(value="Authorization") String token){
|
|
Integer userId = (Integer) map.get("userId");
|
|
String keepType = (String) map.get("keepType");
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
// 验证token
|
|
String tokenUserName = TokenUtil.getTokenUserName(token);
|
|
SysUserEntity sysUserEntity = sysUserDao.selectByUserName(tokenUserName);
|
|
if(sysUserEntity == null){
|
|
return outputEncapsulationObject(PromptMessageEnum.USER_LOGIN_ERROR,"您还没有注册登录,请先注册登录",locale);
|
|
}
|
|
// 如果keepType等于1进行启用操作
|
|
if("1".equals(keepType)){
|
|
sysUserService.updateEnable(userId);
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"启用成功",locale);
|
|
}else {
|
|
sysUserService.updateDisable(userId);
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"禁用成功",locale);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 用户修改密码
|
|
* @param map
|
|
* @param token
|
|
* @return
|
|
*/
|
|
@PostMapping("/updatePassword")
|
|
@PreAuthorize("hasAnyAuthority('auth_administor','auth_general_user')")
|
|
public String updatePassword(@RequestBody Map map,@RequestHeader(value="Authorization") String token){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
String oldPassword = (String) map.get("oldPassword");
|
|
String newPassword = (String) map.get("newPassword");
|
|
String confirmPassword = (String) map.get("confirmPassword");
|
|
// 验证token
|
|
String tokenUserName = TokenUtil.getTokenUserName(token);
|
|
SysUserEntity sysUserEntity = sysUserDao.selectByUserName(tokenUserName);
|
|
if(sysUserEntity == null){
|
|
return outputEncapsulationObject(PromptMessageEnum.USER_LOGIN_ERROR,"您还没有注册登录,请先注册登录",locale);
|
|
}
|
|
return sysUserService.updatePassword(oldPassword,newPassword,confirmPassword,sysUserEntity);
|
|
}
|
|
|
|
/**
|
|
* 管理员修改用户的密码
|
|
* @param map
|
|
* @param token
|
|
* @return
|
|
*/
|
|
@PostMapping("/adminUpdatePassword")
|
|
@PreAuthorize("hasAnyAuthority('auth_administor')")
|
|
public String adminUpdatePassword(@RequestBody Map map,@RequestHeader(value="Authorization") String token){
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
// 要修改的用户的id
|
|
Integer userId = (Integer) map.get("userId");
|
|
String newPassword = (String) map.get("newPassword");
|
|
String confirmPassword = (String) map.get("confirmPassword");
|
|
// 验证token
|
|
String tokenUserName = TokenUtil.getTokenUserName(token);
|
|
SysUserEntity sysUserEntity = sysUserDao.selectByUserName(tokenUserName);
|
|
if(sysUserEntity == null){
|
|
return outputEncapsulationObject(PromptMessageEnum.USER_LOGIN_ERROR,"您还没有注册登录,请先注册登录",locale);
|
|
}
|
|
return sysUserService.adminUpdatePassword(userId,newPassword,confirmPassword);
|
|
}
|
|
|
|
/**
|
|
* 发送手机号
|
|
* @param phone
|
|
* @return
|
|
* @throws ClientException
|
|
*/
|
|
@GetMapping("/verificationCode")
|
|
public String verificationCode(@RequestParam("phone") String phone) throws ClientException {
|
|
// 获取区域信息
|
|
Locale locale = LocaleContextHolder.getLocale();
|
|
String optCode = String.valueOf(RandomUtil.returnCode());
|
|
redisService.set(phone,optCode,10, TimeUnit.MINUTES);
|
|
SendSmsResponse response =sendSms(phone,optCode);
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
|
|
}
|
|
|
|
/**
|
|
* 更改账号过期时间
|
|
* @return
|
|
*/
|
|
@PostMapping("/updateExpireDate")
|
|
public String updateExpireDate(@RequestBody Map map){
|
|
Integer userId = (Integer) map.get("userId");
|
|
Integer timeNum = (Integer) map.get("timeNum");
|
|
String keepType = (String) map.get("keepType");
|
|
if("1".equals(keepType)){
|
|
return sysUserService.updateExpireDateDay(userId, timeNum);
|
|
}else if("2".equals(keepType)){
|
|
return sysUserService.updateExpireDateMonth(userId,timeNum);
|
|
}else if("3".equals(keepType)){
|
|
return sysUserService.updateExpireDateYear(userId,timeNum);
|
|
}else {
|
|
return sysUserService.updatePermanent(userId);
|
|
}
|
|
}
|
|
|
|
}
|