员工入职审批或邀请员工同意后,自动创建登录账号及密码同步
This commit is contained in:
parent
fa520d1cfa
commit
6417fb1810
|
|
@ -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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否需要初始化(0,否,1是)
|
||||||
|
*/
|
||||||
|
private String izInit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否需要初始化密码(0,否,1是)
|
||||||
|
*/
|
||||||
|
private String izInitPassword;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -82,4 +82,48 @@ public class DynamicQueueNameProvider {
|
||||||
public String getEmpInfoUpDataKeyName() {
|
public String getEmpInfoUpDataKeyName() {
|
||||||
return getEmpInfoUpDataQueueName();
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.nu.dto.EmployeesApplyMQDto;
|
import com.nu.dto.EmployeesApplyMQDto;
|
||||||
|
import com.nu.dto.SysUserMQDto;
|
||||||
import com.nu.modules.employeesInfo.entity.BizEmployeesInfo;
|
import com.nu.modules.employeesInfo.entity.BizEmployeesInfo;
|
||||||
import com.nu.modules.employeesInfo.service.IBizEmployeesInfoService;
|
import com.nu.modules.employeesInfo.service.IBizEmployeesInfoService;
|
||||||
import com.nu.modules.employeesapply.entity.EmployeesApply;
|
import com.nu.modules.employeesapply.entity.EmployeesApply;
|
||||||
|
|
@ -18,6 +19,12 @@ import com.nu.utils.RabbitMQUtil;
|
||||||
import com.nu.utils.SafetyUtil;
|
import com.nu.utils.SafetyUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang.StringUtils;
|
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.core.ExchangeTypes;
|
||||||
import org.springframework.amqp.rabbit.annotation.Exchange;
|
import org.springframework.amqp.rabbit.annotation.Exchange;
|
||||||
import org.springframework.amqp.rabbit.annotation.Queue;
|
import org.springframework.amqp.rabbit.annotation.Queue;
|
||||||
|
|
@ -32,6 +39,7 @@ import java.io.File;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -51,6 +59,10 @@ public class EmployeesMQListener {
|
||||||
private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
|
private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBizEmployeesMediaService employeesMediaService;
|
private IBizEmployeesMediaService employeesMediaService;
|
||||||
|
@Autowired
|
||||||
|
private ISysUserService sysUserService;
|
||||||
|
@Autowired
|
||||||
|
private ISysBaseAPI sysBaseAPI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工申请提交
|
* 员工申请提交
|
||||||
|
|
@ -916,6 +928,12 @@ public class EmployeesMQListener {
|
||||||
employeesInfoService.updateById(mediaData);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue