SysUserController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. package com.ssm.controller.system;
  2. import java.util.Date;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpSession;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.transaction.annotation.Transactional;
  12. import org.springframework.ui.Model;
  13. import org.springframework.validation.BindingResult;
  14. import org.springframework.validation.DataBinder;
  15. import org.springframework.validation.FieldError;
  16. import org.springframework.validation.annotation.Validated;
  17. import org.springframework.web.bind.annotation.InitBinder;
  18. import org.springframework.web.bind.annotation.ModelAttribute;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RequestMethod;
  21. import org.springframework.web.bind.annotation.RequestParam;
  22. import com.ssm.model.system.SysDepartment;
  23. import com.ssm.model.system.SysRole;
  24. import com.ssm.model.system.SysUser;
  25. import com.ssm.model.validator.UserCreateValidator;
  26. import com.ssm.service.system.SysDepartmentService;
  27. import com.ssm.service.system.SysRoleService;
  28. import com.ssm.service.system.SysUserService;
  29. import com.ssm.util.Util;
  30. import com.ssm.util.page.PagedResult;
  31. import com.ssm.web.Const;
  32. import com.ssm.web.RoleLimit;
  33. /**
  34. * 用户管理 Controller
  35. * @author xk
  36. */
  37. @RequestMapping("sysUser")
  38. @Controller
  39. public class SysUserController {
  40. @Autowired
  41. private SysUserService sysUserService;
  42. @Autowired
  43. private SysDepartmentService sysDepartmentService;
  44. @Autowired
  45. private SysRoleService sysRoleService;
  46. /**
  47. * SysUserExample 为模糊匹配条件
  48. * 内容根据 condition 来 设置, 分页必须 设置 order by
  49. * 查询 用户 列表
  50. * 分页查询
  51. * @return
  52. */
  53. @RoleLimit(pid = "sysUser", mid = "userList")
  54. @RequestMapping(value="userList")
  55. public String userList(HttpSession session, Model model, SysUser condition,
  56. Integer pageNo, Integer pageSize){
  57. // PagedResult<SysUser> pageResult = sysUserService.findAllByContidion(
  58. // condition != null ? condition.getUsername() : null,
  59. // condition != null ? condition.getEmployeeno() : null, pageNo, 2);
  60. // model.addAttribute("list", pageResult);
  61. // model.addAttribute("condition", condition);
  62. List<SysRole> roleList = sysRoleService.selectRoleAndMenuList();
  63. model.addAttribute("roleList", roleList);
  64. return "sysuser/userList";
  65. }
  66. @RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
  67. @RequestMapping(value="initDataList")
  68. public String initDataList(Model model, SysUser condition, Integer pageNo, Integer pageSize){
  69. PagedResult<SysUser> pageResult = sysUserService.findAllByContidion(
  70. condition != null ? condition.getUsername() : null,
  71. condition != null ? condition.getEmployeeno() : null, pageNo, 10);
  72. model.addAttribute("list", pageResult);
  73. model.addAttribute("condition", condition);
  74. return "sysuser/dataList";
  75. }
  76. /**
  77. * 添加用户和编辑用户 表单验证
  78. */
  79. @RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
  80. @InitBinder("user")
  81. public void InitBinder(DataBinder binder){
  82. binder.setValidator(new UserCreateValidator());
  83. }
  84. /**
  85. * 进入用户添加 页面
  86. * @param model
  87. * @return
  88. */
  89. @RoleLimit(pid = "sysUser", mid = "userAdd")
  90. @RequestMapping(value="userAdd", method=RequestMethod.GET)
  91. public String userAdd(Model model){
  92. if(!model.containsAttribute("user"))
  93. model.addAttribute("user", new SysUser());
  94. //查询所有的部门
  95. List<SysDepartment> depList = sysDepartmentService.findAll();
  96. model.addAttribute("depList", depList);
  97. if(!depList.isEmpty())
  98. model.addAttribute("firstDep", depList.get(0).getDepid());
  99. return "sysuser/userAdd";
  100. }
  101. /**
  102. * 添加用户
  103. * @return
  104. */
  105. @RoleLimit(pid = "sysUser", mid = "userAdd")
  106. @Transactional(value="txManager")
  107. @RequestMapping(value="userAdd", method=RequestMethod.POST)
  108. public String userAdd(HttpServletRequest request, HttpSession session, Model model,
  109. @Validated @ModelAttribute("user") SysUser user,
  110. BindingResult result){
  111. if(result.hasErrors())
  112. return userAdd(model);
  113. String employeeno = user.getEmployeeno();
  114. SysUser isExistsUser = sysUserService.findByEmployeeno(employeeno);
  115. if(isExistsUser != null) {
  116. result.addError(new FieldError("user", "employeeno", "员工 "+employeeno+" 已存在"));
  117. return userAdd(model);
  118. }
  119. user.setIsdeleted(false);// 新增的用户,默认 没有被删除
  120. SysUser operator = Util.getUserSession(request);
  121. user.setCreateduserid(operator != null ? operator.getUserid() : null);
  122. user.setCreateddatetime(new Date());
  123. sysUserService.insertSelective(user);
  124. return "redirect:/sysUser/userList";
  125. }
  126. /**
  127. * 进入编辑用户 页面
  128. * @param model
  129. * @param userId
  130. * @return
  131. */
  132. @RoleLimit(pid = "sysUser", mid = "userEdit")
  133. @RequestMapping(value="userEdit", method=RequestMethod.GET)
  134. public String userEdit(Model model, @RequestParam("userId") Integer userId){
  135. SysUser user = sysUserService.findById(userId);
  136. if(!model.containsAttribute("user"))
  137. model.addAttribute("user", user != null ? user : new SysUser());
  138. //查询所有的部门
  139. List<SysDepartment> depList = sysDepartmentService.findAll();
  140. model.addAttribute("depList", depList);
  141. //默认选择的部门
  142. if(user != null)
  143. model.addAttribute("firstDep", user.getSysDepartment().getDepid());
  144. return "sysuser/userEdit";
  145. }
  146. /**
  147. * 用户编辑 保存
  148. * @param session
  149. * @param model
  150. * @param user
  151. * @param result
  152. * @return
  153. */
  154. @RoleLimit(pid = "sysUser", mid = "userEdit")
  155. @Transactional(value="txManager")
  156. @RequestMapping(value="userEdit", method=RequestMethod.POST)
  157. public String userEdit(HttpServletRequest request, HttpSession session, Model model,
  158. @Validated @ModelAttribute("user") SysUser user,
  159. BindingResult result){
  160. if(result.hasErrors())
  161. return userEdit(model, user.getUserid());
  162. SysUser operator = Util.getUserSession(request);
  163. user.setLastupdateuserid(operator.getUserid());
  164. user.setLastupdatedatetime(new Date());
  165. sysUserService.updateByPrimaryKeySelective(user);
  166. return "redirect:/sysUser/userList";
  167. }
  168. /**
  169. * 查询 用户 拥有的角色 并 回显到页面
  170. * @return
  171. */
  172. @RoleLimit(pid = "sysUser", mid = "findUserRole")
  173. @RequestMapping(value="findUserRole", method=RequestMethod.POST)
  174. public Map<String, Object> findUserRoleByUserId(@RequestParam("userId") Integer userId){
  175. Map<String, Object> record = new HashMap<String, Object>();
  176. record.put("success", true);
  177. List<SysRole> roleList = sysRoleService.findUserRoleByUserId(userId);
  178. record.put("roleList", roleList);
  179. return record;
  180. }
  181. /**
  182. * 更新 用户的状态, 是否有效还是无效
  183. * 修改数据库 需要 添加 事物 控制
  184. * userStatus 用于 通知 页面 改变 "状态" 样式
  185. * @param userId
  186. * @return
  187. */
  188. @RoleLimit(pid = "sysUser", mid = "updateUserEnable")
  189. @Transactional(value="txManager")
  190. @RequestMapping(value="updateUserEnable", method=RequestMethod.POST)
  191. public Map<String, Object> updateUserEnable(@RequestParam("userId") Integer userId){
  192. Map<String, Object> record = new HashMap<String, Object>();
  193. record.put("success", true);
  194. //查询用户
  195. SysUser user = sysUserService.findById(userId);
  196. if(user != null) {
  197. if(user.getIsenabled()) {
  198. user.setIsenabled(false);
  199. record.put("userStatus", false);
  200. } else {
  201. user.setIsenabled(true);
  202. record.put("userStatus", true);
  203. }
  204. int count = sysUserService.updateByPrimaryKey(user);
  205. if(count <= 0)
  206. record.put("success", false);
  207. } else {
  208. //不存在
  209. record.put("success", false);
  210. }
  211. return record;
  212. }
  213. /**
  214. * 用户 更新角色
  215. * 先删除,后添加
  216. * @return
  217. */
  218. @RoleLimit(pid = "sysUser", mid = "updateUserRole")
  219. @Transactional(value="txManager")
  220. @RequestMapping(value="updateUserRole", method=RequestMethod.POST)
  221. public Map<String, Object> updateUserRole(@RequestParam("userId") Integer userId, @RequestParam("roleIds") String roleIds){
  222. Map<String, Object> record = new HashMap<String, Object>();
  223. record.put("success", true);
  224. sysUserService.deleteUserRole(userId);
  225. if(StringUtils.isNotBlank(roleIds)){
  226. String[] roles = roleIds.split(",");
  227. for(String roleId : roles){
  228. sysUserService.insertUserRole(userId, Integer.valueOf(roleId));
  229. }
  230. }
  231. return record;
  232. }
  233. /**
  234. * 重置用户密码, 密码在const 里配置 ,默认为dgt.0000
  235. * 修改数据库 需要 添加 事物 控制
  236. * @param userId
  237. * @return
  238. */
  239. @RoleLimit(pid = "sysUser", mid = "resetUserPw")
  240. @Transactional(value="txManager")
  241. @RequestMapping(value="resetUserPw", method=RequestMethod.POST)
  242. public Map<String, Object> resetUserPw(@RequestParam("userId") Integer userId){
  243. Map<String, Object> record = new HashMap<String, Object>();
  244. record.put("success", true);
  245. //查询用户
  246. SysUser user = sysUserService.findById(userId);
  247. if(user != null) {
  248. user.setPassword(Const.DEFAULT_USER_PASSWORD);
  249. int count = sysUserService.updateByPrimaryKey(user);
  250. if(count <= 0)
  251. record.put("success", false);
  252. } else {
  253. //不存在
  254. record.put("success", false);
  255. }
  256. return record;
  257. }
  258. @RoleLimit(pid = "sysUser", mid = "deleteUser")
  259. @Transactional(value="txManager")
  260. @RequestMapping(value="deleteUser", method=RequestMethod.POST)
  261. public Map<String, Object> deleteUser(@RequestParam("userId") Integer userId){
  262. Map<String, Object> record = new HashMap<String, Object>();
  263. record.put("success", true);
  264. sysUserService.deleteUser(userId);
  265. return record;
  266. }
  267. }