diff --git a/nursing-unit-common/src/main/java/com/nu/dto/SysUserMQDto.java b/nursing-unit-common/src/main/java/com/nu/dto/SysUserMQDto.java new file mode 100644 index 0000000..fa4783d --- /dev/null +++ b/nursing-unit-common/src/main/java/com/nu/dto/SysUserMQDto.java @@ -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; + +/** + *

+ * 用户表 + *

+ * + * @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; + +} diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/mq/employees/listener/DynamicQueueNameProvider.java b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/mq/employees/listener/DynamicQueueNameProvider.java index 32de4ef..5903d86 100644 --- a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/mq/employees/listener/DynamicQueueNameProvider.java +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/mq/employees/listener/DynamicQueueNameProvider.java @@ -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(); + } + + } diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/mq/employees/listener/EmployeesMQListener.java b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/mq/employees/listener/EmployeesMQListener.java index 7932344..d73ba89 100644 --- a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/mq/employees/listener/EmployeesMQListener.java +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/mq/employees/listener/EmployeesMQListener.java @@ -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 qw = new QueryWrapper<>(); + qw.eq("id", employeeId); + BizEmployeesInfo employeesInfo = employeesInfoService.getOne(qw); + + QueryWrapper 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 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 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 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 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); + } + } + }