SysUserController.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. package com.ruoyi.web.controller.system;
  2. import java.util.List;
  3. import org.apache.shiro.authz.annotation.RequiresPermissions;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.ui.ModelMap;
  7. import org.springframework.web.bind.annotation.GetMapping;
  8. import org.springframework.web.bind.annotation.PathVariable;
  9. import org.springframework.web.bind.annotation.PostMapping;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.ResponseBody;
  12. import org.springframework.web.multipart.MultipartFile;
  13. import com.ruoyi.common.annotation.Log;
  14. import com.ruoyi.common.constant.UserConstants;
  15. import com.ruoyi.common.core.controller.BaseController;
  16. import com.ruoyi.common.core.domain.AjaxResult;
  17. import com.ruoyi.common.core.page.TableDataInfo;
  18. import com.ruoyi.common.enums.BusinessType;
  19. import com.ruoyi.common.utils.StringUtils;
  20. import com.ruoyi.common.utils.poi.ExcelUtil;
  21. import com.ruoyi.framework.shiro.service.SysPasswordService;
  22. import com.ruoyi.framework.util.ShiroUtils;
  23. import com.ruoyi.system.domain.SysUser;
  24. import com.ruoyi.system.service.ISysPostService;
  25. import com.ruoyi.system.service.ISysRoleService;
  26. import com.ruoyi.system.service.ISysUserService;
  27. /**
  28. * 用户信息
  29. *
  30. * @author ruoyi
  31. */
  32. @Controller
  33. @RequestMapping("/system/user")
  34. public class SysUserController extends BaseController
  35. {
  36. private String prefix = "system/user";
  37. @Autowired
  38. private ISysUserService userService;
  39. @Autowired
  40. private ISysRoleService roleService;
  41. @Autowired
  42. private ISysPostService postService;
  43. @Autowired
  44. private SysPasswordService passwordService;
  45. @RequiresPermissions("system:user:view")
  46. @GetMapping()
  47. public String user()
  48. {
  49. return prefix + "/user";
  50. }
  51. @RequiresPermissions("system:user:list")
  52. @PostMapping("/list")
  53. @ResponseBody
  54. public TableDataInfo list(SysUser user)
  55. {
  56. startPage();
  57. List<SysUser> list = userService.selectUserList(user);
  58. return getDataTable(list);
  59. }
  60. @Log(title = "用户管理", businessType = BusinessType.EXPORT)
  61. @RequiresPermissions("system:user:export")
  62. @PostMapping("/export")
  63. @ResponseBody
  64. public AjaxResult export(SysUser user)
  65. {
  66. List<SysUser> list = userService.selectUserList(user);
  67. ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
  68. return util.exportExcel(list, "用户数据");
  69. }
  70. @Log(title = "用户管理", businessType = BusinessType.IMPORT)
  71. @RequiresPermissions("system:user:import")
  72. @PostMapping("/importData")
  73. @ResponseBody
  74. public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
  75. {
  76. ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
  77. List<SysUser> userList = util.importExcel(file.getInputStream());
  78. String operName = ShiroUtils.getSysUser().getLoginName();
  79. String message = userService.importUser(userList, updateSupport, operName);
  80. return AjaxResult.success(message);
  81. }
  82. @RequiresPermissions("system:user:view")
  83. @GetMapping("/importTemplate")
  84. @ResponseBody
  85. public AjaxResult importTemplate()
  86. {
  87. ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
  88. return util.importTemplateExcel("用户数据");
  89. }
  90. /**
  91. * 新增用户
  92. */
  93. @GetMapping("/add")
  94. public String add(ModelMap mmap)
  95. {
  96. mmap.put("roles", roleService.selectRoleAll());
  97. mmap.put("posts", postService.selectPostAll());
  98. return prefix + "/add";
  99. }
  100. /**
  101. * 新增保存用户
  102. */
  103. @RequiresPermissions("system:user:add")
  104. @Log(title = "用户管理", businessType = BusinessType.INSERT)
  105. @PostMapping("/add")
  106. @ResponseBody
  107. public AjaxResult addSave(SysUser user)
  108. {
  109. if (StringUtils.isNotNull(user.getUserId()) && SysUser.isAdmin(user.getUserId()))
  110. {
  111. return error("不允许修改超级管理员用户");
  112. }
  113. else if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user.getLoginName())))
  114. {
  115. return error("保存用户'" + user.getLoginName() + "'失败,登录账号已存在");
  116. }
  117. else if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
  118. {
  119. return error("保存用户'" + user.getLoginName() + "'失败,手机号码已存在");
  120. }
  121. else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
  122. {
  123. return error("保存用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
  124. }
  125. user.setSalt(ShiroUtils.randomSalt());
  126. user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
  127. user.setCreateBy(ShiroUtils.getLoginName());
  128. return toAjax(userService.insertUser(user));
  129. }
  130. /**
  131. * 修改用户
  132. */
  133. @GetMapping("/edit/{userId}")
  134. public String edit(@PathVariable("userId") Long userId, ModelMap mmap)
  135. {
  136. mmap.put("user", userService.selectUserById(userId));
  137. mmap.put("roles", roleService.selectRolesByUserId(userId));
  138. mmap.put("posts", postService.selectPostsByUserId(userId));
  139. return prefix + "/edit";
  140. }
  141. /**
  142. * 修改保存用户
  143. */
  144. @RequiresPermissions("system:user:edit")
  145. @Log(title = "用户管理", businessType = BusinessType.UPDATE)
  146. @PostMapping("/edit")
  147. @ResponseBody
  148. public AjaxResult editSave(SysUser user)
  149. {
  150. if (StringUtils.isNotNull(user.getUserId()) && SysUser.isAdmin(user.getUserId()))
  151. {
  152. return error("不允许修改超级管理员用户");
  153. }
  154. else if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
  155. {
  156. return error("保存用户'" + user.getLoginName() + "'失败,手机号码已存在");
  157. }
  158. else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
  159. {
  160. return error("保存用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
  161. }
  162. user.setUpdateBy(ShiroUtils.getLoginName());
  163. return toAjax(userService.updateUser(user));
  164. }
  165. @RequiresPermissions("system:user:resetPwd")
  166. @Log(title = "重置密码", businessType = BusinessType.UPDATE)
  167. @GetMapping("/resetPwd/{userId}")
  168. public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap)
  169. {
  170. mmap.put("user", userService.selectUserById(userId));
  171. return prefix + "/resetPwd";
  172. }
  173. @RequiresPermissions("system:user:resetPwd")
  174. @Log(title = "重置密码", businessType = BusinessType.UPDATE)
  175. @PostMapping("/resetPwd")
  176. @ResponseBody
  177. public AjaxResult resetPwdSave(SysUser user)
  178. {
  179. user.setSalt(ShiroUtils.randomSalt());
  180. user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
  181. if (userService.resetUserPwd(user) > 0)
  182. {
  183. ShiroUtils.setSysUser(userService.selectUserById(user.getUserId()));
  184. return success();
  185. }
  186. return error();
  187. }
  188. @RequiresPermissions("system:user:remove")
  189. @Log(title = "用户管理", businessType = BusinessType.DELETE)
  190. @PostMapping("/remove")
  191. @ResponseBody
  192. public AjaxResult remove(String ids)
  193. {
  194. try
  195. {
  196. return toAjax(userService.deleteUserByIds(ids));
  197. }
  198. catch (Exception e)
  199. {
  200. return error(e.getMessage());
  201. }
  202. }
  203. /**
  204. * 校验用户名
  205. */
  206. @PostMapping("/checkLoginNameUnique")
  207. @ResponseBody
  208. public String checkLoginNameUnique(SysUser user)
  209. {
  210. return userService.checkLoginNameUnique(user.getLoginName());
  211. }
  212. /**
  213. * 校验手机号码
  214. */
  215. @PostMapping("/checkPhoneUnique")
  216. @ResponseBody
  217. public String checkPhoneUnique(SysUser user)
  218. {
  219. return userService.checkPhoneUnique(user);
  220. }
  221. /**
  222. * 校验email邮箱
  223. */
  224. @PostMapping("/checkEmailUnique")
  225. @ResponseBody
  226. public String checkEmailUnique(SysUser user)
  227. {
  228. return userService.checkEmailUnique(user);
  229. }
  230. /**
  231. * 用户状态修改
  232. */
  233. @Log(title = "用户管理", businessType = BusinessType.UPDATE)
  234. @RequiresPermissions("system:user:edit")
  235. @PostMapping("/changeStatus")
  236. @ResponseBody
  237. public AjaxResult changeStatus(SysUser user)
  238. {
  239. return toAjax(userService.changeStatus(user));
  240. }
  241. }