中国算力平台算力登记系统2.0
yanzhaofeige
3 days ago 9a224d216652ef2d6ff2e0bd01fba69c86a3f277
commit | author | age
43dc29 1 package com.odcc.cpzidc.web.controller.system;
Y 2
3 import java.util.List;
4 import java.util.stream.Collectors;
5 import javax.servlet.http.HttpServletResponse;
6 import org.apache.commons.lang3.ArrayUtils;
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.security.access.prepost.PreAuthorize;
9 import org.springframework.validation.annotation.Validated;
10 import org.springframework.web.bind.annotation.DeleteMapping;
11 import org.springframework.web.bind.annotation.GetMapping;
12 import org.springframework.web.bind.annotation.PathVariable;
13 import org.springframework.web.bind.annotation.PostMapping;
14 import org.springframework.web.bind.annotation.PutMapping;
15 import org.springframework.web.bind.annotation.RequestBody;
16 import org.springframework.web.bind.annotation.RequestMapping;
17 import org.springframework.web.bind.annotation.RestController;
18 import org.springframework.web.multipart.MultipartFile;
19 import com.odcc.cpzidc.common.annotation.Log;
20 import com.odcc.cpzidc.common.core.controller.BaseController;
21 import com.odcc.cpzidc.common.core.domain.AjaxResult;
22 import com.odcc.cpzidc.common.core.domain.entity.SysDept;
23 import com.odcc.cpzidc.common.core.domain.entity.SysRole;
24 import com.odcc.cpzidc.common.core.domain.entity.SysUser;
25 import com.odcc.cpzidc.common.core.page.TableDataInfo;
26 import com.odcc.cpzidc.common.enums.BusinessType;
27 import com.odcc.cpzidc.common.utils.SecurityUtils;
28 import com.odcc.cpzidc.common.utils.StringUtils;
29 import com.odcc.cpzidc.common.utils.poi.ExcelUtil;
30 import com.odcc.cpzidc.system.service.ISysDeptService;
31 import com.odcc.cpzidc.system.service.ISysPostService;
32 import com.odcc.cpzidc.system.service.ISysRoleService;
33 import com.odcc.cpzidc.system.service.ISysUserService;
34
35 /**
36  * 用户信息
37  * 
38  * @author ruoyi
39  */
40 @RestController
41 @RequestMapping("/system/user")
42 public class SysUserController extends BaseController
43 {
44     @Autowired
45     private ISysUserService userService;
46
47     @Autowired
48     private ISysRoleService roleService;
49
50     @Autowired
51     private ISysDeptService deptService;
52
53     @Autowired
54     private ISysPostService postService;
55
56     /**
57      * 获取用户列表
58      */
59     @PreAuthorize("@ss.hasPermi('system:user:list')")
60     @GetMapping("/list")
61     public TableDataInfo list(SysUser user)
62     {
63         startPage();
64         List<SysUser> list = userService.selectUserList(user);
65         return getDataTable(list);
66     }
67
68     @Log(title = "用户管理", businessType = BusinessType.EXPORT)
69     @PreAuthorize("@ss.hasPermi('system:user:export')")
70     @PostMapping("/export")
71     public void export(HttpServletResponse response, SysUser user)
72     {
73         List<SysUser> list = userService.selectUserList(user);
74         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
75         util.exportExcel(response, list, "用户数据");
76     }
77
78     @Log(title = "用户管理", businessType = BusinessType.IMPORT)
79     @PreAuthorize("@ss.hasPermi('system:user:import')")
80     @PostMapping("/importData")
81     public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
82     {
83         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
84         List<SysUser> userList = util.importExcel(file.getInputStream());
85         String operName = getUsername();
86         String message = userService.importUser(userList, updateSupport, operName);
87         return success(message);
88     }
89
90     @PostMapping("/importTemplate")
91     public void importTemplate(HttpServletResponse response)
92     {
93         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
94         util.importTemplateExcel(response, "用户数据");
95     }
96
97     /**
98      * 根据用户编号获取详细信息
99      */
100     @PreAuthorize("@ss.hasPermi('system:user:query')")
101     @GetMapping(value = { "/", "/{userId}" })
102     public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
103     {
104         userService.checkUserDataScope(userId);
105         AjaxResult ajax = AjaxResult.success();
106         List<SysRole> roles = roleService.selectRoleAll();
107         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
108         ajax.put("posts", postService.selectPostAll());
109         if (StringUtils.isNotNull(userId))
110         {
111             SysUser sysUser = userService.selectUserById(userId);
112             ajax.put(AjaxResult.DATA_TAG, sysUser);
113             ajax.put("postIds", postService.selectPostListByUserId(userId));
114             ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));
115         }
116         return ajax;
117     }
118
119     /**
120      * 新增用户
121      */
122     @PreAuthorize("@ss.hasPermi('system:user:add')")
123     @Log(title = "用户管理", businessType = BusinessType.INSERT)
124     @PostMapping
125     public AjaxResult add(@Validated @RequestBody SysUser user)
126     {
127         deptService.checkDeptDataScope(user.getDeptId());
128         roleService.checkRoleDataScope(user.getRoleIds());
129         if (!userService.checkUserNameUnique(user))
130         {
131             return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
132         }
133         else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
134         {
135             return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
136         }
137         else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
138         {
139             return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
140         }
141         user.setCreateBy(getUsername());
142         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
143         return toAjax(userService.insertUser(user));
144     }
145
146     /**
147      * 修改用户
148      */
149     @PreAuthorize("@ss.hasPermi('system:user:edit')")
150     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
151     @PutMapping
152     public AjaxResult edit(@Validated @RequestBody SysUser user)
153     {
154         userService.checkUserAllowed(user);
155         userService.checkUserDataScope(user.getUserId());
156         deptService.checkDeptDataScope(user.getDeptId());
157         roleService.checkRoleDataScope(user.getRoleIds());
158         if (!userService.checkUserNameUnique(user))
159         {
160             return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
161         }
162         else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
163         {
164             return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
165         }
166         else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
167         {
168             return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
169         }
170         user.setUpdateBy(getUsername());
171         return toAjax(userService.updateUser(user));
172     }
173
174     /**
175      * 删除用户
176      */
177     @PreAuthorize("@ss.hasPermi('system:user:remove')")
178     @Log(title = "用户管理", businessType = BusinessType.DELETE)
179     @DeleteMapping("/{userIds}")
180     public AjaxResult remove(@PathVariable Long[] userIds)
181     {
182         if (ArrayUtils.contains(userIds, getUserId()))
183         {
184             return error("当前用户不能删除");
185         }
186         return toAjax(userService.deleteUserByIds(userIds));
187     }
188
189     /**
190      * 重置密码
191      */
192     @PreAuthorize("@ss.hasPermi('system:user:resetPwd')")
193     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
194     @PutMapping("/resetPwd")
195     public AjaxResult resetPwd(@RequestBody SysUser user)
196     {
197         userService.checkUserAllowed(user);
198         userService.checkUserDataScope(user.getUserId());
199         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
200         user.setUpdateBy(getUsername());
201         return toAjax(userService.resetPwd(user));
202     }
203
204     /**
205      * 状态修改
206      */
207     @PreAuthorize("@ss.hasPermi('system:user:edit')")
208     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
209     @PutMapping("/changeStatus")
210     public AjaxResult changeStatus(@RequestBody SysUser user)
211     {
212         userService.checkUserAllowed(user);
213         userService.checkUserDataScope(user.getUserId());
214         user.setUpdateBy(getUsername());
215         return toAjax(userService.updateUserStatus(user));
216     }
217
218     /**
219      * 根据用户编号获取授权角色
220      */
221     @PreAuthorize("@ss.hasPermi('system:user:query')")
222     @GetMapping("/authRole/{userId}")
223     public AjaxResult authRole(@PathVariable("userId") Long userId)
224     {
225         AjaxResult ajax = AjaxResult.success();
226         SysUser user = userService.selectUserById(userId);
227         List<SysRole> roles = roleService.selectRolesByUserId(userId);
228         ajax.put("user", user);
229         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
230         return ajax;
231     }
232
233     /**
234      * 用户授权角色
235      */
236     @PreAuthorize("@ss.hasPermi('system:user:edit')")
237     @Log(title = "用户管理", businessType = BusinessType.GRANT)
238     @PutMapping("/authRole")
239     public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
240     {
241         userService.checkUserDataScope(userId);
242         roleService.checkRoleDataScope(roleIds);
243         userService.insertUserAuth(userId, roleIds);
244         return success();
245     }
246
247     /**
248      * 获取部门树列表
249      */
250     @PreAuthorize("@ss.hasPermi('system:user:list')")
251     @GetMapping("/deptTree")
252     public AjaxResult deptTree(SysDept dept)
253     {
254         return success(deptService.selectDeptTreeList(dept));
255     }
256 }