SysUserController.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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.validation.annotation.Validated;
  8. import org.springframework.web.bind.annotation.GetMapping;
  9. import org.springframework.web.bind.annotation.PathVariable;
  10. import org.springframework.web.bind.annotation.PostMapping;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.ResponseBody;
  13. import org.springframework.web.multipart.MultipartFile;
  14. import com.ruoyi.common.annotation.Log;
  15. import com.ruoyi.common.constant.UserConstants;
  16. import com.ruoyi.common.core.controller.BaseController;
  17. import com.ruoyi.common.core.domain.AjaxResult;
  18. import com.ruoyi.common.core.page.TableDataInfo;
  19. import com.ruoyi.common.enums.BusinessType;
  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(@Validated SysUser user)
  108. {
  109. if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user.getLoginName())))
  110. {
  111. return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在");
  112. }
  113. else if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
  114. {
  115. return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在");
  116. }
  117. else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
  118. {
  119. return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
  120. }
  121. user.setSalt(ShiroUtils.randomSalt());
  122. user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
  123. user.setCreateBy(ShiroUtils.getLoginName());
  124. return toAjax(userService.insertUser(user));
  125. }
  126. /**
  127. * 修改用户
  128. */
  129. @GetMapping("/edit/{userId}")
  130. public String edit(@PathVariable("userId") Long userId, ModelMap mmap)
  131. {
  132. mmap.put("user", userService.selectUserById(userId));
  133. mmap.put("roles", roleService.selectRolesByUserId(userId));
  134. mmap.put("posts", postService.selectPostsByUserId(userId));
  135. return prefix + "/edit";
  136. }
  137. /**
  138. * 修改保存用户
  139. */
  140. @RequiresPermissions("system:user:edit")
  141. @Log(title = "用户管理", businessType = BusinessType.UPDATE)
  142. @PostMapping("/edit")
  143. @ResponseBody
  144. public AjaxResult editSave(@Validated SysUser user)
  145. {
  146. userService.checkUserAllowed(user);
  147. if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
  148. {
  149. return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在");
  150. }
  151. else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
  152. {
  153. return error("修改用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
  154. }
  155. user.setUpdateBy(ShiroUtils.getLoginName());
  156. return toAjax(userService.updateUser(user));
  157. }
  158. @RequiresPermissions("system:user:resetPwd")
  159. @Log(title = "重置密码", businessType = BusinessType.UPDATE)
  160. @GetMapping("/resetPwd/{userId}")
  161. public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap)
  162. {
  163. mmap.put("user", userService.selectUserById(userId));
  164. return prefix + "/resetPwd";
  165. }
  166. @RequiresPermissions("system:user:resetPwd")
  167. @Log(title = "重置密码", businessType = BusinessType.UPDATE)
  168. @PostMapping("/resetPwd")
  169. @ResponseBody
  170. public AjaxResult resetPwdSave(SysUser user)
  171. {
  172. userService.checkUserAllowed(user);
  173. user.setSalt(ShiroUtils.randomSalt());
  174. user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
  175. if (userService.resetUserPwd(user) > 0)
  176. {
  177. if (ShiroUtils.getUserId() == user.getUserId())
  178. {
  179. ShiroUtils.setSysUser(userService.selectUserById(user.getUserId()));
  180. }
  181. return success();
  182. }
  183. return error();
  184. }
  185. @RequiresPermissions("system:user:remove")
  186. @Log(title = "用户管理", businessType = BusinessType.DELETE)
  187. @PostMapping("/remove")
  188. @ResponseBody
  189. public AjaxResult remove(String ids)
  190. {
  191. try
  192. {
  193. return toAjax(userService.deleteUserByIds(ids));
  194. }
  195. catch (Exception e)
  196. {
  197. return error(e.getMessage());
  198. }
  199. }
  200. /**
  201. * 校验用户名
  202. */
  203. @PostMapping("/checkLoginNameUnique")
  204. @ResponseBody
  205. public String checkLoginNameUnique(SysUser user)
  206. {
  207. return userService.checkLoginNameUnique(user.getLoginName());
  208. }
  209. /**
  210. * 校验手机号码
  211. */
  212. @PostMapping("/checkPhoneUnique")
  213. @ResponseBody
  214. public String checkPhoneUnique(SysUser user)
  215. {
  216. return userService.checkPhoneUnique(user);
  217. }
  218. /**
  219. * 校验email邮箱
  220. */
  221. @PostMapping("/checkEmailUnique")
  222. @ResponseBody
  223. public String checkEmailUnique(SysUser user)
  224. {
  225. return userService.checkEmailUnique(user);
  226. }
  227. /**
  228. * 用户状态修改
  229. */
  230. @Log(title = "用户管理", businessType = BusinessType.UPDATE)
  231. @RequiresPermissions("system:user:edit")
  232. @PostMapping("/changeStatus")
  233. @ResponseBody
  234. public AjaxResult changeStatus(SysUser user)
  235. {
  236. userService.checkUserAllowed(user);
  237. return toAjax(userService.changeStatus(user));
  238. }
  239. }