SysProfileController.java
5.47 KB
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package com.huaheng.system.controller;
import com.huaheng.common.core.domain.R;
import com.huaheng.common.core.utils.ServletUtils;
import com.huaheng.common.core.utils.StringUtils;
import com.huaheng.common.security.service.TokenService;
import com.huaheng.system.api.RemoteFileService;
import com.huaheng.system.api.domain.SysFile;
import com.huaheng.system.api.domain.SysRole;
import com.huaheng.system.api.model.LoginUser;
import com.huaheng.system.service.CompanyService;
import com.huaheng.system.service.ISysRoleService;
import com.huaheng.system.service.ISysUserService;
import com.huaheng.system.service.WarehouseService;
import io.swagger.annotations.*;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.huaheng.common.core.web.controller.BaseController;
import com.huaheng.common.core.web.domain.AjaxResult;
import com.huaheng.common.log.annotation.Log;
import com.huaheng.common.log.enums.BusinessType;
import com.huaheng.common.security.utils.SecurityUtils;
import com.huaheng.system.api.domain.SysUser;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
/**
* 个人信息 业务处理
*
* @author ruoyi
*/
@RestController
@RequestMapping("/user/profile")
@Api(value = "个人信息", tags = "个人信息")
public class SysProfileController extends BaseController {
@Resource
private ISysUserService userService;
@Resource
private ISysRoleService roleService;
@Resource
private WarehouseService warehouseService;
@Resource
private CompanyService companyService;
@Autowired
private TokenService tokenService;
@Resource
private RemoteFileService remoteFileService;
/**
* 个人信息
*/
@GetMapping
@ApiOperation(value = "查询个人信息", notes = "查询个人信息")
@Log(title = "查询个人信息", businessType = BusinessType.GRANT)
public AjaxResult profile() {
String username = SecurityUtils.getUsername();
SysUser user = userService.selectUserByUserName(username);
AjaxResult ajax = AjaxResult.success(user);
List<SysRole> roles = roleService.selectRoleAll();
ajax.put("roles", SysUser.isAdmin(user.getUserId()) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
ajax.put("companies", companyService.selectCompanyByUserId(user.getUserId()));
ajax.put("warehouseCodeList", warehouseService.selectWarehouseByUserId(user.getUserId()));
ajax.put(AjaxResult.DATA_TAG, userService.selectUserById(user.getUserId()));
ajax.put("roleIds", roleService.selectRoleListByUserId(user.getUserId()));
return ajax;
}
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping
@ApiOperation(value = "修改个人信息", notes = "修改个人信息")
public AjaxResult updateProfile(@RequestBody SysUser user) {
if (userService.updateUserProfile(user) > 0) {
return AjaxResult.success();
}
return AjaxResult.error("修改个人信息异常,请联系管理员");
}
/**
* 重置密码
*/
@ApiOperation(value = "重置密码", notes = "重置密码")
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping("/updatePwd")
public AjaxResult updatePwd(@ApiParam(value = "旧密码", required = true) @RequestParam(value = "oldPassword") String oldPassword,
@ApiParam(value = "新密码", required = true) @RequestParam(value = "newPassword") String newPassword) {
String username = SecurityUtils.getUsername();
SysUser user = userService.selectUserByUserName(username);
String password = user.getPassword();
if (!SecurityUtils.matchesPassword(oldPassword, password)) {
return AjaxResult.error("修改密码失败,旧密码错误");
}
if (SecurityUtils.matchesPassword(newPassword, password)) {
return AjaxResult.error("新密码不能与旧密码相同");
}
if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0) {
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()) {
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
R<SysFile> fileResult = remoteFileService.upload(file);
if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) {
return AjaxResult.error("文件服务异常,请联系管理员");
}
String url = fileResult.getData().getUrl();
if (userService.updateUserAvatar(loginUser.getUsername(), url)) {
AjaxResult ajax = AjaxResult.success();
ajax.put("imgUrl", url);
// 更新缓存用户头像
loginUser.getSysUser().setAvatar(url);
tokenService.setLoginUser(loginUser);
return ajax;
}
}
return AjaxResult.error("上传图片异常,请联系管理员");
}
}