From 587128109bb9c0340493e9fea4ece6471e14bbc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Fri, 10 Mar 2023 16:11:38 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=20sonar=E3=80=91SysUserController?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysUserController.java | 194 ++++++++++-------- 1 file changed, 109 insertions(+), 85 deletions(-) diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java index b08f2437..6c579d30 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java @@ -44,6 +44,7 @@ import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; @@ -171,29 +172,7 @@ public class SysUserController { String rsaPrivateKey = String.valueOf(redisUtil.get(rsaPublicKey)); SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); - try { - if (StrUtil.isNotEmpty(user.getEmail())){ - String email = CommonUtils.decryptBtRsaPriKey(user.getEmail(), rsaPrivateKey); - user.setEmail(email); - } - - if (StrUtil.isNotEmpty(user.getPhone())){ - String phone = CommonUtils.decryptBtRsaPriKey(user.getPhone(), rsaPrivateKey); - user.setPhone(phone); - } - - // 密码加盐 - String password = CommonUtils.decryptBtRsaPriKey(user.getPassword(), rsaPrivateKey); - user.setCreateTime(new Date());//设置创建时间 - String salt = oConvertUtils.randomGen(8); - user.setSalt(salt); - String passwordEncode = PasswordUtil.encrypt(user.getUsername(), password, salt); - user.setPassword(passwordEncode); - user.setStatus(1); - user.setDelFlag(CommonConstant.DEL_FLAG_0); - } catch (Exception e) { - throw new JeroBootException("邮箱和手机号解密失败!", e); - } + setUser(rsaPrivateKey, user); // 保存用户走一个service 保证事务 sysUserService.saveUser(user, selectedRoles, selectedDeparts); @@ -204,6 +183,32 @@ public class SysUserController { } } + private void setUser(String rsaPrivateKey, SysUser user) { + try { + if (StrUtil.isNotEmpty(user.getEmail())){ + String email = CommonUtils.decryptBtRsaPriKey(user.getEmail(), rsaPrivateKey); + user.setEmail(email); + } + + if (StrUtil.isNotEmpty(user.getPhone())){ + String phone = CommonUtils.decryptBtRsaPriKey(user.getPhone(), rsaPrivateKey); + user.setPhone(phone); + } + + // 密码加盐 + String password = CommonUtils.decryptBtRsaPriKey(user.getPassword(), rsaPrivateKey); + user.setCreateTime(new Date());//设置创建时间 + String salt = oConvertUtils.randomGen(8); + user.setSalt(salt); + String passwordEncode = PasswordUtil.encrypt(user.getUsername(), password, salt); + user.setPassword(passwordEncode); + user.setStatus(1); + user.setDelFlag(CommonConstant.DEL_FLAG_0); + } catch (Exception e) { + throw new JeroBootException("邮箱和手机号解密失败!", e); + } + } + @RequiresPermissions("user:edit") // @RequestMapping(value = "/edit", method = RequestMethod.PUT) @PutMapping("/edit") @@ -218,26 +223,7 @@ public class SysUserController { if(sysUser==null) { return Result.error(INEXISTENCE); }else { - SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); - String email = null; - String phone = null; - try { - //1:先用私钥解密数据 - if (StrUtil.isNotEmpty(user.getEmail())){ - email = CommonUtils.decryptBtRsaPriKey(user.getEmail(), rsaPrivateKey); - } - - if (StrUtil.isNotEmpty(user.getPhone())){ - phone = CommonUtils.decryptBtRsaPriKey(user.getPhone(), rsaPrivateKey); - } - } catch (Exception e) { - throw new JeroBootException("解密失败!", e); - } -// 3:把数据加密在放回来 - user.setEmail(email); - user.setPhone(phone); - user.setUpdateTime(new Date()); - user.setPassword(sysUser.getPassword()); + SysUser user = getSysUser(jsonObject, rsaPrivateKey, sysUser); // 修改用户走一个service 保证事务 sysUserService.editUser(user, roles, departs); return Result.OK(OPTION_SUCCESS); @@ -248,7 +234,32 @@ public class SysUserController { } } -// @RequestMapping(value = "/delete", method = RequestMethod.DELETE) + @NotNull + private SysUser getSysUser(@RequestBody JSONObject jsonObject, String rsaPrivateKey, SysUser sysUser) { + SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); + String email = null; + String phone = null; + try { + //1:先用私钥解密数据 + if (StrUtil.isNotEmpty(user.getEmail())){ + email = CommonUtils.decryptBtRsaPriKey(user.getEmail(), rsaPrivateKey); + } + + if (StrUtil.isNotEmpty(user.getPhone())){ + phone = CommonUtils.decryptBtRsaPriKey(user.getPhone(), rsaPrivateKey); + } + } catch (Exception e) { + throw new JeroBootException("解密失败!", e); + } +// 3:把数据加密在放回来 + user.setEmail(email); + user.setPhone(phone); + user.setUpdateTime(new Date()); + user.setPassword(sysUser.getPassword()); + return user; + } + + // @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @DeleteMapping("/delete") public Result delete(@RequestParam(name="id",required=true) String id) { baseCommonService.addLog("删除用户,id: " +id ,CommonConstant.LOG_TYPE_2, 3); @@ -540,31 +551,11 @@ public class SysUserController { String message = e.getMessage().toLowerCase(); int lineNumber = i + 1; // 通过索引名判断出错信息 - if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_USERNAME) - || message.contains(CommonConstant.SQL_INDEX_INDEX_USER_NAME)) { - errorMessage.add("第 " + lineNumber + " 行:用户名已经存在,忽略导入。"); - } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_WORK_NO)) { - errorMessage.add("第 " + lineNumber + " 行:工号已经存在,忽略导入。"); - } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_PHONE)) { - errorMessage.add("第 " + lineNumber + " 行:手机号已经存在,忽略导入。"); - } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_EMAIL)) { - errorMessage.add("第 " + lineNumber + " 行:电子邮件已经存在,忽略导入。"); - } else { - errorMessage.add("第 " + lineNumber + " 行:未知错误,忽略导入"); - SysUserController.log.error(e.getMessage(), e); - } + setErrorMessage(errorMessage, e, message, lineNumber); } // 批量将部门和用户信息建立关联关系 TODO 错误需修改 String departIds = sysUserExcel.getDepartIds(); - if (StringUtils.isNotBlank(departIds)) { - String userId = sysUserExcel.getId(); - String[] departIdArray = departIds.split(","); - List userDepartList = new ArrayList<>(departIdArray.length); - for (String departId : departIdArray) { - userDepartList.add(new SysUserDepart(userId, departId)); - } - sysUserDepartService.saveBatch(userDepartList); - } + saveUser(sysUserExcel, departIds); } } catch (Exception e) { @@ -581,6 +572,34 @@ public class SysUserController { return ImportExcelUtil.imporReturnRes(errorLines,successLines,errorMessage); } + private void saveUser(SysUser sysUserExcel, String departIds) { + if (StringUtils.isNotBlank(departIds)) { + String userId = sysUserExcel.getId(); + String[] departIdArray = departIds.split(","); + List userDepartList = new ArrayList<>(departIdArray.length); + for (String departId : departIdArray) { + userDepartList.add(new SysUserDepart(userId, departId)); + } + sysUserDepartService.saveBatch(userDepartList); + } + } + + private void setErrorMessage(List errorMessage, Exception e, String message, int lineNumber) { + if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_USERNAME) + || message.contains(CommonConstant.SQL_INDEX_INDEX_USER_NAME)) { + errorMessage.add("第 " + lineNumber + " 行:用户名已经存在,忽略导入。"); + } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_WORK_NO)) { + errorMessage.add("第 " + lineNumber + " 行:工号已经存在,忽略导入。"); + } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_PHONE)) { + errorMessage.add("第 " + lineNumber + " 行:手机号已经存在,忽略导入。"); + } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_EMAIL)) { + errorMessage.add("第 " + lineNumber + " 行:电子邮件已经存在,忽略导入。"); + } else { + errorMessage.add("第 " + lineNumber + " 行:未知错误,忽略导入"); + SysUserController.log.error(e.getMessage(), e); + } + } + /** * @功能:根据id 批量查询 * @param userIds @@ -1194,25 +1213,7 @@ public class SysUserController { return Result.error("手机号已存在!"); } } - if(StringUtils.isNotBlank(realname)){ - sysUser.setRealname(realname); - } - if(StringUtils.isNotBlank(avatar)){ - sysUser.setAvatar(avatar); - } - if(StringUtils.isNotBlank(sex)){ - sysUser.setSex(Integer.parseInt(sex)); - } - if(StringUtils.isNotBlank(phone)){ - sysUser.setPhone(phone); - } - if(StringUtils.isNotBlank(email)){ - sysUser.setEmail(email); - } - if(null != birthday){ - sysUser.setBirthday(birthday); - } - sysUser.setUpdateTime(new Date()); + setUser(sysUser, realname, avatar, sex, phone, email, birthday); sysUserService.updateById(sysUser); } } catch (Exception e) { @@ -1221,6 +1222,29 @@ public class SysUserController { } return result; } + + private void setUser(SysUser sysUser, String realname, String avatar, String sex, String phone, String email, Date birthday) { + if(StringUtils.isNotBlank(realname)){ + sysUser.setRealname(realname); + } + if(StringUtils.isNotBlank(avatar)){ + sysUser.setAvatar(avatar); + } + if(StringUtils.isNotBlank(sex)){ + sysUser.setSex(Integer.parseInt(sex)); + } + if(StringUtils.isNotBlank(phone)){ + sysUser.setPhone(phone); + } + if(StringUtils.isNotBlank(email)){ + sysUser.setEmail(email); + } + if(null != birthday){ + sysUser.setBirthday(birthday); + } + sysUser.setUpdateTime(new Date()); + } + /** * 移动端保存设备信息 * @param clientId