-
Notifications
You must be signed in to change notification settings - Fork 360
/
UserController.java
143 lines (135 loc) · 5.81 KB
/
UserController.java
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
131
132
133
134
135
136
137
138
139
140
141
142
143
package cn.enilu.flash.api.controller.system;
import cn.enilu.flash.api.controller.BaseController;
import cn.enilu.flash.bean.constant.Const;
import cn.enilu.flash.bean.constant.factory.PageFactory;
import cn.enilu.flash.bean.constant.state.ManagerStatus;
import cn.enilu.flash.bean.core.BussinessLog;
import cn.enilu.flash.bean.dto.UserDto;
import cn.enilu.flash.bean.entity.system.User;
import cn.enilu.flash.bean.enumeration.ApplicationExceptionEnum;
import cn.enilu.flash.bean.enumeration.Permission;
import cn.enilu.flash.bean.exception.ApplicationException;
import cn.enilu.flash.bean.vo.front.Rets;
import cn.enilu.flash.bean.vo.query.SearchFilter;
import cn.enilu.flash.core.factory.UserFactory;
import cn.enilu.flash.service.system.UserService;
import cn.enilu.flash.utils.BeanUtil;
import cn.enilu.flash.utils.MD5;
import cn.enilu.flash.utils.RandomUtil;
import cn.enilu.flash.utils.factory.Page;
import cn.enilu.flash.warpper.UserWrapper;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* UserController
*
* @author enilu
* @version 2018/9/15 0015
*/
@RestController
@RequestMapping("/user")
public class UserController extends BaseController {
@Autowired
private UserService userService;
@GetMapping(value = "/list")
@RequiresPermissions(value = {Permission.USER})
public Object list(@RequestParam(required = false) String account,
@RequestParam(required = false) String name,
@RequestParam(required = false) Long deptid,
@RequestParam(required = false) String phone,
@RequestParam(required = false) Integer status,
@RequestParam(required = false) Integer sex
) {
Page page = new PageFactory().defaultPage();
page.addFilter("name", SearchFilter.Operator.LIKE, name);
page.addFilter("account", SearchFilter.Operator.LIKE, account);
page.addFilter("deptid", deptid);
page.addFilter("phone", phone);
page.addFilter("status", status);
page.addFilter("status", SearchFilter.Operator.GT, 0);
page.addFilter("sex", sex);
page = userService.queryPage(page);
List list = (List) new UserWrapper(BeanUtil.objectsToMaps(page.getRecords())).warp();
page.setRecords(list);
return Rets.success(page);
}
@PostMapping
@BussinessLog(value = "编辑账号", key = "name")
@RequiresPermissions(value = {Permission.USER_EDIT})
public Object save(@RequestBody @Valid UserDto user, BindingResult result) {
if (user.getId() == null) {
// 判断账号是否重复
User theUser = userService.findByAccount(user.getAccount());
if (theUser != null) {
throw new ApplicationException(ApplicationExceptionEnum.USER_ALREADY_REG);
}
// 完善账号信息
user.setSalt(RandomUtil.getRandomString(5));
user.setPassword(MD5.md5(user.getPassword(), user.getSalt()));
user.setStatus(ManagerStatus.OK.getCode());
userService.insert(UserFactory.createUser(user, new User()));
} else {
User oldUser = userService.get(user.getId());
userService.update(UserFactory.updateUser(user, oldUser));
}
return Rets.success();
}
@BussinessLog(value = "删除账号", key = "userId")
@DeleteMapping
@RequiresPermissions(value = {Permission.USER_DEL})
public Object remove(@RequestParam Long userId) {
if (userId == null) {
throw new ApplicationException(ApplicationExceptionEnum.REQUEST_NULL);
}
if (userId.intValue() <= 3) {
return Rets.failure("不能删除初始用户");
}
User user = userService.get(userId);
user.setStatus(ManagerStatus.DELETED.getCode());
userService.update(user);
return Rets.success();
}
@BussinessLog(value = "设置账号角色", key = "userId")
@PostMapping(value = "/setRole")
@RequiresPermissions(value = {Permission.USER_EDIT})
public Object setRole(@RequestParam("userId") Long userId, @RequestParam("roleIds") String roleIds) {
if (BeanUtil.isOneEmpty(userId, roleIds)) {
throw new ApplicationException(ApplicationExceptionEnum.REQUEST_NULL);
}
//不能修改超级管理员
if (userId.intValue() == Const.ADMIN_ID.intValue()) {
return Rets.failure("不能修改超级管理员得角色");
}
User user = userService.get(userId);
user.setRoleid(roleIds);
userService.update(user);
return Rets.success();
}
@BussinessLog(value = "冻结/解冻账号", key = "userId")
@GetMapping(value = "changeStatus")
@RequiresPermissions(value = {Permission.USER_EDIT})
public Object changeStatus(@RequestParam Long userId) {
if (userId == null) {
throw new ApplicationException(ApplicationExceptionEnum.REQUEST_NULL);
}
if (userId.intValue() <= 3) {
return Rets.failure("不能冻结初始用户");
}
User user = userService.get(userId);
user.setStatus(user.getStatus().intValue() == ManagerStatus.OK.getCode() ? ManagerStatus.FREEZED.getCode() : ManagerStatus.OK.getCode());
userService.update(user);
return Rets.success();
}
@BussinessLog(value = "重置密码", key = "userId")
@PostMapping(value="resetPassword")
public Object resetPassword(Long userId){
User user = userService.get(userId);
user.setPassword(MD5.md5("111111", user.getSalt()));
userService.update(user);
return Rets.success();
}
}