package com.xiaopeng.account.controller; import com.xiaopeng.account.constant.I18nKeyConstant; import com.xiaopeng.account.model.dto.SysUserProfileDTO; import com.xiaopeng.account.service.ISysUserService; import com.xiaopeng.api.model.account.SysUser; import com.xiaopeng.api.vo.account.LoginUser; import com.xiaopeng.common.core.exception.ServiceException; import com.xiaopeng.common.core.web.controller.BaseController; import com.xiaopeng.common.core.web.domain.AjaxResult; import com.xiaopeng.common.log.annotation.Log; import com.xiaopeng.common.log.enums.BusinessType; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.common.security.utils.SecurityUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** * 个人信息 业务处理 * * @author ruoyi */ @Api(tags = "管理后台-个人信息") @RestController public class SysProfileController extends BaseController { @Autowired private ISysUserService userService; @Autowired private TokenService tokenService; /** * 个人信息 */ @GetMapping public AjaxResult profile() { String username = SecurityUtils.getUsername(); SysUser user = userService.selectUserByUserName(username); AjaxResult ajax = AjaxResult.success(user); // ajax.put("roleGroup", userService.selectUserRoleGroup(username)); // ajax.put("postGroup", userService.selectUserPostGroup(username)); return ajax; } /** * 修改用户 */ @ApiOperation("修改个人信息") @PutMapping("/api/v1/profile/updateProfile") public AjaxResult updateProfile(@RequestBody SysUserProfileDTO dto) { try { LoginUser loginUser = SecurityUtils.getLoginUser(); SysUser sysUser = loginUser.getSysUser(); sysUser.setNickName(dto.getNickName()); sysUser.setAvatar(dto.getAvatar()); sysUser.setId(sysUser.getId()); if (userService.updateById(sysUser)) { // 更新缓存用户信息 loginUser.getSysUser().setNickName(dto.getNickName()); loginUser.getSysUser().setAvatar(dto.getAvatar()); tokenService.setLoginUser(loginUser); } } catch (Exception e) { throw new ServiceException("修改个人信息异常,请联系管理员", I18nKeyConstant.ACCOUNT_PROFILE_UPDATE_ERROR); } return success(); } /** * 重置密码 */ @ApiOperation(value = "个人信息-修改密码") @PostMapping("/api/v1/profile/updatePwd") public AjaxResult updatePwd(String oldPassword, String newPassword) { try { String username = SecurityUtils.getUsername(); SysUser user = userService.selectUserByUserName(username); String password = user.getPassword(); if (!SecurityUtils.matchesPassword(oldPassword, password)) { return error("修改密码失败,旧密码错误"); } if (SecurityUtils.matchesPassword(newPassword, password)) { return error("新密码不能与旧密码相同"); } if (userService.resetUserPwd(user.getId(), SecurityUtils.encryptPassword(newPassword))) { // 更新缓存用户密码 // LoginUser loginUser = SecurityUtils.getLoginUser(); // SysUser sysUser = loginUser.getSysUser(); // loginUser.getSysUser().setPassword(SecurityUtils.encryptPassword(newPassword)); // tokenService.setLoginUser(loginUser); } } catch (Exception e) { throw new ServiceException("修改密码异常,请联系管理员", I18nKeyConstant.ACCOUNT_PASSWORD_UPDATE_ERROR); } return success(); } }