SysProfileController.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.yanfan.web.controller.system;
  2. import com.yanfan.common.annotation.Log;
  3. import com.yanfan.common.config.RuoYiConfig;
  4. import com.yanfan.common.constant.UserConstants;
  5. import com.yanfan.common.core.controller.BaseController;
  6. import com.yanfan.common.core.domain.AjaxResult;
  7. import com.yanfan.common.core.domain.entity.SysUser;
  8. import com.yanfan.common.core.domain.model.LoginUser;
  9. import com.yanfan.common.enums.BusinessType;
  10. import com.yanfan.common.enums.SocialPlatformType;
  11. import com.yanfan.common.utils.MessageUtils;
  12. import com.yanfan.common.utils.SecurityUtils;
  13. import com.yanfan.common.utils.StringUtils;
  14. import com.yanfan.common.utils.file.FileUploadUtils;
  15. import com.yanfan.common.utils.file.MimeTypeUtils;
  16. import com.yanfan.framework.web.service.TokenService;
  17. import com.yanfan.iot.domain.UserSocialProfile;
  18. import com.yanfan.iot.service.IUserSocialProfileService;
  19. import com.yanfan.system.service.ISysUserService;
  20. import io.swagger.annotations.Api;
  21. import io.swagger.annotations.ApiOperation;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.security.access.prepost.PreAuthorize;
  24. import org.springframework.web.bind.annotation.*;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import java.util.List;
  27. /**
  28. * 个人信息 业务处理
  29. *
  30. * @author ruoyi
  31. */
  32. @Api(tags = "个人中心")
  33. @RestController
  34. @RequestMapping("/system/user/profile")
  35. public class SysProfileController extends BaseController {
  36. @Autowired
  37. private ISysUserService userService;
  38. @Autowired
  39. private TokenService tokenService;
  40. @Autowired
  41. private IUserSocialProfileService iUserSocialProfileService;
  42. /**
  43. * 个人信息
  44. */
  45. @ApiOperation("获取个人信息")
  46. @GetMapping
  47. public AjaxResult profile() {
  48. LoginUser loginUser = getLoginUser();
  49. SysUser user = loginUser.getUser();
  50. AjaxResult ajax = AjaxResult.success(user);
  51. ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername()));
  52. ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername()));
  53. List<UserSocialProfile> socialProfileList = iUserSocialProfileService.selectUserSocialProfile(loginUser.getUserId());
  54. UserSocialProfile userSocialProfile = socialProfileList
  55. .stream()
  56. .filter(s -> SocialPlatformType.listWechatPlatform.contains(s.getSourceClient()) && "1".equals(s.getStatus()))
  57. .findFirst()
  58. .orElse(null);
  59. ajax.put("socialGroup", socialProfileList);
  60. ajax.put("wxBind", userSocialProfile != null);
  61. return ajax;
  62. }
  63. /**
  64. * 修改用户
  65. */
  66. @ApiOperation("修改个人信息")
  67. @Log(title = "个人信息", businessType = BusinessType.UPDATE)
  68. @PutMapping
  69. public AjaxResult updateProfile(@RequestBody SysUser user) {
  70. LoginUser loginUser = getLoginUser();
  71. SysUser sysUser = loginUser.getUser();
  72. user.setUserName(sysUser.getUserName());
  73. if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
  74. return error(StringUtils.format(MessageUtils.message("user.update.failed.phone.exists"), user.getUserName()));
  75. }
  76. if (StringUtils.isNotEmpty(user.getEmail()) && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
  77. return error(StringUtils.format(MessageUtils.message("user.update.failed.email.exists"), user.getUserName()));
  78. }
  79. user.setUserId(sysUser.getUserId());
  80. user.setPassword(null);
  81. user.setAvatar(null);
  82. user.setDeptId(sysUser.getDeptId());
  83. if (userService.updateUserProfile(user) > 0) {
  84. // 更新缓存用户信息
  85. sysUser.setNickName(user.getNickName());
  86. sysUser.setPhonenumber(user.getPhonenumber());
  87. sysUser.setEmail(user.getEmail());
  88. sysUser.setSex(user.getSex());
  89. tokenService.setLoginUser(loginUser);
  90. return success();
  91. }
  92. return error(MessageUtils.message("user.update.failed"));
  93. }
  94. /**
  95. * 重置密码
  96. */
  97. @ApiOperation("重置密码")
  98. //@PreAuthorize("@ss.hasPermi('systerm:user:updatePwd')")
  99. @Log(title = "个人信息", businessType = BusinessType.UPDATE)
  100. @PutMapping("/updatePwd")
  101. public AjaxResult updatePwd(String oldPassword, String newPassword) {
  102. LoginUser loginUser = getLoginUser();
  103. String userName = loginUser.getUsername();
  104. String password = loginUser.getPassword();
  105. if (!SecurityUtils.matchesPassword(oldPassword, password)) {
  106. return error(MessageUtils.message("user.update.failed.password.wrong"));
  107. }
  108. if (SecurityUtils.matchesPassword(newPassword, password)) {
  109. return error(MessageUtils.message("user.update.failed.password.same"));
  110. }
  111. if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) {
  112. // 更新缓存用户密码
  113. loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword));
  114. tokenService.setLoginUser(loginUser);
  115. return success();
  116. }
  117. return error(MessageUtils.message("user.update.password.failed"));
  118. }
  119. /**
  120. * 头像上传
  121. */
  122. @ApiOperation("头像上传")
  123. @Log(title = "用户头像", businessType = BusinessType.UPDATE)
  124. @PostMapping("/avatar")
  125. public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws Exception {
  126. if (!file.isEmpty()) {
  127. LoginUser loginUser = getLoginUser();
  128. String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
  129. if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) {
  130. AjaxResult ajax = AjaxResult.success();
  131. ajax.put("imgUrl", avatar);
  132. // 更新缓存用户头像
  133. loginUser.getUser().setAvatar(avatar);
  134. tokenService.setLoginUser(loginUser);
  135. return ajax;
  136. }
  137. }
  138. return error(MessageUtils.message("user.upload.avatar.failed"));
  139. }
  140. }