EmpUserCustomController.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package com.jeesite.modules.mes.web;
  2. import com.jeesite.common.config.Global;
  3. import com.jeesite.common.lang.StringUtils;
  4. import com.jeesite.common.web.BaseController;
  5. import com.jeesite.modules.sys.entity.EmpUser;
  6. import com.jeesite.modules.sys.entity.EmployeeOffice;
  7. import com.jeesite.modules.sys.entity.Role;
  8. import com.jeesite.modules.sys.service.EmpUserService;
  9. import com.jeesite.modules.sys.web.user.EmpUserController;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.ui.Model;
  13. import org.springframework.validation.annotation.Validated;
  14. import org.springframework.web.bind.annotation.ModelAttribute;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.ResponseBody;
  17. import javax.servlet.http.HttpServletRequest;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. @Controller
  21. @RequestMapping(value = "${adminPath}/mes/empUserCustom")
  22. public class EmpUserCustomController extends BaseController {
  23. @Autowired
  24. private EmpUserController empUserController;
  25. @Autowired
  26. private EmpUserService empUserService;
  27. @ModelAttribute
  28. public EmpUser get(String userCode, boolean isNewRecord) {
  29. return empUserService.get(userCode, isNewRecord);
  30. }
  31. @RequestMapping(value = "form")
  32. public String form(EmpUser empUser, String op, Model model) {
  33. if ("copy".equals(op)) {
  34. // 借用原生的 form 方法,获取全量数据(包括岗位、机构、角色)
  35. String view = empUserController.form(empUser, "edit", model);
  36. EmpUser fullUser = (EmpUser) model.asMap().get("empUser");
  37. if (fullUser != null) {
  38. // 将原记录转化为新记录
  39. fullUser.setIsNewRecord(true);
  40. fullUser.setUserCode(null);
  41. // 转换员工及附属机构的主键
  42. if (fullUser.getEmployee() != null) {
  43. fullUser.getEmployee().setIsNewRecord(true);
  44. fullUser.getEmployee().setEmpCode(null);
  45. List<EmployeeOffice> officeList = fullUser.getEmployee().getEmployeeOfficeList();
  46. if (officeList != null && !officeList.isEmpty()) {
  47. for (EmployeeOffice eo : officeList) {
  48. eo.setIsNewRecord(true);
  49. eo.setId(null);
  50. }
  51. }
  52. }
  53. // 处理角色回显
  54. List<Role> roleList = fullUser.getRoleList();
  55. if (roleList != null && !roleList.isEmpty()) {
  56. List<String> roleCodes = new ArrayList<>();
  57. for (Role role : roleList) {
  58. roleCodes.add(role.getRoleCode());
  59. }
  60. fullUser.setUserRoleString(StringUtils.join(roleCodes, ","));
  61. }
  62. // 覆盖 Model 中的对象并注入角色列表和操作标识
  63. model.addAttribute("empUser", fullUser);
  64. model.addAttribute("roleList", roleList);
  65. model.addAttribute("op", "add");
  66. }
  67. // 注入自定义保存脚本,修改表单 action 为我们自己的 save
  68. String customSaveScript = "<script>" +
  69. "$(function(){" +
  70. " var overrideAction = function() {" +
  71. " var form = $('#inputForm');" +
  72. " if(form.length > 0 && form.attr('action').indexOf('/mes/empUserCustom/save') === -1) {" +
  73. " form.attr('action', '" + Global.getAdminPath() + "/mes/empUserCustom/save');" +
  74. " }" +
  75. " };" +
  76. " overrideAction();" +
  77. " setInterval(overrideAction, 500);" +
  78. "});" +
  79. "</script>";
  80. model.addAttribute("customSaveScript", customSaveScript);
  81. // 为了防止 customSaveScript 没有被模板渲染,我们利用 extend 字段进行 XSS 注入(JeeSite 中扩展字段常用于透传)
  82. // 或者更安全的做法,只需 model 传参。这里保留之前的做法。
  83. return view;
  84. }
  85. return empUserController.form(empUser, op, model);
  86. }
  87. @RequestMapping(value = "save")
  88. @ResponseBody
  89. public String save(@Validated EmpUser empUser, String oldLoginCode, HttpServletRequest request) {
  90. EmpUser existUser = new EmpUser();
  91. existUser.setLoginCode(empUser.getLoginCode());
  92. List<EmpUser> uList = empUserService.findList(existUser);
  93. if (uList != null && !uList.isEmpty()) {
  94. return renderResult(Global.FALSE, "保存用户失败,登录账号已存在(不能与原账号相同),请修改登录账号!");
  95. }
  96. if (StringUtils.isNotBlank(empUser.getUserName())) {
  97. EmpUser where = new EmpUser();
  98. where.setUserName(empUser.getUserName());
  99. List<EmpUser> list = empUserService.findList(where);
  100. if (list != null && !list.isEmpty()) {
  101. return renderResult(Global.FALSE, "保存用户失败,用户昵称已存在(不能与原昵称相同),请修改用户昵称!");
  102. }
  103. }
  104. return empUserController.save(empUser, oldLoginCode, request);
  105. }
  106. }