xuhy
2026-04-28 502c2c7a7ff6d6cec19eb34086e2430ecbbdcdc7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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;
    }
 
    /**
     * 修改用户
     */
    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
    @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 = "个人信息-修改密码")
    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
    @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();
    }
    
 
}