package com.product.saas.service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.product.core.dao.BaseDao;
|
import com.product.core.entity.DataTableEntity;
|
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;
|
|
/**
|
* 租户信息
|
*
|
*/
|
@Service
|
public class SaasClientService extends AbstractBaseService implements ISaasClientService{
|
|
@Autowired
|
BaseDao baseDao;
|
|
/**
|
* 租户列表
|
* @param fse
|
* @return
|
*/
|
public DataTableEntity listClient(FieldSetEntity fse) {
|
SystemUser user = SpringMVCContextHolder.getCurrentUser();
|
if (user == null) {
|
return null;
|
}
|
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,");
|
sql.append("\n E.user_name AS client_admin,E.user_mobile_number AS client_admin_phone,E.user_primary_email AS client_admin_email ");
|
sql.append("\n FROM product_sys_clients A");
|
sql.append("\n LEFT JOIN product_sys_tenant_apply B ON B.client_uuid = A.uuid ");
|
sql.append("\n LEFT JOIN product_sys_org_levels C ON C.client_uuid = A.uuid AND C.org_level_type = 0 ");
|
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 != '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)) {
|
baseDao.loadPromptData(dte);
|
}
|
return dte;
|
}
|
|
/**
|
* 租户详情
|
* @param uuid
|
* @return
|
*/
|
public FieldSetEntity findClient(String uuid) {
|
StringBuilder sql = new StringBuilder();
|
sql.append("\n SELECT A.*,B.legal_person,B.credit_code,B.business_license,E.user_name,E.user_mobile_number,E.user_primary_email ");
|
sql.append("\n FROM product_sys_clients A ");
|
sql.append("\n LEFT JOIN product_sys_tenant_apply B ON B.client_uuid = A.uuid ");
|
sql.append("\n LEFT JOIN product_sys_org_levels C ON C.client_uuid = A.uuid AND C.org_level_type = 0 ");
|
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 = ? ");
|
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);
|
}
|
}
|