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 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 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); } } }