From 85f968c63cadfe780120deb4b77b8239037d6082 Mon Sep 17 00:00:00 2001
From: 杜洪波 <1074825718@qq.com>
Date: 星期五, 27 三月 2026 10:16:28 +0800
Subject: [PATCH] 用户中心客户代码提交

---
 /dev/null                                                               |   44 -------
 src/main/java/com/product/saas/config/SaasCode.java                     |   10 +
 src/main/java/com/product/saas/controller/SaasClientController.java     |   64 ++++++++++
 src/main/java/com/product/saas/service/TenantContractService.java       |   35 +++++
 src/main/java/com/product/saas/service/idel/ISaasClientService.java     |    8 +
 src/main/java/com/product/saas/service/SaasClientService.java           |  107 ++++++++++++++++-
 src/main/java/com/product/saas/controller/TenantContractController.java |   65 ++++++++++
 src/main/java/com/product/saas/config/SaasConst.java                    |    1 
 8 files changed, 278 insertions(+), 56 deletions(-)

diff --git a/src/main/java/com/product/saas/config/SaasCode.java b/src/main/java/com/product/saas/config/SaasCode.java
index 10665a3..a74d4de 100644
--- a/src/main/java/com/product/saas/config/SaasCode.java
+++ b/src/main/java/com/product/saas/config/SaasCode.java
@@ -24,7 +24,15 @@
 	TENANT_APPLY_LICENSE_FILE_COPY_FAIL("绉熸埛鐢宠License鏂囦欢COPY澶辫触", 11),
 	
 	// 绉熸埛淇℃伅
-	TENANT_INFO_GET_LIST_FAIL("绉熸埛淇℃伅鍒楄〃鏌ヨ澶辫触", 12),
+	CLIENT_INFO_GET_LIST_FAIL("绉熸埛淇℃伅鍒楄〃鏌ヨ澶辫触锛�", 12),
+	CLIENT_INFO_GET_DETAIL_FAIL("绉熸埛淇℃伅璇︽儏鏌ヨ澶辫触锛�", 13),
+	CLIENT_CHANGE_GET_LIST_FAIL("绉熸埛鍙樻洿鍒楄〃鏌ヨ澶辫触锛�", 14),
+	CLIENT_CHANGE_CONFIRM_FAIL("绉熸埛鍙樻洿纭淇濆瓨澶辫触锛�", 15),
+	CLIENT_CHANGE_CONFIRM_SAVEFAIL("绉熸埛鍙樻洿纭淇濆瓨澶辫触锛�", 16),
+	
+	// 绉熸埛鍚堝悓
+	CLIENT_CONTRACT_GET_LIST_FAIL("绉熸埛鍚堝悓鍒楄〃鏌ヨ澶辫触锛�", 17),
+	CLIENT_CONTRACT_GET_FIND_FAIL("绉熸埛鍚堝悓璇︽儏鏌ヨ澶辫触锛�", 18),
 	;
 	
 	private String text;
diff --git a/src/main/java/com/product/saas/config/SaasConst.java b/src/main/java/com/product/saas/config/SaasConst.java
index 6647200..e943d91 100644
--- a/src/main/java/com/product/saas/config/SaasConst.java
+++ b/src/main/java/com/product/saas/config/SaasConst.java
@@ -11,6 +11,7 @@
 	public static final String PRODUCT_SYS_TENANT_APPLY =  "product_sys_tenant_apply";
 	public static final String PRODUCT_SYS_CLIENTS =  "product_sys_clients";
 	public static final String PRODUCT_SYS_CONTRACT =  "product_sys_contract";
+	public static final String PRODUCT_SYS_TENANT_CHANGE =  "product_sys_tenant_change";
 	
 	//瀛楁甯搁噺
 }
diff --git a/src/main/java/com/product/saas/controller/SaasClientController.java b/src/main/java/com/product/saas/controller/SaasClientController.java
index 516a00c..8d96935 100644
--- a/src/main/java/com/product/saas/controller/SaasClientController.java
+++ b/src/main/java/com/product/saas/controller/SaasClientController.java
@@ -9,10 +9,13 @@
 import com.product.admin.config.SystemCode;
 import com.product.core.controller.support.AbstractBaseController;
 import com.product.core.entity.FieldSetEntity;
+import com.product.core.exception.BaseException;
+import com.product.core.spring.context.SpringMVCContextHolder;
 import com.product.module.sys.version.ApiVersion;
 import com.product.saas.config.SaasCode;
 import com.product.saas.config.SaasConst;
 import com.product.saas.service.SaasClientService;
+import com.product.saas.service.idel.ISaasClientService;
 import com.product.util.BaseUtil;
 
 /**
@@ -40,14 +43,17 @@
 				return error(SystemCode.SYSTEM_CPAGES_NOT_NULL.getValue(), SystemCode.SYSTEM_CPAGES_NOT_NULL.getText());
 			}
 			return OK_List(saasClientService.listClient(fse));
+		} catch (BaseException e) {
+			e.printStackTrace();
+			return error(e);
 		} catch (Exception e) {
 			e.printStackTrace();
-			return error(SaasCode.TENANT_INFO_GET_LIST_FAIL.getValue(), SaasCode.TENANT_INFO_GET_LIST_FAIL.getText() + e.getMessage());
+			return error(SaasCode.CLIENT_INFO_GET_LIST_FAIL.getValue(), SaasCode.CLIENT_INFO_GET_LIST_FAIL.getText() + e.getMessage());
 		}
 	}
 	
 	/**
-	 * 	绉熸埛鍒楄〃
+	 * 	绉熸埛璇︽儏
 	 * @param request
 	 * @return
 	 */
@@ -57,12 +63,62 @@
 		try {
 			FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, SaasConst.PRODUCT_SYS_CLIENTS);
 			if(BaseUtil.strIsNull(fse.getUUID())) {
-				return error(SystemCode.SYSTEM_FORM_COUNT.getValue(), SystemCode.SYSTEM_FORM_COUNT.getText());
+				fse.setValue("uuid", SpringMVCContextHolder.getCurrentUser().getClient_uuid());
+//				return error(SystemCode.SYSTEM_FORM_COUNT.getValue(), SystemCode.SYSTEM_FORM_COUNT.getText());
 			}
 			return OK_List(saasClientService.findClient(fse.getUUID()));
+		} catch (BaseException e) {
+			e.printStackTrace();
+			return error(e);
 		} catch (Exception e) {
 			e.printStackTrace();
-			return error(SaasCode.TENANT_INFO_GET_LIST_FAIL.getValue(), SaasCode.TENANT_INFO_GET_LIST_FAIL.getText() + e.getMessage());
+			return error(SaasCode.CLIENT_INFO_GET_DETAIL_FAIL.getValue(), SaasCode.CLIENT_INFO_GET_DETAIL_FAIL.getText() + e.getMessage());
+		}
+	}
+	
+	/**
+	 *  绉熸埛淇℃伅鍙樻洿鍒楄〃
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping("/list-client-change/{version}")
+	@ApiVersion(1)
+	public String listClientChange(HttpServletRequest request) {
+		try {
+			FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, SaasConst.PRODUCT_SYS_TENANT_CHANGE);
+			
+			return OK_List(saasClientService.listClientChange(fse));
+		} catch (BaseException e) {
+			e.printStackTrace();
+			return error(e);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return error(SaasCode.CLIENT_CHANGE_GET_LIST_FAIL.getValue(), SaasCode.CLIENT_CHANGE_GET_LIST_FAIL.getText() + e.getMessage());
+		}
+	}
+	
+	/**
+	 *  绉熸埛淇℃伅鍙樻洿杩涚▼
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping("/change-process/{version}")
+	@ApiVersion(1)
+	public String clientChangeProcess(HttpServletRequest request) {
+		try {
+			FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, SaasConst.PRODUCT_SYS_TENANT_CHANGE);
+			ISaasClientService service = (ISaasClientService)getProxyInstance(saasClientService);
+			boolean succ = service.clientChangeProcess(fse);
+			if (succ) {
+				return OK();
+			}
+			return error(SaasCode.CLIENT_CHANGE_CONFIRM_SAVEFAIL.getValue(), SaasCode.CLIENT_CHANGE_CONFIRM_SAVEFAIL.getText());
+		} catch (BaseException e) {
+			e.printStackTrace();
+			return error(e);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return error(SaasCode.CLIENT_CHANGE_CONFIRM_FAIL.getValue(), SaasCode.CLIENT_CHANGE_CONFIRM_FAIL.getText() + e.getMessage());
 		}
 	}
 }
diff --git a/src/main/java/com/product/saas/controller/SystemContractController.java b/src/main/java/com/product/saas/controller/SystemContractController.java
deleted file mode 100644
index 196aefa..0000000
--- a/src/main/java/com/product/saas/controller/SystemContractController.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.product.saas.controller;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.product.admin.config.SystemCode;
-import com.product.saas.config.SaasConst;
-import com.product.saas.service.SystemContractService;
-import com.product.core.controller.support.AbstractBaseController;
-import com.product.core.entity.FieldSetEntity;
-import com.product.core.exception.BaseException;
-import com.product.module.sys.version.ApiVersion;
-import com.product.util.BaseUtil;
-
-@RequestMapping("/api/system-contract")
-@RestController
-public class SystemContractController extends AbstractBaseController{
-
-	@Autowired
-	SystemContractService systemContractService;
-	
-	/**
-	 * 鑾峰彇绉熸埛鏈�鏂板悎鍚屼俊鎭�
-	 * @param request
-	 * @return
-	 */
-	@RequestMapping("/find-contract/{version}")
-	@ApiVersion(1)
-    public String findContract(HttpServletRequest request){
-        try {
-        	FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, SaasConst.PRODUCT_SYS_CONTRACT);
-            return OK_List(systemContractService.findContract(fse.getString("uuid")));
-        } catch (BaseException e) {
-            e.printStackTrace();
-            return this.error(e);
-        }catch (Exception e){
-            e.printStackTrace();
-            return error(SystemCode.GET_FUNCTION_TREE_FAIL.getValue(),SystemCode.GET_FUNCTION_TREE_FAIL.getText()+e.getMessage());
-        }
-    }
-}
diff --git a/src/main/java/com/product/saas/controller/TenantContractController.java b/src/main/java/com/product/saas/controller/TenantContractController.java
new file mode 100644
index 0000000..3026caa
--- /dev/null
+++ b/src/main/java/com/product/saas/controller/TenantContractController.java
@@ -0,0 +1,65 @@
+package com.product.saas.controller;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.product.saas.config.SaasCode;
+import com.product.saas.config.SaasConst;
+import com.product.saas.service.TenantContractService;
+import com.product.core.controller.support.AbstractBaseController;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.exception.BaseException;
+import com.product.module.sys.version.ApiVersion;
+import com.product.util.BaseUtil;
+
+
+@RequestMapping("/api/tenant-contract")
+@RestController
+public class TenantContractController extends AbstractBaseController{
+
+	@Autowired
+	TenantContractService tenantContractService;
+	
+	/**
+	 * 鑾峰彇鍚堝悓淇℃伅
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping("/list-contract/{version}")
+	@ApiVersion(1)
+    public String listContract(HttpServletRequest request){
+        try {
+        	FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, SaasConst.PRODUCT_SYS_CONTRACT);
+            return OK_List(tenantContractService.listContract(fse));
+        } catch (BaseException e) {
+            e.printStackTrace();
+            return this.error(e);
+        }catch (Exception e){
+            e.printStackTrace();
+            return error(SaasCode.CLIENT_CONTRACT_GET_LIST_FAIL.getValue(), SaasCode.CLIENT_CONTRACT_GET_LIST_FAIL.getText()+e.getMessage());
+        }
+    }
+	
+	/**
+	 * 鑾峰彇绉熸埛鏈�鏂板悎鍚屼俊鎭�
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping("/find-contract/{version}")
+	@ApiVersion(1)
+    public String findContract(HttpServletRequest request){
+        try {
+        	FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, SaasConst.PRODUCT_SYS_CONTRACT);
+            return OK_List(tenantContractService.findContract(fse.getString("uuid")));
+        } catch (BaseException e) {
+            e.printStackTrace();
+            return this.error(e);
+        }catch (Exception e){
+            e.printStackTrace();
+            return error(SaasCode.CLIENT_CONTRACT_GET_FIND_FAIL.getValue(), SaasCode.CLIENT_CONTRACT_GET_FIND_FAIL.getText()+e.getMessage());
+        }
+    }
+}
diff --git a/src/main/java/com/product/saas/service/SaasClientService.java b/src/main/java/com/product/saas/service/SaasClientService.java
index 60820d0..7874513 100644
--- a/src/main/java/com/product/saas/service/SaasClientService.java
+++ b/src/main/java/com/product/saas/service/SaasClientService.java
@@ -11,7 +11,9 @@
 import com.product.core.entity.FieldSetEntity;
 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.service.idel.ISaasClientService;
 import com.product.util.BaseUtil;
 
 /**
@@ -19,7 +21,7 @@
  *
  */
 @Service
-public class SaasClientService extends AbstractBaseService{
+public class SaasClientService extends AbstractBaseService implements ISaasClientService{
 
 	@Autowired
 	BaseDao baseDao;
@@ -34,7 +36,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 +48,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 +78,94 @@
 		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});
+			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);
 	}
 }
diff --git a/src/main/java/com/product/saas/service/SystemContractService.java b/src/main/java/com/product/saas/service/TenantContractService.java
similarity index 78%
rename from src/main/java/com/product/saas/service/SystemContractService.java
rename to src/main/java/com/product/saas/service/TenantContractService.java
index a5c20ea..92856f0 100644
--- a/src/main/java/com/product/saas/service/SystemContractService.java
+++ b/src/main/java/com/product/saas/service/TenantContractService.java
@@ -1,6 +1,8 @@
 package com.product.saas.service;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -12,17 +14,48 @@
 import com.product.core.entity.FieldSetEntity;
 import com.product.core.exception.BaseException;
 import com.product.core.service.support.AbstractBaseService;
+import com.product.core.spring.context.SpringMVCContextHolder;
+import com.product.module.sys.entity.SystemUser;
 import com.product.saas.config.SaasCode;
 import com.product.saas.config.SaasConst;
+import com.product.util.BaseUtil;
 
 import cn.hutool.core.io.FileUtil;
 
 @Component
-public class SystemContractService extends AbstractBaseService{
+public class TenantContractService extends AbstractBaseService{
 
 	@Autowired
 	BaseDao baseDao;
 	
+	public DataTableEntity listContract(FieldSetEntity fse) {
+		SystemUser user = SpringMVCContextHolder.getCurrentUser();
+		if (user == null) {
+			return null;
+		}
+		List<Object> param = new ArrayList<>();;
+		StringBuilder sql = new StringBuilder();
+		sql.append("\n SELECT A.*");
+		sql.append("\n FROM product_sys_contract A");
+		sql.append("\n LEFT JOIN product_sys_clients B ON B.uuid = A.client_uuid");
+		sql.append("\n WHERE ").append(fse.getString("filter"));
+		FieldSetEntity fsePost = user.getJobPost();
+		if (fsePost == null) {
+			param.add(user.getClient_uuid());
+			sql.append("\n AND A.client_uuid = ?");
+		} else {
+			if(fsePost.getString("job_post_name").contains("骞冲彴绠$悊鍛�")) {
+				param.add(user.getUser_id());
+				sql.append("\n AND B.platform_admin = ?");
+			}
+		}
+		DataTableEntity dte = baseDao.listTable(sql.toString(), param.toArray(), fse.getInteger("pagesize"), fse.getInteger("cpage"));
+		if (!BaseUtil.dataTableIsEmpty(dte)) {
+			baseDao.loadPromptData(dte);
+		}
+		return dte;
+	}
+	
 	/**
 	 * 	鑾峰彇鍚堝悓璇︽儏(娴佺▼璇︽儏璋冪敤)
 	 * @param fse
diff --git a/src/main/java/com/product/saas/service/idel/ISaasClientService.java b/src/main/java/com/product/saas/service/idel/ISaasClientService.java
new file mode 100644
index 0000000..5395227
--- /dev/null
+++ b/src/main/java/com/product/saas/service/idel/ISaasClientService.java
@@ -0,0 +1,8 @@
+package com.product.saas.service.idel;
+
+import com.product.core.entity.FieldSetEntity;
+
+public interface ISaasClientService {
+
+	public boolean clientChangeProcess(FieldSetEntity fseChange);
+}

--
Gitblit v1.9.2