From c5eb3c09d6c441c1254eacbfcc2ab8d4e1aa273d Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 14 Jul 2023 15:13:02 +0800 Subject: [PATCH] add --- .../api/system/service/SysDictApiService.java | 5 +++++ .../api/tenant/entity/param/SysTenantParam.java | 9 +++++++++ .../system/runner/SyncDataToCacheRunner.java | 11 ++++++++--- .../module/system/service/SysDictDataService.java | 4 ---- .../tenant/controller/SysTenantController.java | 4 ++-- .../tenant/mapper/SysTenantDatasourceMapper.java | 7 ------- .../module/tenant/runner/SysTenantRunner.java | 4 ++-- .../service/SysTenantDatasourceService.java | 7 ------- .../module/tenant/service/SysTenantService.java | 3 ++- .../impl/DynamicDatasourceServiceImpl.java | 15 +++++++++------ .../impl/SysTenantDatasourceServiceImpl.java | 5 ----- .../tenant/service/impl/SysTenantServiceImpl.java | 3 ++- .../mapper/SysTenantDatasourceMapper.xml | 4 +--- 13 files changed, 40 insertions(+), 41 deletions(-) diff --git a/qiaoba-api/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java b/qiaoba-api/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java index 8f762eb..67b584d 100644 --- a/qiaoba-api/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java +++ b/qiaoba-api/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java @@ -20,4 +20,9 @@ public interface SysDictApiService { * @return 字典数据集合信息 */ List selectFromCache(String dictType); + + /** + * 重置字典缓存数据 + */ + void resetDictCache(); } diff --git a/qiaoba-api/qiaoba-api-tenant/src/main/java/com/qiaoba/api/tenant/entity/param/SysTenantParam.java b/qiaoba-api/qiaoba-api-tenant/src/main/java/com/qiaoba/api/tenant/entity/param/SysTenantParam.java index a44e26f..3eef2f7 100644 --- a/qiaoba-api/qiaoba-api-tenant/src/main/java/com/qiaoba/api/tenant/entity/param/SysTenantParam.java +++ b/qiaoba-api/qiaoba-api-tenant/src/main/java/com/qiaoba/api/tenant/entity/param/SysTenantParam.java @@ -41,17 +41,26 @@ public class SysTenantParam implements Serializable { @Schema(description = "类型(1正常 2过期)") private String type; + @Schema(description = "是否初始化(1是 0否)") + private String initialized; + /** * 是否是登陆接口 */ private Boolean isLogin = false; public static SysTenantParam buildNormalSelectParam() { + return buildNormalSelectParam(null); + } + + public static SysTenantParam buildNormalSelectParam(String companyName) { SysTenantParam param = new SysTenantParam(); + param.setCompanyName(companyName); param.setTime(new Date()); param.setStatus(BaseEnum.NORMAL.getCode()); param.setType(SysTenantParam.TYPE_NOT_EXPIRED); param.setIsLogin(true); + param.setInitialized(BaseEnum.YES.getCode()); return param; } } diff --git a/qiaoba-module/qiaoba-module-system/src/main/java/com/qiaoba/module/system/runner/SyncDataToCacheRunner.java b/qiaoba-module/qiaoba-module-system/src/main/java/com/qiaoba/module/system/runner/SyncDataToCacheRunner.java index e02cad9..69b8c9c 100644 --- a/qiaoba-module/qiaoba-module-system/src/main/java/com/qiaoba/module/system/runner/SyncDataToCacheRunner.java +++ b/qiaoba-module/qiaoba-module-system/src/main/java/com/qiaoba/module/system/runner/SyncDataToCacheRunner.java @@ -1,5 +1,6 @@ package com.qiaoba.module.system.runner; +import com.qiaoba.api.system.service.SysDictApiService; import com.qiaoba.api.tenant.entity.SysTenant; import com.qiaoba.api.tenant.entity.param.SysTenantParam; import com.qiaoba.api.tenant.service.SysTenantApiService; @@ -29,6 +30,8 @@ public class SyncDataToCacheRunner implements ApplicationRunner { private final SysTenantApiService sysTenantApiService; private final SysConfigService sysConfigService; + private final SysDictApiService sysDictApiService; + @Override public void run(ApplicationArguments args) throws Exception { @@ -42,14 +45,16 @@ public class SyncDataToCacheRunner implements ApplicationRunner { BaseContext.clearTenantId(); } - // 对租户类型进行分类 for (SysTenant sysTenant : sysTenantList) { try { TenantUtil.setContext(sysTenant); + // 系统配置 sysConfigService.resetConfigCache(); - log.info("同步[系统配置]完成, 租户ID: {}", sysTenant.getTenantId()); + // 字典数据 + sysDictApiService.resetDictCache(); + log.info("初始化租户数据完成, 租户ID: {}", sysTenant.getTenantId()); } catch (Exception e) { - log.error("同步[系统配置]失败, 租户ID: {}, 错误原因: {}", sysTenant.getTenantId(), e.getMessage()); + log.error("初始化租户数据完成, 租户ID: {}, 错误原因: {}", sysTenant.getTenantId(), e.getMessage()); } finally { BaseContext.clearAllHolder(); } diff --git a/qiaoba-module/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java b/qiaoba-module/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java index cc33213..2834d3f 100644 --- a/qiaoba-module/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java +++ b/qiaoba-module/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java @@ -84,9 +84,5 @@ public interface SysDictDataService extends SysDictApiService { */ List selectByDictType(String dictType); - /** - * 重置字典缓存数据 - */ - void resetDictCache(); } diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java index ee83d42..725d459 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java +++ b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java @@ -67,8 +67,8 @@ public class SysTenantController { @GetMapping("/normal-list") @Operation(summary = "获取正常列表[开放接口]") - public TableDataInfo normalPageList(PageQuery pageQuery) { - return sysTenantService.selectPageList(SysTenantParam.buildNormalSelectParam(), pageQuery); + public TableDataInfo normalPageList(@RequestParam(required = false) String companyName,PageQuery pageQuery) { + return sysTenantService.selectPageList(SysTenantParam.buildNormalSelectParam(companyName), pageQuery); } @PreAuthorize("hasAuthority('tenant:edit')") diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/mapper/SysTenantDatasourceMapper.java b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/mapper/SysTenantDatasourceMapper.java index c2ff532..f986a74 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/mapper/SysTenantDatasourceMapper.java +++ b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/mapper/SysTenantDatasourceMapper.java @@ -15,13 +15,6 @@ import java.util.List; */ public interface SysTenantDatasourceMapper extends BaseMapper { - /** - * 查询所有数据源模式的租户ID - * - * @return tenantIds - */ - List selectTenantIds(); - /** * 通过IP查询租户数据源信息 todo select * * diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/runner/SysTenantRunner.java b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/runner/SysTenantRunner.java index c0773d6..0467ac5 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/runner/SysTenantRunner.java +++ b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/runner/SysTenantRunner.java @@ -6,7 +6,7 @@ import com.qiaoba.module.tenant.service.SysTenantService; import lombok.RequiredArgsConstructor; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; /** * 项目启动完成后-将主库中的租户信息同步到 Redis 中 @@ -15,7 +15,7 @@ import org.springframework.stereotype.Service; * @version 1.0 * @since 2022-09-22 04:20:28 */ -@Service +@Component @RequiredArgsConstructor public class SysTenantRunner implements ApplicationRunner { diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantDatasourceService.java b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantDatasourceService.java index ed1c950..a3916e7 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantDatasourceService.java +++ b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantDatasourceService.java @@ -81,13 +81,6 @@ public interface SysTenantDatasourceService { */ List selectList(SysTenantDatasourceParam param); - /** - * 查询所有数据源模式的租户ID - * - * @return tenantIds - */ - List selectTenantIds(); - /** * 将租户下的除datasourceId之外的其他数据源设置为备用 * diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java index e57514c..b9e2f96 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java +++ b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java @@ -3,6 +3,7 @@ package com.qiaoba.module.tenant.service; import com.qiaoba.api.tenant.entity.SysTenant; import com.qiaoba.api.tenant.entity.dto.SysTenantDto; import com.qiaoba.api.tenant.entity.param.SysTenantParam; +import com.qiaoba.api.tenant.service.SysTenantApiService; import com.qiaoba.common.database.entity.PageQuery; import com.qiaoba.common.database.entity.TableDataInfo; import com.qiaoba.module.tenant.entity.dto.TenantSettingDto; @@ -14,7 +15,7 @@ import com.qiaoba.module.tenant.entity.dto.TenantSettingDto; * @version 1.0 * @since 2023/5/30 10:55 */ -public interface SysTenantService { +public interface SysTenantService extends SysTenantApiService { /** * 新增租户 diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/DynamicDatasourceServiceImpl.java b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/DynamicDatasourceServiceImpl.java index 02835e0..7e6f0a2 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/DynamicDatasourceServiceImpl.java +++ b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/DynamicDatasourceServiceImpl.java @@ -1,15 +1,16 @@ package com.qiaoba.module.tenant.service.impl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; +import com.qiaoba.api.tenant.entity.SysTenant; import com.qiaoba.api.tenant.entity.SysTenantDatasource; import com.qiaoba.api.tenant.entity.param.SysTenantDatasourceParam; +import com.qiaoba.api.tenant.entity.param.SysTenantParam; import com.qiaoba.common.base.enums.BaseEnum; -import com.qiaoba.common.base.enums.DataBaseEnum; import com.qiaoba.common.base.exception.ServiceException; import com.qiaoba.common.database.entity.DynamicDataSource; import com.qiaoba.common.database.service.DynamicDatasourceService; import com.qiaoba.module.tenant.service.SysTenantDatasourceService; +import com.qiaoba.module.tenant.service.SysTenantService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -27,14 +28,16 @@ import java.util.*; public class DynamicDatasourceServiceImpl implements DynamicDatasourceService { private final SysTenantDatasourceService sysTenantDatasourceService; + private final SysTenantService sysTenantService; @Override public Map> loadAllTenantDatasource() { Map> datasourceMap = new LinkedHashMap<>(); - List tenantIds = sysTenantDatasourceService.selectTenantIds(); - for (String tenantId : tenantIds) { - List datasourceList = sysTenantDatasourceService.selectList(new SysTenantDatasourceParam(tenantId)); - datasourceMap.put(tenantId, transformList(datasourceList)); + List sysTenants = sysTenantService.selectList(SysTenantParam.buildNormalSelectParam()); + for (SysTenant sysTenant : sysTenants) { + List datasourceList = sysTenantDatasourceService.selectList(new SysTenantDatasourceParam(sysTenant.getTenantId())); + datasourceMap.put(sysTenant.getTenantId(), transformList(datasourceList)); + } return datasourceMap; } diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantDatasourceServiceImpl.java b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantDatasourceServiceImpl.java index 3d7c531..d50fa93 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantDatasourceServiceImpl.java +++ b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantDatasourceServiceImpl.java @@ -108,11 +108,6 @@ public class SysTenantDatasourceServiceImpl implements SysTenantDatasourceServic return sysTenantDatasourceMapper.selectList(paramToWrapper(param)); } - @Override - public List selectTenantIds() { - return sysTenantDatasourceMapper.selectTenantIds(); - } - @Override public void setBackupDatasourceExcludeId(String tenantId, String excludeId) { sysTenantDatasourceMapper.setBackupDatasourceExcludeId(tenantId, excludeId, BaseEnum.NO.getCode()); diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantServiceImpl.java b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantServiceImpl.java index d6308c8..5303fd8 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantServiceImpl.java +++ b/qiaoba-module/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantServiceImpl.java @@ -39,7 +39,7 @@ import java.util.Objects; @Configuration @RequiredArgsConstructor @Slf4j -public class SysTenantServiceImpl implements SysTenantService, SysTenantApiService { +public class SysTenantServiceImpl implements SysTenantService { private final SysTenantMapper sysTenantMapper; @@ -150,6 +150,7 @@ public class SysTenantServiceImpl implements SysTenantService, SysTenantApiServi QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(StrUtil.isNotBlank(param.getStatus()), SysTenant::getStatus, param.getStatus()) + .eq(StrUtil.isNotBlank(param.getInitialized()), SysTenant::getInitialized, param.getInitialized()) .like(StrUtil.isNotBlank(param.getCompanyName()), SysTenant::getCompanyName, param.getCompanyName()) .like(StrUtil.isNotBlank(param.getContactName()), SysTenant::getContactName, param.getContactName()); diff --git a/qiaoba-module/qiaoba-module-tenant/src/main/resources/mapper/SysTenantDatasourceMapper.xml b/qiaoba-module/qiaoba-module-tenant/src/main/resources/mapper/SysTenantDatasourceMapper.xml index 1f12023..cd8ef37 100644 --- a/qiaoba-module/qiaoba-module-tenant/src/main/resources/mapper/SysTenantDatasourceMapper.xml +++ b/qiaoba-module/qiaoba-module-tenant/src/main/resources/mapper/SysTenantDatasourceMapper.xml @@ -3,9 +3,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - update sys_tenant_datasource set is_primary = #{code} where tenant_id = #{tenantId} and datasource_id != #{excludeId} @@ -14,4 +11,5 @@ +