1、修复bug:员工入驻机构/被机构邀请通过后,添加对应机构账号无法登录问题

2、修复bug:员工新入驻机构添加账号时,如果已在其他机构入驻,则复用对应平台账号数据未生效
3、新增:员工变更账号密码时,其它业务平台统一修改此员工密码
This commit is contained in:
1378012178@qq.com 2025-10-21 11:25:39 +08:00
parent 10f28c8c06
commit 4bbbc0692d
17 changed files with 2135 additions and 1747 deletions

View File

@ -158,7 +158,7 @@ public class NuBizNuCustomerServerServiceImpl extends ServiceImpl<NuBizNuCustome
QueryWrapper<NuBizNuCustomerServerInstant> instantQueryWrapper = new QueryWrapper<>();
instantQueryWrapper.eq(StringUtils.isNotEmpty(nuBizNuCustomerServer.getNuId()),"nu_id",nuBizNuCustomerServer.getNuId());
instantQueryWrapper.eq(StringUtils.isNotEmpty(nuBizNuCustomerServer.getCustomerId()),"customer_id",nuBizNuCustomerServer.getCustomerId());
instantQueryWrapper.orderByAsc("sort");
instantQueryWrapper.orderByDesc("create_time");
List<NuBizNuCustomerServerInstant> instantList = nuBizNuCustomerServerInstantService.list(instantQueryWrapper);
for(NuBizNuCustomerServerInstant pari : instantList){
if(pari.getImmediateFile()!=null){

View File

@ -0,0 +1,5 @@
package com.nu.modules;
public interface IEmployeesOrgApi {
String queryCanUseOrg(String username, String orgCode);
}

View File

@ -151,6 +151,15 @@ public class EmployeesApplyController extends JeecgController<EmployeesApply, IE
}
rabbitMQUtil.sendToExchange("hldy.employees", "hldy.employeesorg.auditstatus.sync", mqdto);
//重复了
// if ("auditPass".equals(employeesApply.getStatusVal())) {
// //审核通过 - 给员工添加账号
// JSONObject j = new JSONObject();
// j.put("userName",employeesApply.getName());
// j.put("realname",employeesApply.getName());
// j.put("orgCode",deptInfo.getString("id"));//这个参数要的是机构的id
// employeesApplyService.initialization(j);
// }
}
return Result.OK("审核成功!");

View File

@ -1,5 +1,6 @@
package com.nu.modules.employeesapply.service;
import com.alibaba.fastjson.JSONObject;
import com.nu.modules.employeesapply.entity.EmployeesApply;
import com.baomidou.mybatisplus.extension.service.IService;
@ -19,4 +20,6 @@ public interface IEmployeesApplyService extends IService<EmployeesApply> {
List<Map<String, Object>> getModifyInfo(EmployeesApply employeesApply);
void audit(EmployeesApply employeesApply);
void initialization(JSONObject j);
}

View File

@ -18,6 +18,7 @@ import com.nu.utils.RabbitMQUtil;
import com.nu.utils.SafetyUtil;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.api.ISysUserAPI;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -53,6 +54,8 @@ public class EmployeesApplyServiceImpl extends ServiceImpl<EmployeesApplyMapper,
private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
@Autowired
private ISysBaseAPI sysBaseAPI;
@Autowired
private ISysUserAPI sysUserAPI;
@Override
public void cleanErrorInvided(String employeeId) {
@ -201,4 +204,14 @@ public class EmployeesApplyServiceImpl extends ServiceImpl<EmployeesApplyMapper,
//通知管理平台修改相关数据
rabbitMQUtil.sendToExchange("hldy.employee", "hldy.employee.infoUp.result", mqdto);
}
/**
* 账号初始化
* @param j
*/
@Override
public void initialization(JSONObject j) {
sysUserAPI.initialization(j);
}
}

View File

@ -0,0 +1,104 @@
package com.nu.modules.employeesorg.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.util.SpringContextUtils;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 员工-机构关系中间表
* @Author: jeecg-boot
* @Date: 2025-09-05
* @Version: V1.0
*/
@Data
@TableName("nu_biz_employees_org")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_biz_employees_org对象", description="员工-机构关系中间表")
public class EmployeesOrg implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**微信id*/
@Excel(name = "微信id", width = 15)
@ApiModelProperty(value = "微信id")
private java.lang.String openId;
/**员工nu_biz_employees_info.id*/
@Excel(name = "员工nu_biz_employees_info.id", width = 15)
@ApiModelProperty(value = "员工nu_biz_employees_info.id")
private java.lang.String employeesId;
/**机构编码*/
@Excel(name = "机构编码", width = 15)
@ApiModelProperty(value = "机构编码")
private java.lang.String orgCode;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**是否在线 0在线 1不在线*/
@Excel(name = "是否在线 0在线 1不在线", width = 15)
@ApiModelProperty(value = "是否在线 0在线 1不在线")
private java.lang.String izOnline;
/**冻结状态 0未冻结 1冻结*/
@Excel(name = "冻结状态 0未冻结 1冻结", width = 15)
@ApiModelProperty(value = "冻结状态 0未冻结 1冻结")
private java.lang.String izFreeze;
/**申请状态 1申请中 2通过 3驳回*/
@Excel(name = "申请状态 1申请中 2通过 3驳回", width = 15)
@ApiModelProperty(value = "申请状态 1申请中 2通过 3驳回")
private java.lang.String status;
/**审核备注*/
@Excel(name = "审核备注", width = 15)
@ApiModelProperty(value = "审核备注")
private java.lang.String auditContent;
/**入职时间*/
@Excel(name = "入职时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "入职时间")
private java.util.Date entryTime;
/**是否历史数据 0历史 1非历史*/
@Excel(name = "是否历史数据", width = 15)
@ApiModelProperty(value = "是否历史数据")
private java.lang.String izHistory;
/**申请类型 0被邀请 1主动申请 */
@Excel(name = "申请类型", width = 15)
@ApiModelProperty(value = "申请类型")
private java.lang.String applyType;
/**修改状态 1修改申请中 2通过 3驳回 */
@Excel(name = "修改状态", width = 15)
@ApiModelProperty(value = "修改状态")
private java.lang.String modifyStatus;
/**机构访问地址*/
@TableField(exist = false)
private String serverUrl;
}

View File

@ -0,0 +1,15 @@
package com.nu.modules.employeesorg.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.employeesorg.entity.EmployeesOrg;
import org.apache.ibatis.annotations.Param;
/**
* @Description: 员工-机构关系中间表
* @Author: jeecg-boot
* @Date: 2025-09-05
* @Version: V1.0
*/
public interface EmployeesOrgMapper extends BaseMapper<EmployeesOrg> {
String queryCanUseOrg(@Param("tel") String tel, @Param("orgCode") String orgCode);
}

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.employeesorg.mapper.EmployeesOrgMapper">
<select id="queryCanUseOrg" resultType="java.lang.String">
select org_code
from nu_biz_employees_org
where open_id = (select open_id from nu_employees_advisory_info where tel = #{tel})
and iz_history = '1'
and (((apply_type = '0' or apply_type = '1') and status = '2') or apply_type = '2')
and org_code != #{orgCode}
order by create_time desc
limit 0, 1
</select>
</mapper>

View File

@ -0,0 +1,13 @@
package com.nu.modules.employeesorg.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.employeesorg.entity.EmployeesOrg;
/**
* @Description: 员工-机构关系中间表
* @Author: jeecg-boot
* @Date: 2025-09-05
* @Version: V1.0
*/
public interface IEmployeesOrgService extends IService<EmployeesOrg> {
}

View File

@ -0,0 +1,26 @@
package com.nu.modules.employeesorg.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.IEmployeesOrgApi;
import com.nu.modules.employeesorg.entity.EmployeesOrg;
import com.nu.modules.employeesorg.mapper.EmployeesOrgMapper;
import com.nu.modules.employeesorg.service.IEmployeesOrgService;
import org.springframework.stereotype.Service;
/**
* @Description: 员工-机构关系中间表
* @Author: jeecg-boot
* @Date: 2025-09-05
* @Version: V1.0
*/
@Service
public class EmployeesOrgServiceImpl extends ServiceImpl<EmployeesOrgMapper, EmployeesOrg> implements IEmployeesOrgService, IEmployeesOrgApi {
@DS("ope")
@Override
public String queryCanUseOrg(String tel, String orgCode) {
return baseMapper.queryCanUseOrg(tel, orgCode);
}
}

View File

@ -5,26 +5,22 @@ 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.entity.SysUserEntity;
import com.nu.modules.employeesInfo.entity.BizEmployeesInfo;
import com.nu.modules.employeesInfo.service.IBizEmployeesInfoService;
import com.nu.modules.employeesapply.entity.EmployeesApply;
import com.nu.modules.employeesapply.service.IEmployeesApplyService;
import com.nu.modules.employeesmedia.entity.BizEmployeesMedia;
import com.nu.modules.employeesmedia.service.IBizEmployeesMediaService;
import com.nu.modules.mediaasyncerrorlog.entity.MediaAsyncErrorLog;
import com.nu.modules.mediaasyncerrorlog.service.IMediaAsyncErrorLogService;
import com.nu.modules.sysconfig.ISysConfigApi;
import com.nu.utils.FileDownloader;
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.system.api.ISysUserAPI;
import org.jeecg.common.util.PasswordUtil;
import org.jeecg.common.util.oConvertUtils;
import com.nu.entity.SysUserEntity;
import org.jeecg.common.system.api.ISysUserAPI;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
@ -35,10 +31,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
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;
@ -64,6 +56,7 @@ public class EmployeesMQListener {
@Autowired
private ISysBaseAPI sysBaseAPI;
/**
* 员工申请提交
*
@ -1397,32 +1390,42 @@ public class EmployeesMQListener {
BizEmployeesInfo employeesInfo = employeesInfoService.getOne(qw);
SysUserEntity user = sysUserAPI.getOne(employeeId);
if(user==null) {
user = new SysUserEntity();
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);
sysUserAPI.save(user);
// user = new SysUserEntity();
// 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);
// sysUserAPI.save(user);
//审核通过 - 给员工添加账号
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
JSONObject j = new JSONObject();
j.put("userName",employeesInfo.getTel());
j.put("realname",employeesInfo.getName());
j.put("orgCode",deptInfo.getString("id"));//这个参数要的是机构的id
j.put("opeType","employee");
j.put("o_c_",deptInfo.getString("code"));
employeesApplyService.initialization(j);
}else{
user.setUsername(employeesInfo.getTel());
user.setRealname(employeesInfo.getName());
@ -1553,4 +1556,27 @@ public class EmployeesMQListener {
}
}
/**
* 同步更新密码
* @param dto
*/
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(
name = "#{T(java.util.UUID).randomUUID().toString()}",
autoDelete = "true"
),
exchange = @Exchange(
name = "hldy.employees.rpw.fanout",
type = ExchangeTypes.FANOUT
)
), errorHandler = "dictMQErrorHandler"
)
public void handleResetPW(SysUserMQDto dto) {
SysUserEntity en = new SysUserEntity();
en.setId(dto.getId());
en.setPassword(dto.getPassword());
sysUserAPI.updateById(en);
}
}

View File

@ -1,6 +1,11 @@
package org.jeecg.common.system.api;
import com.alibaba.fastjson.JSONObject;
import com.nu.entity.SysUserEntity;
import org.jeecg.common.api.vo.Result;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;
/**
* <p>
@ -14,4 +19,6 @@ public interface ISysUserAPI{
SysUserEntity getOne(String employeeId);
void save(SysUserEntity sysUserEntity);
void updateById(SysUserEntity sysUserEntity);
Result<Map<String,String>> initialization(@RequestBody JSONObject jsonObject);
}

View File

@ -41,6 +41,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.nursingunit.boot</groupId>
<artifactId>nu-employee-local-api</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>

View File

@ -458,4 +458,6 @@ public interface ISysUserService extends IService<SysUser> {
* @param username
*/
void userLogOff(JSONObject jsonObject, String username);
void saveUserInitialization(String dataSourceCode, SysUser user, String selectedRoles, String selectedDeparts, String relTenantIds);
}

View File

@ -1838,6 +1838,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
qw.eq("del_flag","0");
List<SysDepart> list = sysDepartService.list(qw);
if(list!=null && !list.isEmpty()){
map.put("id",list.get(0).getId());
map.put("code",list.get(0).getOrgCode());
map.put("name",list.get(0).getDepartName());
map.put("url",list.get(0).getUrl());

View File

@ -3,6 +3,7 @@ package org.jeecg.modules.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.Joiner;
import com.google.common.collect.Maps;
import com.nu.entity.SysUserEntity;
import com.nu.modules.IEmployeesOrgApi;
import freemarker.core.TemplateClassResolver;
import freemarker.template.Configuration;
import freemarker.template.Template;
@ -20,9 +22,11 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.dto.DataLogDTO;
import org.jeecg.common.api.dto.OnlineAuthDTO;
import org.jeecg.common.api.dto.message.*;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.UrlMatchEnum;
import org.jeecg.common.constant.*;
import org.jeecg.common.constant.enums.EmailTemplateEnum;
@ -37,11 +41,13 @@ import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.system.vo.*;
import org.jeecg.common.util.HTMLUtils;
import org.jeecg.common.util.PasswordUtil;
import org.jeecg.common.util.YouBianCodeUtil;
import org.jeecg.common.util.dynamic.db.FreemarkerParseFactory;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.firewall.SqlInjection.IDictTableWhiteListHandler;
import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.modules.base.service.BaseCommonService;
import org.jeecg.modules.message.entity.SysMessageTemplate;
import org.jeecg.modules.message.handle.impl.DdSendMsgHandle;
import org.jeecg.modules.message.handle.impl.EmailSendMsgHandle;
@ -62,6 +68,9 @@ import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.util.AntPathMatcher;
import org.springframework.util.CollectionUtils;
import org.springframework.util.PathMatcher;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.annotation.Resource;
import javax.sql.DataSource;
@ -86,6 +95,14 @@ public class SysUserApiImpl implements ISysUserAPI {
@Resource
private ISysUserService service;
@Autowired
private ISysDepartService sysDepartService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private BaseCommonService baseCommonService;
@Autowired
private IEmployeesOrgApi employeesOrgApi;
@Override
public SysUserEntity getOne(String employeeId) {
@ -93,8 +110,12 @@ public class SysUserApiImpl implements ISysUserAPI {
queryWrapper.eq("employess_id", employeeId);
SysUser user = service.getOne(queryWrapper);
SysUserEntity sysUserEntity = new SysUserEntity();
if (user != null) {
BeanUtils.copyProperties(user, sysUserEntity);
return sysUserEntity;
} else {
return null;
}
}
@Override
@ -111,5 +132,72 @@ public class SysUserApiImpl implements ISysUserAPI {
service.updateById(user);
}
/**
* 申请审批账号初始化
*
* @param jsonObject
* @return
*/
@Override
public Result<Map<String, String>> initialization(@RequestBody JSONObject jsonObject) {
Map<String, String> result = new HashMap<>();
String selectedRoles = "f6817f48af4fb3af11b9e8bf182f618b";
String selectedDeparts = "";
try {
SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class);
SysDepart depart = sysDepartService.getDepartById(user.getOrgCode());
if (depart == null) {
return Result.error("未找到机构信息");
}
selectedDeparts = depart.getId();
user.setOrgCode(depart.getOrgCode());
// user.setWorkNo(depart.getOrgCode() + "01");
user.setWorkNo(null);
user.setPassword("123456");
user.setCreateTime(new Date());//设置创建时间
String salt = oConvertUtils.randomGen(8);
user.setSalt(salt);
String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), salt);
user.setPassword(passwordEncode);
user.setStatus(1);
user.setDelFlag(CommonConstant.DEL_FLAG_0);
//用户表字段org_code不能在这里设置他的值
// user.setOrgCode(null);
// 保存用户走一个service 保证事务
//获取租户ids
String relTenantIds = jsonObject.getString("relTenantIds");
String dataSourceCode = depart.getOrgCode();
if ("employee".equals(jsonObject.getString("opeType"))) {
//如果是添加员工账号查询员工已有账号并复用
String otherOrgCode = employeesOrgApi.queryCanUseOrg(user.getUsername(), jsonObject.getString("o_c_"));
DynamicDataSourceContextHolder.push(otherOrgCode);
try {
QueryWrapper<SysUser> qw = new QueryWrapper<>();
qw.eq("username", user.getUsername());
List<SysUser> list = sysUserService.list(qw);
SysUser t_ = null;
if (list != null && list.size() > 0) {
t_ = list.get(0);
t_.setOrgCode(user.getOrgCode());
user = t_;
user.setDelFlag(CommonConstant.DEL_FLAG_0);
user.setStatus(1);
}
} finally {
DynamicDataSourceContextHolder.clear();
}
}
sysUserService.saveUserInitialization(dataSourceCode, user, selectedRoles, selectedDeparts, relTenantIds);
baseCommonService.addLog("添加用户username " + user.getUsername(), CommonConstant.LOG_TYPE_2, 2);
result.put("message", "初始化成功!账号:" + jsonObject.getString("userName") + " 密码123456");
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.error("初始化失败!");
}
return Result.ok(result);
}
}

View File

@ -5,6 +5,7 @@ import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.exceptions.ClientException;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@ -12,6 +13,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.dto.SysUserMQDto;
import com.nu.utils.RabbitMQUtil;
import org.jeecg.modules.message.handle.impl.SystemSendMsgHandle;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.entity.*;
@ -126,6 +129,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
private ISysThirdAccountService sysThirdAccountService;
@Autowired
private RedisUtil redisUtil;
@Autowired
private RabbitMQUtil rabbitMQUtil;
@Override
public Result<IPage<SysUser>> queryPageList(HttpServletRequest req, QueryWrapper<SysUser> queryWrapper, Integer pageSize, Integer pageNo) {
@ -197,7 +202,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
Integer posTenantId = null;
if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
posTenantId = oConvertUtils.getInt(TenantContext.getTenant(), 0);;
posTenantId = oConvertUtils.getInt(TenantContext.getTenant(), 0);
;
}
//查询用户职位关系表(获取租户下面的)
//update-begin---author:wangshuai---date:2023-11-15---for:QQYUN-7028用户职务保存后未回显---
@ -248,6 +254,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
String password = PasswordUtil.encrypt(username, newpassword, user.getSalt());
this.userMapper.update(new SysUser().setPassword(password), new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, user.getId()));
SysUserMQDto sysUserMQDto = new SysUserMQDto();
sysUserMQDto.setId(user.getId());
sysUserMQDto.setPassword(password);
rabbitMQUtil.sendToExchange("hldy.employees.rpw.fanout", "", sysUserMQDto);
return Result.ok("密码重置成功!");
}
@ -374,6 +384,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 通过用户名获取用户角色集合
*
* @param username 用户名
* @return 角色集合
*/
@ -387,6 +398,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 通过用户名获取用户角色集合
*
* @param userId 用户ID
* @return 角色集合
*/
@ -432,10 +444,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 升级SpringBoot2.6.6,不允许循环依赖
* @author:qinfeng
* @update: 2022-04-07
*
* @param username
* @return
* @author:qinfeng
* @update: 2022-04-07
*/
@Override
public SysUserCacheInfo getCacheUser(String username) {
@ -474,6 +487,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 根据部门Id查询
*
* @param page
* @param departId 部门id
* @param username 用户账户名称
@ -535,6 +549,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 根据角色Id查询
*
* @param page
* @param roleId 角色id
* @param username 用户账户名称
@ -631,6 +646,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 校验用户是否有效
*
* @param sysUser
* @return
*/
@ -892,6 +908,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 设置登录租户
*
* @param sysUser
* @return
*/
@ -953,6 +970,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 获取租户id
*
* @param sysUser
*/
private void setUserTenantIds(SysUser sysUser) {
@ -968,6 +986,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 保存租户
*
* @param userId
* @param relTenantIds
*/
@ -1013,6 +1032,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 编辑租户
*
* @param userId
* @param relTenantIds
*/
@ -1047,6 +1067,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 删除租户通过用户id
*
* @param tenantId
* @param userId
*/
@ -1060,7 +1081,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
@Override
public void batchEditUsers(JSONObject json) {
String userIds = json.getString("userIds");
@ -1268,6 +1288,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 变更父级部门 修改编码
*
* @param parentId
* @return
*/
@ -1332,6 +1353,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 找上级部门
*
* @param depart
* @param orgName
* @param orgId
@ -1369,6 +1391,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 修改账号状态
*
* @param id 账号id
* @param status 账号状态
*/
@ -1381,6 +1404,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 修改租户下的部门
*
* @param departs
*/
public void updateTenantDepart(SysUser user, String tenantId, String departs) {
@ -1459,6 +1483,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 设置用户职位id(已逗号拼接起来)
*
* @param sysUser
*/
private void userPositionId(SysUser sysUser) {
@ -1511,6 +1536,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 移除部门负责人
*
* @param departChargeUserIdList
* @param departChargeUsers
* @param departId
@ -2021,6 +2047,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 发送短信验证码
*
* @param phone
*/
private void sendPhoneSms(String phone, String clientIp, String redisKey) {
@ -2052,4 +2079,32 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
throw new JeecgBootException("短信接口未配置,请联系管理员!");
}
}
@Override
public void saveUserInitialization(String dataSourceCode, SysUser user, String selectedRoles, String selectedDeparts, String relTenantIds) {
//step.1 保存用户
this.save(user);
//获取用户保存前台传过来的租户id并添加到租户
this.saveUserTenant(user.getId(), relTenantIds);
//step.2 保存角色
if (oConvertUtils.isNotEmpty(selectedRoles)) {
String[] arr = selectedRoles.split(",");
for (String roleId : arr) {
SysUserRole userRole = new SysUserRole(user.getId(), roleId);
sysUserRoleMapper.insert(userRole);
}
}
//step.3 保存所属部门
if (oConvertUtils.isNotEmpty(selectedDeparts)) {
String[] arr = selectedDeparts.split(",");
for (String deaprtId : arr) {
SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId);
sysUserDepartMapper.insert(userDeaprt);
}
}
//step.4 保存职位
this.saveUserPosition(user.getId(), user.getPost());
}
}