From 6185a4790b8fbc7fedd00fde7055f3b9b8708dcc Mon Sep 17 00:00:00 2001 From: hanbo <2608504783@qq.com> Date: Mon, 22 Nov 2021 16:49:08 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/AccountController.java | 53 +++-- src/main/java/cn/palmte/work/model/Admin.java | 2 +- .../cn/palmte/work/model/DeptRepository.java | 2 + .../palmte/work/model/SysRoleRepository.java | 2 + .../work/model/UserPositionRepository.java | 2 + .../palmte/work/service/AccountService.java | 181 ++++++++++++++++-- 6 files changed, 200 insertions(+), 42 deletions(-) diff --git a/src/main/java/cn/palmte/work/controller/backend/AccountController.java b/src/main/java/cn/palmte/work/controller/backend/AccountController.java index fa2a17c..a359ce1 100644 --- a/src/main/java/cn/palmte/work/controller/backend/AccountController.java +++ b/src/main/java/cn/palmte/work/controller/backend/AccountController.java @@ -59,18 +59,17 @@ public class AccountController extends BaseController { @RequestMapping(value = "/updatePassword") @ResponseBody - public ResponseMsg updatePassword(HttpServletRequest request, ModifyPasswordRequest modifyPasswordRequest){ + public ResponseMsg updatePassword(HttpServletRequest request, ModifyPasswordRequest modifyPasswordRequest) { ResponseMsg responseMsg = new ResponseMsg(); - try{ + try { String privateKey = (String) request.getSession().getAttribute(Constant.PRIVATEKEY); adminService.updatePassword(modifyPasswordRequest.getId(), modifyPasswordRequest.getPassword(), - modifyPasswordRequest.getNewPassword(), privateKey); + modifyPasswordRequest.getNewPassword(), privateKey); responseMsg.setStatus(0); responseMsg.setMsg("密码修改成功"); - } - catch(Exception e){ + } catch (Exception e) { responseMsg.setStatus(1); - responseMsg.setMsg("密码修改失败:"+e.getMessage()); + responseMsg.setMsg("密码修改失败:" + e.getMessage()); } return responseMsg; } @@ -86,7 +85,7 @@ public class AccountController extends BaseController { model.put("roleList", sysRoleService.getAllEnableSysRole()); model.put("deptList", deptRepository.findAll()); model.put("positionList", userPositionRepository.findAll()); - model.put("pager", accountService.getAdminList(searchInfo, pageSize, pageNumber)); + model.put("pager", accountService.list(searchInfo, pageNumber, pageSize)); return "/admin/account_list"; } @@ -122,23 +121,23 @@ public class AccountController extends BaseController { * 保存或更新用户 */ @RequestMapping("/save") - public String save(@RequestParam("userId") int userId,Admin admin, HttpServletRequest request, Map model) throws IOException { - if(admin.getRoleId()<=0){ - model.put("errorMessage","角色不能为空!"); + public String save(@RequestParam("userId") int userId, Admin admin, HttpServletRequest request, Map model) throws IOException { + if (admin.getRoleId() <= 0) { + model.put("errorMessage", "角色不能为空!"); return "/common/error"; } //获取验证用户信息 - String message = accountService.validateUserExistInfo(userId,admin); - if(StringUtils.isNotEmpty(message)){ - model.put("errorMessage",message); + String message = accountService.validateUserExistInfo(userId, admin); + if (StringUtils.isNotEmpty(message)) { + model.put("errorMessage", message); return "/common/error"; } - try { + try { HttpSession session = request.getSession(); String privateKey = (String) session.getAttribute(Constant.PRIVATEKEY); - accountService.saveOrUpdateAccount(userId,admin.getRoleId(),admin, privateKey); + accountService.saveOrUpdateAccount(userId, admin.getRoleId(), admin, privateKey); } catch (Exception e) { logger.error("保存账号出错!" + e.toString()); return "新增账号出错!请联系管理员处理!"; @@ -151,7 +150,7 @@ public class AccountController extends BaseController { */ @RequestMapping("/changeStatus") public ResponseMsg changeStatus(Admin admin) { - boolean locked = accountService.changeStatus(admin.getId(),admin.getEnabled()); + boolean locked = accountService.changeStatus(admin.getId(), admin.getEnabled()); if (locked) { return ResponseMsg.buildSuccessMsg("操作成功"); } else { @@ -183,10 +182,10 @@ public class AccountController extends BaseController { */ @RequestMapping("/resetPassword") @ResponseBody - public ResponseMsg resetPassword(@RequestParam("userId") int userId,HttpServletRequest request) { + public ResponseMsg resetPassword(@RequestParam("userId") int userId, HttpServletRequest request) { HttpSession session = request.getSession(); String privateKey = (String) session.getAttribute(Constant.PRIVATEKEY); - boolean flag = accountService.resetPassword(userId,privateKey); + boolean flag = accountService.resetPassword(userId, privateKey); ResponseMsg responseMsg = new ResponseMsg(); if (flag) { responseMsg.setStatus(0); @@ -202,7 +201,7 @@ public class AccountController extends BaseController { * 修改密码请求 */ @RequestMapping("/password") - public String password(HttpServletRequest request,Map model){ + public String password(HttpServletRequest request, Map model) { Admin admin = adminService.getAdminById(InterfaceUtil.getAdminId()); try { String id = new DESAS().encrypt(admin.getId().toString()); @@ -211,7 +210,7 @@ public class AccountController extends BaseController { e.printStackTrace(); } model.put("SysUser", admin); - genRSAKeyPair(request,model); + genRSAKeyPair(request, model); return "/admin/account_password"; } @@ -221,23 +220,23 @@ public class AccountController extends BaseController { } @RequestMapping("/export") - public void export(@RequestParam(value = "keywords",required = false) String keywords, HttpServletResponse httpServletResponse) throws IOException { + public void export(@RequestParam(value = "keywords", required = false) String keywords, HttpServletResponse httpServletResponse) throws IOException { Map searchInfo = getSearchInfo(keywords); - downloadHeader(httpServletResponse , Utils.generateExcelName("人员信息"), "application/octet-stream"); + downloadHeader(httpServletResponse, Utils.generateExcelName("人员信息"), "application/octet-stream"); String[] headers = {"工号", "手机号码", "姓名", "常驻地", "一级部门", "直接主管", "职位", "所属角色", "公司邮件地址"}; - String[] exportColumns = {"empCode", "telephone", "workLocation", "deptName", "directManager", "positionName", "roleName", "companyEmail"}; + String[] exportColumns = {"empCode", "telephone", "realName", "workLocation", "deptName", "directManager", "positionName", "roleName", "companyEmail"}; ExportUtils.exportToExcel(headers, exportColumns, 1, 10000, - httpServletResponse.getOutputStream(), (pN, pS) -> accountService.getAdminList(searchInfo, pN, pS).getList()); + httpServletResponse.getOutputStream(), (pN, pS) -> accountService.list(searchInfo, pN, pS).getList()); } /** * 模板下载 */ @RequestMapping("/template") - public void template(HttpServletResponse response) throws Exception{ + public void template(HttpServletResponse response) throws Exception { - String[] headers = new String[]{"工号", "手机号码", "姓名", "常驻地", "一级部门", "直接主管", "职位", "所属角色", "公司邮件地址"}; - downloadHeader(response , Utils.generateExcelName("人员信息批量导入模板")); + String[] headers = new String[]{"工号", "手机号码", "登录名称", "姓名", "常驻地", "一级部门", "直接主管", "职位", "所属角色", "公司邮件地址"}; + downloadHeader(response, Utils.generateExcelName("人员信息批量导入模板")); ExportUtils exportUtils = new ExportUtils(headers); exportUtils.write(response.getOutputStream()); } diff --git a/src/main/java/cn/palmte/work/model/Admin.java b/src/main/java/cn/palmte/work/model/Admin.java index 6acca03..44b33c1 100644 --- a/src/main/java/cn/palmte/work/model/Admin.java +++ b/src/main/java/cn/palmte/work/model/Admin.java @@ -13,7 +13,7 @@ import java.util.Date; */ @Entity @Table(name = "sys_user") -public class Admin implements Serializable{ +public class Admin{ public static final int ENABLED = 1; public static final int DISABLED = 0; public static final int LOCKED = 1; diff --git a/src/main/java/cn/palmte/work/model/DeptRepository.java b/src/main/java/cn/palmte/work/model/DeptRepository.java index 5027a19..70a3164 100644 --- a/src/main/java/cn/palmte/work/model/DeptRepository.java +++ b/src/main/java/cn/palmte/work/model/DeptRepository.java @@ -3,4 +3,6 @@ package cn.palmte.work.model; import org.springframework.data.jpa.repository.JpaRepository; public interface DeptRepository extends JpaRepository { + + Dept findByNameEquals(String name); } diff --git a/src/main/java/cn/palmte/work/model/SysRoleRepository.java b/src/main/java/cn/palmte/work/model/SysRoleRepository.java index 266a2cf..da4996c 100644 --- a/src/main/java/cn/palmte/work/model/SysRoleRepository.java +++ b/src/main/java/cn/palmte/work/model/SysRoleRepository.java @@ -49,4 +49,6 @@ public interface SysRoleRepository extends JpaRepository { @Query(" from SysRole where deleted=0 and isEnable=1 and type = 1") List getAllEnableSysRole(); + SysRole findByNameEqualsAndDeletedEquals(String name,int deleted); + } diff --git a/src/main/java/cn/palmte/work/model/UserPositionRepository.java b/src/main/java/cn/palmte/work/model/UserPositionRepository.java index 81deccb..e82d1ed 100644 --- a/src/main/java/cn/palmte/work/model/UserPositionRepository.java +++ b/src/main/java/cn/palmte/work/model/UserPositionRepository.java @@ -4,4 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface UserPositionRepository extends JpaRepository { + UserPosition findByPositionNameEquals(String name); + } diff --git a/src/main/java/cn/palmte/work/service/AccountService.java b/src/main/java/cn/palmte/work/service/AccountService.java index 3738a4f..959b8f7 100644 --- a/src/main/java/cn/palmte/work/service/AccountService.java +++ b/src/main/java/cn/palmte/work/service/AccountService.java @@ -60,20 +60,26 @@ public class AccountService { return adminList; } - public Page list(ConcurrentHashMap searchInfo, int pageNumber, int pageSize) { - QueryHelper queryHelper = new QueryHelper("select su.id,su.user_name,su.real_name,su.created_time,su.enabled,sr.type,sr.name as roleName,su.telephone,su.region_name", " FROM sys_user su left join sys_user_role " + - "sur on su.id = sur.user_id left join sys_role sr on sur.role_id = sr.id"); - queryHelper.addCondition("su.is_deleted = 0"); + public Page list(Map searchInfo, int pageNumber, int pageSize) { + QueryHelper queryHelper = new QueryHelper("*", "sys_user u"); + queryHelper.addCondition("u.is_deleted = 0"); + queryHelper.addCondition(searchInfo.containsKey("realName"), "u.real_name like ?", "%" + + searchInfo.get("realName") + "%"); + queryHelper.addCondition(searchInfo.containsKey("telephone"), "u.telephone =?", searchInfo.get("telephone")); + queryHelper.addCondition(searchInfo.containsKey("empCode"), "u.emp_code =?", searchInfo.get("empCode")); + queryHelper.addCondition(searchInfo.containsKey("deptId") && + StrKit.notBlank(searchInfo.get("deptId")) && !"-1".equals(searchInfo.get("deptId")), + "u.dept_id =?", searchInfo.get("deptId")); queryHelper.addCondition(searchInfo.containsKey("roleId") && StrKit.notBlank(searchInfo.get("roleId")) && !"-1".equals(searchInfo.get("roleId")), - "sr.id =?", searchInfo.get("roleId")); - queryHelper.addCondition(searchInfo.containsKey("userName"), "su.user_name like ?", "%" + - "su.is_deleted = 0" + "%"); - queryHelper.addCondition(searchInfo.containsKey("telephone"), "su.telephone = ?" + searchInfo.get("telephone")); - queryHelper.addCondition(searchInfo.containsKey("regionId") && - StrKit.notBlank(searchInfo.get("regionId")) && !"-1".equals(searchInfo.get("regionId")), - "su.region_id =?", searchInfo.get("regionId")); - queryHelper.addOrderProperty("su.created_time", false); + "u.role_id =?", searchInfo.get("roleId")); + queryHelper.addCondition(searchInfo.containsKey("workLocation"), "u.work_location like ?", "%" + + searchInfo.get("workLocation") + "%"); + queryHelper.addCondition(searchInfo.containsKey("startTime"), "u.created_time >= ?", + searchInfo.get("startTime") + " 00:00:00"); + queryHelper.addCondition(searchInfo.containsKey("endTime"), "u.created_time <= ?", + searchInfo.get("endTime") + " 23:59:59"); + queryHelper.addOrderProperty("u.created_time", false); Page page = pagination.paginate(queryHelper.getSql(), Admin.class, pageNumber, pageSize); return page; @@ -276,10 +282,157 @@ public class AccountService { return false; } - public ResponseMsg check(Collection maps) { + @Transactional + public ResponseMsg check(Collection excelMap) { + int successCount = 0; + int errorCount = 0; + List errorList = new ArrayList<>(); + int createAdminId = InterfaceUtil.getAdminId(); + Admin admin = null; + if (excelMap.size() == 0) { + ResponseMsg msg = ResponseMsg.buildSuccessMsg("请填写人员数据!"); + msg.setData(errorList); + return msg; + } - return null; + for (Map m : excelMap) { + + try { + Object empCode = m.get("工号"); + if (empCode == null || StrKit.isBlank(empCode.toString())) { + throw new Exception("工号不能为空"); + } + + Admin byEmpCode = adminRepository.findByEmpCode(empCode.toString()); + + if (null != byEmpCode) { + throw new Exception("工号" + empCode.toString() + "已存在"); + } + + Object telephone = m.get("手机号码"); + if (telephone == null || StrKit.isBlank(telephone.toString())) { + throw new Exception("手机号码不能为空"); + } + + Admin byTelephone = adminRepository.findByTelephone(telephone.toString()); + if (null != byTelephone) { + throw new Exception("手机号码" + telephone.toString() + "已存在"); + } + + Object userName = m.get("登录名称"); + if (userName == null || StrKit.isBlank(userName.toString())) { + throw new Exception("登录名称不能为空"); + } + + Admin byUsername = adminRepository.getAdminByUsername(userName.toString()); + if (null != byUsername) { + throw new Exception("登录名称" + byUsername.toString() + "已存在"); + } + + Object realName = m.get("姓名"); + if (realName == null || StrKit.isBlank(realName.toString())) { + throw new Exception("姓名不能为空"); + } + + Admin byRealName = adminRepository.getAdminByRealName(realName.toString()); + if (null != byRealName) { + throw new Exception("姓名" + realName.toString() + "已存在"); + } + + Object workLocation = m.get("常驻地"); + if (workLocation == null || StrKit.isBlank(workLocation.toString())) { + throw new Exception("常驻地不能为空"); + } + + Object deptName = m.get("一级部门"); + if (deptName == null || StrKit.isBlank(deptName.toString())) { + throw new Exception("一级部门不能为空"); + } + + Dept dept = deptRepository.findByNameEquals(deptName.toString()); + + if (null == dept) { + throw new Exception("一级部门" + deptName.toString() + "不存在"); + } + + Object directManager = m.get("直接主管"); + if (directManager == null || StrKit.isBlank(directManager.toString())) { + throw new Exception("直接主管不能为空"); + } + + Object positionName = m.get("职位"); + if (positionName == null || StrKit.isBlank(positionName.toString())) { + throw new Exception("职位不能为空"); + } + + UserPosition userPosition = userPositionRepository.findByPositionNameEquals(positionName.toString()); + + if (null == userPosition) { + throw new Exception("职位" + positionName.toString() + "不存在"); + } + + Object sysRole = m.get("所属角色"); + if (sysRole == null || StrKit.isBlank(sysRole.toString())) { + throw new Exception("所属角色不能为空"); + } + + SysRole role = sysRoleRepository.findByNameEqualsAndDeletedEquals(sysRole.toString(), 0); + + if (null == role) { + throw new Exception("所属角色" + sysRole.toString() + "不存在"); + } + + Object companyEmail = m.get("公司邮件地址"); + if (companyEmail == null || StrKit.isBlank(companyEmail.toString())) { + throw new Exception("公司邮件地址不能为空"); + } + + admin = new Admin(); + admin.setEmpCode(empCode.toString()); + admin.setTelephone(telephone.toString()); + admin.setUserName(userName.toString()); + admin.setWorkLocation(workLocation.toString()); + admin.setDeptId(dept.getId()); + admin.setDeptName(dept.getName()); + admin.setDirectManager(directManager.toString()); + admin.setPositionId(userPosition.getId()); + admin.setPositionName(userPosition.getPositionName()); + admin.setRoleId(role.getId()); + admin.setRealName(role.getName()); + admin.setCompanyEmail(companyEmail.toString()); + + String salt = RandomStringUtils.randomAlphanumeric(6).toUpperCase(); + String password = decEncPassword(admin.getTelephone().substring(5), salt, ""); + + admin.setSalt(salt); + admin.setPassword(password); + admin.setCreatedBy(createAdminId); + admin.setCreatedTime(new Date()); + admin.setLastUpdatedBy(createAdminId); + admin.setLastUpdatedTime(new Date()); + adminRepository.saveAndFlush(admin); + + //设置当前用户角色关系状态为删除 + sysUserRoleRepository.deleteSysUserRoleByUserId(createAdminId, new Date(), admin.getId()); + SysUserRole sysUserRole = new SysUserRole(); + //保存用户角色关系 + sysUserRole.setUserId(admin.getId()); + sysUserRole.setRoleId(role.getId()); + sysUserRole.setCreatedBy(createAdminId); + sysUserRole.setCreatedTime(new Date()); + sysUserRoleRepository.save(sysUserRole); + + successCount++; + } catch (Exception e) { + logger.error("", e); + errorCount++; + errorList.add(e.getMessage()); + } + } + final ResponseMsg msg = ResponseMsg.buildSuccessMsg(String.format("成功:%d, 失败:%d", successCount, errorCount)); + msg.setData(errorList); + return msg; }