From bb229d0324c082a85b14c72ddf7ef1a46622266d Mon Sep 17 00:00:00 2001
From: 杜洪波 <1074825718@qq.com>
Date: 星期五, 17 四月 2026 09:42:28 +0800
Subject: [PATCH] 定时任务-租户扫描

---
 src/main/java/com/product/saas/service/SaasClientService.java |  139 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 132 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/product/saas/service/SaasClientService.java b/src/main/java/com/product/saas/service/SaasClientService.java
index 60820d0..f989c5b 100644
--- a/src/main/java/com/product/saas/service/SaasClientService.java
+++ b/src/main/java/com/product/saas/service/SaasClientService.java
@@ -2,27 +2,56 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.product.admin.service.SaasUserService;
 import com.product.core.dao.BaseDao;
 import com.product.core.entity.DataTableEntity;
 import com.product.core.entity.FieldSetEntity;
+import com.product.core.message.MessageFactory;
 import com.product.core.service.support.AbstractBaseService;
 import com.product.core.spring.context.SpringMVCContextHolder;
+import com.product.core.transfer.Transactional;
 import com.product.module.sys.entity.SystemUser;
+import com.product.saas.config.SaasConst;
+import com.product.saas.service.idel.ISaasClientService;
 import com.product.util.BaseUtil;
 
 /**
  *	绉熸埛淇℃伅 
  *
  */
-@Service
-public class SaasClientService extends AbstractBaseService{
+@Service("saasClientService")
+public class SaasClientService extends AbstractBaseService implements ISaasClientService{
 
 	@Autowired
 	BaseDao baseDao;
+	
+	@Autowired
+	MessageFactory messageFactory;
+	
+	@Autowired
+	SaasUserService saasUserService;
+
+	/**
+	 * 瀹氭椂浠诲姟鎵弿娌℃湁绉熸埛绠$悊鍛樼殑绉熸埛
+	 */
+	public void autoDetectTenant() {
+		DataTableEntity dt = baseDao.listTable(SaasConst.PRODUCT_SYS_CLIENTS, "platform_admin IS NULL OR platform_admin = ''");
+		if (!BaseUtil.dataTableIsEmpty(dt)) {
+			String clientName = BaseUtil.joinObjectArray(dt.getFieldAllValues(SaasConst.CLIENT_NAME), ",");
+			
+			Set<String> platformDirector = saasUserService.getPlatformSuperAdmin();
+			// 鍙戦�佹秷鎭粰骞冲彴涓荤
+			messageFactory.sendMessage(String.join(",", platformDirector),
+					"銆�" + clientName + "銆戠瓑绉熸埛娌℃湁骞冲彴绠$悊鍛�",
+					"绉熸埛缂轰箯骞冲彴绠$悊鍛�", 1, "5", null,
+					SaasConst.PRODUCT_SYS_CLIENTS, "23432432423", 1, new String[] {"system"}, null);
+		}
+	}
 	
 	/**
 	 * 绉熸埛鍒楄〃
@@ -34,7 +63,7 @@
 		if (user == null) {
 			return null;
 		}
-		List<Object> param = new ArrayList<>();;
+		List<Object> param = new ArrayList<>();
 		StringBuilder sql = new StringBuilder();
 		sql.append("\n SELECT");
 		sql.append("\n   A.uuid,A.client_name,A.client_unit_type,A.platform_admin,A.expiration_date,B.apply_status,");
@@ -46,9 +75,14 @@
 		sql.append("\n LEFT JOIN product_sys_users E ON E.user_id = D.user_id ");
 		sql.append("\n WHERE A.uuid != '00000000-0000-0000-0000-000000000000' ");
 		FieldSetEntity fsePost = user.getJobPost();
-		if(fsePost.getString("job_post_name").contains("骞冲彴绠$悊鍛�")) {
-			param.add(user.getUser_id());
-			sql.append("\n AND A.platform_admin = ?");
+		if (fsePost == null) {
+			param.add(user.getClient_uuid());
+			sql.append("\n AND A.uuid = ?");
+		} else {
+			if(fsePost.getString("job_post_name").contains("骞冲彴绠$悊鍛�")) {
+				param.add(user.getUser_id());
+				sql.append("\n AND A.platform_admin = ?");
+			}
 		}
 		DataTableEntity dte = baseDao.listTable(sql.toString(), param.toArray(), fse.getInteger("pagesize"), fse.getInteger("cpage"));
 		if (!BaseUtil.dataTableIsEmpty(dte)) {
@@ -71,6 +105,97 @@
 		sql.append("\n LEFT JOIN product_sys_org_manager D ON D.org_level_uuid = C.uuid ");
 		sql.append("\n LEFT JOIN product_sys_users E ON E.user_id = D.user_id ");
 		sql.append("\n WHERE A.uuid = ? ");
-		return baseDao.getFieldSetEntityBySQL(sql.toString(), new Object[] {uuid}, false);
+		FieldSetEntity fseClient = baseDao.getFieldSetEntityBySQL(sql.toString(), new Object[] {uuid}, false);
+		if(fseClient != null) {
+			DataTableEntity dtClientChange = baseDao.listTable("product_sys_tenant_change", "client_uuid = ?", new Object[] {uuid});
+			if (!BaseUtil.dataTableIsEmpty(dtClientChange)) {
+				baseDao.loadPromptData(dtClientChange);
+			}
+			fseClient.addSubDataTable(dtClientChange);
+		}
+		return fseClient;
+	}
+	
+	/**
+	 * 	绉熸埛淇℃伅鍙樻洿鍒楄〃
+	 * @param fse
+	 * @return
+	 */
+	public DataTableEntity listClientChange(FieldSetEntity fse) {
+		SystemUser user = SpringMVCContextHolder.getCurrentUser();
+		if (user == null) {
+			return null;
+		}
+		List<Object> param = new ArrayList<>();
+		StringBuilder sql = new StringBuilder();
+		sql.append("\n SELECT * FROM product_sys_tenant_change A");
+		sql.append("\n LEFT JOIN product_sys_clients B ON B.uuid = A.client_uuid");
+		FieldSetEntity fsePost = user.getJobPost();
+		String filter = fse.getString("filter");
+		if (fsePost == null) {
+			param.add(user.getClient_uuid());
+			sql.append("\n WHERE client_uuid = ?");
+			if ("entrance".equals(filter)) {
+				sql.append("\n AND (change_status IS NULL OR change_status = 0)");
+			} else {
+				sql.append("\n AND (change_status = 1 OR change_status = 2)");	
+			}
+		} else {
+			if(fsePost.getString("job_post_name").contains("骞冲彴绠$悊鍛�")) {
+				param.add(user.getUser_id());
+				sql.append("\n WHERE B.platform_admin = ?");
+				if ("entrance".equals(filter)) {
+					sql.append("\n AND change_status = 1");
+				} else {
+					sql.append("\n AND change_status = 2");	
+				}
+			}
+		}
+		sql.append("\n ORDER BY created_utc_datetime");
+		DataTableEntity dte = baseDao.listTable(sql.toString(), param.toArray(), fse.getInteger("pagesize"), fse.getInteger("cpage"));
+		if (!BaseUtil.dataTableIsEmpty(dte)) {
+			baseDao.loadPromptData(dte);
+		}
+		return dte;
+	}
+	
+	/**
+	 * 	瀹㈡埛淇℃伅鍙樻洿杩涚▼
+	 * @param fseChange
+	 * @return
+	 */
+	@Transactional
+	public boolean clientChangeProcess(FieldSetEntity fseChange) {
+		String changeStatus = fseChange.getString("change_status");
+		if (BaseUtil.strIsNull(changeStatus) || "0".equals(changeStatus)) {
+			// 绉熸埛绠$悊鍛樻彁浜ゅ彉鏇�
+			fseChange.setValue("change_status", 1);
+		} else {
+			// 绠$悊鍛樼‘璁ゅ彉鏇�
+			String clientUUID = fseChange.getString("client_uuid");
+			String newClientName = fseChange.getString("new_client_name");
+			if (!BaseUtil.strIsNull(newClientName)) {
+				String oldClientName = fseChange.getString("old_client_name");
+				// 鍙樻洿瀹㈡埛鍚嶇О
+				baseDao.executeUpdate("UPDATE product_sys_clients SET client_name = ? WHERE uuid = ?", new Object[] {newClientName, clientUUID});
+				// 鍙樻洿缁勭粐鏈烘瀯鍚嶇О,鍏ㄧО
+				baseDao.executeUpdate("UPDATE product_sys_org_levels SET org_level_name = REPLACE(org_level_name, ?, ?),org_level_all = REPLACE(org_level_all, ?, ?) WHERE org_level_all LIKE  ?",
+						new Object[] {oldClientName, newClientName, oldClientName, newClientName, "%"+oldClientName+"%"});
+			}
+			String newClientAdmin = fseChange.getString("new_client_admin");
+			if (!BaseUtil.strIsNull(newClientAdmin)) {
+//				String oldClientAdmin = fseChange.getString("old_client_admin");
+				// 鍘绘帀鏃х鐞嗗憳
+				// 鐢熸垚鏂扮鐞嗗憳
+			}
+			String newBusinessLicense = fseChange.getString("new_business_license");
+			if (!BaseUtil.strIsNull(newBusinessLicense)) {
+//				String oldBusinessLicense = fseChange.getString("old_business_license");
+				// 灏嗘柊钀ヤ笟鎵х収褰掑叆瀹㈡埛淇℃伅涓�
+				baseDao.executeUpdate("UPDATE product_sys_tenant_apply SET business_license = ? WHERE client_uuid = ?", new Object[] {newBusinessLicense, clientUUID});
+			}
+			fseChange.setValue("change_status", 2);
+		}
+		return baseDao.saveFieldSetEntity(fseChange);
 	}
 }

--
Gitblit v1.9.2