From a65475c0272d134712030c42a2f26ab0161195b2 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期四, 06 十一月 2025 13:37:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java | 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java | 14 ++++
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bo/TenantUserBo.java | 26 ++++++++
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java | 5 +
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java | 88 +++++++++++++++++++++++++++++
5 files changed, 133 insertions(+), 2 deletions(-)
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bo/TenantUserBo.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bo/TenantUserBo.java
new file mode 100644
index 0000000..0a4fb66
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bo/TenantUserBo.java
@@ -0,0 +1,26 @@
+package org.jeecg.modules.system.bo;
+
+import lombok.Data;
+
+/**
+ * 鍚屾祹鍫傜敤鎴�
+ */
+@Data
+public class TenantUserBo {
+ private String birthday;
+ private String leader;
+ private String jobStatus;
+ private String orgName;
+ private String firstOrgId;
+ private String mobile;
+ private String firstOrgName;
+ private String postId;
+ private String orgId;
+ private String leaderId;
+ private String workNo;
+ private String post;
+ private String name;
+ private String rank;
+ private String id;
+ private String status;
+}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
index 4850517..f35648a 100755
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
@@ -131,6 +131,18 @@
return sysUserService.queryPageList(req, queryWrapper, pageSize, pageNo);
}
+
+ @RequestMapping(value = "/syncTenantUser", method = RequestMethod.GET)
+ public Result<?> syncTenantUser(){
+ try {
+ String message = sysUserService.syncTenantUser();
+ return Result.ok(message);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return Result.error("鎿嶄綔澶辫触锛岃鑱旂郴绠$悊鍛橈紒");
+ }
+
/**
* 鑾峰彇绯荤粺鐢ㄦ埛鏁版嵁锛堟煡璇㈠叏閮ㄧ敤鎴凤紝涓嶅仛绉熸埛闅旂锛�
*
@@ -167,7 +179,7 @@
user.setOrgCode(null);
// 淇濆瓨鐢ㄦ埛璧颁竴涓猻ervice 淇濊瘉浜嬪姟
//鑾峰彇绉熸埛ids
- String relTenantIds = jsonObject.getString("realTenantIds");
+ String relTenantIds = jsonObject.getString("relTenantIds");
sysUserService.saveUser(user, selectedRoles, selectedDeparts, relTenantIds);
baseCommonService.addLog("娣诲姞鐢ㄦ埛锛寀sername锛� " +user.getUsername() ,CommonConstant.LOG_TYPE_2, 2);
result.success("娣诲姞鎴愬姛锛�");
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
index 7f9f457..7b4d716 100755
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
@@ -106,6 +106,11 @@
*/
private Integer loginTenantId;
+ /**
+ * 绉熸埛ID
+ */
+ private Integer tenantId;
+
/**閮ㄩ棬鍚嶇О*/
private transient String orgCodeTxt;
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
index 7e4d6ac..63beb25 100755
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
@@ -389,4 +389,6 @@
* @param departs
*/
void editTenantUser(SysUser sysUser, String tenantId, String departs, String roles);
+
+ String syncTenantUser();
}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
index b15258d..ff8167e 100755
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -1,6 +1,7 @@
package org.jeecg.modules.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -28,6 +29,7 @@
import org.jeecg.common.util.*;
import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.modules.base.service.BaseCommonService;
+import org.jeecg.modules.system.bo.TenantUserBo;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.mapper.*;
import org.jeecg.modules.system.model.SysUserSysDepartModel;
@@ -49,6 +51,8 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -621,6 +625,14 @@
@Transactional(rollbackFor = Exception.class)
public void saveUser(SysUser user, String selectedRoles, String selectedDeparts, String relTenantIds) {
//step.1 淇濆瓨鐢ㄦ埛
+ if(StringUtils.isNotEmpty(relTenantIds)){
+ try {
+ user.setTenantId(Integer.valueOf(relTenantIds));
+ user.setLoginTenantId(Integer.valueOf(relTenantIds));
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
this.save(user);
//鑾峰彇鐢ㄦ埛淇濆瓨鍓嶅彴浼犺繃鏉ョ殑绉熸埛id骞舵坊鍔犲埌绉熸埛
this.saveUserTenant(user.getId(),relTenantIds);
@@ -1219,7 +1231,81 @@
this.updateTenantDepart(user, tenantId, departs);
}
- /**
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public String syncTenantUser() {
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ int tenantId = oConvertUtils.getInt(TenantContext.getTenant(), 0);
+ if(tenantId == 0){
+ return "璇风櫥褰曠鎴风鐞嗗憳鍚庡悓姝ョ敤鎴凤紒";
+ }
+ // 妯℃嫙鎺ュ彛鏁版嵁 TODO浣跨敤鎺ュ彛鏁版嵁
+ String json = "{\"code\":200,\"msg\":\"澶勭悊鎴愬姛\",\"data\":[{\"id\":\"621466726\",\"name\":\"鐭充竴\",\"birthday\":\"1992-08-19\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d5\",\"firstOrgName\":\"淇℃伅閮╘",\"firstOrgId\":\"1632356\",\"orgName\":\"淇℃伅閮╘",\"orgId\":\"1632356\",\"post\":null,\"postId\":null,\"status\":\"\",\"jobStatus\":\"\",\"workNo\":\"6518\",\"mobile\":\"13658340793\",\"leaderId\":\"619347944\",\"leader\":\"绋嬩簹椋瀄"},{\"id\":\"621466727\",\"name\":\"寮犱笁\",\"birthday\":\"1993-05-15\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d6\",\"firstOrgName\":\"鎶�鏈儴\",\"firstOrgId\":\"1632357\",\"orgName\":\"鎶�鏈儴\",\"orgId\":\"1632357\",\"post\":\"宸ョ▼甯圽",\"postId\":\"1001\",\"status\":\"鍦ㄨ亴\",\"jobStatus\":\"姝e父\",\"workNo\":\"6519\",\"mobile\":\"13658340794\",\"leaderId\":\"619347945\",\"leader\":\"鏉庡洓\"},{\"id\":\"621466728\",\"name\":\"鐜嬩簲\",\"birthday\":\"1991-12-20\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d7\",\"firstOrgName\":\"甯傚満閮╘",\"firstOrgId\":\"1632358\",\"orgName\":\"甯傚満閮╘",\"orgId\":\"1632358\",\"post\":\"缁忕悊\",\"postId\":\"1002\",\"status\":\"鍦ㄨ亴\",\"jobStatus\":\"姝e父\",\"workNo\":\"6520\",\"mobile\":\"13658340795\",\"leaderId\":\"619347946\",\"leader\":\"璧靛叚\"}]}";
+ JSONObject jsonObject = JSON.parseObject(json);
+ JSONArray data = jsonObject.getJSONArray("data");
+ List<TenantUserBo> remoteTenantUserList = data.toJavaList(TenantUserBo.class);
+ System.err.println(remoteTenantUserList);
+
+ // 鏌ヨ绉熸埛涓嬬敤鎴�
+ List<String> tenantUserIds = userTenantMapper.getUserIdsByTenantId(tenantId);
+ LambdaQueryWrapper<SysUser> userQueryWrapper = new LambdaQueryWrapper<>();
+ userQueryWrapper.in(SysUser::getId, tenantUserIds);
+ List<SysUser> tenantUserList = this.baseMapper.selectList(userQueryWrapper);
+
+
+ // 鎻愬彇tenantUserList涓殑鎵�鏈塽sername浣滀负瀵规瘮渚濇嵁
+ Set<String> tenantUsernames = tenantUserList.stream()
+ .map(SysUser::getUsername)
+ .collect(Collectors.toSet());
+
+ // 1. remoteTenantUserList涓笉鍖呭惈鍦╰enantUserList涓殑璁板綍
+ List<TenantUserBo> remoteNotInTenant = remoteTenantUserList.stream()
+ .filter(remoteUser -> !tenantUsernames.contains(remoteUser.getWorkNo()))
+ .collect(Collectors.toList());
+
+ // 2. remoteTenantUserList涓寘鍚湪tenantUserList涓殑璁板綍
+ List<TenantUserBo> remoteInTenant = remoteTenantUserList.stream()
+ .filter(remoteUser -> tenantUsernames.contains(remoteUser.getWorkNo()))
+ .collect(Collectors.toList());
+ AtomicInteger successCount = new AtomicInteger(0);
+ AtomicInteger failedCount = new AtomicInteger(0);
+ for (int i = 0; i <remoteNotInTenant.size() ; i++) {
+ TenantUserBo tenantUserBo = remoteNotInTenant.get(i);
+ addUser(tenantUserBo,tenantId,successCount,failedCount);
+ }
+ if(remoteTenantUserList.size()>0){
+ return "鍚屾"+remoteTenantUserList.size()+"鏉℃暟鎹紝宸插瓨鍦�"+remoteInTenant.size() +"鏉★紱鎴愬姛鏂板"+successCount.get()+"鏉★紝澶辫触"+failedCount.get()+"鏉�";
+ }
+
+ return "鍚屾鎺ュ彛鏈繑鍥炴暟鎹紒";
+ }
+
+ private void addUser(TenantUserBo tenantUserBo,Integer tenantId,AtomicInteger successCount, AtomicInteger failedCount) {
+ SysUser user = new SysUser();
+ user.setLoginTenantId(tenantId);
+ user.setTenantId(tenantId);
+ user.setCreateTime(new Date());// 璁剧疆鍒涘缓鏃堕棿
+ String salt = oConvertUtils.randomGen(8);
+ String passwordEncode = PasswordUtil.encrypt(tenantUserBo.getWorkNo(), "123456", salt);
+ user.setSalt(salt);
+ user.setUsername(tenantUserBo.getWorkNo());
+ user.setRealname(tenantUserBo.getName());
+ user.setPassword(passwordEncode);
+ user.setPhone(tenantUserBo.getMobile());
+ user.setStatus(CommonConstant.USER_UNFREEZE);
+ user.setDelFlag(CommonConstant.DEL_FLAG_0);
+ user.setActivitiSync(CommonConstant.ACT_SYNC_0);
+ boolean save = this.save(user);
+
+ if(save){
+ this.saveUserTenant(user.getId(),String.valueOf(tenantId));
+ successCount.incrementAndGet();
+ }else {
+ failedCount.incrementAndGet();
+ }
+ }
+
+ /**
* 淇敼绉熸埛涓嬬殑閮ㄩ棬
* @param departs
*/
--
Gitblit v1.9.3