From 2ca83cd6864f6c5eb11ec37ffdb6f540668b0a08 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 12 Oct 2021 19:10:04 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysUserController.java | 100 +++++++++++------- .../jero/modules/system/entity/SysUser.java | 86 ++++++++++----- .../jero/modules/system/util/UserUtil.java | 2 +- .../modules/system/vo/SysUserTemplate.java | 40 +++++-- 4 files changed, 156 insertions(+), 72 deletions(-) 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 c8282ff0..d048985e 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 @@ -40,6 +40,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.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; @@ -725,52 +726,78 @@ public class SysUserController { params.setHeadRows(1); params.setNeedSave(true); //导入Excel格式校验,看匹配的字段文本概率 - Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), SysUser.class, params); + Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), SysUserTemplate.class, params,1.0); if(!t){ return Result.error("导入Excel校验失败 !"); } try { - List listSysUsers = ExcelImportUtil.importExcel(file.getInputStream(), SysUser.class, params); + List listSysUsers = ExcelImportUtil.importExcel(file.getInputStream(), SysUserTemplate.class, params); for (int i = 0; i < listSysUsers.size(); i++) { int lineNumber = i + 3; - SysUser sysUserExcel = listSysUsers.get(i); - if (StringUtils.isBlank(sysUserExcel.getPassword())) { + SysUserTemplate sysUserTemplate = listSysUsers.get(i); + String departIds1 = sysUserTemplate.getDepartIds(); + if (StringUtils.isNotBlank(departIds1)) { + String dictFromTable = sysBaseAPI.translateDictFromTable("sys_depart", "depart_name", "id", departIds1.trim()); + if (!StringUtils.isNotBlank(dictFromTable)){ + errorLines++; + errorMessage.add("第 " + lineNumber + " 行:组织机构错误"); + } + } + String roleIds1 = sysUserTemplate.getRoleIds(); + if (StringUtils.isNotBlank(roleIds1)) { + String[] roleIdArray = roleIds1.split(","); + for (String roleId : roleIdArray) { + String dictFromTable = sysBaseAPI.translateDictFromTable("sys_role", "role_name", "id", roleId.trim()); + if (!StringUtils.isNotBlank(dictFromTable)){ + errorLines++; + errorMessage.add("第 " + lineNumber + " 行:角色类型错误"); + } + } + } + SysUser sysUser = new SysUser(); + BeanUtils.copyProperties(sysUserTemplate,sysUser); + if (StringUtils.isBlank(sysUser.getPassword())) { // 存入默认密码 - sysUserExcel.setPassword(defaultPassword); + sysUser.setPassword(defaultPassword); } // 密码加密加盐 String salt = oConvertUtils.randomGen(8); - sysUserExcel.setSalt(salt); - String passwordEncode = PasswordUtil.encrypt(sysUserExcel.getUsername(), sysUserExcel.getPassword(), salt); - sysUserExcel.setPassword(passwordEncode); - sysUserExcel.setDelFlag(0); + sysUser.setSalt(salt); + String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), sysUser.getPassword(), salt); + sysUser.setPassword(passwordEncode); + sysUser.setDelFlag(0); + sysUser.setStatus(1); try { - ValidUtil.validate(sysUserExcel); + String error = ValidUtil.validateReturnList(sysUser); + if (StringUtils.isNotBlank(error)){ + errorLines++; + errorMessage.add("第 " + lineNumber + " 行:"+ error); + } //处理邮箱和手机号的加密 - UserUtil.encryptUser(sysUserExcel); + UserUtil.encryptUser(sysUser); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(SysUser::getUsername,sysUserExcel.getUsername()); + wrapper.eq(SysUser::getUsername,sysUser.getUsername()); wrapper.eq(SysUser::getDelFlag,0); if (sysUserService.count(wrapper)>0) { errorLines++; - errorMessage.add("第 " + lineNumber + " 行:用户名已经存在。"); + errorMessage.add("第 " + lineNumber + " 行:用户名已经存在"); } LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); - wrapper1.eq(SysUser::getPhone,sysUserExcel.getPhone()); + wrapper1.eq(SysUser::getPhone,sysUser.getPhone()); wrapper1.eq(SysUser::getDelFlag,0); if (sysUserService.count(wrapper1)>0) { errorLines++; - errorMessage.add("第 " + lineNumber + " 行:手机号已经存在。"); + errorMessage.add("第 " + lineNumber + " 行:手机号已经存在"); } LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); - wrapper2.eq(SysUser::getEmail,sysUserExcel.getEmail()); + wrapper2.eq(SysUser::getEmail,sysUser.getEmail()); wrapper2.eq(SysUser::getDelFlag,0); if (sysUserService.count(wrapper2)>0) { errorLines++; - errorMessage.add("第 " + lineNumber + " 行:电子邮件已经存在。"); + errorMessage.add("第 " + lineNumber + " 行:电子邮件已经存在"); } if (errorLines == 0){ - sysUserService.save(sysUserExcel); + sysUserService.save(sysUser); } successLines++; } catch (Exception e) { @@ -778,28 +805,29 @@ public class SysUserController { errorMessage.add("第 " + lineNumber + " 行:未知错误"); log.error(e.getMessage(), e); } - String userId = sysUserExcel.getId(); + String userId = sysUser.getId(); // 批量将部门和用户信息建立关联关系 - String departIds = sysUserExcel.getDepartIds(); - if (StringUtils.isNotBlank(departIds)) { - String[] departIdArray = departIds.split(","); - List userDepartList = new ArrayList<>(departIdArray.length); - for (String departId : departIdArray) { - userDepartList.add(new SysUserDepart(userId, departId)); + if (errorLines == 0){ + String departIds = sysUser.getDepartIds(); + if (StringUtils.isNotBlank(departIds)) { + String[] departIdArray = departIds.split(","); + List userDepartList = new ArrayList<>(departIdArray.length); + for (String departId : departIdArray) { + userDepartList.add(new SysUserDepart(userId, departId)); + } + sysUserDepartService.saveBatch(userDepartList); } - sysUserDepartService.saveBatch(userDepartList); - } - //批量处理角色和用户的关联关系 - String roleIds = sysUserExcel.getRoleIds(); - if (StringUtils.isNotBlank(roleIds)) { - String[] roleIdArray = roleIds.split(","); - List userRoleList = new ArrayList<>(); - for (String roleId : roleIdArray) { - userRoleList.add(new SysUserRole(userId,roleId)); + //批量处理角色和用户的关联关系 + String roleIds = sysUser.getRoleIds(); + if (StringUtils.isNotBlank(roleIds)) { + String[] roleIdArray = roleIds.split(","); + List userRoleList = new ArrayList<>(); + for (String roleId : roleIdArray) { + userRoleList.add(new SysUserRole(userId,roleId)); + } + sysUserRoleService.saveBatch(userRoleList); } - sysUserRoleService.saveBatch(userRoleList); } - } } catch (Exception e) { errorMessage.add("发生异常:" + e.getMessage()); diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java index 2d97aa85..2c1eb0a3 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java @@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.annotation.TableLogic; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.jero.common.aspect.annotation.Dict; +import com.jero.common.util.PasswordUtil; import com.jero.modules.system.volid.group.CreateGroup; import io.swagger.annotations.ApiModelProperty; +import org.apache.commons.lang3.StringUtils; import org.jeecgframework.poi.excel.annotation.Excel; import org.springframework.format.annotation.DateTimeFormat; @@ -50,7 +52,7 @@ public class SysUser implements Serializable { */ @Excel(name = "用户账号", width = 15) @NotBlank(message = "用户账号不能为空") - @Size(max = 50,message = "用户账号最长为50") + @Size(max = 50,message = "用户账号最长为50字符") private String username; /** @@ -58,7 +60,7 @@ public class SysUser implements Serializable { */ @Excel(name = "用户姓名", width = 15) @NotBlank(message = "用户姓名不能为空") - @Size(max = 50,message = "用户姓名最长为50") + @Size(max = 50,message = "用户姓名最长为50字符") private String realname; /** @@ -92,20 +94,32 @@ public class SysUser implements Serializable { @Dict(dicCode = "sex") private Integer sex; - /** - * 电子邮箱 - */ - @Email(message = "邮箱格式不正确") - private String email; + /** * 电话 */ @Excel(name = "手机号", width = 15) - @NotEmpty(message = "手机号不能为空!") + @NotBlank(message = "手机号不能为空!") @Pattern(regexp = "^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9])|(19[8|9])|(16[6]))\\d{8}$",message = "手机号码格式错误") private String phone; + /** + * 角色类型 + */ + @NotBlank(message = "角色类型不能为空!") + @Excel(name="角色类型",width = 15,dictTable ="sys_role",dicText = "role_name",dicCode = "id") + @Dict(dictTable ="sys_role",dicText = "role_name",dicCode = "id") + private String roleIds; + + /** + * 组织机构 + */ + @NotBlank(message = "组织机构不能为空!") + @Excel(name="组织机构",width = 15,dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") + @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") + private String departIds; + /** * 部门code(当前选择登录部门) */ @@ -115,11 +129,22 @@ public class SysUser implements Serializable { private transient String orgCodeTxt; /** - * 状态(1:正常 2:冻结 ) + * 邮箱 */ - @Excel(name = "状态", width = 15,dicCode = "user_status") - @Dict(dicCode = "user_status") - private Integer status; + @Excel(name="邮箱",width = 15,exportConvert = true) + @NotBlank(message = "邮箱不能为空") + @Size(max = 50,message = "邮箱最长为50字符") + @Email(message = "邮箱格式不正确") + private String email; + + /** + * 邮箱密码 + */ + @NotBlank(message = "邮箱密码不能为空") + @Size(max = 50,message = "邮箱密码最长为50字符") + @Excel(name="邮箱密码",width = 15,exportConvert = true) + @ApiModelProperty(value = "邮箱密码") + private String emailPassword; /** * 删除状态(0,正常,1已删除) @@ -150,6 +175,13 @@ public class SysUser implements Serializable { @Excel(name = "创建时间", orderNum = "1",format = "yyyy-MM-dd HH:mm:ss") private Date createTime; + /** + * 状态(1:正常 2:冻结 ) + */ + @Excel(name = "状态", width = 15,dicCode = "user_status") + @Dict(dicCode = "user_status") + private Integer status; + /** * 更新人 */ @@ -169,19 +201,7 @@ public class SysUser implements Serializable { */ private Integer userIdentity; - /** - * 角色类型 - */ - @Excel(name="角色类型",width = 15,dictTable ="sys_role",dicText = "role_name",dicCode = "id") - @Dict(dictTable ="sys_role",dicText = "role_name",dicCode = "id") - private String roleIds; - /** - * 组织机构 - */ - @Excel(name="组织机构",width = 15,dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") - @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") - private String departIds; /** * 多租户id配置,编辑用户的时候设置 @@ -210,9 +230,17 @@ public class SysUser implements Serializable { @TableField(exist = false) private String verifyPassword; - /** - * 邮箱授权码 - */ - @ApiModelProperty(value = "邮箱授权码") - private String emailPassword; + public String convertisEmail(){ + if (StringUtils.isNotBlank(email)){ + return PasswordUtil.decrypt(email); + } + return email; + } + + public String convertisEmailPassword(){ + if (StringUtils.isNotBlank(emailPassword)){ + return PasswordUtil.decrypt(emailPassword); + } + return emailPassword; + } } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/util/UserUtil.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/util/UserUtil.java index a2c635f2..97526799 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/util/UserUtil.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/util/UserUtil.java @@ -52,7 +52,7 @@ public class UserUtil { } String emailPassword = record.getEmailPassword(); if (StringUtils.isNotBlank(emailPassword)) { - record.setEmailPassword(PasswordUtil.decrypt(emailPassword)); + record.setEmailPassword(PasswordUtil.encrypt(emailPassword)); } } } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/vo/SysUserTemplate.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/vo/SysUserTemplate.java index ab1a4958..9285cad1 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/vo/SysUserTemplate.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/vo/SysUserTemplate.java @@ -1,13 +1,11 @@ package com.jero.modules.system.vo; import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.jeecgframework.poi.excel.annotation.Excel; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.Pattern; -import javax.validation.constraints.Size; +import javax.validation.constraints.*; /** * @author liJiaRao @@ -19,29 +17,59 @@ public class SysUserTemplate { * 登录账号 */ @Excel(name = "用户账号", width = 15) + @NotBlank(message = "用户账号不能为空") + @Size(max = 50,message = "用户账号最长为50字符") private String username; /** * 真实姓名 */ @Excel(name = "用户姓名", width = 15) + @NotBlank(message = "用户姓名不能为空") + @Size(max = 50,message = "用户姓名最长为50字符") private String realname; /** * 电话 */ @Excel(name = "手机号", width = 15) + @NotBlank(message = "手机号不能为空!") + @Pattern(regexp = "^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9])|(19[8|9])|(16[6]))\\d{8}$",message = "手机号码格式错误") private String phone; /** * 角色类型 */ - @Excel(name="角色类型",width = 15) + @NotBlank(message = "角色类型不能为空!") + @Excel(name="角色类型",width = 15,dictTable ="sys_role",dicText = "role_name",dicCode = "id") + @Dict(dictTable ="sys_role",dicText = "role_name",dicCode = "id") private String roleIds; /** * 组织机构 */ - @Excel(name="组织机构",width = 15) + @NotBlank(message = "组织机构不能为空!") + @Excel(name="组织机构",width = 15,dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") + @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id") private String departIds; + + /** + * 电子邮箱 + */ + @NotBlank(message = "邮箱不能为空") + @Size(max = 50,message = "邮箱最长为50字符") + @Email(message = "邮箱格式不正确") + @Excel(name="邮箱",width = 15) + private String email; + + /** + * 邮箱密码 + */ + @NotBlank(message = "邮箱密码不能为空") + @Size(max = 50,message = "邮箱密码最长为50字符") + @Excel(name="邮箱密码",width = 15) + @ApiModelProperty(value = "邮箱密码") + private String emailPassword; + + }