|
|
@@ -0,0 +1,144 @@
|
|
|
+package com.zhongzheng.controller.system;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.zhongzheng.common.annotation.Log;
|
|
|
+import com.zhongzheng.common.config.RuoYiConfig;
|
|
|
+import com.zhongzheng.common.constant.UserConstants;
|
|
|
+import com.zhongzheng.common.core.controller.BaseController;
|
|
|
+import com.zhongzheng.common.core.domain.AjaxResult;
|
|
|
+import com.zhongzheng.common.core.domain.entity.SysUser;
|
|
|
+import com.zhongzheng.common.core.domain.entity.TopSysUser;
|
|
|
+import com.zhongzheng.common.core.domain.model.LoginUser;
|
|
|
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
|
|
|
+import com.zhongzheng.common.enums.BusinessType;
|
|
|
+import com.zhongzheng.common.exception.CustomException;
|
|
|
+import com.zhongzheng.common.utils.SecurityUtils;
|
|
|
+import com.zhongzheng.common.utils.ServletUtils;
|
|
|
+import com.zhongzheng.common.utils.ToolsUtils;
|
|
|
+import com.zhongzheng.common.utils.file.FileUploadUtils;
|
|
|
+import com.zhongzheng.framework.web.service.TokenService;
|
|
|
+import com.zhongzheng.framework.web.service.TopTokenService;
|
|
|
+import com.zhongzheng.modules.system.service.ISysUserService;
|
|
|
+import com.zhongzheng.modules.top.user.service.ITopSysUserService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 个人信息 业务处理
|
|
|
+ *
|
|
|
+ * @author zhongzheng
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("/system/user/profile")
|
|
|
+public class SysProfileController extends BaseController
|
|
|
+{
|
|
|
+ @Autowired
|
|
|
+ private ITopSysUserService userService;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TopTokenService topTokenService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 个人信息
|
|
|
+ */
|
|
|
+ @GetMapping
|
|
|
+ public AjaxResult profile()
|
|
|
+ {
|
|
|
+ TopLoginUser loginUser = topTokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ TopSysUser user = loginUser.getUser();
|
|
|
+ AjaxResult ajax = AjaxResult.success(user);
|
|
|
+ ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername()));
|
|
|
+ ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername()));
|
|
|
+ return ajax;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改用户
|
|
|
+ */
|
|
|
+ @Log(title = "个人信息", businessType = BusinessType.UPDATE)
|
|
|
+ @PutMapping
|
|
|
+ public AjaxResult updateProfile(@RequestBody TopSysUser user)
|
|
|
+ {
|
|
|
+ if (StrUtil.isNotEmpty(user.getPhonenumber())
|
|
|
+ && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
|
|
|
+ {
|
|
|
+ return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotEmpty(user.getEmail())
|
|
|
+ && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
|
|
|
+ {
|
|
|
+ return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
|
|
|
+ }
|
|
|
+ if (userService.updateUserProfile(user) > 0)
|
|
|
+ {
|
|
|
+ TopLoginUser loginUser = topTokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ // 更新缓存用户信息
|
|
|
+ loginUser.getUser().setNickName(user.getNickName());
|
|
|
+ loginUser.getUser().setPhonenumber(user.getPhonenumber());
|
|
|
+ loginUser.getUser().setEmail(user.getEmail());
|
|
|
+ loginUser.getUser().setSex(user.getSex());
|
|
|
+ topTokenService.setLoginUser(loginUser);
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+ return AjaxResult.error("修改个人信息异常,请联系管理员");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重置密码
|
|
|
+ */
|
|
|
+ @Log(title = "个人信息", businessType = BusinessType.UPDATE)
|
|
|
+ @PutMapping("/updatePwd")
|
|
|
+ public AjaxResult updatePwd(String oldPassword, String newPassword)
|
|
|
+ {
|
|
|
+ TopLoginUser loginUser = topTokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ String userName = loginUser.getUsername();
|
|
|
+ String password = loginUser.getPassword();
|
|
|
+ if (!SecurityUtils.matchesPassword(oldPassword, password))
|
|
|
+ {
|
|
|
+ return AjaxResult.error("修改密码失败,旧密码错误");
|
|
|
+ }
|
|
|
+ if(!ToolsUtils.verifPwd(newPassword)){
|
|
|
+ throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
|
|
|
+ }
|
|
|
+ if (SecurityUtils.matchesPassword(newPassword, password))
|
|
|
+ {
|
|
|
+ return AjaxResult.error("新密码不能与旧密码相同");
|
|
|
+ }
|
|
|
+ if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0)
|
|
|
+ {
|
|
|
+ // 更新缓存用户密码
|
|
|
+ loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword));
|
|
|
+ topTokenService.setLoginUser(loginUser);
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+ return AjaxResult.error("修改密码异常,请联系管理员");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 头像上传
|
|
|
+ */
|
|
|
+ @Log(title = "用户头像", businessType = BusinessType.UPDATE)
|
|
|
+ @PostMapping("/avatar")
|
|
|
+ public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException
|
|
|
+ {
|
|
|
+ if (!file.isEmpty())
|
|
|
+ {
|
|
|
+ TopLoginUser loginUser = topTokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
+ String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file);
|
|
|
+ if (userService.updateUserAvatar(loginUser.getUsername(), avatar))
|
|
|
+ {
|
|
|
+ AjaxResult ajax = AjaxResult.success();
|
|
|
+ ajax.put("imgUrl", avatar);
|
|
|
+ // 更新缓存用户头像
|
|
|
+ loginUser.getUser().setAvatar(avatar);
|
|
|
+ topTokenService.setLoginUser(loginUser);
|
|
|
+ return ajax;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return AjaxResult.error("上传图片异常,请联系管理员");
|
|
|
+ }
|
|
|
+}
|