潘志宝
2024-08-21 c39abccd937de093fc067abffac5f66b758bc97b
TenantDS
已修改6个文件
已添加1个文件
71 ■■■■■ 文件已修改
iailab-module-system/iailab-module-system-api/src/main/java/com/iailab/module/system/api/tenant/TenantApi.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-system/iailab-module-system-api/src/main/java/com/iailab/module/system/api/tenant/dto/TenantDataSourceConfigRespDTO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-system/iailab-module-system-biz/db/mysql.sql 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/api/tenant/TenantApiImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/tenant/TenantConvert.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/dal/dataobject/tenant/TenantDO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/framework/rpc/config/RpcConfiguration.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-system/iailab-module-system-api/src/main/java/com/iailab/module/system/api/tenant/TenantApi.java
@@ -1,6 +1,7 @@
package com.iailab.module.system.api.tenant;
import com.iailab.framework.common.pojo.CommonResult;
import com.iailab.module.system.api.tenant.dto.TenantDataSourceConfigRespDTO;
import com.iailab.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
@@ -26,4 +27,9 @@
    @Parameter(name = "id", description = "租户编号", required = true, example = "1024")
    CommonResult<Boolean> validTenant(@RequestParam("id") Long id);
    @GetMapping(PREFIX + "/data-source")
    @Operation(summary = "获得租户的数据源配置")
    @Parameter(name = "tenantId", description = "租户编号", required = true, example = "1024")
    TenantDataSourceConfigRespDTO getTenantDataSourceConfig(@RequestParam("tenantId") Long tenantId);
}
iailab-module-system/iailab-module-system-api/src/main/java/com/iailab/module/system/api/tenant/dto/TenantDataSourceConfigRespDTO.java
对比新文件
@@ -0,0 +1,31 @@
package com.iailab.module.system.api.tenant.dto;
import lombok.Data;
/**
 * 多租户的数据源配置 Response DTO
 *
 * @author 芋道源码
 */
@Data
public class TenantDataSourceConfigRespDTO {
    /**
     * 连接名
     */
    private String name;
    /**
     * 数据源连接
     */
    private String url;
    /**
     * 用户名
     */
    private String username;
    /**
     * 密码
     */
    private String password;
}
iailab-module-system/iailab-module-system-biz/db/mysql.sql
@@ -16,6 +16,7 @@
                                `package_id` bigint NOT NULL COMMENT '租户套餐编号',
                                `expire_time` datetime NOT NULL COMMENT '过期时间',
                                `account_count` int NOT NULL COMMENT '账号数量',
                                `data_source_config_id` bigint DEFAULT NULL COMMENT '数据源配置的编号',
                                `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建者',
                                `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                                `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/api/tenant/TenantApiImpl.java
@@ -1,6 +1,10 @@
package com.iailab.module.system.api.tenant;
import com.iailab.framework.common.pojo.CommonResult;
import com.iailab.module.infra.api.db.DataSourceConfigServiceApi;
import com.iailab.module.system.api.tenant.dto.TenantDataSourceConfigRespDTO;
import com.iailab.module.system.convert.tenant.TenantConvert;
import com.iailab.module.system.dal.dataobject.tenant.TenantDO;
import com.iailab.module.system.service.tenant.TenantService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
@@ -17,6 +21,9 @@
    @Resource
    private TenantService tenantService;
    @Resource
    private DataSourceConfigServiceApi dataSourceConfigServiceApi;
    @Override
    public CommonResult<List<Long>> getTenantIdList() {
        return success(tenantService.getTenantIdList());
@@ -28,4 +35,15 @@
        return success(true);
    }
    @Override
    public TenantDataSourceConfigRespDTO getTenantDataSourceConfig(Long tenantId) {
        // 获得租户信息
        TenantDO tenant = tenantService.getTenant(tenantId);
        if (tenant == null) {
            return null;
        }
        // 获得租户的数据源配置
        return TenantConvert.INSTANCE.convert(
                dataSourceConfigServiceApi.getDataSourceConfig(tenant.getDataSourceConfigId()));
    }
}
iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/tenant/TenantConvert.java
@@ -1,5 +1,7 @@
package com.iailab.module.system.convert.tenant;
import com.iailab.module.infra.api.db.dto.DataSourceConfigRespDTO;
import com.iailab.module.system.api.tenant.dto.TenantDataSourceConfigRespDTO;
import com.iailab.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
import com.iailab.module.system.controller.admin.user.vo.user.UserSaveReqVO;
import org.mapstruct.Mapper;
@@ -23,4 +25,6 @@
        return reqVO;
    }
    TenantDataSourceConfigRespDTO convert(DataSourceConfigRespDTO bean);
}
iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/dal/dataobject/tenant/TenantDO.java
@@ -76,5 +76,13 @@
     * 账号数量
     */
    private Integer accountCount;
    /**
     * 数据源配置编号
     *
     * 多租户采用“分库”方案时,通过该字段配置所在数据源
     *
     * 关联 DataSourceConfigDO 的 id 字段
     */
    private Long dataSourceConfigId;
}
iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/framework/rpc/config/RpcConfiguration.java
@@ -1,12 +1,13 @@
package com.iailab.module.system.framework.rpc.config;
import com.iailab.module.infra.api.config.ConfigApi;
import com.iailab.module.infra.api.db.DataSourceConfigServiceApi;
import com.iailab.module.infra.api.file.FileApi;
import com.iailab.module.infra.api.websocket.WebSocketSenderApi;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, ConfigApi.class})
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, DataSourceConfigServiceApi.class, ConfigApi.class})
public class RpcConfiguration {
}