From df828a86063d8621529f90af8f02d1d1d5840464 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Mon, 11 Oct 2021 17:32:23 +0800 Subject: [PATCH] =?UTF-8?q?fix=20bug=2040253=20=E7=94=A8=E6=88=B7=E7=AE=A1?= =?UTF-8?q?=E7=90=86--=E6=9F=A5=E8=AF=A2--=E7=94=A8=E6=88=B7=E5=A7=93?= =?UTF-8?q?=E5=90=8D=E6=9F=A5=E8=AF=A2=E7=BB=93=E6=9E=9C=E6=9C=89=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/jeroboot-mysql-5.7.sql | 1 - .../system/controller/SysUserController.java | 95 +++++++++++++++---- .../service/impl/SysUserServiceImpl.java | 3 +- 3 files changed, 81 insertions(+), 18 deletions(-) diff --git a/db/jeroboot-mysql-5.7.sql b/db/jeroboot-mysql-5.7.sql index 70d2ac7e..9a103591 100644 --- a/db/jeroboot-mysql-5.7.sql +++ b/db/jeroboot-mysql-5.7.sql @@ -1278,7 +1278,6 @@ CREATE TABLE `sys_user` ( PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `index_user_name`(`username`) USING BTREE, UNIQUE INDEX `uniq_sys_user_work_no`(`work_no`) USING BTREE, - UNIQUE INDEX `uniq_sys_user_username`(`username`) USING BTREE, UNIQUE INDEX `uniq_sys_user_phone`(`phone`) USING BTREE, UNIQUE INDEX `uniq_sys_user_email`(`email`) USING BTREE, INDEX `index_user_status`(`status`) USING BTREE, diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java index a89b9f69..b90c9ce8 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java @@ -310,9 +310,12 @@ public class SysUserController { user.setPhone(phone); ValidUtil.validate(user); //3:把数据加密在放回来 - user.setEmail(PasswordUtil.encrypt(email)); - user.setPhone(PasswordUtil.encrypt(phone)); - user.setEmailPassword(PasswordUtil.encrypt(emailPassword)); + email = PasswordUtil.encrypt(email); + emailPassword = PasswordUtil.encrypt(emailPassword); + phone = PasswordUtil.encrypt(phone); + user.setEmail(email); + user.setEmailPassword(emailPassword); + user.setPhone(phone); if (!confirmPassword.equals(user.getPassword())) { throw new JeroBootException("两次密码输入不一致"); } @@ -322,6 +325,24 @@ public class SysUserController { } catch (Exception e) { throw new JeroBootException("解密失败!", e); } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysUser::getUsername,user.getUsername()); + wrapper.eq(SysUser::getDelFlag,0); + if (sysUserService.count(wrapper)>0) { + throw new JeroBootException("用户名已经存在"); + } + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SysUser::getPhone,phone); + wrapper1.eq(SysUser::getDelFlag,0); + if (sysUserService.count(wrapper1)>0) { + throw new JeroBootException("手机号已经存在"); + } + LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.eq(SysUser::getEmail,email); + wrapper2.eq(SysUser::getDelFlag,0); + if (sysUserService.count(wrapper2)>0) { + throw new JeroBootException("电子邮件已经存在"); + } //设置创建时间 user.setCreateTime(new Date()); String salt = oConvertUtils.randomGen(8); @@ -366,9 +387,35 @@ public class SysUserController { user.setPhone(phone); ValidUtil.validate(user); //3:把数据加密在放回来 - user.setEmail(PasswordUtil.encrypt(email)); - user.setPhone(PasswordUtil.encrypt(phone)); - user.setEmailPassword(PasswordUtil.encrypt(emailPassword)); + email = PasswordUtil.encrypt(email); + emailPassword = PasswordUtil.encrypt(emailPassword); + phone = PasswordUtil.encrypt(phone); + user.setEmail(email); + user.setEmailPassword(emailPassword); + user.setPhone(phone); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysUser::getUsername,user.getUsername()); + wrapper.eq(SysUser::getDelFlag,0); + wrapper.ne(SysUser::getId,user.getId()); + if (sysUserService.count(wrapper)>0) { + throw new JeroBootException("用户名已经存在"); + } + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SysUser::getPhone,phone); + wrapper1.eq(SysUser::getDelFlag,0); + wrapper.ne(SysUser::getId,user.getId()); + if (sysUserService.count(wrapper1)>0) { + throw new JeroBootException("手机号已经存在"); + } + LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.eq(SysUser::getEmail,email); + wrapper2.eq(SysUser::getDelFlag,0); + wrapper.ne(SysUser::getId,user.getId()); + if (sysUserService.count(wrapper2)>0) { + throw new JeroBootException("电子邮件已经存在"); + } + user.setUpdateTime(new Date()); //String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), sysUser.getSalt()); user.setPassword(sysUser.getPassword()); @@ -662,6 +709,7 @@ public class SysUserController { * @return */ //@RequiresRoles({"admin"}) + @Transactional(rollbackFor = Exception.class) @RequiresPermissions("sys:user:import") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response)throws IOException { @@ -700,25 +748,40 @@ public class SysUserController { ValidUtil.validate(sysUserExcel); //处理邮箱和手机号的加密 UserUtil.encryptUser(sysUserExcel); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysUser::getUsername,sysUserExcel.getUsername()); + wrapper.eq(SysUser::getDelFlag,0); + if (sysUserService.count(wrapper)>0) { + errorLines++; + errorMessage.add("第 " + lineNumber + " 行:用户名已经存在。"); + } + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SysUser::getPhone,sysUserExcel.getPhone()); + wrapper1.eq(SysUser::getDelFlag,0); + if (sysUserService.count(wrapper1)>0) { + errorLines++; + errorMessage.add("第 " + lineNumber + " 行:手机号已经存在。"); + } + LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.eq(SysUser::getEmail,sysUserExcel.getEmail()); + wrapper2.eq(SysUser::getDelFlag,0); + if (sysUserService.count(wrapper2)>0) { + errorLines++; + errorMessage.add("第 " + lineNumber + " 行:电子邮件已经存在。"); + } sysUserService.save(sysUserExcel); successLines++; }catch (JeroBootException e) { errorLines++; errorMessage.add("第 " + lineNumber + " 行:" + e.getMessage()); } catch (Exception e) { - errorLines++; + //errorLines++; String message = e.getMessage().toLowerCase(); // 通过索引名判断出错信息 - if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_USERNAME)) { - 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 + " 行:电子邮件已经存在,忽略导入。"); + if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_WORK_NO)) { + errorMessage.add("第 " + lineNumber + " 行:工号已经存在。"); } else { - errorMessage.add("第 " + lineNumber + " 行:未知错误,忽略导入"); + errorMessage.add("第 " + lineNumber + " 行:未知错误"); log.error(e.getMessage(), e); } } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index 93b1ddc2..68fe382d 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -451,7 +451,8 @@ public class SysUserServiceImpl extends ServiceImpl impl @Override public IPage queryPageListByRoleAndDepart(Page page, SysUser user, String roleId, String departId) { - + user.setUsername(oConvertUtils.replaceAllPercent(user.getUsername())); + user.setRealname(oConvertUtils.replaceAllPercent(user.getRealname())); return userMapper.queryPageListByRoleAndDepart(page, user,roleId,departId); }