员工入职审批或邀请员工同意后,自动创建登录账号及密码同步

This commit is contained in:
曹磊 2025-09-30 16:24:26 +08:00
parent fa520d1cfa
commit 6417fb1810
3 changed files with 363 additions and 0 deletions

View File

@ -0,0 +1,108 @@
package com.nu.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 用户表
* </p>
*
* @Author scott
* @since 2018-12-20
*/
@Data
public class SysUserMQDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 员工Id
*/
private String employeeId;
/**
* 登录账号
*/
private String username;
/**
* 真实姓名
*/
private String realname;
/**
* 密码
*/
private String password;
/**
* md5密码盐
*/
private String salt;
/**
* 头像
*/
private String avatar;
/**
* 生日
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
/**
* 性别1 2
*/
private Integer sex;
/**
* 电子邮件
*/
private String email;
/**
* 电话
*/
private String phone;
/**
* 结构编码
*/
private String orgCode;
/**
* 目的结构编码
*/
private String targetOrgCode;
/**
* 状态(1正常 2冻结
*/
private Integer status;
/**
* 删除状态0正常1已删除
*/
private Integer delFlag;
/**
* 是否需要初始化01是
*/
private String izInit;
/**
* 是否需要初始化密码01是
*/
private String izInitPassword;
}

View File

@ -82,4 +82,48 @@ public class DynamicQueueNameProvider {
public String getEmpInfoUpDataKeyName() {
return getEmpInfoUpDataQueueName();
}
public String getInitSysUserQueueName() {
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
String orgCode = deptInfo.getString("code");
if (StringUtils.isNotBlank(orgCode)) {
return orgCode + ".employees.initsysuser";
} else {
return "";
}
}
public String getInitSysUserKeyName() {
return getInitSysUserQueueName();
}
public String getSyncSysUserPwdQueueName() {
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
String orgCode = deptInfo.getString("code");
if (StringUtils.isNotBlank(orgCode)) {
return orgCode + ".employees.sysuser.pwd.sync";
} else {
return "";
}
}
public String getSyncSysUserPwdKeyName() {
return getSyncSysUserPwdQueueName();
}
public String getSysUserInfoQueueName() {
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
String orgCode = deptInfo.getString("code");
if (StringUtils.isNotBlank(orgCode)) {
return orgCode + ".employees.sysuser.info";
} else {
return "";
}
}
public String getSysUserInfoKeyName() {
return getSysUserInfoQueueName();
}
}

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.nu.dto.EmployeesApplyMQDto;
import com.nu.dto.SysUserMQDto;
import com.nu.modules.employeesInfo.entity.BizEmployeesInfo;
import com.nu.modules.employeesInfo.service.IBizEmployeesInfoService;
import com.nu.modules.employeesapply.entity.EmployeesApply;
@ -18,6 +19,12 @@ import com.nu.utils.RabbitMQUtil;
import com.nu.utils.SafetyUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.util.PasswordUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysUserService;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
@ -32,6 +39,7 @@ import java.io.File;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Slf4j
@ -51,6 +59,10 @@ public class EmployeesMQListener {
private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
@Autowired
private IBizEmployeesMediaService employeesMediaService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private ISysBaseAPI sysBaseAPI;
/**
* 员工申请提交
@ -916,6 +928,12 @@ public class EmployeesMQListener {
employeesInfoService.updateById(mediaData);
}
}
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
String orgCode = deptInfo.getString("code");
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setOrgCode(orgCode);
sysUserMQDto.setEmployeeId(dto.getEmployeeId());
rabbitMQUtil.sendToExchange("hldy.employees", "hldy.employeesorg.howtoinitsysuser", sysUserMQDto);
}
}
@ -1352,4 +1370,197 @@ public class EmployeesMQListener {
}
}
}
/**
* 初始化登录账户
*
* @param dto
*/
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(name = "#{employeesAsyncDQNP.getInitSysUserQueueName()}"),
exchange = @Exchange(name = "hldy.employees", type = ExchangeTypes.DIRECT),
key = "#{employeesAsyncDQNP.getInitSysUserKeyName()}"
),
errorHandler = "employeesMQErrorHandler"
)
public void handleInitSysUser(SysUserMQDto dto) {
String izInit = dto.getIzInit();
String izInitPassword = dto.getIzInitPassword();
String employeeId = dto.getEmployeeId();
//需要初始化
if(izInit.equals("1")){
QueryWrapper<BizEmployeesInfo> qw = new QueryWrapper<>();
qw.eq("id", employeeId);
BizEmployeesInfo employeesInfo = employeesInfoService.getOne(qw);
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("employess_id", employeeId);
SysUser user = sysUserService.getOne(queryWrapper);
if(user==null) {
user = new SysUser();
user.setUsername(employeesInfo.getTel());
user.setRealname(employeesInfo.getName());
String salt = oConvertUtils.randomGen(8);
String passwordEncode = PasswordUtil.encrypt(user.getUsername(), "123456", salt);
user.setPassword(passwordEncode);
user.setSalt(salt);
String avatar = employeesInfo.getHeadPath();
user.setAvatar(avatar);
Date birthday = employeesInfo.getDateOfBirth();
user.setBirthday(birthday);
String sex = employeesInfo.getSex();
if(sex.equals("")){
user.setSex(1);
}else if(sex.equals("")){
user.setSex(2);
}else{
user.setSex(0);
}
user.setPhone(employeesInfo.getTel());
user.setOrgCode(employeesInfo.getSysOrgCode());
user.setStatus(1);
user.setDelFlag(CommonConstant.DEL_FLAG_0);
user.setCreateTime(new Date());//设置创建时间
user.setEmployessId(employeeId);
sysUserService.save(user);
}else{
user.setUsername(employeesInfo.getTel());
user.setRealname(employeesInfo.getName());
String salt = oConvertUtils.randomGen(8);
String passwordEncode = PasswordUtil.encrypt(user.getUsername(), "123456", salt);
user.setPassword(passwordEncode);
user.setSalt(salt);
String avatar = employeesInfo.getHeadPath();
user.setAvatar(avatar);
Date birthday = employeesInfo.getDateOfBirth();
user.setBirthday(birthday);
String sex = employeesInfo.getSex();
if(sex.equals("")){
user.setSex(1);
}else if(sex.equals("")){
user.setSex(2);
}else{
user.setSex(0);
}
user.setPhone(employeesInfo.getTel());
user.setOrgCode(employeesInfo.getSysOrgCode());
user.setStatus(1);
user.setDelFlag(CommonConstant.DEL_FLAG_0);
user.setUpdateTime(new Date());//设置创建时间
sysUserService.updateById(user);
}
}else{
//不需要初始化从其他业务结构复制过来
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("employess_id", employeeId);
SysUser user = sysUserService.getOne(queryWrapper);
if(user==null) {
user = new SysUser();
user.setUsername(dto.getUsername());
user.setRealname(dto.getRealname());
user.setPassword(dto.getPassword());
user.setSalt(dto.getSalt());
user.setAvatar(dto.getAvatar());
user.setBirthday(dto.getBirthday());
user.setSex(dto.getSex());
user.setPhone(dto.getPhone());
user.setOrgCode(dto.getTargetOrgCode());
user.setStatus(1);
user.setDelFlag(CommonConstant.DEL_FLAG_0);
user.setCreateTime(new Date());//设置创建时间
user.setEmployessId(employeeId);
sysUserService.save(user);
}else{
user.setUsername(dto.getUsername());
user.setRealname(dto.getRealname());
user.setPassword(dto.getPassword());
user.setSalt(dto.getSalt());
user.setAvatar(dto.getAvatar());
user.setBirthday(dto.getBirthday());
user.setSex(dto.getSex());
user.setPhone(dto.getPhone());
user.setOrgCode(dto.getTargetOrgCode());
user.setStatus(1);
user.setDelFlag(CommonConstant.DEL_FLAG_0);
user.setUpdateTime(new Date());//设置创建时间
sysUserService.updateById(user);
}
}
if(izInitPassword.equals("1")){
//需要更新其他业务平台密码
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("employess_id", employeeId);
SysUser user = sysUserService.getOne(queryWrapper);
if(user!=null){
SysUserMQDto sysUserMQDto = new SysUserMQDto();
BeanUtils.copyProperties(user, sysUserMQDto);
sysUserMQDto.setEmployeeId(user.getEmployessId());
rabbitMQUtil.sendToExchange("hldy.employees", "hldy.employeesorg.sysuser.sync", sysUserMQDto);
}
}else{
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
String orgCode = deptInfo.getString("code");
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setEmployeeId(employeeId);
sysUserMQDto.setOrgCode(orgCode);
rabbitMQUtil.sendToExchange("hldy.employees", "hldy.employeesorg.lastlogin", sysUserMQDto);
}
}
/**
* 同步修改登录账户密码
*
* @param dto
*/
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(name = "#{employeesAsyncDQNP.getSyncSysUserPwdQueueName()}"),
exchange = @Exchange(name = "hldy.employees", type = ExchangeTypes.DIRECT),
key = "#{employeesAsyncDQNP.getSyncSysUserPwdKeyName()}"
),
errorHandler = "employeesMQErrorHandler"
)
public void handleSyncSysUserPwd(SysUserMQDto dto) {
String employeeId = dto.getEmployeeId();
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("employess_id", employeeId);
SysUser user = sysUserService.getOne(queryWrapper);
if(user!=null) {
user.setPassword(dto.getPassword());
user.setSalt(dto.getSalt());
sysUserService.updateById(user);
}
}
/**
* 获取登录账户信息
*
* @param dto
*/
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(name = "#{employeesAsyncDQNP.getSysUserInfoQueueName()}"),
exchange = @Exchange(name = "hldy.employees", type = ExchangeTypes.DIRECT),
key = "#{employeesAsyncDQNP.getSysUserInfoKeyName()}"
),
errorHandler = "employeesMQErrorHandler"
)
public void handleSysUserInfo(SysUserMQDto dto) {
String employeeId = dto.getEmployeeId();
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("employess_id", employeeId);
SysUser user = sysUserService.getOne(queryWrapper);
if(user!=null) {
SysUserMQDto sysUserMQDto = new SysUserMQDto();
BeanUtils.copyProperties(user, sysUserMQDto);
sysUserMQDto.setTargetOrgCode(dto.getTargetOrgCode());
sysUserMQDto.setEmployeeId(user.getEmployessId());
rabbitMQUtil.sendToExchange("hldy.employees", "hldy.employeesorg.sysuser.info", sysUserMQDto);
}
}
}