SysProfileController.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. package com.ruoyi.system.controller;
  2. import com.ruoyi.common.core.constant.UserConstants;
  3. import com.ruoyi.common.core.domain.R;
  4. import com.ruoyi.common.core.utils.PassUtil;
  5. import com.ruoyi.common.core.utils.StringUtils;
  6. import com.ruoyi.common.core.web.controller.BaseController;
  7. import com.ruoyi.common.core.web.domain.AjaxResult;
  8. import com.ruoyi.common.log.annotation.Log;
  9. import com.ruoyi.common.log.enums.BusinessType;
  10. import com.ruoyi.common.security.service.TokenService;
  11. import com.ruoyi.common.security.utils.SecurityUtils;
  12. import com.ruoyi.system.api.RemoteFileService;
  13. import com.ruoyi.system.api.domain.SysFile;
  14. import com.ruoyi.system.api.domain.SysUser;
  15. import com.ruoyi.system.api.model.LoginUser;
  16. import com.ruoyi.system.domain.dto.AppResetPwd;
  17. import com.ruoyi.system.service.ISysConfigService;
  18. import com.ruoyi.system.service.ISysDeptService;
  19. import com.ruoyi.system.service.ISysUserService;
  20. import io.swagger.annotations.Api;
  21. import io.swagger.annotations.ApiOperation;
  22. import org.springframework.web.bind.annotation.*;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import javax.annotation.Resource;
  25. import java.util.Arrays;
  26. /**
  27. * 个人信息 业务处理
  28. *
  29. * @author ruoyi
  30. */
  31. @Api(tags = "个人信息控制器")
  32. @RestController
  33. @RequestMapping("/user/profile")
  34. public class SysProfileController extends BaseController {
  35. private final ISysUserService userService;
  36. private final TokenService tokenService;
  37. private final RemoteFileService remoteFileService;
  38. @Resource
  39. private ISysDeptService deptService;
  40. @Resource
  41. private ISysConfigService configService;
  42. public SysProfileController(ISysUserService userService, TokenService tokenService, RemoteFileService remoteFileService) {
  43. this.userService = userService;
  44. this.tokenService = tokenService;
  45. this.remoteFileService = remoteFileService;
  46. }
  47. /**
  48. * 获取个人信息
  49. */
  50. @ApiOperation(value = "获取用户个人信息", notes = "获取用户个人信息")
  51. @GetMapping
  52. public AjaxResult profile() {
  53. Long[] deptIds = {314391L, 314392L, 314393L, 314394L};
  54. String username = SecurityUtils.getUsername();
  55. Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
  56. SysUser user = userService.selectUserByUserName(username);
  57. /**图片前缀**/
  58. String uri = configService.selectConfigByKey("fileUrl");
  59. if (StringUtils.isNotEmpty(user.getAvatar())) {
  60. user.setAvatar(uri + user.getAvatar());
  61. }
  62. AjaxResult ajax = AjaxResult.success(user);
  63. ajax.put("roleGroup", userService.selectUserRoleGroup(username));
  64. ajax.put("postGroup", userService.selectUserPostGroup(username));
  65. boolean isItSelf = Arrays.asList(deptIds).contains(deptId);
  66. if (isItSelf) {
  67. ajax.put("mapDeptId", deptId);
  68. } else if (deptService.thisDeptIdIsParentIdChild(deptId, 314391L) > 0) {//敖勒召其镇
  69. ajax.put("mapDeptId", 314391L);
  70. } else if (deptService.thisDeptIdIsParentIdChild(deptId, 314392L) > 0) {//城川镇
  71. ajax.put("mapDeptId", 314392L);
  72. } else if (deptService.thisDeptIdIsParentIdChild(deptId, 314393L) > 0) {//昂素镇
  73. ajax.put("mapDeptId", 314393L);
  74. } else if (deptService.thisDeptIdIsParentIdChild(deptId, 314394L) > 0) {//上海庙镇
  75. ajax.put("mapDeptId", 314394L);
  76. } {//鄂托克前旗
  77. ajax.put("mapDeptId", 365L);
  78. }
  79. return ajax;
  80. }
  81. /**
  82. * 修改用户
  83. */
  84. @ApiOperation(value = "修改用户个人信息", notes = "修改用户个人信息")
  85. @Log(title = "个人信息", businessType = BusinessType.UPDATE)
  86. @PutMapping
  87. public AjaxResult updateProfile(@RequestBody SysUser user) {
  88. //截取头像
  89. if (StringUtils.isNotEmpty(user.getAvatar())) {
  90. int index = user.getAvatar().lastIndexOf("group");
  91. if (index != -1) {
  92. user.setAvatar(user.getAvatar().substring(index));
  93. }
  94. }
  95. LoginUser loginUser = SecurityUtils.getLoginUser();
  96. SysUser sysUser = loginUser.getSysUser();
  97. user.setUserName(sysUser.getUserName());
  98. if (StringUtils.isNotEmpty(user.getPhonenumber())
  99. && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
  100. return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
  101. } else if (StringUtils.isNotEmpty(user.getEmail())
  102. && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
  103. return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
  104. }
  105. user.setUserId(sysUser.getUserId());
  106. user.setPassword(null);
  107. if (userService.updateUserProfile(user) > 0) {
  108. // 更新缓存用户信息
  109. loginUser.getSysUser().setNickName(user.getNickName());
  110. loginUser.getSysUser().setPhonenumber(user.getPhonenumber());
  111. loginUser.getSysUser().setEmail(user.getEmail());
  112. loginUser.getSysUser().setSex(user.getSex());
  113. tokenService.setLoginUser(loginUser);
  114. return AjaxResult.success();
  115. }
  116. return AjaxResult.error("修改个人信息异常,请联系管理员");
  117. }
  118. /**
  119. * 重置密码
  120. */
  121. @ApiOperation(value = "重置密码", notes = "重置密码")
  122. @Log(title = "个人信息", businessType = BusinessType.UPDATE)
  123. @PutMapping("/updatePwd")
  124. public AjaxResult updatePwd(String oldPassword, String newPassword) {
  125. String username = SecurityUtils.getUsername();
  126. SysUser user = userService.selectUserByUserName(username);
  127. String password = user.getPassword();
  128. if (!SecurityUtils.matchesPassword(oldPassword, password)) {
  129. return AjaxResult.error("修改密码失败,旧密码错误");
  130. }
  131. if (SecurityUtils.matchesPassword(newPassword, password)) {
  132. return AjaxResult.error("新密码不能与旧密码相同");
  133. }
  134. if (PassUtil.isStringPwd(newPassword).equals("0")) {
  135. return AjaxResult.error("密码必须大于等于8位,包含特殊字符,数字,大小写字母");
  136. }
  137. if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0) {
  138. // 更新缓存用户密码
  139. LoginUser loginUser = SecurityUtils.getLoginUser();
  140. loginUser.getSysUser().setPassword(SecurityUtils.encryptPassword(newPassword));
  141. tokenService.setLoginUser(loginUser);
  142. return AjaxResult.success();
  143. }
  144. return AjaxResult.error("修改密码异常,请联系管理员");
  145. }
  146. /**
  147. * 头像上传
  148. */
  149. @ApiOperation(value = "头像上传", notes = "头像上传")
  150. @Log(title = "用户头像", businessType = BusinessType.UPDATE)
  151. @PostMapping("/avatar")
  152. public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) {
  153. if (!file.isEmpty()) {
  154. LoginUser loginUser = SecurityUtils.getLoginUser();
  155. R<SysFile> fileResult = remoteFileService.upload(file);
  156. if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) {
  157. return AjaxResult.error("文件服务异常,请联系管理员");
  158. }
  159. String url = fileResult.getData().getUrl();
  160. if (userService.updateUserAvatar(loginUser.getUsername(), url)) {
  161. AjaxResult ajax = AjaxResult.success();
  162. /**图片前缀**/
  163. String uri = configService.selectConfigByKey("fileUrl");
  164. ajax.put("imgUrl", uri + url);
  165. // 更新缓存用户头像
  166. loginUser.getSysUser().setAvatar(url);
  167. tokenService.setLoginUser(loginUser);
  168. return ajax;
  169. }
  170. }
  171. return AjaxResult.error("上传图片异常,请联系管理员");
  172. }
  173. /**
  174. * app重置密码
  175. */
  176. @ApiOperation(value = "app重置密码", notes = "app重置密码")
  177. @Log(title = "个人信息", businessType = BusinessType.UPDATE)
  178. @PutMapping("/updateAppPwd")
  179. public AjaxResult updateAppPwd(@RequestBody AppResetPwd appResetPwd) {
  180. SysUser user = userService.selectUserByUserName(appResetPwd.getUn());
  181. String password = user.getPassword();
  182. if (!SecurityUtils.matchesPassword(appResetPwd.getOp(), password)) {
  183. return AjaxResult.error("修改密码失败,旧密码错误");
  184. }
  185. if (SecurityUtils.matchesPassword(appResetPwd.getNp(), password)) {
  186. return AjaxResult.error("新密码不能与旧密码相同");
  187. }
  188. if (PassUtil.isStringPwd(appResetPwd.getNp()).equals("0")) {
  189. return AjaxResult.error("密码必须大于等于8位,包含特殊字符,数字,大小写字母");
  190. }
  191. if (userService.resetUserPwd(appResetPwd.getUn(), SecurityUtils.encryptPassword(appResetPwd.getNp())) > 0) {
  192. // 更新缓存用户密码
  193. LoginUser loginUser = SecurityUtils.getLoginUser();
  194. loginUser.getSysUser().setPassword(SecurityUtils.encryptPassword(appResetPwd.getNp()));
  195. tokenService.setLoginUser(loginUser);
  196. return AjaxResult.success();
  197. }
  198. return AjaxResult.error("修改密码异常,请联系管理员");
  199. }
  200. }