mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-12 06:57:13 +08:00
refactor(tenant): 移除租户数据源及数据源级隔离适配代码
This commit is contained in:
@@ -1,80 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.continew.admin.config.tenant;
|
||||
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.aspectj.lang.annotation.After;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Before;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.springframework.stereotype.Component;
|
||||
import top.continew.admin.common.constant.SysConstants;
|
||||
import top.continew.admin.tenant.annotation.ConditionalOnEnabledTenant;
|
||||
import top.continew.starter.extension.tenant.context.TenantContextHolder;
|
||||
import top.continew.starter.extension.tenant.enums.TenantIsolationLevel;
|
||||
|
||||
/**
|
||||
* 租户主数据源切面
|
||||
*
|
||||
* @author 小熊
|
||||
* @author Charles7c
|
||||
* @since 2025/1/15 16:02
|
||||
*/
|
||||
@Aspect
|
||||
@Component
|
||||
@ConditionalOnEnabledTenant
|
||||
@RequiredArgsConstructor
|
||||
public class TenantDataSourceSwitchAspect {
|
||||
|
||||
@Pointcut("""
|
||||
execution(* top.continew.admin.tenant.mapper..*(..))
|
||||
|| execution(* top.continew.admin.tenant.service..*(..))
|
||||
|| execution(* top.continew.admin.system.mapper.ClientMapper.*(..))
|
||||
|| execution(* top.continew.admin.system.service.ClientService.*(..))
|
||||
|| execution(* top.continew.admin.system.mapper.DictMapper.*(..))
|
||||
|| execution(* top.continew.admin.system.service.DictService.*(..))
|
||||
|| execution(* top.continew.admin.system.mapper.DictItemMapper.*(..))
|
||||
|| execution(* top.continew.admin.system.service.DictItemService.*(..))
|
||||
|| execution(* top.continew.admin.system.mapper.OptionMapper.*(..))
|
||||
|| execution(* top.continew.admin.system.service.OptionService.*(..))
|
||||
|| execution(* top.continew.admin.system.mapper.StorageMapper.*(..))
|
||||
|| execution(* top.continew.admin.system.service.StorageService.*(..))
|
||||
""")
|
||||
public void masterDataSourceMethods() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换到主数据源
|
||||
*/
|
||||
@Before("masterDataSourceMethods()")
|
||||
public void switchToMasterDataSource() {
|
||||
if (TenantContextHolder.getIsolationLevel() == TenantIsolationLevel.DATASOURCE) {
|
||||
DynamicDataSourceContextHolder.push(SysConstants.DEFAULT_TENANT_DATASOURCE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空数据源
|
||||
*/
|
||||
@After("masterDataSourceMethods()")
|
||||
public void clearDataSourceContext() {
|
||||
if (TenantContextHolder.getIsolationLevel() == TenantIsolationLevel.DATASOURCE) {
|
||||
DynamicDataSourceContextHolder.poll();
|
||||
}
|
||||
}
|
||||
}
|
@@ -35,10 +35,6 @@ import top.continew.admin.system.enums.OptionCategoryEnum;
|
||||
import top.continew.admin.system.model.query.*;
|
||||
import top.continew.admin.system.model.resp.file.FileUploadResp;
|
||||
import top.continew.admin.system.service.*;
|
||||
import top.continew.admin.tenant.model.query.DatasourceQuery;
|
||||
import top.continew.admin.tenant.model.query.PackageQuery;
|
||||
import top.continew.admin.tenant.service.DatasourceService;
|
||||
import top.continew.admin.tenant.service.PackageService;
|
||||
import top.continew.starter.core.util.validation.ValidationUtils;
|
||||
import top.continew.starter.extension.crud.model.query.SortQuery;
|
||||
import top.continew.starter.extension.crud.model.resp.LabelValueResp;
|
||||
@@ -66,8 +62,6 @@ public class CommonController {
|
||||
private final MenuService menuService;
|
||||
private final UserService userService;
|
||||
private final RoleService roleService;
|
||||
private final PackageService packageService;
|
||||
private final DatasourceService datasourceService;
|
||||
private final DictItemService dictItemService;
|
||||
private final OptionService optionService;
|
||||
|
||||
@@ -110,18 +104,6 @@ public class CommonController {
|
||||
return roleService.listDict(query, sortQuery);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询套餐字典", description = "查询套餐字典列表")
|
||||
@GetMapping("/dict/package")
|
||||
public List<LabelValueResp> listPackageDict(PackageQuery query, SortQuery sortQuery) {
|
||||
return packageService.listDict(query, sortQuery);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询数据源字典", description = "查询数据源字典列表")
|
||||
@GetMapping("/dict/datasource")
|
||||
public List<LabelValueResp> listDatasourceDict(DatasourceQuery query, SortQuery sortQuery) {
|
||||
return datasourceService.listDict(query, sortQuery);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询字典", description = "查询字典列表")
|
||||
@Parameter(name = "code", description = "字典编码", example = "notice_type", in = ParameterIn.PATH)
|
||||
@GetMapping("/dict/{code}")
|
||||
|
@@ -11,42 +11,29 @@ server:
|
||||
--- ### 数据源配置
|
||||
spring.datasource:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
## 动态数据源配置(可配多主多从:m1、s1...;纯粹多库:mysql、oracle...;混合配置:m1、s1、oracle...)
|
||||
dynamic:
|
||||
# 是否启用 P6Spy(SQL 性能分析组件,该插件有性能损耗,不建议生产环境使用)
|
||||
p6spy: true
|
||||
# 设置默认的数据源或者数据源组(默认:master)
|
||||
primary: master
|
||||
# 严格匹配数据源(true:未匹配到指定数据源时抛异常;false:使用默认数据源;默认 false)
|
||||
strict: false
|
||||
datasource:
|
||||
# 主库配置(可配多个,构成多主)
|
||||
master:
|
||||
# 请务必提前创建好名为 continew_admin 的数据库,如果使用其他数据库名请注意同步修改 DB_NAME 配置
|
||||
url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
type: ${spring.datasource.type}
|
||||
# # PostgreSQL 配置
|
||||
# url: jdbc:postgresql://${DB_HOST:127.0.0.1}:${DB_PORT:5432}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&stringtype=unspecified
|
||||
# username: ${DB_USER:postgres}
|
||||
# password: ${DB_PWD:123456}
|
||||
# driver-class-name: org.postgresql.Driver
|
||||
# Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP)
|
||||
hikari:
|
||||
# 最大连接数量(默认 10,根据实际环境调整)
|
||||
# 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒
|
||||
maximum-pool-size: 20
|
||||
# 获取连接超时时间(默认 30000 毫秒,30 秒)
|
||||
connection-timeout: 30000
|
||||
# 空闲连接最大存活时间(默认 600000 毫秒,10 分钟)
|
||||
idle-timeout: 600000
|
||||
# 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用)
|
||||
keepaliveTime: 30000
|
||||
# 连接最大生存时间(默认 1800000 毫秒,30 分钟)
|
||||
max-lifetime: 1800000
|
||||
|
||||
# 请务必提前创建好名为 continew_admin 的数据库,如果使用其他数据库名请注意同步修改 DB_NAME 配置
|
||||
url: jdbc:p6spy:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
|
||||
# # PostgreSQL 配置
|
||||
# url: jdbc:p6spy:postgresql://${DB_HOST:127.0.0.1}:${DB_PORT:5432}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&stringtype=unspecified
|
||||
# username: ${DB_USER:postgres}
|
||||
# password: ${DB_PWD:123456}
|
||||
# driver-class-name: com.p6spy.engine.spy.P6SpyDriver
|
||||
# Hikari 连接池配置
|
||||
hikari:
|
||||
# 最大连接数量(默认 10,根据实际环境调整)
|
||||
# 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒
|
||||
maximum-pool-size: 20
|
||||
# 获取连接超时时间(默认 30000 毫秒,30 秒)
|
||||
connection-timeout: 30000
|
||||
# 空闲连接最大存活时间(默认 600000 毫秒,10 分钟)
|
||||
idle-timeout: 600000
|
||||
# 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用)
|
||||
keepaliveTime: 30000
|
||||
# 连接最大生存时间(默认 1800000 毫秒,30 分钟)
|
||||
max-lifetime: 1800000
|
||||
## Liquibase 配置
|
||||
spring.liquibase:
|
||||
# 是否启用
|
||||
|
@@ -13,42 +13,29 @@ server:
|
||||
--- ### 数据源配置
|
||||
spring.datasource:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
## 动态数据源配置(可配多主多从:m1、s1...;纯粹多库:mysql、oracle...;混合配置:m1、s1、oracle...)
|
||||
dynamic:
|
||||
# 是否启用 P6Spy(SQL 性能分析组件,该插件有性能损耗,不建议生产环境使用)
|
||||
p6spy: false
|
||||
# 设置默认的数据源或者数据源组(默认:master)
|
||||
primary: master
|
||||
# 严格匹配数据源(true:未匹配到指定数据源时抛异常;false:使用默认数据源;默认 false)
|
||||
strict: false
|
||||
datasource:
|
||||
# 主库配置(可配多个,构成多主)
|
||||
master:
|
||||
# 请务必提前创建好名为 continew_admin 的数据库,如果使用其他数据库名请注意同步修改 DB_NAME 配置
|
||||
url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
type: ${spring.datasource.type}
|
||||
# # PostgreSQL 配置
|
||||
# url: jdbc:postgresql://${DB_HOST:127.0.0.1}:${DB_PORT:5432}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&stringtype=unspecified
|
||||
# username: ${DB_USER:postgres}
|
||||
# password: ${DB_PWD:123456}
|
||||
# driver-class-name: org.postgresql.Driver
|
||||
# Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP)
|
||||
hikari:
|
||||
# 最大连接数量(默认 10,根据实际环境调整)
|
||||
# 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒
|
||||
maximum-pool-size: 20
|
||||
# 获取连接超时时间(默认 30000 毫秒,30 秒)
|
||||
connection-timeout: 30000
|
||||
# 空闲连接最大存活时间(默认 600000 毫秒,10 分钟)
|
||||
idle-timeout: 600000
|
||||
# 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用)
|
||||
keepaliveTime: 30000
|
||||
# 连接最大生存时间(默认 1800000 毫秒,30 分钟)
|
||||
max-lifetime: 1800000
|
||||
|
||||
# 请务必提前创建好名为 continew_admin 的数据库,如果使用其他数据库名请注意同步修改 DB_NAME 配置
|
||||
url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# # PostgreSQL 配置
|
||||
# url: jdbc:postgresql://${DB_HOST:127.0.0.1}:${DB_PORT:5432}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&stringtype=unspecified
|
||||
# username: ${DB_USER:postgres}
|
||||
# password: ${DB_PWD:123456}
|
||||
# driver-class-name: org.postgresql.Driver
|
||||
# Hikari 连接池配置
|
||||
hikari:
|
||||
# 最大连接数量(默认 10,根据实际环境调整)
|
||||
# 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒
|
||||
maximum-pool-size: 20
|
||||
# 获取连接超时时间(默认 30000 毫秒,30 秒)
|
||||
connection-timeout: 30000
|
||||
# 空闲连接最大存活时间(默认 600000 毫秒,10 分钟)
|
||||
idle-timeout: 600000
|
||||
# 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用)
|
||||
keepaliveTime: 30000
|
||||
# 连接最大生存时间(默认 1800000 毫秒,30 分钟)
|
||||
max-lifetime: 1800000
|
||||
## Liquibase 配置
|
||||
spring.liquibase:
|
||||
# 是否启用
|
||||
|
@@ -200,6 +200,8 @@ continew-starter.crud:
|
||||
--- ### 租户配置
|
||||
continew-starter.tenant:
|
||||
enabled: true
|
||||
# 隔离级别(默认:LINE,行级)
|
||||
isolation-level: LINE
|
||||
# 超级/默认租户 ID
|
||||
super-tenant-id: 0
|
||||
# 忽略表(忽略拼接租户条件)
|
||||
@@ -294,6 +296,7 @@ mybatis-plus:
|
||||
# 分页插件配置
|
||||
pagination:
|
||||
enabled: true
|
||||
db-type: MYSQL
|
||||
|
||||
--- ### CosId 配置
|
||||
cosid:
|
||||
|
@@ -4,26 +4,23 @@
|
||||
-- comment 初始化租户插件数据表
|
||||
-- 初始化表结构
|
||||
CREATE TABLE IF NOT EXISTS `tenant` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`name` varchar(30) NOT NULL COMMENT '名称',
|
||||
`code` varchar(30) NOT NULL COMMENT '编码',
|
||||
`domain` varchar(255) DEFAULT NULL COMMENT '域名',
|
||||
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
|
||||
`isolation_level` tinyint(1) UNSIGNED NOT NULL COMMENT '隔离级别',
|
||||
`description` varchar(200) DEFAULT NULL COMMENT '描述',
|
||||
`status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
|
||||
`admin_user` bigint(20) DEFAULT NULL COMMENT '租户管理员',
|
||||
`package_id` bigint(20) NOT NULL COMMENT '套餐ID',
|
||||
`datasource_id` bigint(20) DEFAULT NULL COMMENT '数据源ID',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`name` varchar(30) NOT NULL COMMENT '名称',
|
||||
`code` varchar(30) NOT NULL COMMENT '编码',
|
||||
`domain` varchar(255) DEFAULT NULL COMMENT '域名',
|
||||
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
|
||||
`description` varchar(200) DEFAULT NULL COMMENT '描述',
|
||||
`status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
|
||||
`admin_user` bigint(20) DEFAULT NULL COMMENT '租户管理员',
|
||||
`package_id` bigint(20) NOT NULL COMMENT '套餐ID',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `uk_code`(`code`),
|
||||
INDEX `idx_admin_user`(`admin_user`),
|
||||
INDEX `idx_package_id`(`package_id`),
|
||||
INDEX `idx_datasource_id`(`datasource_id`),
|
||||
INDEX `idx_create_user`(`create_user`),
|
||||
INDEX `idx_update_user`(`update_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户表';
|
||||
@@ -50,24 +47,6 @@ CREATE TABLE IF NOT EXISTS `tenant_package_menu` (
|
||||
PRIMARY KEY (`package_id`, `menu_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户套餐和菜单关联表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tenant_datasource` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`name` varchar(30) NOT NULL COMMENT '名称',
|
||||
`database_type` tinyint(1) NOT NULL COMMENT '数据库类型(1:MySQL)',
|
||||
`host` varchar(128) NOT NULL COMMENT '主机',
|
||||
`port` int NOT NULL COMMENT '端口',
|
||||
`username` varchar(128) NOT NULL COMMENT '用户名',
|
||||
`password` varchar(128) NOT NULL COMMENT '密码',
|
||||
`description` varchar(200) DEFAULT NULL COMMENT '描述',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_create_user`(`create_user`),
|
||||
INDEX `idx_update_user`(`update_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户数据源表';
|
||||
|
||||
-- 为已有表增加租户字段
|
||||
ALTER TABLE `sys_menu`
|
||||
ADD COLUMN `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
|
||||
@@ -160,12 +139,4 @@ VALUES
|
||||
(3022, '详情', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:get', 2, 1, 1, NOW()),
|
||||
(3023, '新增', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:create', 3, 1, 1, NOW()),
|
||||
(3024, '修改', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:update', 4, 1, 1, NOW()),
|
||||
(3025, '删除', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:delete', 5, 1, 1, NOW()),
|
||||
|
||||
(3030, '数据源管理', 3000, 2, '/tenant/datasource', 'TenantDatasource', 'tenant/datasource/index', NULL, 'storage', b'0', b'0', b'0', NULL, 3, 1, 1, NOW()),
|
||||
(3031, '列表', 3030, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:datasource:list', 1, 1, 1, NOW()),
|
||||
(3032, '详情', 3030, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:datasource:get', 2, 1, 1, NOW()),
|
||||
(3033, '新增', 3030, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:datasource:create', 3, 1, 1, NOW()),
|
||||
(3034, '修改', 3030, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:datasource:update', 4, 1, 1, NOW()),
|
||||
(3035, '删除', 3030, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:datasource:delete', 5, 1, 1, NOW()),
|
||||
(3036, '测试连接', 3030, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:datasource:testConnection', 6, 1, 1, NOW());
|
||||
(3025, '删除', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:delete', 5, 1, 1, NOW());
|
@@ -4,21 +4,19 @@
|
||||
-- comment 初始化租户插件数据表
|
||||
-- 初始化表结构
|
||||
CREATE TABLE IF NOT EXISTS "tenant" (
|
||||
"id" int8 NOT NULL,
|
||||
"name" varchar(30) NOT NULL,
|
||||
"code" varchar(30) NOT NULL,
|
||||
"domain" varchar(255) DEFAULT NULL,
|
||||
"expire_time" timestamp DEFAULT NULL,
|
||||
"isolation_level" int2 NOT NULL,
|
||||
"description" varchar(200) DEFAULT NULL,
|
||||
"status" int2 NOT NULL DEFAULT 1,
|
||||
"admin_user" int8 DEFAULT NULL,
|
||||
"package_id" int8 NOT NULL,
|
||||
"datasource_id" int8 DEFAULT NULL,
|
||||
"create_user" int8 NOT NULL,
|
||||
"create_time" timestamp NOT NULL,
|
||||
"update_user" int8 DEFAULT NULL,
|
||||
"update_time" timestamp DEFAULT NULL,
|
||||
"id" int8 NOT NULL,
|
||||
"name" varchar(30) NOT NULL,
|
||||
"code" varchar(30) NOT NULL,
|
||||
"domain" varchar(255) DEFAULT NULL,
|
||||
"expire_time" timestamp DEFAULT NULL,
|
||||
"description" varchar(200) DEFAULT NULL,
|
||||
"status" int2 NOT NULL DEFAULT 1,
|
||||
"admin_user" int8 DEFAULT NULL,
|
||||
"package_id" int8 NOT NULL,
|
||||
"create_user" int8 NOT NULL,
|
||||
"create_time" timestamp NOT NULL,
|
||||
"update_user" int8 DEFAULT NULL,
|
||||
"update_time" timestamp DEFAULT NULL,
|
||||
PRIMARY KEY ("id")
|
||||
);
|
||||
CREATE UNIQUE INDEX "uk_tenant_code" ON "tenant" ("code");
|
||||
@@ -32,11 +30,9 @@ COMMENT ON COLUMN "tenant"."name" IS '名称';
|
||||
COMMENT ON COLUMN "tenant"."code" IS '编码';
|
||||
COMMENT ON COLUMN "tenant"."domain" IS '域名';
|
||||
COMMENT ON COLUMN "tenant"."expire_time" IS '过期时间';
|
||||
COMMENT ON COLUMN "tenant"."isolation_level" IS '隔离级别';
|
||||
COMMENT ON COLUMN "tenant"."description" IS '描述';
|
||||
COMMENT ON COLUMN "tenant"."status" IS '状态(1:启用;2:禁用)';
|
||||
COMMENT ON COLUMN "tenant"."package_id" IS '套餐ID';
|
||||
COMMENT ON COLUMN "tenant"."datasource_id" IS '数据源ID';
|
||||
COMMENT ON COLUMN "tenant"."admin_user" IS '租户管理员';
|
||||
COMMENT ON COLUMN "tenant"."create_user" IS '创建人';
|
||||
COMMENT ON COLUMN "tenant"."create_time" IS '创建时间';
|
||||
@@ -80,37 +76,6 @@ COMMENT ON COLUMN "tenant_package_menu"."package_id" IS '套餐ID';
|
||||
COMMENT ON COLUMN "tenant_package_menu"."menu_id" IS '菜单ID';
|
||||
COMMENT ON TABLE "tenant_package_menu" IS '租户套餐和菜单关联表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "tenant_datasource" (
|
||||
"id" int8 NOT NULL,
|
||||
"name" varchar(30) NOT NULL,
|
||||
"database_type" int2 NOT NULL,
|
||||
"host" varchar(128) NOT NULL,
|
||||
"port" int4 NOT NULL,
|
||||
"username" varchar(128) NOT NULL,
|
||||
"password" varchar(128) NOT NULL,
|
||||
"description" varchar(200) DEFAULT NULL,
|
||||
"create_user" int8 NOT NULL,
|
||||
"create_time" timestamp NOT NULL,
|
||||
"update_user" int8 DEFAULT NULL,
|
||||
"update_time" timestamp DEFAULT NULL,
|
||||
PRIMARY KEY ("id")
|
||||
);
|
||||
CREATE INDEX "idx_tenant_datasource_create_user" ON "tenant_datasource" ("create_user");
|
||||
CREATE INDEX "idx_tenant_datasource_update_user" ON "tenant_datasource" ("update_user");
|
||||
COMMENT ON COLUMN "tenant_datasource"."id" IS 'ID';
|
||||
COMMENT ON COLUMN "tenant_datasource"."name" IS '名称';
|
||||
COMMENT ON COLUMN "tenant_datasource"."database_type" IS '数据库类型(1:MySQL)';
|
||||
COMMENT ON COLUMN "tenant_datasource"."host" IS '主机';
|
||||
COMMENT ON COLUMN "tenant_datasource"."port" IS '端口';
|
||||
COMMENT ON COLUMN "tenant_datasource"."username" IS '用户名';
|
||||
COMMENT ON COLUMN "tenant_datasource"."password" IS '密码';
|
||||
COMMENT ON COLUMN "tenant_datasource"."description" IS '描述';
|
||||
COMMENT ON COLUMN "tenant_datasource"."create_user" IS '创建人';
|
||||
COMMENT ON COLUMN "tenant_datasource"."create_time" IS '创建时间';
|
||||
COMMENT ON COLUMN "tenant_datasource"."update_user" IS '修改人';
|
||||
COMMENT ON COLUMN "tenant_datasource"."update_time" IS '修改时间';
|
||||
COMMENT ON TABLE "tenant_datasource" IS '租户数据源表';
|
||||
|
||||
-- 为已有表增加租户字段
|
||||
ALTER TABLE "sys_menu" ADD COLUMN "tenant_id" int8 NOT NULL DEFAULT 0;
|
||||
COMMENT ON COLUMN "sys_menu"."tenant_id" IS '租户ID';
|
||||
@@ -216,11 +181,4 @@ VALUES
|
||||
(3022, '详情', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:get', 2, 1, 1, NOW()),
|
||||
(3023, '新增', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:create', 3, 1, 1, NOW()),
|
||||
(3024, '修改', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:update', 4, 1, 1, NOW()),
|
||||
(3025, '删除', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:delete', 5, 1, 1, NOW()),
|
||||
|
||||
(3030, '数据源管理', 3000, 2, '/tenant/datasource', 'TenantDatasource', 'tenant/datasource/index', NULL, 'storage', false, false, false, NULL, 3, 1, 1, NOW()),
|
||||
(3031, '列表', 3030, 3, NULL, NULL, NULL, NULL, NULL, false, false, false, 'tenant:datasource:list', 1, 1, 1, NOW()),
|
||||
(3032, '详情', 3030, 3, NULL, NULL, NULL, NULL, NULL, false, false, false, 'tenant:datasource:get', 2, 1, 1, NOW()),
|
||||
(3033, '新增', 3030, 3, NULL, NULL, NULL, NULL, NULL, false, false, false, 'tenant:datasource:create', 3, 1, 1, NOW()),
|
||||
(3034, '修改', 3030, 3, NULL, NULL, NULL, NULL, NULL, false, false, false, 'tenant:datasource:update', 4, 1, 1, NOW()),
|
||||
(3035, '删除', 3030, 3, NULL, NULL, NULL, NULL, NULL, false, false, false, 'tenant:datasource:delete', 5, 1, 1, NOW());
|
||||
(3025, '删除', 3020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:delete', 5, 1, 1, NOW());
|
Reference in New Issue
Block a user