From bbf269dcae59536a998a4c4c9d3394da31394c03 Mon Sep 17 00:00:00 2001 From: ailanyin Date: Thu, 29 Jun 2023 17:29:02 +0800 Subject: [PATCH] add --- document/db/ROOT.sql | 703 ++++++++++++++++++ .../common/base/code/DatasourceErrorCode.java | 12 +- .../common/base/code/TenantErrorCode.java | 8 +- .../interceptors/SchemaInterceptor.java | 13 +- .../database/properties/TenantSchema.java | 37 + .../qiaoba/common/database/utils/DbUtil.java | 12 + .../common/database/utils/JdbcUtil.java | 20 +- .../main/resources/META-INF/spring.factories | 1 + .../controller/SysTenantController.java | 7 - .../controller/SysTenantInitController.java | 6 + .../module/tenant/entity/SysTenant.java | 15 - ...enantTypeEnum.java => TenantModeEnum.java} | 14 +- .../filters/DynamicDataSourceFilter.java | 5 +- .../module/tenant/init/InitDataStrategy.java | 24 - .../tenant/init/InitDataStrategyFactory.java | 42 -- .../init/InitTablesStrategyFactory.java | 3 + .../init/impl/MysqlInitDataStrategy.java | 56 -- .../init/impl/PgSqlInitTablesStrategy.java | 42 ++ .../tenant/service/SysTenantInitService.java | 11 + .../tenant/service/SysTenantService.java | 8 - .../impl/SysTenantInitServiceImpl.java | 94 ++- .../service/impl/SysTenantServiceImpl.java | 62 -- .../module/tenant/utils/InitDataUtil.java | 23 +- .../qiaoba/module/tenant/utils/MenuUtil.java | 52 +- .../main/resources/MySQL/data/sys_config_data | 14 +- .../data/sys_menu/monitor/online_user/button | 6 +- .../data/sys_menu/monitor/online_user/menu | 2 +- .../MySQL/data/sys_menu/system/config/button | 8 +- .../MySQL/data/sys_menu/system/config/menu | 2 +- .../MySQL/data/sys_menu/system/dept/button | 8 +- .../MySQL/data/sys_menu/system/dept/menu | 2 +- .../MySQL/data/sys_menu/system/dict/button | 10 +- .../MySQL/data/sys_menu/system/dict/menu | 2 +- .../MySQL/data/sys_menu/system/menu/button | 8 +- .../MySQL/data/sys_menu/system/menu/menu | 2 +- .../MySQL/data/sys_menu/system/post/button | 10 +- .../MySQL/data/sys_menu/system/post/menu | 2 +- .../MySQL/data/sys_menu/system/role/button | 10 +- .../MySQL/data/sys_menu/system/role/menu | 2 +- .../MySQL/data/sys_menu/system/user/button | 14 +- .../MySQL/data/sys_menu/system/user/menu | 2 +- .../main/resources/MySQL/data/sys_post_data | 8 +- .../main/resources/MySQL/data/sys_role_data | 4 +- .../main/resources/MySQL/data/sys_user_data | 2 +- .../main/resources/init/data/sys_config_data | 7 + .../init/data/sys_menu/monitor/.gitkeep | 1 + .../data/sys_menu/monitor/online_user/button | 3 + .../data/sys_menu/monitor/online_user/menu | 1 + .../init/data/sys_menu/system/config/button | 4 + .../init/data/sys_menu/system/config/menu | 1 + .../init/data/sys_menu/system/dept/button | 4 + .../init/data/sys_menu/system/dept/menu | 1 + .../init/data/sys_menu/system/dict/button | 5 + .../init/data/sys_menu/system/dict/menu | 1 + .../init/data/sys_menu/system/menu/button | 4 + .../init/data/sys_menu/system/menu/menu | 1 + .../init/data/sys_menu/system/post/button | 5 + .../init/data/sys_menu/system/post/menu | 1 + .../init/data/sys_menu/system/role/button | 5 + .../init/data/sys_menu/system/role/menu | 1 + .../init/data/sys_menu/system/user/button | 7 + .../init/data/sys_menu/system/user/menu | 1 + .../main/resources/init/data/sys_post_data | 4 + .../main/resources/init/data/sys_role_data | 2 + .../main/resources/init/data/sys_user_data | 1 + .../init/table/PostgreSQL/create_tables | 664 +++++++++++++++++ 66 files changed, 1749 insertions(+), 363 deletions(-) create mode 100644 document/db/ROOT.sql create mode 100644 qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/properties/TenantSchema.java rename qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/enums/{TenantTypeEnum.java => TenantModeEnum.java} (60%) delete mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitDataStrategy.java delete mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitDataStrategyFactory.java delete mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/impl/MysqlInitDataStrategy.java create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/impl/PgSqlInitTablesStrategy.java create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_config_data create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/.gitkeep create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/online_user/button create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/online_user/menu create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/config/button create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/config/menu create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dept/button create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dept/menu create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dict/button create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dict/menu create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/menu/button create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/menu/menu create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/post/button create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/post/menu create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/role/button create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/role/menu create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/user/button create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/user/menu create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_post_data create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_role_data create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_user_data create mode 100644 qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/table/PostgreSQL/create_tables diff --git a/document/db/ROOT.sql b/document/db/ROOT.sql new file mode 100644 index 0000000..3997325 --- /dev/null +++ b/document/db/ROOT.sql @@ -0,0 +1,703 @@ +CREATE TABLE "SYS_CONFIG" ( + "CONFIG_ID" NUMBER(20,0) NOT NULL, + "CONFIG_NAME" NVARCHAR2(100), + "CONFIG_KEY" NVARCHAR2(100), + "CONFIG_VALUE" NVARCHAR2(500), + "CONFIG_TYPE" NCHAR(1), + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(500), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_CONFIG"."CONFIG_ID" IS '参数主键'; +COMMENT ON COLUMN "SYS_CONFIG"."CONFIG_NAME" IS '参数名称'; +COMMENT ON COLUMN "SYS_CONFIG"."CONFIG_KEY" IS '参数键名'; +COMMENT ON COLUMN "SYS_CONFIG"."CONFIG_VALUE" IS '参数键值'; +COMMENT ON COLUMN "SYS_CONFIG"."CONFIG_TYPE" IS '系统内置(Y是 N否)'; +COMMENT ON COLUMN "SYS_CONFIG"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_CONFIG"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_CONFIG"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_CONFIG"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_CONFIG"."REMARK" IS '备注'; +COMMENT ON TABLE "SYS_CONFIG" IS '参数配置表'; + +-- ---------------------------- +-- Table structure for SYS_DEPT +-- ---------------------------- + +CREATE TABLE "SYS_DEPT" ( + "DEPT_ID" NUMBER(20,0) NOT NULL, + "PARENT_ID" NUMBER(20,0), + "ANCESTORS" NVARCHAR2(500), + "DEPT_NAME" NVARCHAR2(30), + "ORDER_NUM" NUMBER(11,0), + "LEADER" NVARCHAR2(20), + "PHONE" NVARCHAR2(30), + "EMAIL" NVARCHAR2(30), + "STATUS" NCHAR(1), + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(255), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_DEPT"."DEPT_ID" IS '部门id'; +COMMENT ON COLUMN "SYS_DEPT"."PARENT_ID" IS '父部门id'; +COMMENT ON COLUMN "SYS_DEPT"."ANCESTORS" IS '祖级列表'; +COMMENT ON COLUMN "SYS_DEPT"."DEPT_NAME" IS '部门名称'; +COMMENT ON COLUMN "SYS_DEPT"."ORDER_NUM" IS '显示顺序'; +COMMENT ON COLUMN "SYS_DEPT"."LEADER" IS '负责人ID'; +COMMENT ON COLUMN "SYS_DEPT"."PHONE" IS '手机号'; +COMMENT ON COLUMN "SYS_DEPT"."EMAIL" IS '邮箱'; +COMMENT ON COLUMN "SYS_DEPT"."STATUS" IS '部门状态(1正常 0停用)'; +COMMENT ON COLUMN "SYS_DEPT"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_DEPT"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_DEPT"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_DEPT"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_DEPT"."REMARK" IS '备注'; +COMMENT ON COLUMN "SYS_DEPT"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_DEPT" IS '部门表'; + +-- ---------------------------- +-- Table structure for SYS_DICT_DATA +-- ---------------------------- +CREATE TABLE "SYS_DICT_DATA" ( + "DICT_CODE" NUMBER(20,0) NOT NULL, + "DICT_SORT" NUMBER(11,0), + "DICT_LABEL" NVARCHAR2(100), + "DICT_VALUE" NVARCHAR2(100), + "DICT_TYPE" NVARCHAR2(100), + "CSS_CLASS" NVARCHAR2(100), + "LIST_CLASS" NVARCHAR2(100), + "STATUS" NCHAR(1), + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(500), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_DICT_DATA"."DICT_CODE" IS '字典编码'; +COMMENT ON COLUMN "SYS_DICT_DATA"."DICT_SORT" IS '字典排序'; +COMMENT ON COLUMN "SYS_DICT_DATA"."DICT_LABEL" IS '字典标签'; +COMMENT ON COLUMN "SYS_DICT_DATA"."DICT_VALUE" IS '字典键值'; +COMMENT ON COLUMN "SYS_DICT_DATA"."DICT_TYPE" IS '字典类型'; +COMMENT ON COLUMN "SYS_DICT_DATA"."CSS_CLASS" IS '样式属性(其他样式扩展)'; +COMMENT ON COLUMN "SYS_DICT_DATA"."LIST_CLASS" IS '表格回显样式'; +COMMENT ON COLUMN "SYS_DICT_DATA"."STATUS" IS '状态(0正常 1停用)'; +COMMENT ON COLUMN "SYS_DICT_DATA"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_DICT_DATA"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_DICT_DATA"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_DICT_DATA"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_DICT_DATA"."REMARK" IS '备注'; +COMMENT ON COLUMN "SYS_DICT_DATA"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_DICT_DATA" IS '字典数据表'; + +-- ---------------------------- +-- Table structure for SYS_DICT_TYPE +-- ---------------------------- +CREATE TABLE "SYS_DICT_TYPE" ( + "DICT_ID" NUMBER(20,0) NOT NULL, + "DICT_NAME" NVARCHAR2(100), + "DICT_TYPE" NVARCHAR2(100), + "STATUS" NCHAR(1), + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(500), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_DICT_TYPE"."DICT_ID" IS '字典主键'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."DICT_NAME" IS '字典名称'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."DICT_TYPE" IS '字典类型'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."STATUS" IS '状态(0正常 1停用)'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."REMARK" IS '备注'; +COMMENT ON COLUMN "SYS_DICT_TYPE"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_DICT_TYPE" IS '字典类型表'; + +-- ---------------------------- +-- Table structure for SYS_LOGIN_LOG +-- ---------------------------- +CREATE TABLE "SYS_LOGIN_LOG" ( + "LOGIN_ID" NUMBER(20,0) NOT NULL, + "DEVICE_SN" NVARCHAR2(50), + "USERNAME" NVARCHAR2(50), + "NICKNAME" NVARCHAR2(30), + "IP" NVARCHAR2(30), + "ADDRESS" NVARCHAR2(255), + "BROWSER" NVARCHAR2(50), + "OS" NVARCHAR2(50), + "LOGIN_TIME" DATE, + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(500), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."DEVICE_SN" IS '设备编码'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."USERNAME" IS '登录账号'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."NICKNAME" IS '用户名称'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."IP" IS '访问IP'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."ADDRESS" IS '登录地点'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."BROWSER" IS '浏览器'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."OS" IS '操作系统'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."LOGIN_TIME" IS '登录时间'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_LOGIN_LOG"."REMARK" IS '备注'; +COMMENT ON TABLE "SYS_LOGIN_LOG" IS '登录日志'; + +-- ---------------------------- +-- Table structure for SYS_MENU +-- ---------------------------- +CREATE TABLE "SYS_MENU" ( + "MENU_ID" NUMBER(20,0) NOT NULL, + "MENU_NAME" NVARCHAR2(50) NOT NULL, + "PARENT_ID" NUMBER(20,0), + "ORDER_NUM" NUMBER(11,0), + "PATH" NVARCHAR2(200), + "COMPONENT" NVARCHAR2(255), + "QUERY" NVARCHAR2(255), + "IS_FRAME" NUMBER(11,0), + "IS_CACHE" NUMBER(11,0), + "MENU_TYPE" NCHAR(1), + "IS_VISIBLE" NCHAR(1), + "PERMS" NVARCHAR2(100), + "ICON" NVARCHAR2(100), + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(500), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_MENU"."MENU_ID" IS '菜单ID'; +COMMENT ON COLUMN "SYS_MENU"."MENU_NAME" IS '菜单名称'; +COMMENT ON COLUMN "SYS_MENU"."PARENT_ID" IS '父菜单ID'; +COMMENT ON COLUMN "SYS_MENU"."ORDER_NUM" IS '显示顺序'; +COMMENT ON COLUMN "SYS_MENU"."PATH" IS '路由地址'; +COMMENT ON COLUMN "SYS_MENU"."COMPONENT" IS '组件路径'; +COMMENT ON COLUMN "SYS_MENU"."QUERY" IS '路由参数'; +COMMENT ON COLUMN "SYS_MENU"."IS_FRAME" IS '是否为外链(1是 0否)'; +COMMENT ON COLUMN "SYS_MENU"."IS_CACHE" IS '是否缓存(1缓存 0不缓存)'; +COMMENT ON COLUMN "SYS_MENU"."MENU_TYPE" IS '菜单类型(M目录 C菜单 F按钮)'; +COMMENT ON COLUMN "SYS_MENU"."IS_VISIBLE" IS '菜单状态(1显示 0隐藏)'; +COMMENT ON COLUMN "SYS_MENU"."PERMS" IS '权限标识'; +COMMENT ON COLUMN "SYS_MENU"."ICON" IS '菜单图标'; +COMMENT ON COLUMN "SYS_MENU"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_MENU"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_MENU"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_MENU"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_MENU"."REMARK" IS '备注'; +COMMENT ON TABLE "SYS_MENU" IS '菜单权限表'; + +-- ---------------------------- +-- Table structure for SYS_POST +-- ---------------------------- +CREATE TABLE "SYS_POST" ( + "POST_ID" NUMBER(20,0) NOT NULL, + "POST_CODE" NVARCHAR2(64) NOT NULL, + "POST_NAME" NVARCHAR2(50) NOT NULL, + "POST_SORT" NUMBER(11,0) NOT NULL, + "STATUS" NCHAR(1) NOT NULL, + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(500), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_POST"."POST_ID" IS '岗位ID'; +COMMENT ON COLUMN "SYS_POST"."POST_CODE" IS '岗位编码'; +COMMENT ON COLUMN "SYS_POST"."POST_NAME" IS '岗位名称'; +COMMENT ON COLUMN "SYS_POST"."POST_SORT" IS '显示顺序'; +COMMENT ON COLUMN "SYS_POST"."STATUS" IS '状态(1正常 0停用)'; +COMMENT ON COLUMN "SYS_POST"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_POST"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_POST"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_POST"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_POST"."REMARK" IS '备注'; +COMMENT ON COLUMN "SYS_POST"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_POST" IS '岗位信息表'; + +-- ---------------------------- +-- Table structure for SYS_ROLE +-- ---------------------------- +CREATE TABLE "SYS_ROLE" ( + "ROLE_ID" NUMBER(20,0) NOT NULL, + "ROLE_NAME" NVARCHAR2(30) NOT NULL, + "ROLE_KEY" NVARCHAR2(100) NOT NULL, + "ROLE_SORT" NUMBER(11,0) NOT NULL, + "DATA_SCOPE" NCHAR(1), + "STATUS" NCHAR(1) NOT NULL, + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(500), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_ROLE"."ROLE_ID" IS '角色ID'; +COMMENT ON COLUMN "SYS_ROLE"."ROLE_NAME" IS '角色名称'; +COMMENT ON COLUMN "SYS_ROLE"."ROLE_KEY" IS '角色权限字符串'; +COMMENT ON COLUMN "SYS_ROLE"."ROLE_SORT" IS '显示顺序'; +COMMENT ON COLUMN "SYS_ROLE"."DATA_SCOPE" IS '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)'; +COMMENT ON COLUMN "SYS_ROLE"."STATUS" IS '角色状态(1正常 0停用)'; +COMMENT ON COLUMN "SYS_ROLE"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_ROLE"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_ROLE"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_ROLE"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_ROLE"."REMARK" IS '备注'; +COMMENT ON COLUMN "SYS_ROLE"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_ROLE" IS '角色信息表'; + +-- ---------------------------- +-- Table structure for SYS_ROLE_DEPT +-- ---------------------------- +CREATE TABLE "SYS_ROLE_DEPT" ( + "ROLE_ID" NUMBER(20,0) NOT NULL, + "DEPT_ID" NUMBER(20,0) NOT NULL, + "TENANT_ID" NUMBER(20,0) NOT NULL +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_ROLE_DEPT"."ROLE_ID" IS '角色ID'; +COMMENT ON COLUMN "SYS_ROLE_DEPT"."DEPT_ID" IS '部门ID'; +COMMENT ON COLUMN "SYS_ROLE_DEPT"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_ROLE_DEPT" IS '角色和部门关联表'; + +-- ---------------------------- +-- Table structure for SYS_ROLE_MENU +-- ---------------------------- +CREATE TABLE "SYS_ROLE_MENU" ( + "ROLE_ID" NUMBER(20,0) NOT NULL, + "MENU_ID" NUMBER(20,0) NOT NULL, + "TENANT_ID" NUMBER(20,0) NOT NULL +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_ROLE_MENU"."ROLE_ID" IS '角色ID'; +COMMENT ON COLUMN "SYS_ROLE_MENU"."MENU_ID" IS '菜单ID'; +COMMENT ON COLUMN "SYS_ROLE_MENU"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_ROLE_MENU" IS '角色和菜单关联表'; + +-- ---------------------------- +-- Table structure for SYS_USER +-- ---------------------------- +CREATE TABLE "SYS_USER" ( + "USER_ID" NUMBER(20,0) NOT NULL, + "DEPT_ID" NUMBER(20,0), + "USERNAME" NVARCHAR2(30) NOT NULL, + "NICKNAME" NVARCHAR2(30) NOT NULL, + "EMAIL" NVARCHAR2(50), + "PHONE" NVARCHAR2(11), + "GENDER" NCHAR(1), + "AVATAR" NVARCHAR2(100), + "PASSWORD" NVARCHAR2(100), + "STATUS" NCHAR(1), + "CREATE_USER" NVARCHAR2(64), + "CREATE_TIME" DATE, + "UPDATE_USER" NVARCHAR2(64), + "UPDATE_TIME" DATE, + "REMARK" NVARCHAR2(500), + "TENANT_ID" NUMBER(20,0) +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_USER"."USER_ID" IS '用户ID'; +COMMENT ON COLUMN "SYS_USER"."DEPT_ID" IS '部门ID'; +COMMENT ON COLUMN "SYS_USER"."USERNAME" IS '用户账号'; +COMMENT ON COLUMN "SYS_USER"."NICKNAME" IS '用户昵称'; +COMMENT ON COLUMN "SYS_USER"."EMAIL" IS '用户邮箱'; +COMMENT ON COLUMN "SYS_USER"."PHONE" IS '手机号码'; +COMMENT ON COLUMN "SYS_USER"."GENDER" IS '用户性别(0男 1女 2未知)'; +COMMENT ON COLUMN "SYS_USER"."AVATAR" IS '头像地址'; +COMMENT ON COLUMN "SYS_USER"."PASSWORD" IS '密码'; +COMMENT ON COLUMN "SYS_USER"."STATUS" IS '帐号状态(1正常 0停用)'; +COMMENT ON COLUMN "SYS_USER"."CREATE_USER" IS '创建者'; +COMMENT ON COLUMN "SYS_USER"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYS_USER"."UPDATE_USER" IS '更新者'; +COMMENT ON COLUMN "SYS_USER"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYS_USER"."REMARK" IS '备注'; +COMMENT ON COLUMN "SYS_USER"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_USER" IS '用户信息表'; + +-- ---------------------------- +-- Table structure for SYS_USER_POST +-- ---------------------------- +CREATE TABLE "SYS_USER_POST" ( + "USER_ID" NUMBER(20,0) NOT NULL, + "POST_ID" NUMBER(20,0) NOT NULL, + "TENANT_ID" NUMBER(20,0) NOT NULL +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_USER_POST"."USER_ID" IS '用户ID'; +COMMENT ON COLUMN "SYS_USER_POST"."POST_ID" IS '岗位ID'; +COMMENT ON COLUMN "SYS_USER_POST"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_USER_POST" IS '用户与岗位关联表'; + +-- ---------------------------- +-- Table structure for SYS_USER_ROLE +-- ---------------------------- +CREATE TABLE "SYS_USER_ROLE" ( + "USER_ID" NUMBER(20,0) NOT NULL, + "ROLE_ID" NUMBER(20,0) NOT NULL, + "TENANT_ID" NUMBER(20,0) NOT NULL +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYS_USER_ROLE"."USER_ID" IS '用户ID'; +COMMENT ON COLUMN "SYS_USER_ROLE"."ROLE_ID" IS '角色ID'; +COMMENT ON COLUMN "SYS_USER_ROLE"."TENANT_ID" IS '租户ID'; +COMMENT ON TABLE "SYS_USER_ROLE" IS '用户和角色关联表'; + +-- ---------------------------- +-- Primary Key structure for table SYS_CONFIG +-- ---------------------------- +ALTER TABLE "SYS_CONFIG" ADD CONSTRAINT "SYS_C0011164" PRIMARY KEY ("CONFIG_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_CONFIG +-- ---------------------------- +ALTER TABLE "SYS_CONFIG" ADD CONSTRAINT "SYS_C0011119" CHECK ("CONFIG_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_DEPT +-- ---------------------------- +ALTER TABLE "SYS_DEPT" ADD CONSTRAINT "SYS_C0011162" PRIMARY KEY ("DEPT_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_DEPT +-- ---------------------------- +ALTER TABLE "SYS_DEPT" ADD CONSTRAINT "SYS_C0011117" CHECK ("DEPT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_DICT_DATA +-- ---------------------------- +ALTER TABLE "SYS_DICT_DATA" ADD CONSTRAINT "SYS_C0011165" PRIMARY KEY ("DICT_CODE"); + +-- ---------------------------- +-- Checks structure for table SYS_DICT_DATA +-- ---------------------------- +ALTER TABLE "SYS_DICT_DATA" ADD CONSTRAINT "SYS_C0011121" CHECK ("DICT_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_DICT_TYPE +-- ---------------------------- +ALTER TABLE "SYS_DICT_TYPE" ADD CONSTRAINT "SYS_C0011166" PRIMARY KEY ("DICT_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_DICT_TYPE +-- ---------------------------- +ALTER TABLE "SYS_DICT_TYPE" ADD CONSTRAINT "SYS_C0011120" CHECK ("DICT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Indexes structure for table SYS_DICT_TYPE +-- ---------------------------- +CREATE UNIQUE INDEX "DICT_TYPE" + ON "SYS_DICT_TYPE" ("DICT_TYPE" ASC) + LOGGING + VISIBLE +PCTFREE 10 +INITRANS 2 +STORAGE ( + BUFFER_POOL DEFAULT +); + +-- ---------------------------- +-- Primary Key structure for table SYS_LOGIN_LOG +-- ---------------------------- +ALTER TABLE "SYS_LOGIN_LOG" ADD CONSTRAINT "SYS_C0011167" PRIMARY KEY ("LOGIN_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_LOGIN_LOG +-- ---------------------------- +ALTER TABLE "SYS_LOGIN_LOG" ADD CONSTRAINT "SYS_C0011122" CHECK ("LOGIN_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_MENU +-- ---------------------------- +ALTER TABLE "SYS_MENU" ADD CONSTRAINT "SYS_C0011168" PRIMARY KEY ("MENU_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_MENU +-- ---------------------------- +ALTER TABLE "SYS_MENU" ADD CONSTRAINT "SYS_C0011123" CHECK ("MENU_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_MENU" ADD CONSTRAINT "SYS_C0011124" CHECK ("MENU_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_POST +-- ---------------------------- +ALTER TABLE "SYS_POST" ADD CONSTRAINT "SYS_C0011169" PRIMARY KEY ("POST_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_POST +-- ---------------------------- +ALTER TABLE "SYS_POST" ADD CONSTRAINT "SYS_C0011125" CHECK ("POST_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_POST" ADD CONSTRAINT "SYS_C0011126" CHECK ("POST_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_POST" ADD CONSTRAINT "SYS_C0011127" CHECK ("POST_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_POST" ADD CONSTRAINT "SYS_C0011128" CHECK ("POST_SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_POST" ADD CONSTRAINT "SYS_C0011129" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_ROLE +-- ---------------------------- +ALTER TABLE "SYS_ROLE" ADD CONSTRAINT "SYS_C0011170" PRIMARY KEY ("ROLE_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_ROLE +-- ---------------------------- +ALTER TABLE "SYS_ROLE" ADD CONSTRAINT "SYS_C0011130" CHECK ("ROLE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_ROLE" ADD CONSTRAINT "SYS_C0011131" CHECK ("ROLE_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_ROLE" ADD CONSTRAINT "SYS_C0011132" CHECK ("ROLE_KEY" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_ROLE" ADD CONSTRAINT "SYS_C0011133" CHECK ("ROLE_SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_ROLE" ADD CONSTRAINT "SYS_C0011134" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_ROLE_DEPT +-- ---------------------------- +ALTER TABLE "SYS_ROLE_DEPT" ADD CONSTRAINT "SYS_C0011171" PRIMARY KEY ("ROLE_ID", "DEPT_ID", "TENANT_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_ROLE_DEPT +-- ---------------------------- +ALTER TABLE "SYS_ROLE_DEPT" ADD CONSTRAINT "SYS_C0011135" CHECK ("ROLE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_ROLE_DEPT" ADD CONSTRAINT "SYS_C0011136" CHECK ("DEPT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_ROLE_DEPT" ADD CONSTRAINT "SYS_C0011137" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_ROLE_MENU +-- ---------------------------- +ALTER TABLE "SYS_ROLE_MENU" ADD CONSTRAINT "SYS_C0011172" PRIMARY KEY ("ROLE_ID", "MENU_ID", "TENANT_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_ROLE_MENU +-- ---------------------------- +ALTER TABLE "SYS_ROLE_MENU" ADD CONSTRAINT "SYS_C0011138" CHECK ("ROLE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_ROLE_MENU" ADD CONSTRAINT "SYS_C0011139" CHECK ("MENU_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_ROLE_MENU" ADD CONSTRAINT "SYS_C0011140" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_USER +-- ---------------------------- +ALTER TABLE "SYS_USER" ADD CONSTRAINT "SYS_C0011175" PRIMARY KEY ("USER_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_USER +-- ---------------------------- +ALTER TABLE "SYS_USER" ADD CONSTRAINT "SYS_C0011152" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_USER" ADD CONSTRAINT "SYS_C0011153" CHECK ("USERNAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_USER" ADD CONSTRAINT "SYS_C0011154" CHECK ("NICKNAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_USER_POST +-- ---------------------------- +ALTER TABLE "SYS_USER_POST" ADD CONSTRAINT "SYS_C0011176" PRIMARY KEY ("USER_ID", "POST_ID", "TENANT_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_USER_POST +-- ---------------------------- +ALTER TABLE "SYS_USER_POST" ADD CONSTRAINT "SYS_C0011155" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_USER_POST" ADD CONSTRAINT "SYS_C0011156" CHECK ("POST_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_USER_POST" ADD CONSTRAINT "SYS_C0011157" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYS_USER_ROLE +-- ---------------------------- +ALTER TABLE "SYS_USER_ROLE" ADD CONSTRAINT "SYS_C0011177" PRIMARY KEY ("USER_ID", "ROLE_ID", "TENANT_ID"); + +-- ---------------------------- +-- Checks structure for table SYS_USER_ROLE +-- ---------------------------- +ALTER TABLE "SYS_USER_ROLE" ADD CONSTRAINT "SYS_C0011158" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_USER_ROLE" ADD CONSTRAINT "SYS_C0011159" CHECK ("ROLE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYS_USER_ROLE" ADD CONSTRAINT "SYS_C0011160" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/code/DatasourceErrorCode.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/code/DatasourceErrorCode.java index 5788b29..efa47a9 100644 --- a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/code/DatasourceErrorCode.java +++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/code/DatasourceErrorCode.java @@ -15,32 +15,32 @@ public enum DatasourceErrorCode { /** * 未找到 */ - NOT_FIND(50101, "未找到数据源信息"), + NOT_FIND(50401, "未找到数据源信息"), /** * 连接错误 */ - CONNECT_ERROR(50102, "数据源无法连接"), + CONNECT_ERROR(50402, "数据源无法连接"), /** * 切换模式错误 */ - SWITCH_SCHEMA_ERROR(50103, "切换模式错误"), + SWITCH_SCHEMA_ERROR(50403, "切换模式错误"), /** * 创建表错误 */ - CREATE_TABLE_ERROR(50104, "创建表错误"), + CREATE_TABLE_ERROR(50404, "创建表错误"), /** * 创建模式/库错误 */ - CREATE_SCHEMA_ERROR(50105, "创建模式/库错误"), + CREATE_SCHEMA_ERROR(50405, "创建模式/库错误"), /** * 初始化数据错误 */ - INIT_DATA_ERROR(50106, "初始化数据错误"); + INIT_DATA_ERROR(50406, "初始化数据错误"); private final Integer code; private final String msg; diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/code/TenantErrorCode.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/code/TenantErrorCode.java index 3bac692..fca6f3f 100644 --- a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/code/TenantErrorCode.java +++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/code/TenantErrorCode.java @@ -16,6 +16,7 @@ public enum TenantErrorCode { * 未找到 */ NOT_FIND(5010, "未找到租户信息"), + /** * 禁用 */ @@ -24,7 +25,12 @@ public enum TenantErrorCode { /** * 过期 */ - EXPIRE(5012, "租户已过期"); + EXPIRE(5012, "租户已过期"), + + /** + * 租户模式不存在 + */ + MODE_NOT_FIND(50103, "未找到租户模式"); private final Integer code; private final String msg; diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/interceptors/SchemaInterceptor.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/interceptors/SchemaInterceptor.java index 4580cf9..a93a60d 100644 --- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/interceptors/SchemaInterceptor.java +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/interceptors/SchemaInterceptor.java @@ -1,16 +1,12 @@ package com.qiaoba.common.database.interceptors; -import cn.hutool.core.util.StrUtil; -import cn.hutool.db.sql.SqlExecutor; import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; -import com.qiaoba.common.base.constants.BaseConstant; -import com.qiaoba.common.base.constants.TenantConstant; import com.qiaoba.common.base.context.BaseContext; import com.qiaoba.common.database.context.TenantDbTypeContext; +import com.qiaoba.common.database.properties.TenantSchema; import com.qiaoba.common.database.utils.DbUtil; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.statement.StatementHandler; -import org.springframework.beans.factory.annotation.Value; import java.sql.Connection; import java.sql.SQLException; @@ -26,17 +22,12 @@ import java.util.Objects; @Slf4j public class SchemaInterceptor implements InnerInterceptor { - @Value("${spring.application.name}") - private String schemaPrefix; - @Override public void beforePrepare(StatementHandler sh, Connection conn, Integer transactionTimeout) { if (Objects.nonNull(BaseContext.isSchemaMode()) && BaseContext.isSchemaMode()) { try { - // schemaPrefix + '-' + tenantId - // eg: schema = qiaoba-boot-2 - DbUtil.setSchema(TenantDbTypeContext.getDefault(), conn, schemaPrefix + BaseConstant.HYPHEN_JOIN_STR + BaseContext.getTenantId()); + DbUtil.setSchema(TenantDbTypeContext.getDefault(), conn, TenantSchema.getSchema(BaseContext.getTenantId())); } catch (SQLException e) { log.info("切换SCHEMA失败, 原因: {}", e.getMessage()); } diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/properties/TenantSchema.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/properties/TenantSchema.java new file mode 100644 index 0000000..d4c7756 --- /dev/null +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/properties/TenantSchema.java @@ -0,0 +1,37 @@ +package com.qiaoba.common.database.properties; + +import com.qiaoba.common.base.constants.BaseConstant; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * 租户Schema + * + * @author ailanyin + * @version 1.0 + * @since 2023/6/29 8:53 + */ +@Component +public class TenantSchema { + + + private static String schemaPrefix; + + @Value("${spring.application.name}") + public void setSchemaPrefix(String name) { + schemaPrefix = name; + } + + /** + * 租户schema生成逻辑 + * schemaPrefix + '-' + tenantId + * eg: schema = abc-2 + * + * @param tenantId 租户ID + * @return schema + */ + public static String getSchema(String tenantId) { + return schemaPrefix + BaseConstant.HYPHEN_JOIN_STR + tenantId; + } + +} diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/DbUtil.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/DbUtil.java index 2f5ebcf..0b9a7f5 100644 --- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/DbUtil.java +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/DbUtil.java @@ -1,5 +1,6 @@ package com.qiaoba.common.database.utils; +import cn.hutool.core.io.IoUtil; import com.qiaoba.common.base.enums.DataBaseEnum; import org.apache.ibatis.jdbc.ScriptRunner; import org.postgresql.jdbc.PgConnection; @@ -10,6 +11,7 @@ import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; +import java.sql.Statement; /** * @author ailanyin @@ -40,4 +42,14 @@ public class DbUtil { scriptRunner.runScript(reader); reader.close(); } + + public static void runSql(Connection conn, String sql) throws SQLException { + Statement statement = null; + try { + statement = conn.createStatement(); + statement.execute(sql); + } finally { + IoUtil.close(statement); + } + } } diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/JdbcUtil.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/JdbcUtil.java index 31dbb3f..0dbc8a4 100644 --- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/JdbcUtil.java +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/JdbcUtil.java @@ -8,7 +8,10 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import java.sql.*; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; /** * JdbcUtil @@ -100,19 +103,4 @@ public class JdbcUtil { private String msg; } - public static void main(String[] args) { - Connection connection = getConnection("oracle.jdbc.OracleDriver", "jdbc:oracle:thin:@//192.168.0.205:1521/ORCL", "system", "root"); - try { - DbUtil.setSchema("Oracle",connection,"scott"); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - try { - connection.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - System.out.println(); - } } diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/resources/META-INF/spring.factories b/qiaoba-commons/qiaoba-common-datasource/src/main/resources/META-INF/spring.factories index f955e9d..5cef9af 100644 --- a/qiaoba-commons/qiaoba-common-datasource/src/main/resources/META-INF/spring.factories +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/resources/META-INF/spring.factories @@ -1,3 +1,4 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.qiaoba.common.database.factories.DynamicDataSourceFactory,\ + com.qiaoba.common.database.properties.TenantSchema,\ com.qiaoba.common.database.config.MybatisPlusConfig diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java index ebc09a0..6d1ba98 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java @@ -73,13 +73,6 @@ public class SysTenantController { return AjaxResult.success(sysTenantService.update(BeanUtil.copyProperties(dto, SysTenant.class))); } - @PreAuthorize("hasAuthority('tenant:init')") - @PostMapping("/init") - @Operation(summary = "初始化") - public void initData(String tenantId) throws Exception { - sysTenantService.initData(tenantId); - } - @PreAuthorize("hasAuthority('tenant:remove')") @DeleteMapping("/refreshCache") @Operation(summary = "刷新缓存") diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantInitController.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantInitController.java index 75e3184..db7636d 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantInitController.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantInitController.java @@ -38,4 +38,10 @@ public class SysTenantInitController { return sysTenantInitService.createTables(tenantId); } + @PostMapping(value = "/initData/{tenantId}") + @Operation(summary = "步骤三: 导入数据") + public TenantInitVo initData(@PathVariable String tenantId) throws Exception { + return sysTenantInitService.initData(tenantId); + } + } diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/entity/SysTenant.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/entity/SysTenant.java index fdc221b..2c5d296 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/entity/SysTenant.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/entity/SysTenant.java @@ -29,21 +29,6 @@ public class SysTenant extends BaseEntity { private static final long serialVersionUID = 1L; - /** - * 字段模式 - */ - public static final String COLUMN_MODE = "1"; - - /** - * SCHEMA 模式 - */ - public static final String SCHEMA_MODE = "2"; - - /** - * 数据源模式 - */ - public static final String DATASOURCE_MODE = "3"; - @TableId @NotNull(message = "id不能为空", groups = {EditGroup.class}) private String tenantId; diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/enums/TenantTypeEnum.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/enums/TenantModeEnum.java similarity index 60% rename from qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/enums/TenantTypeEnum.java rename to qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/enums/TenantModeEnum.java index 7f55f65..2869302 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/enums/TenantTypeEnum.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/enums/TenantModeEnum.java @@ -10,28 +10,28 @@ import lombok.Getter; * @since 2023/6/5 16:33 */ @Getter -public enum TenantTypeEnum { +public enum TenantModeEnum { /** * 字段模式-隔离级别最小 */ - COLUMN("column", "字段模式"), + COLUMN("1", "字段模式"), /** * SCHEMA模式-隔离级别中等 */ - SCHEMA("schema", "SCHEMA模式"), + SCHEMA("2", "SCHEMA模式"), /** * 数据源模式-隔离级别最大 */ - DATASOURCE("datasource", "数据源模式"); + DATASOURCE("3", "数据源模式"); - private final String type; + private final String mode; private final String info; - TenantTypeEnum(String code, String info) { - this.type = code; + TenantModeEnum(String code, String info) { + this.mode = code; this.info = info; } } diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/filters/DynamicDataSourceFilter.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/filters/DynamicDataSourceFilter.java index 7aa996a..788534d 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/filters/DynamicDataSourceFilter.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/filters/DynamicDataSourceFilter.java @@ -11,6 +11,7 @@ import com.qiaoba.common.database.context.TenantDbTypeContext; import com.qiaoba.common.web.utils.ResponseUtil; import com.qiaoba.common.web.utils.UriUtil; import com.qiaoba.module.tenant.entity.SysTenant; +import com.qiaoba.module.tenant.enums.TenantModeEnum; import com.qiaoba.module.tenant.enums.TenantStatusEnum; import com.qiaoba.module.tenant.service.SysTenantService; import lombok.extern.slf4j.Slf4j; @@ -87,9 +88,9 @@ public class DynamicDataSourceFilter extends OncePerRequestFilter { private void before(SysTenant sysTenant) { log.debug("设置租户信息, 租户ID: {},租户模式: {}", sysTenant.getTenantId(), sysTenant.getMode()); BaseContext.setTenantId(sysTenant.getTenantId()); - BaseContext.setSchema(sysTenant.getMode().equals(SysTenant.SCHEMA_MODE)); + BaseContext.setSchema(sysTenant.getMode().equals(TenantModeEnum.SCHEMA.getMode())); // 数据源模式-设置第三方数据源 - if (sysTenant.getMode().equals(SysTenant.DATASOURCE_MODE)) { + if (sysTenant.getMode().equals(TenantModeEnum.DATASOURCE.getMode())) { //设置当前租户对应的数据源 BaseContext.setDataSource(sysTenant.getTenantId()); BaseContext.setDatabaseType(TenantDbTypeContext.get(sysTenant.getTenantId())); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitDataStrategy.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitDataStrategy.java deleted file mode 100644 index d500e89..0000000 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitDataStrategy.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.qiaoba.module.tenant.init; - -import com.qiaoba.module.tenant.entity.vo.TenantInitVo; - -import java.sql.Connection; - -/** - * 初始化数据策略 - * - * @author ailanyin - * @version 1.0 - * @since 2023/6/27 13:05 - */ -public interface InitDataStrategy { - - /** - * 初始化数据 - * - * @param conn 连接对象 - * @param tenantId 租户ID - * @return 结果 - */ - TenantInitVo init(Connection conn, String tenantId); -} diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitDataStrategyFactory.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitDataStrategyFactory.java deleted file mode 100644 index b0677b3..0000000 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitDataStrategyFactory.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.qiaoba.module.tenant.init; - -import com.qiaoba.common.base.enums.DataBaseEnum; -import com.qiaoba.common.base.exceptions.ServiceException; -import com.qiaoba.module.tenant.init.impl.MysqlInitDataStrategy; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 策略工厂-租户初始化-导入数据 - * - * @author ailanyin - * @version 1.0 - * @since 2023/6/27 16:41 - */ -@Component -@RequiredArgsConstructor -public class InitDataStrategyFactory { - - private static Map FACTORY = new ConcurrentHashMap<>(); - - private final MysqlInitDataStrategy mysqlInitDataStrategy; - - - @PostConstruct - public void register() { - FACTORY.put(DataBaseEnum.MY_SQL.getType(), mysqlInitDataStrategy); - } - - public static InitDataStrategy getStrategy(String name) { - InitDataStrategy strategy = FACTORY.get(name); - if (Objects.isNull(strategy)) { - throw new ServiceException("[ InitDataStrategy ]策略工厂异常, 类型:[" + name + "]找不到相对应的策略"); - } - return strategy; - } -} diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitTablesStrategyFactory.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitTablesStrategyFactory.java index ab6bd48..10d7446 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitTablesStrategyFactory.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitTablesStrategyFactory.java @@ -3,6 +3,7 @@ package com.qiaoba.module.tenant.init; import com.qiaoba.common.base.enums.DataBaseEnum; import com.qiaoba.common.base.exceptions.ServiceException; import com.qiaoba.module.tenant.init.impl.MysqlInitTablesStrategy; +import com.qiaoba.module.tenant.init.impl.PgSqlInitTablesStrategy; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -25,11 +26,13 @@ public class InitTablesStrategyFactory { private static Map FACTORY = new ConcurrentHashMap<>(); private final MysqlInitTablesStrategy mysqlInitTablesStrategy; + private final PgSqlInitTablesStrategy pgSqlInitTablesStrategy; @PostConstruct public void register() { FACTORY.put(DataBaseEnum.MY_SQL.getType(), mysqlInitTablesStrategy); + FACTORY.put(DataBaseEnum.POSTGRE_SQL.getType(), pgSqlInitTablesStrategy); } public static InitTablesStrategy getStrategy(String name) { diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/impl/MysqlInitDataStrategy.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/impl/MysqlInitDataStrategy.java deleted file mode 100644 index 9a45a0a..0000000 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/impl/MysqlInitDataStrategy.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.qiaoba.module.tenant.init.impl; - -import cn.hutool.db.DbUtil; -import cn.hutool.http.HttpStatus; -import com.qiaoba.common.base.code.DatasourceErrorCode; -import com.qiaoba.module.tenant.entity.vo.TenantInitVo; -import com.qiaoba.module.tenant.init.InitDataStrategy; -import com.qiaoba.module.tenant.utils.InitDataUtil; -import org.springframework.stereotype.Component; - -import java.sql.Connection; -import java.sql.SQLException; - -/** - * 初始化数据策略 - * - * @author ailanyin - * @version 1.0 - * @since 2023/6/27 13:05 - */ -@Component -public class MysqlInitDataStrategy implements InitDataStrategy { - @Override - public TenantInitVo init(Connection conn, String tenantId) { - - try { - // 手动提交 - conn.setAutoCommit(false); - // 处理 sys_config - InitDataUtil.handleSysConfig(conn, tenantId, "MySQL/data/sys_config_data"); - // 处理 sys_post - InitDataUtil.handleSysPost(conn, tenantId, "MySQL/data/sys_post_data"); - // 处理 sys_role - InitDataUtil.handleSysRole(conn, tenantId, "MySQL/data/sys_role_data"); - // 处理 sys_user - InitDataUtil.handleSysUser(conn, tenantId, "MySQL/data/sys_user_data"); - // 处理 sys_user_role - InitDataUtil.bindUserAndRole(conn, tenantId); - // 处理 sys_menu todo - //MenuUtil.handleMenu(conn, tenantId); - // 处理 sys_role_menu - InitDataUtil.bindRoleAndMenu(conn, tenantId); - conn.commit(); - return new TenantInitVo(HttpStatus.HTTP_OK, null); - } catch (Exception e) { - try { - conn.rollback(); - } catch (SQLException ex) { - ex.printStackTrace(); - } - return new TenantInitVo(DatasourceErrorCode.INIT_DATA_ERROR.getCode(), e.getMessage()); - } finally { - DbUtil.close(conn); - } - } -} diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/impl/PgSqlInitTablesStrategy.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/impl/PgSqlInitTablesStrategy.java new file mode 100644 index 0000000..ea2bb83 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/impl/PgSqlInitTablesStrategy.java @@ -0,0 +1,42 @@ +package com.qiaoba.module.tenant.init.impl; + +import cn.hutool.core.io.IoUtil; +import cn.hutool.http.HttpStatus; +import com.qiaoba.common.base.code.DatasourceErrorCode; +import com.qiaoba.common.database.utils.DbUtil; +import com.qiaoba.module.tenant.entity.vo.TenantInitVo; +import com.qiaoba.module.tenant.init.InitTablesStrategy; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.sql.Connection; + +/** + * 初始化表策略-Mysql + * + * @author ailanyin + * @version 1.0 + * @since 2023/6/27 16:01 + */ +@Service +public class PgSqlInitTablesStrategy implements InitTablesStrategy { + + public static final String CREATE_MYSQL_DB_SQL = "DROP DATABASE IF EXISTS `{}`;CREATE DATABASE `{}` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';"; + + @Override + public TenantInitVo create(Connection conn, String schema) { + return null; + } + + @Override + public TenantInitVo create(Connection conn) { + try { + DbUtil.runScript(conn, "init/table/PostgreSQL/create_tables"); + return new TenantInitVo(HttpStatus.HTTP_OK, null); + } catch (IOException e) { + return new TenantInitVo(DatasourceErrorCode.CREATE_TABLE_ERROR.getCode(), e.getMessage()); + } finally { + IoUtil.close(conn); + } + } +} diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantInitService.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantInitService.java index 6749362..4eb971c 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantInitService.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantInitService.java @@ -3,6 +3,8 @@ package com.qiaoba.module.tenant.service; import com.qiaoba.module.tenant.entity.vo.TenantInitCheckVo; import com.qiaoba.module.tenant.entity.vo.TenantInitVo; +import java.sql.SQLException; + /** * 租户初始化 服务层 * @@ -27,4 +29,13 @@ public interface SysTenantInitService { * @return 结果 */ TenantInitVo createTables(String tenantId); + + /** + * 导入表数据 + * + * @param tenantId 租户ID + * @return 结果 + * @throws SQLException SQLException + */ + TenantInitVo initData(String tenantId) throws SQLException; } diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java index 599c8da..7ce9b5c 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java @@ -64,14 +64,6 @@ public interface SysTenantService { */ SysTenant selectFromCache(String tenantId); - /** - * 初始化数据 - * - * @param tenantId tenantId - * @throws Exception Exception - */ - void initData(String tenantId) throws Exception; - /** * 更改状态 * diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantInitServiceImpl.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantInitServiceImpl.java index 1c17207..208e1f0 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantInitServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantInitServiceImpl.java @@ -4,24 +4,30 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.http.HttpStatus; import com.alibaba.druid.pool.DruidDataSource; import com.qiaoba.common.base.code.DatasourceErrorCode; -import com.qiaoba.common.base.constants.BaseConstant; +import com.qiaoba.common.base.code.TenantErrorCode; import com.qiaoba.common.base.enums.DataBaseEnum; import com.qiaoba.common.database.context.PrimaryDatasourceContext; import com.qiaoba.common.database.context.TenantDbTypeContext; +import com.qiaoba.common.database.properties.TenantSchema; +import com.qiaoba.common.database.utils.DbUtil; import com.qiaoba.common.database.utils.JdbcUtil; import com.qiaoba.module.tenant.entity.SysTenant; import com.qiaoba.module.tenant.entity.SysTenantDatasource; import com.qiaoba.module.tenant.entity.vo.TenantInitCheckVo; import com.qiaoba.module.tenant.entity.vo.TenantInitVo; +import com.qiaoba.module.tenant.enums.TenantModeEnum; import com.qiaoba.module.tenant.init.InitTablesStrategyFactory; import com.qiaoba.module.tenant.service.SysTenantDatasourceService; import com.qiaoba.module.tenant.service.SysTenantInitService; import com.qiaoba.module.tenant.service.SysTenantService; +import com.qiaoba.module.tenant.utils.InitDataUtil; +import com.qiaoba.module.tenant.utils.MenuUtil; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import javax.sql.DataSource; import java.sql.Connection; +import java.sql.SQLException; import java.util.Objects; /** @@ -38,15 +44,12 @@ public class SysTenantInitServiceImpl implements SysTenantInitService { private final SysTenantService sysTenantService; private final SysTenantDatasourceService sysTenantDatasourceService; - @Value("${spring.application.name}") - private String schemaPrefix; - @Override public TenantInitCheckVo check(String tenantId) { // 1. 查询租户信息, 获取租户名称|租户模式 SysTenant sysTenant = sysTenantService.selectById(tenantId, false); // 2. 租户模式 = 3 数据源模式 - if (SysTenant.DATASOURCE_MODE.equals(sysTenant.getMode())) { + if (TenantModeEnum.DATASOURCE.getMode().equals(sysTenant.getMode())) { // 3. 根据租户ID查询主要数据源(1条) SysTenantDatasource datasource = sysTenantDatasourceService.selectPrimary(tenantId); // 4. 若没有主要数据源, 返回 未找到数据源信息 @@ -74,18 +77,17 @@ public class SysTenantInitServiceImpl implements SysTenantInitService { public TenantInitVo createTables(String tenantId) { SysTenant sysTenant = sysTenantService.selectById(tenantId, false); // 字段模式 - if (SysTenant.COLUMN_MODE.equals(sysTenant.getMode())) { + if (TenantModeEnum.COLUMN.getMode().equals(sysTenant.getMode())) { return new TenantInitVo(HttpStatus.HTTP_OK, "字段模式, 无需新建表"); } // Schema模式 - if (SysTenant.SCHEMA_MODE.equals(sysTenant.getMode())) { + if (TenantModeEnum.SCHEMA.getMode().equals(sysTenant.getMode())) { Connection connection = null; try { - String schema = schemaPrefix + BaseConstant.HYPHEN_JOIN_STR + tenantId; // 获取主库Connection 和 Schema DruidDataSource dataSource = (DruidDataSource) PrimaryDatasourceContext.getDefault(); connection = dataSource.getConnection(); - return InitTablesStrategyFactory.getStrategy(TenantDbTypeContext.getDefault()).create(connection, schema); + return InitTablesStrategyFactory.getStrategy(TenantDbTypeContext.getDefault()).create(connection, TenantSchema.getSchema(tenantId)); } catch (Exception e) { e.printStackTrace(); } finally { @@ -93,15 +95,83 @@ public class SysTenantInitServiceImpl implements SysTenantInitService { } } // 数据源模式 - if (SysTenant.DATASOURCE_MODE.equals(sysTenant.getMode())) { + if (TenantModeEnum.DATASOURCE.getMode().equals(sysTenant.getMode())) { SysTenantDatasource primary = sysTenantDatasourceService.selectPrimary(tenantId, false); Connection connection = JdbcUtil.getConnection(DataBaseEnum.getDriver(primary.getType()), DataBaseEnum.getUrl(primary.getType(), primary.getIp(), primary.getPort(), primary.getDbName(), primary.getSchemaName()), primary.getUsername(), primary.getPassword()); return InitTablesStrategyFactory.getStrategy(primary.getType()).create(connection); } - return new TenantInitVo(500, "未知异常"); + return new TenantInitVo(TenantErrorCode.MODE_NOT_FIND.getCode(), TenantErrorCode.MODE_NOT_FIND.getMsg()); } + @Override + public TenantInitVo initData(String tenantId) throws SQLException { + SysTenant sysTenant = sysTenantService.selectById(tenantId, false); + // 字段模式 + if (TenantModeEnum.COLUMN.getMode().equals(sysTenant.getMode())) { + // 获取默认租户的主数据源 + DataSource dataSource = (DataSource) PrimaryDatasourceContext.getDefault(); + // 获取默认租户的主数据库类型 + String dbType = TenantDbTypeContext.getDefault(); + // 初始化 + return init(dataSource.getConnection(), tenantId); + } + // SCHEMA + else if (TenantModeEnum.SCHEMA.getMode().equals(sysTenant.getMode())) { + // 获取默认租户的主数据源 + DataSource dataSource = (DataSource) PrimaryDatasourceContext.getDefault(); + // 获取默认租户的主数据库类型 + String dbType = TenantDbTypeContext.getDefault(); + // 切换 SCHEMA + Connection connection = dataSource.getConnection(); + DbUtil.setSchema(dbType, connection, TenantSchema.getSchema(tenantId)); + // 初始化 + return init(connection, tenantId); + } + // Datasource + else if (TenantModeEnum.DATASOURCE.getMode().equals(sysTenant.getMode())) { + SysTenantDatasource primary = sysTenantDatasourceService.selectPrimary(tenantId, false); + Connection connection = JdbcUtil.getConnection(DataBaseEnum.getDriver(primary.getType()), + DataBaseEnum.getUrl(primary.getType(), primary.getIp(), primary.getPort(), primary.getDbName(), primary.getSchemaName()), + primary.getUsername(), primary.getPassword()); + // 初始化 + return init(connection, tenantId); + } + return new TenantInitVo(TenantErrorCode.MODE_NOT_FIND.getCode(), TenantErrorCode.MODE_NOT_FIND.getMsg()); + } + private TenantInitVo init(Connection conn, String tenantId) { + + try { + // 手动提交 + conn.setAutoCommit(false); + // 处理 sys_config + InitDataUtil.handleSysConfig(conn, tenantId, "init/data/sys_config_data"); + // 处理 sys_post + InitDataUtil.handleSysPost(conn, tenantId, "init/data/sys_post_data"); + // 处理 sys_role + InitDataUtil.handleSysRole(conn, tenantId, "init/data/sys_role_data"); + // 处理 sys_user + InitDataUtil.handleSysUser(conn, tenantId, "init/data/sys_user_data"); + // 处理 sys_user_role + InitDataUtil.bindUserAndRole(conn, tenantId); + // 处理 sys_menu + MenuUtil.handleMenu(conn, tenantId); + // 处理 sys_role_menu + InitDataUtil.bindRoleAndMenu(conn, tenantId); + conn.commit(); + return new TenantInitVo(HttpStatus.HTTP_OK, null); + } catch (Exception e) { + try { + conn.rollback(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + return new TenantInitVo(DatasourceErrorCode.INIT_DATA_ERROR.getCode(), e.getMessage()); + } finally { + InitDataUtil.removeLocal(); + cn.hutool.db.DbUtil.close(conn); + } + } } diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantServiceImpl.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantServiceImpl.java index a353235..a7ea43a 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantServiceImpl.java @@ -1,7 +1,6 @@ package com.qiaoba.module.tenant.service.impl; import cn.hutool.core.util.StrUtil; -import com.alibaba.druid.pool.DruidDataSource; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.qiaoba.auth.utils.SecurityUtil; import com.qiaoba.common.base.code.TenantErrorCode; @@ -9,25 +8,19 @@ import com.qiaoba.common.base.constants.BaseConstant; import com.qiaoba.common.base.constants.TenantConstant; import com.qiaoba.common.base.context.BaseContext; import com.qiaoba.common.base.enums.BaseEnum; -import com.qiaoba.common.base.enums.DataBaseEnum; import com.qiaoba.common.base.exceptions.ServiceException; -import com.qiaoba.common.database.config.DynamicDataSourceConfig; import com.qiaoba.common.database.entity.PageQuery; import com.qiaoba.common.database.entity.TableDataInfo; -import com.qiaoba.common.database.utils.JdbcUtil; import com.qiaoba.common.redis.service.RedisService; import com.qiaoba.module.tenant.entity.SysTenant; -import com.qiaoba.module.tenant.entity.SysTenantDatasource; import com.qiaoba.module.tenant.entity.param.SysTenantParam; import com.qiaoba.module.tenant.mapper.SysTenantMapper; import com.qiaoba.module.tenant.service.SysTenantDatasourceService; import com.qiaoba.module.tenant.service.SysTenantService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; -import java.sql.Connection; import java.util.Date; import java.util.List; import java.util.Objects; @@ -49,9 +42,6 @@ public class SysTenantServiceImpl implements SysTenantService { private final SysTenantDatasourceService sysTenantDatasourceService; private final RedisService redisService; - @Value("${spring.application.name}") - private String baseDatabase; - @Override public int insert(SysTenant sysTenant) { sysTenant.setCreateTime(new Date()); @@ -104,16 +94,6 @@ public class SysTenantServiceImpl implements SysTenantService { return sysTenant; } - @Override - public void initData(String tenantId) throws Exception { - - SysTenant sysTenant = selectById(tenantId); - if (Objects.isNull(sysTenant)) { - throw new ServiceException("租户不存在"); - } - // 初始化数据 todo - Connection connection = getConnection(sysTenant); - } @Override public void updateStatus(String tenantId, String status) { @@ -153,48 +133,6 @@ public class SysTenantServiceImpl implements SysTenantService { return wrapper; } - private Connection getConnection(SysTenant sysTenant) { - if (SysTenant.COLUMN_MODE.equals(sysTenant.getMode())) { - return column(); - } - if (SysTenant.SCHEMA_MODE.equals(sysTenant.getMode())) { - return schema(sysTenant.getTenantId()); - } - if (SysTenant.DATASOURCE_MODE.equals(sysTenant.getMode())) { - return datasource(sysTenant.getTenantId()); - } - - throw new ServiceException("未找到租户设置的数据源模式"); - } - - /** - * 处理字段模式 - */ - private Connection column() { - DruidDataSource dataSource = DynamicDataSourceConfig.getPrimaryDataSource(TenantConstant.DEFAULT_TENANT_ID); - return JdbcUtil.getConnection(dataSource.getDriverClassName(), dataSource.getUrl(), dataSource.getUsername(), dataSource.getPassword()); - } - - /** - * 处理数据库模式 - */ - private Connection schema(String tenantId) { - DruidDataSource dataSource = DynamicDataSourceConfig.getPrimaryDataSource(TenantConstant.DEFAULT_TENANT_ID); - String realUrl = dataSource.getUrl().replaceFirst(baseDatabase, baseDatabase + BaseConstant.HYPHEN_JOIN_STR + tenantId); - return JdbcUtil.getConnection(dataSource.getDriverClassName(), realUrl, dataSource.getUsername(), dataSource.getPassword()); - } - - /** - * 处理数据源模式 - */ - private Connection datasource(String tenantId) { - SysTenantDatasource primary = sysTenantDatasourceService.selectPrimary(tenantId); - if (Objects.isNull(primary)) { - throw new ServiceException("未找到租户主数据源信息"); - } - return JdbcUtil.getConnection(DataBaseEnum.getDriver(primary.getType()), DataBaseEnum.getUrl(primary.getType(), primary.getIp(), primary.getPort(), primary.getDbName(), primary.getSchemaName()), primary.getUsername(), primary.getPassword()); - } - private void toCache(SysTenant sysTenant) { log.debug("加载租户信息进缓存, 租户ID: {}", sysTenant.getTenantId()); redisService.set(TenantConstant.TENANT_INFO_KEY_PREFIX + sysTenant.getTenantId(), sysTenant); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/utils/InitDataUtil.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/utils/InitDataUtil.java index 78af474..02a0eb0 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/utils/InitDataUtil.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/utils/InitDataUtil.java @@ -3,7 +3,7 @@ package com.qiaoba.module.tenant.utils; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.StrUtil; -import cn.hutool.db.sql.SqlExecutor; +import com.qiaoba.common.database.utils.DbUtil; import org.springframework.core.io.ClassPathResource; import java.nio.charset.Charset; @@ -32,6 +32,10 @@ public class InitDataUtil { */ private static final ThreadLocal USER_SUPER_ADMIN_ID = new ThreadLocal<>(); + public static void removeLocal() { + ROLE_SUPER_ADMIN_ID.remove(); + USER_SUPER_ADMIN_ID.remove(); + } public static void handleSysConfig(Connection conn, String tenantId, String filePath) throws Exception { handleSql(conn, tenantId, filePath); @@ -69,8 +73,9 @@ public class InitDataUtil { } sb.append(line); } - if (StrUtil.isNotBlank(sb.toString())) { - SqlExecutor.execute(conn, sb.toString()); + String sql = sb.toString(); + if (StrUtil.isNotBlank(sql)) { + DbUtil.runSql(conn, sql); } } @@ -83,7 +88,7 @@ public class InitDataUtil { String sql = StrUtil.format("INSERT INTO sys_user_role VALUES ('{}', '{}', '{}');", USER_SUPER_ADMIN_ID.get(), ROLE_SUPER_ADMIN_ID.get(), tenantId); - SqlExecutor.execute(conn, sql); + DbUtil.runSql(conn, sql); } public static void bindRoleAndMenu(Connection conn, String tenantId) throws Exception { @@ -93,8 +98,9 @@ public class InitDataUtil { for (String menuId : menuIds) { sb.append(StrUtil.format(sql, ROLE_SUPER_ADMIN_ID.get(), menuId, tenantId)); } - if (StrUtil.isNotBlank(sb.toString())) { - SqlExecutor.execute(conn, sb.toString()); + String sbStr = sb.toString(); + if (StrUtil.isNotBlank(sbStr)) { + DbUtil.runSql(conn, sbStr); } } @@ -109,8 +115,9 @@ public class InitDataUtil { sb.append(line); } } - if (StrUtil.isNotBlank(sb.toString())) { - SqlExecutor.execute(conn, sb.toString()); + String sql = sb.toString(); + if (StrUtil.isNotBlank(sql)) { + DbUtil.runSql(conn, sql); } } } diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/utils/MenuUtil.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/utils/MenuUtil.java index 3c84253..40c0a0e 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/utils/MenuUtil.java +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/utils/MenuUtil.java @@ -4,7 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.StrUtil; -import cn.hutool.db.sql.SqlExecutor; +import com.qiaoba.common.database.utils.DbUtil; import org.springframework.core.io.ClassPathResource; import java.nio.charset.Charset; @@ -34,42 +34,42 @@ public class MenuUtil { private static void handleMonitorMenu(Connection conn, String tenantId) throws Exception { long monitorId = new Snowflake().nextId(); - String sql = "INSERT INTO `sys_menu` VALUES ({}, '系统监控', 0, 2, 'monitor', NULL, '', 0, 0, 'M', '1', '', 'monitor', 'admin', '2023-05-27 22:25:03', '', NULL, '系统监控目录', {});"; + String sql = "INSERT INTO sys_menu VALUES ('{}', '系统监控', 0, 2, 'monitor', NULL, '', 0, 0, 'M', '1', '', 'monitor', 'admin', '2023-05-27 22:25:03', '', NULL, '系统监控目录', '{}');"; sql = StrUtil.format(sql, monitorId, tenantId); - SqlExecutor.execute(conn, sql); + DbUtil.runSql(conn, sql); // 登录用户 - Long onlineUserId = handleMenu(conn, monitorId, tenantId, "MySQL/data/sys_menu/monitor/online_user/menu"); - handleButton(conn, tenantId, onlineUserId, "MySQL/data/sys_menu/monitor/online_user/button"); + Long onlineUserId = handleMenu(conn, monitorId, tenantId, "init/data/sys_menu/monitor/online_user/menu"); + handleButton(conn, tenantId, onlineUserId, "init/data/sys_menu/monitor/online_user/button"); } private static void handleSystemMenu(Connection conn, String tenantId) throws Exception { long systemId = new Snowflake().nextId(); - String sql = "INSERT INTO `sys_menu` VALUES ({}, '系统管理', 0, 1, 'system', NULL, '', 0, 0, 'M', '1', '', 'system', 'admin', '2023-04-23 14:35:29', '', NULL, '系统管理目录', {});"; + String sql = "INSERT INTO sys_menu VALUES ('{}', '系统管理', 0, 1, 'system', NULL, '', 0, 0, 'M', '1', '', 'system', 'admin', '2023-04-23 14:35:29', '', NULL, '系统管理目录', '{}');"; sql = StrUtil.format(sql, systemId, tenantId); - SqlExecutor.execute(conn, sql); + DbUtil.runSql(conn, sql); // 用户管理 - Long userId = handleMenu(conn, systemId, tenantId, "MySQL/data/sys_menu/system/user/menu"); - handleButton(conn, tenantId, userId, "MySQL/data/sys_menu/system/user/button"); + Long userId = handleMenu(conn, systemId, tenantId, "init/data/sys_menu/system/user/menu"); + handleButton(conn, tenantId, userId, "init/data/sys_menu/system/user/button"); // 角色管理 - Long roleId = handleMenu(conn, systemId, tenantId, "MySQL/data/sys_menu/system/role/menu"); - handleButton(conn, tenantId, roleId, "MySQL/data/sys_menu/system/role/button"); + Long roleId = handleMenu(conn, systemId, tenantId, "init/data/sys_menu/system/role/menu"); + handleButton(conn, tenantId, roleId, "init/data/sys_menu/system/role/button"); // 菜单管理 - Long menuId = handleMenu(conn, systemId, tenantId, "MySQL/data/sys_menu/system/menu/menu"); - handleButton(conn, tenantId, menuId, "MySQL/data/sys_menu/system/menu/button"); + Long menuId = handleMenu(conn, systemId, tenantId, "init/data/sys_menu/system/menu/menu"); + handleButton(conn, tenantId, menuId, "init/data/sys_menu/system/menu/button"); // 部门管理 - Long deptId = handleMenu(conn, systemId, tenantId, "MySQL/data/sys_menu/system/dept/menu"); - handleButton(conn, tenantId, deptId, "MySQL/data/sys_menu/system/dept/button"); + Long deptId = handleMenu(conn, systemId, tenantId, "init/data/sys_menu/system/dept/menu"); + handleButton(conn, tenantId, deptId, "init/data/sys_menu/system/dept/button"); // 岗位管理 - Long postId = handleMenu(conn, systemId, tenantId, "MySQL/data/sys_menu/system/post/menu"); - handleButton(conn, tenantId, postId, "MySQL/data/sys_menu/system/post/button"); + Long postId = handleMenu(conn, systemId, tenantId, "init/data/sys_menu/system/post/menu"); + handleButton(conn, tenantId, postId, "init/data/sys_menu/system/post/button"); // 字典管理 - Long dictId = handleMenu(conn, systemId, tenantId, "MySQL/data/sys_menu/system/dict/menu"); - handleButton(conn, tenantId, dictId, "MySQL/data/sys_menu/system/dict/button"); + Long dictId = handleMenu(conn, systemId, tenantId, "init/data/sys_menu/system/dict/menu"); + handleButton(conn, tenantId, dictId, "init/data/sys_menu/system/dict/button"); // 参数管理 - Long configId = handleMenu(conn, systemId, tenantId, "MySQL/data/sys_menu/system/config/menu"); - handleButton(conn, tenantId, configId, "MySQL/data/sys_menu/system/config/button"); + Long configId = handleMenu(conn, systemId, tenantId, "init/data/sys_menu/system/config/menu"); + handleButton(conn, tenantId, configId, "init/data/sys_menu/system/config/button"); } private static Long handleMenu(Connection conn, Long systemId, String tenantId, String fileName) throws Exception { @@ -84,7 +84,7 @@ public class MenuUtil { } } if (StrUtil.isNotBlank(sb.toString())) { - SqlExecutor.execute(conn, sb.toString()); + DbUtil.runSql(conn, sb.toString()); } return tempId; } @@ -100,25 +100,23 @@ public class MenuUtil { } } if (StrUtil.isNotBlank(sb.toString())) { - SqlExecutor.execute(conn, sb.toString()); + DbUtil.runSql(conn, sb.toString()); } } - public static List getAllMenuIdsByTenantId(Connection conn, String tenantId) { + public static List getAllMenuIdsByTenantId(Connection conn, String tenantId) throws SQLException { List menuIds = new ArrayList<>(); ResultSet resultSet = null; Statement statement = null; try { statement = conn.createStatement(); - resultSet = statement.executeQuery(StrUtil.format("SELECT menu_id FROM `sys_menu` where tenant_id = '{}'", tenantId)); + resultSet = statement.executeQuery(StrUtil.format("SELECT menu_id FROM sys_menu where tenant_id = '{}'", tenantId)); while (resultSet.next()) { String menuId = resultSet.getString("menu_id"); if (StrUtil.isNotBlank(menuId)) { menuIds.add(menuId); } } - } catch (SQLException e) { - e.printStackTrace(); } finally { IoUtil.close(resultSet); IoUtil.close(statement); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_config_data b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_config_data index 6a74599..1098044 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_config_data +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_config_data @@ -1,7 +1,7 @@ -INSERT INTO `sys_config` VALUES ('{}', 'Token有效期', 'sys.token.expireTime', '96', 'Y', 'admin', '2023-05-25 13:22:50', 'admin', '2023-05-25 15:02:42', '单位:小时,仅支持正整数', '{}'); -INSERT INTO `sys_config` VALUES ('{}', '账号黑名单开关', 'sys.account.blacklistOnOff', 'true', 'Y', 'admin', '2023-05-25 13:22:31', 'admin', '2023-05-25 13:57:14', '(true开启,false关闭)', '{}'); -INSERT INTO `sys_config` VALUES ('{}', '账号注册开关', 'sys.account.registerUser', 'false', 'Y', 'admin', '2023-05-25 13:21:38', 'admin', '2023-05-25 15:07:00', '(true开启,false关闭)', '{}'); -INSERT INTO `sys_config` VALUES ('{}', '登录验证码开关', 'sys.account.captchaOnOff', 'true', 'Y', 'admin', '2023-05-25 13:23:52', 'admin', '2023-06-05 13:43:00', '(true开启,false关闭)', '{}'); -INSERT INTO `sys_config` VALUES ('{}', '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-light', 'Y', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-25 13:26:27', '深色主题theme-dark,浅色主题theme-light', '{}'); -INSERT INTO `sys_config` VALUES ('{}', '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2022-08-15 18:01:28', '', NULL, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow', '{}'); -INSERT INTO `sys_config` VALUES ('{}', '账号允许同时在线', 'sys.account.allowBothOnline', 'true', 'Y', 'admin', '2023-05-28 14:28:05', 'admin', '2023-05-28 15:39:48', '(true允许,false禁止)', '{}'); +INSERT INTO sys_config VALUES ('{}', 'Token有效期', 'sys.token.expireTime', '96', 'Y', 'admin', '2023-05-25 13:22:50', 'admin', '2023-05-25 15:02:42', '单位:小时,仅支持正整数', '{}'); +INSERT INTO sys_config VALUES ('{}', '账号黑名单开关', 'sys.account.blacklistOnOff', 'true', 'Y', 'admin', '2023-05-25 13:22:31', 'admin', '2023-05-25 13:57:14', '(true开启,false关闭)', '{}'); +INSERT INTO sys_config VALUES ('{}', '账号注册开关', 'sys.account.registerUser', 'false', 'Y', 'admin', '2023-05-25 13:21:38', 'admin', '2023-05-25 15:07:00', '(true开启,false关闭)', '{}'); +INSERT INTO sys_config VALUES ('{}', '登录验证码开关', 'sys.account.captchaOnOff', 'true', 'Y', 'admin', '2023-05-25 13:23:52', 'admin', '2023-06-05 13:43:00', '(true开启,false关闭)', '{}'); +INSERT INTO sys_config VALUES ('{}', '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-light', 'Y', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-25 13:26:27', '深色主题theme-dark,浅色主题theme-light', '{}'); +INSERT INTO sys_config VALUES ('{}', '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2022-08-15 18:01:28', '', NULL, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow', '{}'); +INSERT INTO sys_config VALUES ('{}', '账号允许同时在线', 'sys.account.allowBothOnline', 'true', 'Y', 'admin', '2023-05-28 14:28:05', 'admin', '2023-05-28 15:39:48', '(true允许,false禁止)', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/monitor/online_user/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/monitor/online_user/button index c9b9c59..867ba9c 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/monitor/online_user/button +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/monitor/online_user/button @@ -1,3 +1,3 @@ -INSERT INTO `sys_menu` VALUES ({}, '在线查询', {}, 1, '#', '', '', 0, 0, 'F', '1', 'monitor:online:query', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '批量强退', {}, 2, '#', '', '', 0, 0, 'F', '1', 'monitor:online:batchLogout', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '单条强退', {}, 3, '#', '', '', 0, 0, 'F', '1', 'monitor:online:forceLogout', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', {}); +INSERT INTO sys_menu VALUES ('{}', '在线查询', '{}', 1, '#', '', '', 0, 0, 'F', '1', 'monitor:online:query', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '批量强退', '{}', 2, '#', '', '', 0, 0, 'F', '1', 'monitor:online:batchLogout', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '单条强退', '{}', 3, '#', '', '', 0, 0, 'F', '1', 'monitor:online:forceLogout', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/monitor/online_user/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/monitor/online_user/menu index 83a59ff..96548aa 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/monitor/online_user/menu +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/monitor/online_user/menu @@ -1 +1 @@ -INSERT INTO `sys_menu` VALUES ({}, '登录用户', {}, 1, 'online', 'monitor/online/index', '', 0, 0, 'C', '1', 'monitor:online:list', 'online', 'admin', '2023-05-27 22:22:18', 'admin', '2023-05-30 09:49:35', '在线用户菜单', {}); +INSERT INTO sys_menu VALUES ('{}', '登录用户', '{}', 1, 'online', 'monitor/online/index', '', 0, 0, 'C', '1', 'monitor:online:list', 'online', 'admin', '2023-05-27 22:22:18', 'admin', '2023-05-30 09:49:35', '在线用户菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/config/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/config/button index 444e876..06792b3 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/config/button +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/config/button @@ -1,4 +1,4 @@ -INSERT INTO `sys_menu` VALUES ({}, '参数查询', {}, 1, '#', '', '', 0, 0, 'F', '1', 'system:config:query', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '参数新增', {}, 2, '#', '', '', 0, 0, 'F', '1', 'system:config:add', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '参数修改', {}, 3, '#', '', '', 0, 0, 'F', '1', 'system:config:edit', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '参数删除', {}, 4, '#', '', '', 0, 0, 'F', '1', 'system:config:remove', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); +INSERT INTO sys_menu VALUES ('{}', '参数查询', '{}', 1, '#', '', '', 0, 0, 'F', '1', 'system:config:query', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '参数新增', '{}', 2, '#', '', '', 0, 0, 'F', '1', 'system:config:add', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '参数修改', '{}', 3, '#', '', '', 0, 0, 'F', '1', 'system:config:edit', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '参数删除', '{}', 4, '#', '', '', 0, 0, 'F', '1', 'system:config:remove', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/config/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/config/menu index ceb0507..931115d 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/config/menu +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/config/menu @@ -1 +1 @@ -INSERT INTO `sys_menu` VALUES ({}, '参数设置', {}, 7, 'config', 'system/config/index', '', 0, 0, 'C', '1', 'system:config:list', 'edit', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-24 21:13:11', '参数设置菜单', {}); +INSERT INTO sys_menu VALUES ('{}', '参数设置', '{}', 7, 'config', 'system/config/index', '', 0, 0, 'C', '1', 'system:config:list', 'edit', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-24 21:13:11', '参数设置菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dept/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dept/button index 1a9faf1..cc46dc4 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dept/button +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dept/button @@ -1,4 +1,4 @@ -INSERT INTO `sys_menu` VALUES ({}, '部门查询', {}, 1, '', '', '', 0, 0, 'F', '1', 'system:dept:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '部门新增', {}, 2, '', '', '', 0, 0, 'F', '1', 'system:dept:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '部门修改', {}, 3, '', '', '', 0, 0, 'F', '1', 'system:dept:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '部门删除', {}, 4, '', '', '', 0, 0, 'F', '1', 'system:dept:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); +INSERT INTO sys_menu VALUES ('{}', '部门查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:dept:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '部门新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:dept:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '部门修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:dept:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '部门删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:dept:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dept/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dept/menu index 03cb4fd..baad2a5 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dept/menu +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dept/menu @@ -1 +1 @@ -INSERT INTO `sys_menu` VALUES ({}, '部门管理', {}, 4, 'dept', 'system/dept/index', '', 0, 0, 'C', '1', 'system:dept:list', 'tree', 'admin', '2023-04-23 14:35:29', '', NULL, '部门管理菜单', {}); +INSERT INTO sys_menu VALUES ('{}', '部门管理', '{}', 4, 'dept', 'system/dept/index', '', 0, 0, 'C', '1', 'system:dept:list', 'tree', 'admin', '2023-04-23 14:35:29', '', NULL, '部门管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dict/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dict/button index b222a6a..295b19c 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dict/button +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dict/button @@ -1,5 +1,5 @@ -INSERT INTO `sys_menu` VALUES ({}, '字典查询', {}, 1, '#', '', '', 0, 0, 'F', '1', 'system:dict:query', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '字典新增', {}, 2, '#', '', '', 0, 0, 'F', '1', 'system:dict:add', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '字典修改', {}, 3, '#', '', '', 0, 0, 'F', '1', 'system:dict:edit', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '字典删除', {}, 4, '#', '', '', 0, 0, 'F', '1', 'system:dict:remove', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '字典导出', {}, 5, '#', '', '', 0, 0, 'F', '1', 'system:dict:export', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', {}); +INSERT INTO sys_menu VALUES ('{}', '字典查询', '{}', 1, '#', '', '', 0, 0, 'F', '1', 'system:dict:query', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '字典新增', '{}', 2, '#', '', '', 0, 0, 'F', '1', 'system:dict:add', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '字典修改', '{}', 3, '#', '', '', 0, 0, 'F', '1', 'system:dict:edit', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '字典删除', '{}', 4, '#', '', '', 0, 0, 'F', '1', 'system:dict:remove', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '字典导出', '{}', 5, '#', '', '', 0, 0, 'F', '1', 'system:dict:export', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dict/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dict/menu index ffcf1e7..150286c 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dict/menu +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/dict/menu @@ -1 +1 @@ -INSERT INTO `sys_menu` VALUES ({}, '字典管理', {}, 6, 'dict', 'system/dict/index', '', 0, 0, 'C', '1', 'system:dict:list', 'documentation', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-31 11:15:14', '字典管理菜单', {}); +INSERT INTO sys_menu VALUES ('{}', '字典管理', '{}', 6, 'dict', 'system/dict/index', '', 0, 0, 'C', '1', 'system:dict:list', 'documentation', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-31 11:15:14', '字典管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/menu/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/menu/button index 2061dec..3b6f4b9 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/menu/button +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/menu/button @@ -1,4 +1,4 @@ -INSERT INTO `sys_menu` VALUES ({}, '菜单查询', {}, 1, '', '', '', 0, 0, 'F', '1', 'system:menu:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '菜单新增', {}, 2, '', '', '', 0, 0, 'F', '1', 'system:menu:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '菜单修改', {}, 3, '', '', '', 0, 0, 'F', '1', 'system:menu:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '菜单删除', {}, 4, '', '', '', 0, 0, 'F', '1', 'system:menu:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); +INSERT INTO sys_menu VALUES ('{}', '菜单查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:menu:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '菜单新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:menu:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '菜单修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:menu:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '菜单删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:menu:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/menu/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/menu/menu index 31d1bb1..3f5201c 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/menu/menu +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/menu/menu @@ -1 +1 @@ -INSERT INTO `sys_menu` VALUES ({}, '菜单管理', {}, 3, 'menu', 'system/menu/index', '', 0, 0, 'C', '1', 'system:menu:list', 'tree-table', 'admin', '2023-04-23 14:35:29', '', NULL, '菜单管理菜单', {}); +INSERT INTO sys_menu VALUES ('{}', '菜单管理', '{}', 3, 'menu', 'system/menu/index', '', 0, 0, 'C', '1', 'system:menu:list', 'tree-table', 'admin', '2023-04-23 14:35:29', '', NULL, '菜单管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/post/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/post/button index 0373893..760ab0c 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/post/button +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/post/button @@ -1,5 +1,5 @@ -INSERT INTO `sys_menu` VALUES ({}, '岗位查询', {}, 1, '', '', '', 0, 0, 'F', '1', 'system:post:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '岗位新增', {}, 2, '', '', '', 0, 0, 'F', '1', 'system:post:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '岗位修改', {}, 3, '', '', '', 0, 0, 'F', '1', 'system:post:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '岗位删除', {}, 4, '', '', '', 0, 0, 'F', '1', 'system:post:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '岗位导出', {}, 5, '', '', '', 0, 0, 'F', '1', 'system:post:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); +INSERT INTO sys_menu VALUES ('{}', '岗位查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:post:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '岗位新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:post:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '岗位修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:post:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '岗位删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:post:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '岗位导出', '{}', 5, '', '', '', 0, 0, 'F', '1', 'system:post:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/post/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/post/menu index 1934eff..f4fdda1 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/post/menu +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/post/menu @@ -1 +1 @@ -INSERT INTO `sys_menu` VALUES ({}, '岗位管理', {}, 5, 'post', 'system/post/index', '', 0, 0, 'C', '1', 'system:post:list', 'post', 'admin', '2023-04-23 14:35:29', '', NULL, '岗位管理菜单', {}); +INSERT INTO sys_menu VALUES ('{}', '岗位管理', '{}', 5, 'post', 'system/post/index', '', 0, 0, 'C', '1', 'system:post:list', 'post', 'admin', '2023-04-23 14:35:29', '', NULL, '岗位管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/role/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/role/button index 611d3a2..1c196e9 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/role/button +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/role/button @@ -1,5 +1,5 @@ -INSERT INTO `sys_menu` VALUES ({}, '角色查询', {}, 1, '', '', '', 0, 0, 'F', '1', 'system:role:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '角色新增', {}, 2, '', '', '', 0, 0, 'F', '1', 'system:role:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '角色修改', {}, 3, '', '', '', 0, 0, 'F', '1', 'system:role:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '角色删除', {}, 4, '', '', '', 0, 0, 'F', '1', 'system:role:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '角色导出', {}, 5, '', '', '', 0, 0, 'F', '1', 'system:role:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); +INSERT INTO sys_menu VALUES ('{}', '角色查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:role:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '角色新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:role:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '角色修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:role:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '角色删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:role:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '角色导出', '{}', 5, '', '', '', 0, 0, 'F', '1', 'system:role:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/role/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/role/menu index 4ed3abe..050ad8b 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/role/menu +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/role/menu @@ -1 +1 @@ -INSERT INTO `sys_menu` VALUES ({}, '角色管理', {}, 2, 'role', 'system/role/index', '', 0, 0, 'C', '1', 'system:role:list', 'peoples', 'admin', '2023-04-23 14:35:29', '', NULL, '角色管理菜单', {}); +INSERT INTO sys_menu VALUES ('{}', '角色管理', '{}', 2, 'role', 'system/role/index', '', 0, 0, 'C', '1', 'system:role:list', 'peoples', 'admin', '2023-04-23 14:35:29', '', NULL, '角色管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/user/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/user/button index 11ee223..783ab27 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/user/button +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/user/button @@ -1,7 +1,7 @@ -INSERT INTO `sys_menu` VALUES ({}, '用户查询', {}, 1, '', '', '', 0, 0, 'F', '1', 'system:user:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '用户新增', {}, 2, '', '', '', 0, 0, 'F', '1', 'system:user:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '用户修改', {}, 3, '', '', '', 0, 0, 'F', '1', 'system:user:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '用户删除', {}, 4, '', '', '', 0, 0, 'F', '1', 'system:user:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '用户导出', {}, 5, '', '', '', 0, 0, 'F', '1', 'system:user:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '用户导入', {}, 6, '', '', '', 0, 0, 'F', '1', 'system:user:import', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); -INSERT INTO `sys_menu` VALUES ({}, '重置密码', {}, 7, '', '', '', 0, 0, 'F', '1', 'system:user:resetPwd', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', {}); +INSERT INTO sys_menu VALUES ('{}', '用户查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:user:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:user:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:user:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:user:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户导出', '{}', 5, '', '', '', 0, 0, 'F', '1', 'system:user:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户导入', '{}', 6, '', '', '', 0, 0, 'F', '1', 'system:user:import', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '重置密码', '{}', 7, '', '', '', 0, 0, 'F', '1', 'system:user:resetPwd', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/user/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/user/menu index aeec2ef..ab0d732 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/user/menu +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_menu/system/user/menu @@ -1 +1 @@ -INSERT INTO `sys_menu` VALUES ({}, '用户管理', {}, 1, 'user', 'system/user/index', '', 0, 0, 'C', '1', 'system:user:list', 'user', 'admin', '2023-04-23 14:35:29', '', NULL, '用户管理菜单', {}); +INSERT INTO sys_menu VALUES ('{}', '用户管理', '{}', 1, 'user', 'system/user/index', '', 0, 0, 'C', '1', 'system:user:list', 'user', 'admin', '2023-04-23 14:35:29', '', NULL, '用户管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_post_data b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_post_data index 44ec107..d1c13fb 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_post_data +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_post_data @@ -1,4 +1,4 @@ -INSERT INTO `sys_post` VALUES ({}, 'ceo', '总经理', 1, '1', 'admin', '2023-05-19 14:06:53', 'admin', '2023-05-22 14:56:56', NULL, {}); -INSERT INTO `sys_post` VALUES ({}, 'cto', '技术总监', 2, '1', 'admin', '2023-05-19 14:07:06', 'admin', '2023-05-22 14:57:10', NULL,{}); -INSERT INTO `sys_post` VALUES ({}, 'hr', '人事', 3, '1', 'admin', '2023-05-19 14:07:16', '', NULL, NULL, {}); -INSERT INTO `sys_post` VALUES ({}, 'acct', '会计', 4, '1', 'admin', '2023-05-19 14:07:51', '', NULL, NULL, {}); \ No newline at end of file +INSERT INTO sys_post VALUES ('{}', 'ceo', '总经理', 1, '1', 'admin', '2023-05-19 14:06:53', 'admin', '2023-05-22 14:56:56', NULL, '{}'); +INSERT INTO sys_post VALUES ('{}', 'cto', '技术总监', 2, '1', 'admin', '2023-05-19 14:07:06', 'admin', '2023-05-22 14:57:10', NULL,'{}'); +INSERT INTO sys_post VALUES ('{}', 'hr', '人事', 3, '1', 'admin', '2023-05-19 14:07:16', '', NULL, NULL, '{}'); +INSERT INTO sys_post VALUES ('{}', 'acct', '会计', 4, '1', 'admin', '2023-05-19 14:07:51', '', NULL, NULL, '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_role_data b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_role_data index 2f2d276..f52b4b3 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_role_data +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_role_data @@ -1,2 +1,2 @@ -INSERT INTO `sys_role` VALUES ({}, '超级管理员', 'admin', 1, '1', '1', 'admin', '2023-04-23 14:35:29', 'admin', '2023-05-31 11:05:52', '超级管理员', {}); -INSERT INTO `sys_role` VALUES ({}, '测试', 'test', 1, '1', '1', 'admin', '2023-05-22 14:38:31', '', NULL, NULL, {}); +INSERT INTO sys_role VALUES ('{}', '超级管理员', 'admin', 1, '1', '1', 'admin', '2023-04-23 14:35:29', 'admin', '2023-05-31 11:05:52', '超级管理员', '{}'); +INSERT INTO sys_role VALUES ('{}', '测试', 'test', 1, '1', '1', 'admin', '2023-05-22 14:38:31', '', NULL, NULL, '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_user_data b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_user_data index 0f268d5..c081946 100644 --- a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_user_data +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/MySQL/data/sys_user_data @@ -1 +1 @@ -INSERT INTO `sys_user` VALUES ({}, NULL, 'admin', '超级管理员', '', '', '0', '', '$2a$10$mDfrzPMZuxvKeKmqUPA4hOgNC2Zdgb8vOgVL8hP8IIdT6fAWpe0Bm', '1', '', NULL, '', NULL, NULL, {}); +INSERT INTO sys_user VALUES ('{}', NULL, 'admin', '超级管理员', '', '', '0', '', '$2a$10$mDfrzPMZuxvKeKmqUPA4hOgNC2Zdgb8vOgVL8hP8IIdT6fAWpe0Bm', '1', '', NULL, '', NULL, NULL, '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_config_data b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_config_data new file mode 100644 index 0000000..1098044 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_config_data @@ -0,0 +1,7 @@ +INSERT INTO sys_config VALUES ('{}', 'Token有效期', 'sys.token.expireTime', '96', 'Y', 'admin', '2023-05-25 13:22:50', 'admin', '2023-05-25 15:02:42', '单位:小时,仅支持正整数', '{}'); +INSERT INTO sys_config VALUES ('{}', '账号黑名单开关', 'sys.account.blacklistOnOff', 'true', 'Y', 'admin', '2023-05-25 13:22:31', 'admin', '2023-05-25 13:57:14', '(true开启,false关闭)', '{}'); +INSERT INTO sys_config VALUES ('{}', '账号注册开关', 'sys.account.registerUser', 'false', 'Y', 'admin', '2023-05-25 13:21:38', 'admin', '2023-05-25 15:07:00', '(true开启,false关闭)', '{}'); +INSERT INTO sys_config VALUES ('{}', '登录验证码开关', 'sys.account.captchaOnOff', 'true', 'Y', 'admin', '2023-05-25 13:23:52', 'admin', '2023-06-05 13:43:00', '(true开启,false关闭)', '{}'); +INSERT INTO sys_config VALUES ('{}', '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-light', 'Y', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-25 13:26:27', '深色主题theme-dark,浅色主题theme-light', '{}'); +INSERT INTO sys_config VALUES ('{}', '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2022-08-15 18:01:28', '', NULL, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow', '{}'); +INSERT INTO sys_config VALUES ('{}', '账号允许同时在线', 'sys.account.allowBothOnline', 'true', 'Y', 'admin', '2023-05-28 14:28:05', 'admin', '2023-05-28 15:39:48', '(true允许,false禁止)', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/.gitkeep b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/.gitkeep new file mode 100644 index 0000000..ffece94 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/.gitkeep @@ -0,0 +1 @@ +null not found diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/online_user/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/online_user/button new file mode 100644 index 0000000..867ba9c --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/online_user/button @@ -0,0 +1,3 @@ +INSERT INTO sys_menu VALUES ('{}', '在线查询', '{}', 1, '#', '', '', 0, 0, 'F', '1', 'monitor:online:query', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '批量强退', '{}', 2, '#', '', '', 0, 0, 'F', '1', 'monitor:online:batchLogout', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '单条强退', '{}', 3, '#', '', '', 0, 0, 'F', '1', 'monitor:online:forceLogout', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/online_user/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/online_user/menu new file mode 100644 index 0000000..96548aa --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/monitor/online_user/menu @@ -0,0 +1 @@ +INSERT INTO sys_menu VALUES ('{}', '登录用户', '{}', 1, 'online', 'monitor/online/index', '', 0, 0, 'C', '1', 'monitor:online:list', 'online', 'admin', '2023-05-27 22:22:18', 'admin', '2023-05-30 09:49:35', '在线用户菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/config/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/config/button new file mode 100644 index 0000000..06792b3 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/config/button @@ -0,0 +1,4 @@ +INSERT INTO sys_menu VALUES ('{}', '参数查询', '{}', 1, '#', '', '', 0, 0, 'F', '1', 'system:config:query', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '参数新增', '{}', 2, '#', '', '', 0, 0, 'F', '1', 'system:config:add', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '参数修改', '{}', 3, '#', '', '', 0, 0, 'F', '1', 'system:config:edit', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '参数删除', '{}', 4, '#', '', '', 0, 0, 'F', '1', 'system:config:remove', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/config/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/config/menu new file mode 100644 index 0000000..931115d --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/config/menu @@ -0,0 +1 @@ +INSERT INTO sys_menu VALUES ('{}', '参数设置', '{}', 7, 'config', 'system/config/index', '', 0, 0, 'C', '1', 'system:config:list', 'edit', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-24 21:13:11', '参数设置菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dept/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dept/button new file mode 100644 index 0000000..cc46dc4 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dept/button @@ -0,0 +1,4 @@ +INSERT INTO sys_menu VALUES ('{}', '部门查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:dept:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '部门新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:dept:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '部门修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:dept:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '部门删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:dept:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dept/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dept/menu new file mode 100644 index 0000000..baad2a5 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dept/menu @@ -0,0 +1 @@ +INSERT INTO sys_menu VALUES ('{}', '部门管理', '{}', 4, 'dept', 'system/dept/index', '', 0, 0, 'C', '1', 'system:dept:list', 'tree', 'admin', '2023-04-23 14:35:29', '', NULL, '部门管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dict/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dict/button new file mode 100644 index 0000000..295b19c --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dict/button @@ -0,0 +1,5 @@ +INSERT INTO sys_menu VALUES ('{}', '字典查询', '{}', 1, '#', '', '', 0, 0, 'F', '1', 'system:dict:query', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '字典新增', '{}', 2, '#', '', '', 0, 0, 'F', '1', 'system:dict:add', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '字典修改', '{}', 3, '#', '', '', 0, 0, 'F', '1', 'system:dict:edit', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '字典删除', '{}', 4, '#', '', '', 0, 0, 'F', '1', 'system:dict:remove', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '字典导出', '{}', 5, '#', '', '', 0, 0, 'F', '1', 'system:dict:export', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dict/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dict/menu new file mode 100644 index 0000000..150286c --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/dict/menu @@ -0,0 +1 @@ +INSERT INTO sys_menu VALUES ('{}', '字典管理', '{}', 6, 'dict', 'system/dict/index', '', 0, 0, 'C', '1', 'system:dict:list', 'documentation', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-31 11:15:14', '字典管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/menu/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/menu/button new file mode 100644 index 0000000..3b6f4b9 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/menu/button @@ -0,0 +1,4 @@ +INSERT INTO sys_menu VALUES ('{}', '菜单查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:menu:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '菜单新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:menu:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '菜单修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:menu:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '菜单删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:menu:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/menu/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/menu/menu new file mode 100644 index 0000000..3f5201c --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/menu/menu @@ -0,0 +1 @@ +INSERT INTO sys_menu VALUES ('{}', '菜单管理', '{}', 3, 'menu', 'system/menu/index', '', 0, 0, 'C', '1', 'system:menu:list', 'tree-table', 'admin', '2023-04-23 14:35:29', '', NULL, '菜单管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/post/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/post/button new file mode 100644 index 0000000..760ab0c --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/post/button @@ -0,0 +1,5 @@ +INSERT INTO sys_menu VALUES ('{}', '岗位查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:post:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '岗位新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:post:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '岗位修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:post:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '岗位删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:post:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '岗位导出', '{}', 5, '', '', '', 0, 0, 'F', '1', 'system:post:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/post/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/post/menu new file mode 100644 index 0000000..f4fdda1 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/post/menu @@ -0,0 +1 @@ +INSERT INTO sys_menu VALUES ('{}', '岗位管理', '{}', 5, 'post', 'system/post/index', '', 0, 0, 'C', '1', 'system:post:list', 'post', 'admin', '2023-04-23 14:35:29', '', NULL, '岗位管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/role/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/role/button new file mode 100644 index 0000000..1c196e9 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/role/button @@ -0,0 +1,5 @@ +INSERT INTO sys_menu VALUES ('{}', '角色查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:role:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '角色新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:role:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '角色修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:role:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '角色删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:role:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '角色导出', '{}', 5, '', '', '', 0, 0, 'F', '1', 'system:role:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/role/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/role/menu new file mode 100644 index 0000000..050ad8b --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/role/menu @@ -0,0 +1 @@ +INSERT INTO sys_menu VALUES ('{}', '角色管理', '{}', 2, 'role', 'system/role/index', '', 0, 0, 'C', '1', 'system:role:list', 'peoples', 'admin', '2023-04-23 14:35:29', '', NULL, '角色管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/user/button b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/user/button new file mode 100644 index 0000000..783ab27 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/user/button @@ -0,0 +1,7 @@ +INSERT INTO sys_menu VALUES ('{}', '用户查询', '{}', 1, '', '', '', 0, 0, 'F', '1', 'system:user:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户新增', '{}', 2, '', '', '', 0, 0, 'F', '1', 'system:user:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户修改', '{}', 3, '', '', '', 0, 0, 'F', '1', 'system:user:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户删除', '{}', 4, '', '', '', 0, 0, 'F', '1', 'system:user:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户导出', '{}', 5, '', '', '', 0, 0, 'F', '1', 'system:user:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '用户导入', '{}', 6, '', '', '', 0, 0, 'F', '1', 'system:user:import', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); +INSERT INTO sys_menu VALUES ('{}', '重置密码', '{}', 7, '', '', '', 0, 0, 'F', '1', 'system:user:resetPwd', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/user/menu b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/user/menu new file mode 100644 index 0000000..ab0d732 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_menu/system/user/menu @@ -0,0 +1 @@ +INSERT INTO sys_menu VALUES ('{}', '用户管理', '{}', 1, 'user', 'system/user/index', '', 0, 0, 'C', '1', 'system:user:list', 'user', 'admin', '2023-04-23 14:35:29', '', NULL, '用户管理菜单', '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_post_data b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_post_data new file mode 100644 index 0000000..d1c13fb --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_post_data @@ -0,0 +1,4 @@ +INSERT INTO sys_post VALUES ('{}', 'ceo', '总经理', 1, '1', 'admin', '2023-05-19 14:06:53', 'admin', '2023-05-22 14:56:56', NULL, '{}'); +INSERT INTO sys_post VALUES ('{}', 'cto', '技术总监', 2, '1', 'admin', '2023-05-19 14:07:06', 'admin', '2023-05-22 14:57:10', NULL,'{}'); +INSERT INTO sys_post VALUES ('{}', 'hr', '人事', 3, '1', 'admin', '2023-05-19 14:07:16', '', NULL, NULL, '{}'); +INSERT INTO sys_post VALUES ('{}', 'acct', '会计', 4, '1', 'admin', '2023-05-19 14:07:51', '', NULL, NULL, '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_role_data b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_role_data new file mode 100644 index 0000000..f52b4b3 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_role_data @@ -0,0 +1,2 @@ +INSERT INTO sys_role VALUES ('{}', '超级管理员', 'admin', 1, '1', '1', 'admin', '2023-04-23 14:35:29', 'admin', '2023-05-31 11:05:52', '超级管理员', '{}'); +INSERT INTO sys_role VALUES ('{}', '测试', 'test', 1, '1', '1', 'admin', '2023-05-22 14:38:31', '', NULL, NULL, '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_user_data b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_user_data new file mode 100644 index 0000000..c081946 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/data/sys_user_data @@ -0,0 +1 @@ +INSERT INTO sys_user VALUES ('{}', NULL, 'admin', '超级管理员', '', '', '0', '', '$2a$10$mDfrzPMZuxvKeKmqUPA4hOgNC2Zdgb8vOgVL8hP8IIdT6fAWpe0Bm', '1', '', NULL, '', NULL, NULL, '{}'); diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/table/PostgreSQL/create_tables b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/table/PostgreSQL/create_tables new file mode 100644 index 0000000..be2588b --- /dev/null +++ b/qiaoba-modules/qiaoba-module-tenant/src/main/resources/init/table/PostgreSQL/create_tables @@ -0,0 +1,664 @@ + +-- ---------------------------- +-- Table structure for gen_table +-- ---------------------------- +DROP TABLE IF EXISTS "gen_table"; +CREATE TABLE "gen_table" ( + "table_id" varchar(20) NOT NULL, + "table_name" varchar(200) COLLATE "pg_catalog"."default", + "table_comment" varchar(500) COLLATE "pg_catalog"."default", + "sub_table_name" varchar(64) COLLATE "pg_catalog"."default", + "sub_table_fk_name" varchar(64) COLLATE "pg_catalog"."default", + "class_name" varchar(100) COLLATE "pg_catalog"."default", + "tpl_category" varchar(200) COLLATE "pg_catalog"."default", + "package_name" varchar(100) COLLATE "pg_catalog"."default", + "module_name" varchar(30) COLLATE "pg_catalog"."default", + "business_name" varchar(30) COLLATE "pg_catalog"."default", + "function_name" varchar(50) COLLATE "pg_catalog"."default", + "function_author" varchar(50) COLLATE "pg_catalog"."default", + "gen_type" char(1) COLLATE "pg_catalog"."default", + "gen_path" varchar(200) COLLATE "pg_catalog"."default", + "options" varchar(1000) COLLATE "pg_catalog"."default", + "create_by" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_by" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "gen_table"."table_id" IS '编号'; +COMMENT ON COLUMN "gen_table"."table_name" IS '表名称'; +COMMENT ON COLUMN "gen_table"."table_comment" IS '表描述'; +COMMENT ON COLUMN "gen_table"."sub_table_name" IS '关联子表的表名'; +COMMENT ON COLUMN "gen_table"."sub_table_fk_name" IS '子表关联的外键名'; +COMMENT ON COLUMN "gen_table"."class_name" IS '实体类名称'; +COMMENT ON COLUMN "gen_table"."tpl_category" IS '使用的模板(crud单表操作 tree树表操作)'; +COMMENT ON COLUMN "gen_table"."package_name" IS '生成包路径'; +COMMENT ON COLUMN "gen_table"."module_name" IS '生成模块名'; +COMMENT ON COLUMN "gen_table"."business_name" IS '生成业务名'; +COMMENT ON COLUMN "gen_table"."function_name" IS '生成功能名'; +COMMENT ON COLUMN "gen_table"."function_author" IS '生成功能作者'; +COMMENT ON COLUMN "gen_table"."gen_type" IS '生成代码方式(0zip压缩包 1自定义路径)'; +COMMENT ON COLUMN "gen_table"."gen_path" IS '生成路径(不填默认项目路径)'; +COMMENT ON COLUMN "gen_table"."options" IS '其它生成选项'; +COMMENT ON COLUMN "gen_table"."create_by" IS '创建者'; +COMMENT ON COLUMN "gen_table"."create_time" IS '创建时间'; +COMMENT ON COLUMN "gen_table"."update_by" IS '更新者'; +COMMENT ON COLUMN "gen_table"."update_time" IS '更新时间'; +COMMENT ON COLUMN "gen_table"."remark" IS '备注'; +COMMENT ON TABLE "gen_table" IS '代码生成业务表'; + +-- ---------------------------- +-- Table structure for gen_table_column +-- ---------------------------- +DROP TABLE IF EXISTS "gen_table_column"; +CREATE TABLE "gen_table_column" ( + "column_id" varchar(20) NOT NULL, + "table_id" varchar(64) COLLATE "pg_catalog"."default", + "column_name" varchar(200) COLLATE "pg_catalog"."default", + "column_comment" varchar(500) COLLATE "pg_catalog"."default", + "column_type" varchar(100) COLLATE "pg_catalog"."default", + "java_type" varchar(500) COLLATE "pg_catalog"."default", + "java_field" varchar(200) COLLATE "pg_catalog"."default", + "is_pk" char(1) COLLATE "pg_catalog"."default", + "is_increment" char(1) COLLATE "pg_catalog"."default", + "is_required" char(1) COLLATE "pg_catalog"."default", + "is_insert" char(1) COLLATE "pg_catalog"."default", + "is_edit" char(1) COLLATE "pg_catalog"."default", + "is_list" char(1) COLLATE "pg_catalog"."default", + "is_query" char(1) COLLATE "pg_catalog"."default", + "query_type" varchar(200) COLLATE "pg_catalog"."default", + "html_type" varchar(200) COLLATE "pg_catalog"."default", + "dict_type" varchar(200) COLLATE "pg_catalog"."default", + "sort" int4, + "create_by" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_by" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6) +) +; +COMMENT ON COLUMN "gen_table_column"."column_id" IS '编号'; +COMMENT ON COLUMN "gen_table_column"."table_id" IS '归属表编号'; +COMMENT ON COLUMN "gen_table_column"."column_name" IS '列名称'; +COMMENT ON COLUMN "gen_table_column"."column_comment" IS '列描述'; +COMMENT ON COLUMN "gen_table_column"."column_type" IS '列类型'; +COMMENT ON COLUMN "gen_table_column"."java_type" IS 'JAVA类型'; +COMMENT ON COLUMN "gen_table_column"."java_field" IS 'JAVA字段名'; +COMMENT ON COLUMN "gen_table_column"."is_pk" IS '是否主键(1是)'; +COMMENT ON COLUMN "gen_table_column"."is_increment" IS '是否自增(1是)'; +COMMENT ON COLUMN "gen_table_column"."is_required" IS '是否必填(1是)'; +COMMENT ON COLUMN "gen_table_column"."is_insert" IS '是否为插入字段(1是)'; +COMMENT ON COLUMN "gen_table_column"."is_edit" IS '是否编辑字段(1是)'; +COMMENT ON COLUMN "gen_table_column"."is_list" IS '是否列表字段(1是)'; +COMMENT ON COLUMN "gen_table_column"."is_query" IS '是否查询字段(1是)'; +COMMENT ON COLUMN "gen_table_column"."query_type" IS '查询方式(等于、不等于、大于、小于、范围)'; +COMMENT ON COLUMN "gen_table_column"."html_type" IS '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)'; +COMMENT ON COLUMN "gen_table_column"."dict_type" IS '字典类型'; +COMMENT ON COLUMN "gen_table_column"."sort" IS '排序'; +COMMENT ON COLUMN "gen_table_column"."create_by" IS '创建者'; +COMMENT ON COLUMN "gen_table_column"."create_time" IS '创建时间'; +COMMENT ON COLUMN "gen_table_column"."update_by" IS '更新者'; +COMMENT ON COLUMN "gen_table_column"."update_time" IS '更新时间'; +COMMENT ON TABLE "gen_table_column" IS '代码生成业务表字段'; + +-- ---------------------------- +-- Table structure for sys_config +-- ---------------------------- +DROP TABLE IF EXISTS "sys_config"; +CREATE TABLE "sys_config" ( + "config_id" varchar(20) NOT NULL, + "config_name" varchar(100) COLLATE "pg_catalog"."default", + "config_key" varchar(100) COLLATE "pg_catalog"."default", + "config_value" varchar(500) COLLATE "pg_catalog"."default", + "config_type" char(1) COLLATE "pg_catalog"."default", + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_config"."config_id" IS '参数主键'; +COMMENT ON COLUMN "sys_config"."config_name" IS '参数名称'; +COMMENT ON COLUMN "sys_config"."config_key" IS '参数键名'; +COMMENT ON COLUMN "sys_config"."config_value" IS '参数键值'; +COMMENT ON COLUMN "sys_config"."config_type" IS '系统内置(Y是 N否)'; +COMMENT ON COLUMN "sys_config"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_config"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_config"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_config"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_config"."remark" IS '备注'; +COMMENT ON TABLE "sys_config" IS '参数配置表'; + +-- ---------------------------- +-- Table structure for sys_dept +-- ---------------------------- +DROP TABLE IF EXISTS "sys_dept"; +CREATE TABLE "sys_dept" ( + "dept_id" varchar(20) NOT NULL, + "parent_id" varchar(20), + "ancestors" varchar(500) COLLATE "pg_catalog"."default", + "dept_name" varchar(30) COLLATE "pg_catalog"."default", + "order_num" int4, + "leader" varchar(20) COLLATE "pg_catalog"."default", + "phone" varchar(30) COLLATE "pg_catalog"."default", + "email" varchar(30) COLLATE "pg_catalog"."default", + "status" char(1) COLLATE "pg_catalog"."default", + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(255) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_dept"."dept_id" IS '部门id'; +COMMENT ON COLUMN "sys_dept"."parent_id" IS '父部门id'; +COMMENT ON COLUMN "sys_dept"."ancestors" IS '祖级列表'; +COMMENT ON COLUMN "sys_dept"."dept_name" IS '部门名称'; +COMMENT ON COLUMN "sys_dept"."order_num" IS '显示顺序'; +COMMENT ON COLUMN "sys_dept"."leader" IS '负责人ID'; +COMMENT ON COLUMN "sys_dept"."phone" IS '手机号'; +COMMENT ON COLUMN "sys_dept"."email" IS '邮箱'; +COMMENT ON COLUMN "sys_dept"."status" IS '部门状态(1正常 0停用)'; +COMMENT ON COLUMN "sys_dept"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_dept"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_dept"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_dept"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_dept"."remark" IS '备注'; +COMMENT ON COLUMN "sys_dept"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_dept" IS '部门表'; + +-- ---------------------------- +-- Table structure for sys_dict_data +-- ---------------------------- +DROP TABLE IF EXISTS "sys_dict_data"; +CREATE TABLE "sys_dict_data" ( + "dict_code" varchar(20) NOT NULL, + "dict_sort" int4, + "dict_label" varchar(100) COLLATE "pg_catalog"."default", + "dict_value" varchar(100) COLLATE "pg_catalog"."default", + "dict_type" varchar(100) COLLATE "pg_catalog"."default", + "css_class" varchar(100) COLLATE "pg_catalog"."default", + "list_class" varchar(100) COLLATE "pg_catalog"."default", + "status" char(1) COLLATE "pg_catalog"."default", + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_dict_data"."dict_code" IS '字典编码'; +COMMENT ON COLUMN "sys_dict_data"."dict_sort" IS '字典排序'; +COMMENT ON COLUMN "sys_dict_data"."dict_label" IS '字典标签'; +COMMENT ON COLUMN "sys_dict_data"."dict_value" IS '字典键值'; +COMMENT ON COLUMN "sys_dict_data"."dict_type" IS '字典类型'; +COMMENT ON COLUMN "sys_dict_data"."css_class" IS '样式属性(其他样式扩展)'; +COMMENT ON COLUMN "sys_dict_data"."list_class" IS '表格回显样式'; +COMMENT ON COLUMN "sys_dict_data"."status" IS '状态(0正常 1停用)'; +COMMENT ON COLUMN "sys_dict_data"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_dict_data"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_dict_data"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_dict_data"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_dict_data"."remark" IS '备注'; +COMMENT ON COLUMN "sys_dict_data"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_dict_data" IS '字典数据表'; + +-- ---------------------------- +-- Table structure for sys_dict_type +-- ---------------------------- +DROP TABLE IF EXISTS "sys_dict_type"; +CREATE TABLE "sys_dict_type" ( + "dict_id" varchar(20) NOT NULL, + "dict_name" varchar(100) COLLATE "pg_catalog"."default", + "dict_type" varchar(100) COLLATE "pg_catalog"."default", + "status" char(1) COLLATE "pg_catalog"."default", + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_dict_type"."dict_id" IS '字典主键'; +COMMENT ON COLUMN "sys_dict_type"."dict_name" IS '字典名称'; +COMMENT ON COLUMN "sys_dict_type"."dict_type" IS '字典类型'; +COMMENT ON COLUMN "sys_dict_type"."status" IS '状态(0正常 1停用)'; +COMMENT ON COLUMN "sys_dict_type"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_dict_type"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_dict_type"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_dict_type"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_dict_type"."remark" IS '备注'; +COMMENT ON COLUMN "sys_dict_type"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_dict_type" IS '字典类型表'; + +-- ---------------------------- +-- Table structure for sys_login_log +-- ---------------------------- +DROP TABLE IF EXISTS "sys_login_log"; +CREATE TABLE "sys_login_log" ( + "login_id" varchar(20) NOT NULL, + "device_sn" varchar(50) COLLATE "pg_catalog"."default", + "username" varchar(50) COLLATE "pg_catalog"."default", + "nickname" varchar(30) COLLATE "pg_catalog"."default", + "ip" varchar(30) COLLATE "pg_catalog"."default", + "address" varchar(255) COLLATE "pg_catalog"."default", + "browser" varchar(50) COLLATE "pg_catalog"."default", + "os" varchar(50) COLLATE "pg_catalog"."default", + "login_time" timestamp(6), + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_login_log"."device_sn" IS '设备编码'; +COMMENT ON COLUMN "sys_login_log"."username" IS '登录账号'; +COMMENT ON COLUMN "sys_login_log"."nickname" IS '用户名称'; +COMMENT ON COLUMN "sys_login_log"."ip" IS '访问IP'; +COMMENT ON COLUMN "sys_login_log"."address" IS '登录地点'; +COMMENT ON COLUMN "sys_login_log"."browser" IS '浏览器'; +COMMENT ON COLUMN "sys_login_log"."os" IS '操作系统'; +COMMENT ON COLUMN "sys_login_log"."login_time" IS '登录时间'; +COMMENT ON COLUMN "sys_login_log"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_login_log"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_login_log"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_login_log"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_login_log"."remark" IS '备注'; +COMMENT ON TABLE "sys_login_log" IS '登录日志'; + +-- ---------------------------- +-- Table structure for sys_menu +-- ---------------------------- +DROP TABLE IF EXISTS "sys_menu"; +CREATE TABLE "sys_menu" ( + "menu_id" varchar(20) NOT NULL, + "menu_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "parent_id" varchar(20), + "order_num" int4, + "path" varchar(200) COLLATE "pg_catalog"."default", + "component" varchar(255) COLLATE "pg_catalog"."default", + "query" varchar(255) COLLATE "pg_catalog"."default", + "is_frame" int4, + "is_cache" int4, + "menu_type" char(1) COLLATE "pg_catalog"."default", + "is_visible" char(1) COLLATE "pg_catalog"."default", + "perms" varchar(100) COLLATE "pg_catalog"."default", + "icon" varchar(100) COLLATE "pg_catalog"."default", + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_menu"."menu_id" IS '菜单ID'; +COMMENT ON COLUMN "sys_menu"."menu_name" IS '菜单名称'; +COMMENT ON COLUMN "sys_menu"."parent_id" IS '父菜单ID'; +COMMENT ON COLUMN "sys_menu"."order_num" IS '显示顺序'; +COMMENT ON COLUMN "sys_menu"."path" IS '路由地址'; +COMMENT ON COLUMN "sys_menu"."component" IS '组件路径'; +COMMENT ON COLUMN "sys_menu"."query" IS '路由参数'; +COMMENT ON COLUMN "sys_menu"."is_frame" IS '是否为外链(1是 0否)'; +COMMENT ON COLUMN "sys_menu"."is_cache" IS '是否缓存(1缓存 0不缓存)'; +COMMENT ON COLUMN "sys_menu"."menu_type" IS '菜单类型(M目录 C菜单 F按钮)'; +COMMENT ON COLUMN "sys_menu"."is_visible" IS '菜单状态(1显示 0隐藏)'; +COMMENT ON COLUMN "sys_menu"."perms" IS '权限标识'; +COMMENT ON COLUMN "sys_menu"."icon" IS '菜单图标'; +COMMENT ON COLUMN "sys_menu"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_menu"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_menu"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_menu"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_menu"."remark" IS '备注'; +COMMENT ON TABLE "sys_menu" IS '菜单权限表'; + +-- ---------------------------- +-- Table structure for sys_post +-- ---------------------------- +DROP TABLE IF EXISTS "sys_post"; +CREATE TABLE "sys_post" ( + "post_id" varchar(20) NOT NULL, + "post_code" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "post_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "post_sort" int4 NOT NULL, + "status" char(1) COLLATE "pg_catalog"."default" NOT NULL, + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_post"."post_id" IS '岗位ID'; +COMMENT ON COLUMN "sys_post"."post_code" IS '岗位编码'; +COMMENT ON COLUMN "sys_post"."post_name" IS '岗位名称'; +COMMENT ON COLUMN "sys_post"."post_sort" IS '显示顺序'; +COMMENT ON COLUMN "sys_post"."status" IS '状态(1正常 0停用)'; +COMMENT ON COLUMN "sys_post"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_post"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_post"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_post"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_post"."remark" IS '备注'; +COMMENT ON COLUMN "sys_post"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_post" IS '岗位信息表'; + +-- ---------------------------- +-- Table structure for sys_role +-- ---------------------------- +DROP TABLE IF EXISTS "sys_role"; +CREATE TABLE "sys_role" ( + "role_id" varchar(20) NOT NULL, + "role_name" varchar(30) COLLATE "pg_catalog"."default" NOT NULL, + "role_key" varchar(100) COLLATE "pg_catalog"."default" NOT NULL, + "role_sort" int4 NOT NULL, + "data_scope" char(1) COLLATE "pg_catalog"."default", + "status" char(1) COLLATE "pg_catalog"."default" NOT NULL, + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_role"."role_id" IS '角色ID'; +COMMENT ON COLUMN "sys_role"."role_name" IS '角色名称'; +COMMENT ON COLUMN "sys_role"."role_key" IS '角色权限字符串'; +COMMENT ON COLUMN "sys_role"."role_sort" IS '显示顺序'; +COMMENT ON COLUMN "sys_role"."data_scope" IS '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)'; +COMMENT ON COLUMN "sys_role"."status" IS '角色状态(1正常 0停用)'; +COMMENT ON COLUMN "sys_role"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_role"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_role"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_role"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_role"."remark" IS '备注'; +COMMENT ON COLUMN "sys_role"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_role" IS '角色信息表'; + +-- ---------------------------- +-- Table structure for sys_role_dept +-- ---------------------------- +DROP TABLE IF EXISTS "sys_role_dept"; +CREATE TABLE "sys_role_dept" ( + "role_id" varchar(20) NOT NULL, + "dept_id" varchar(20) NOT NULL, + "tenant_id" varchar(20) NOT NULL +) +; +COMMENT ON COLUMN "sys_role_dept"."role_id" IS '角色ID'; +COMMENT ON COLUMN "sys_role_dept"."dept_id" IS '部门ID'; +COMMENT ON COLUMN "sys_role_dept"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_role_dept" IS '角色和部门关联表'; + +-- ---------------------------- +-- Table structure for sys_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS "sys_role_menu"; +CREATE TABLE "sys_role_menu" ( + "role_id" varchar(20) NOT NULL, + "menu_id" varchar(20) NOT NULL, + "tenant_id" varchar(20) NOT NULL +) +; +COMMENT ON COLUMN "sys_role_menu"."role_id" IS '角色ID'; +COMMENT ON COLUMN "sys_role_menu"."menu_id" IS '菜单ID'; +COMMENT ON COLUMN "sys_role_menu"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_role_menu" IS '角色和菜单关联表'; + +-- ---------------------------- +-- Table structure for sys_tenant +-- ---------------------------- +DROP TABLE IF EXISTS "sys_tenant"; +CREATE TABLE "sys_tenant" ( + "tenant_id" varchar(20) NOT NULL, + "company_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "contact_name" varchar(30) COLLATE "pg_catalog"."default", + "contact_phone" varchar(20) COLLATE "pg_catalog"."default", + "address" varchar(255) COLLATE "pg_catalog"."default", + "profile" varchar(500) COLLATE "pg_catalog"."default", + "license_number" varchar(30) COLLATE "pg_catalog"."default", + "domain" varchar(50) COLLATE "pg_catalog"."default", + "expire_time" timestamp(6), + "account_count" varchar(20), + "status" char(1) COLLATE "pg_catalog"."default", + "mode" char(1) COLLATE "pg_catalog"."default", + "initialized" char(1) COLLATE "pg_catalog"."default", + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "sys_tenant"."company_name" IS '公司名称'; +COMMENT ON COLUMN "sys_tenant"."contact_name" IS '联系人名称'; +COMMENT ON COLUMN "sys_tenant"."contact_phone" IS '联系人电话'; +COMMENT ON COLUMN "sys_tenant"."address" IS '公司地址'; +COMMENT ON COLUMN "sys_tenant"."profile" IS '公司简介'; +COMMENT ON COLUMN "sys_tenant"."license_number" IS '统一社会信用代码'; +COMMENT ON COLUMN "sys_tenant"."domain" IS '域名'; +COMMENT ON COLUMN "sys_tenant"."expire_time" IS '过期时间'; +COMMENT ON COLUMN "sys_tenant"."account_count" IS '用户数量'; +COMMENT ON COLUMN "sys_tenant"."status" IS '状态'; +COMMENT ON COLUMN "sys_tenant"."mode" IS '模式'; +COMMENT ON COLUMN "sys_tenant"."initialized" IS '是否已初始化'; +COMMENT ON COLUMN "sys_tenant"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_tenant"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_tenant"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_tenant"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_tenant"."remark" IS '备注'; +COMMENT ON TABLE "sys_tenant" IS '租户表'; + +-- ---------------------------- +-- Table structure for sys_tenant_datasource +-- ---------------------------- +DROP TABLE IF EXISTS "sys_tenant_datasource"; +CREATE TABLE "sys_tenant_datasource" ( + "datasource_id" varchar(20) NOT NULL, + "type" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "ip" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "port" varchar(20) COLLATE "pg_catalog"."default" NOT NULL, + "db_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "schema_name" varchar(50) COLLATE "pg_catalog"."default", + "username" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "password" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "init_count" int4, + "min_count" int4, + "max_count" int4, + "is_primary" char(1) COLLATE "pg_catalog"."default" NOT NULL, + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) NOT NULL +) +; +COMMENT ON COLUMN "sys_tenant_datasource"."type" IS '类型'; +COMMENT ON COLUMN "sys_tenant_datasource"."ip" IS 'IP'; +COMMENT ON COLUMN "sys_tenant_datasource"."port" IS '端口'; +COMMENT ON COLUMN "sys_tenant_datasource"."db_name" IS '数据库名称'; +COMMENT ON COLUMN "sys_tenant_datasource"."schema_name" IS '模式名称'; +COMMENT ON COLUMN "sys_tenant_datasource"."username" IS '账号'; +COMMENT ON COLUMN "sys_tenant_datasource"."password" IS '密码'; +COMMENT ON COLUMN "sys_tenant_datasource"."init_count" IS '初始连接数'; +COMMENT ON COLUMN "sys_tenant_datasource"."min_count" IS '最小空闲数'; +COMMENT ON COLUMN "sys_tenant_datasource"."max_count" IS '最大连接数'; +COMMENT ON COLUMN "sys_tenant_datasource"."is_primary" IS '主要数据源'; +COMMENT ON COLUMN "sys_tenant_datasource"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_tenant_datasource"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_tenant_datasource"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_tenant_datasource"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_tenant_datasource"."remark" IS '备注'; +COMMENT ON TABLE "sys_tenant_datasource" IS '租户数据源'; + +-- ---------------------------- +-- Table structure for sys_user +-- ---------------------------- +DROP TABLE IF EXISTS "sys_user"; +CREATE TABLE "sys_user" ( + "user_id" varchar(20) NOT NULL, + "dept_id" varchar(20), + "username" varchar(30) COLLATE "pg_catalog"."default" NOT NULL, + "nickname" varchar(30) COLLATE "pg_catalog"."default" NOT NULL, + "email" varchar(50) COLLATE "pg_catalog"."default", + "phone" varchar(11) COLLATE "pg_catalog"."default", + "gender" char(1) COLLATE "pg_catalog"."default", + "avatar" varchar(100) COLLATE "pg_catalog"."default", + "password" varchar(100) COLLATE "pg_catalog"."default", + "status" char(1) COLLATE "pg_catalog"."default", + "create_user" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6), + "update_user" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6), + "remark" varchar(500) COLLATE "pg_catalog"."default", + "tenant_id" varchar(20) +) +; +COMMENT ON COLUMN "sys_user"."user_id" IS '用户ID'; +COMMENT ON COLUMN "sys_user"."dept_id" IS '部门ID'; +COMMENT ON COLUMN "sys_user"."username" IS '用户账号'; +COMMENT ON COLUMN "sys_user"."nickname" IS '用户昵称'; +COMMENT ON COLUMN "sys_user"."email" IS '用户邮箱'; +COMMENT ON COLUMN "sys_user"."phone" IS '手机号码'; +COMMENT ON COLUMN "sys_user"."gender" IS '用户性别(0男 1女 2未知)'; +COMMENT ON COLUMN "sys_user"."avatar" IS '头像地址'; +COMMENT ON COLUMN "sys_user"."password" IS '密码'; +COMMENT ON COLUMN "sys_user"."status" IS '帐号状态(1正常 0停用)'; +COMMENT ON COLUMN "sys_user"."create_user" IS '创建者'; +COMMENT ON COLUMN "sys_user"."create_time" IS '创建时间'; +COMMENT ON COLUMN "sys_user"."update_user" IS '更新者'; +COMMENT ON COLUMN "sys_user"."update_time" IS '更新时间'; +COMMENT ON COLUMN "sys_user"."remark" IS '备注'; +COMMENT ON COLUMN "sys_user"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_user" IS '用户信息表'; + +-- ---------------------------- +-- Table structure for sys_user_post +-- ---------------------------- +DROP TABLE IF EXISTS "sys_user_post"; +CREATE TABLE "sys_user_post" ( + "user_id" varchar(20) NOT NULL, + "post_id" varchar(20) NOT NULL, + "tenant_id" varchar(20) NOT NULL +) +; +COMMENT ON COLUMN "sys_user_post"."user_id" IS '用户ID'; +COMMENT ON COLUMN "sys_user_post"."post_id" IS '岗位ID'; +COMMENT ON COLUMN "sys_user_post"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_user_post" IS '用户与岗位关联表'; + +-- ---------------------------- +-- Table structure for sys_user_role +-- ---------------------------- +DROP TABLE IF EXISTS "sys_user_role"; +CREATE TABLE "sys_user_role" ( + "user_id" varchar(20) NOT NULL, + "role_id" varchar(20) NOT NULL, + "tenant_id" varchar(20) NOT NULL +) +; +COMMENT ON COLUMN "sys_user_role"."user_id" IS '用户ID'; +COMMENT ON COLUMN "sys_user_role"."role_id" IS '角色ID'; +COMMENT ON COLUMN "sys_user_role"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "sys_user_role" IS '用户和角色关联表'; + +-- ---------------------------- +-- Primary Key structure for table gen_table +-- ---------------------------- +ALTER TABLE "gen_table" ADD CONSTRAINT "gen_table_pkey" PRIMARY KEY ("table_id"); + +-- ---------------------------- +-- Primary Key structure for table gen_table_column +-- ---------------------------- +ALTER TABLE "gen_table_column" ADD CONSTRAINT "gen_table_column_pkey" PRIMARY KEY ("column_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_config +-- ---------------------------- +ALTER TABLE "sys_config" ADD CONSTRAINT "sys_config_pkey" PRIMARY KEY ("config_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_dept +-- ---------------------------- +ALTER TABLE "sys_dept" ADD CONSTRAINT "sys_dept_pkey" PRIMARY KEY ("dept_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_dict_data +-- ---------------------------- +ALTER TABLE "sys_dict_data" ADD CONSTRAINT "sys_dict_data_pkey" PRIMARY KEY ("dict_code"); + +-- ---------------------------- +-- Indexes structure for table sys_dict_type +-- ---------------------------- +CREATE INDEX "dict_type" ON "sys_dict_type" USING btree ( + "dict_type" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); + +-- ---------------------------- +-- Primary Key structure for table sys_dict_type +-- ---------------------------- +ALTER TABLE "sys_dict_type" ADD CONSTRAINT "sys_dict_type_pkey" PRIMARY KEY ("dict_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_login_log +-- ---------------------------- +ALTER TABLE "sys_login_log" ADD CONSTRAINT "sys_login_log_pkey" PRIMARY KEY ("login_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_menu +-- ---------------------------- +ALTER TABLE "sys_menu" ADD CONSTRAINT "sys_menu_pkey" PRIMARY KEY ("menu_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_post +-- ---------------------------- +ALTER TABLE "sys_post" ADD CONSTRAINT "sys_post_pkey" PRIMARY KEY ("post_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_role +-- ---------------------------- +ALTER TABLE "sys_role" ADD CONSTRAINT "sys_role_pkey" PRIMARY KEY ("role_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_role_dept +-- ---------------------------- +ALTER TABLE "sys_role_dept" ADD CONSTRAINT "sys_role_dept_pkey" PRIMARY KEY ("role_id", "dept_id", "tenant_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_role_menu +-- ---------------------------- +ALTER TABLE "sys_role_menu" ADD CONSTRAINT "sys_role_menu_pkey" PRIMARY KEY ("role_id", "menu_id", "tenant_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_tenant +-- ---------------------------- +ALTER TABLE "sys_tenant" ADD CONSTRAINT "sys_tenant_pkey" PRIMARY KEY ("tenant_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_tenant_datasource +-- ---------------------------- +ALTER TABLE "sys_tenant_datasource" ADD CONSTRAINT "sys_tenant_datasource_pkey" PRIMARY KEY ("datasource_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_user +-- ---------------------------- +ALTER TABLE "sys_user" ADD CONSTRAINT "sys_user_pkey" PRIMARY KEY ("user_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_user_post +-- ---------------------------- +ALTER TABLE "sys_user_post" ADD CONSTRAINT "sys_user_post_pkey" PRIMARY KEY ("user_id", "post_id", "tenant_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_user_role +-- ---------------------------- +ALTER TABLE "sys_user_role" ADD CONSTRAINT "sys_user_role_pkey" PRIMARY KEY ("user_id", "role_id", "tenant_id");