package com.ruoyi.web.system; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.MimeTypeUtils; import com.ruoyi.framework.shiro.service.SysPasswordService; import com.ruoyi.web.server.system.ISysUserService; /** * 个人信息 业务处理 * * @author ruoyi */ @Controller @RequestMapping("/system/user/profile") public class SysProfileController extends BaseController { private static final Logger log = LoggerFactory.getLogger(SysProfileController.class); private String prefix = "system/user/profile"; @Autowired private ISysUserService userService; @Autowired private SysPasswordService passwordService; /** * 个人信息 */ @GetMapping() public String profile(ModelMap mmap) { SysUser user = getSysUser(); mmap.put("user", user); mmap.put("roleGroup", userService.selectUserRoleGroup(user.getUserId())); mmap.put("postGroup", userService.selectUserPostGroup(user.getUserId())); return prefix + "/profile"; } @GetMapping("/checkPassword") @ResponseBody public boolean checkPassword(String password) { SysUser user = getSysUser(); return passwordService.matches(user, password); } @GetMapping("/resetPwd") public String resetPwd(ModelMap mmap) { SysUser user = getSysUser(); mmap.put("user", userService.selectUserById(user.getUserId())); return prefix + "/resetPwd"; } @Log(title = "重置密码", businessType = BusinessType.UPDATE) @PostMapping("/resetPwd") @ResponseBody public AjaxResult resetPwd(String oldPassword, String newPassword) { SysUser user = getSysUser(); if (!passwordService.matches(user, oldPassword)) { return error("修改密码失败,旧密码错误"); } if (passwordService.matches(user, newPassword)) { return error("新密码不能与旧密码相同"); } user.setSalt(ShiroUtils.randomSalt()); user.setPassword(passwordService.encryptPassword(user.getLoginName(), newPassword, user.getSalt())); user.setPwdUpdateDate(DateUtils.getNowDate()); if (userService.resetUserPwd(user) > 0) { setSysUser(userService.selectUserById(user.getUserId())); return success(); } return error("修改密码异常,请联系管理员"); } /** * 修改用户 */ @GetMapping("/edit") public String edit(ModelMap mmap) { SysUser user = getSysUser(); mmap.put("user", userService.selectUserById(user.getUserId())); return prefix + "/edit"; } /** * 修改头像 */ @GetMapping("/avatar") public String avatar(ModelMap mmap) { SysUser user = getSysUser(); mmap.put("user", userService.selectUserById(user.getUserId())); return prefix + "/avatar"; } /** * 修改用户 */ @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PostMapping("/update") @ResponseBody public AjaxResult update(SysUser user) { SysUser currentUser = getSysUser(); currentUser.setUserName(user.getUserName()); currentUser.setEmail(user.getEmail()); currentUser.setPhonenumber(user.getPhonenumber()); currentUser.setSex(user.getSex()); if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) { return error("修改用户'" + currentUser.getLoginName() + "'失败,手机号码已存在"); } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) { return error("修改用户'" + currentUser.getLoginName() + "'失败,邮箱账号已存在"); } if (userService.updateUserInfo(currentUser) > 0) { setSysUser(userService.selectUserById(currentUser.getUserId())); return success(); } return error(); } /** * 保存头像 */ @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PostMapping("/updateAvatar") @ResponseBody public AjaxResult updateAvatar(@RequestParam("avatarfile") MultipartFile file) { SysUser currentUser = getSysUser(); try { if (!file.isEmpty()) { String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION); currentUser.setAvatar(avatar); if (userService.updateUserInfo(currentUser) > 0) { setSysUser(userService.selectUserById(currentUser.getUserId())); return success(); } } return error(); } catch (Exception e) { log.error("修改头像失败!", e); return error(e.getMessage()); } } }