fix 用户管理bug
This commit is contained in:
+64
-36
@@ -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<SysUser> listSysUsers = ExcelImportUtil.importExcel(file.getInputStream(), SysUser.class, params);
|
||||
List<SysUserTemplate> 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<SysUser> 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<SysUser> 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<SysUser> 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<SysUserDepart> 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<SysUserDepart> 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<SysUserRole> 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<SysUserRole> 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());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+34
-6
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user