杜洪波
2026-03-27 85f968c63cadfe780120deb4b77b8239037d6082
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 == 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);
   }
}