fire_point/src/main/java/com/xkrs/controller/SysUserController.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);
}
}
}