员工入职审批或邀请员工同意后,自动创建登录账号及密码同步
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() {
|
||||
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.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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue