From 076955a04f2a0c5487d48d37202d7fd03b12b48f Mon Sep 17 00:00:00 2001 From: ailanyin Date: Thu, 15 Jun 2023 16:17:13 +0800 Subject: [PATCH] add --- .../qiaoba-boot-MySQL5.7.sql} | 71 +- .../PostgreSQL/qiaoba-boot-PostgreSQL14.sql | 794 ++++++++++++++++++ pom.xml | 8 + .../qiaoba/api/system/entity/SysDictData.java | 9 +- .../com/qiaoba/api/system/entity/SysRole.java | 8 +- .../api/system/entity/param/SysRoleParam.java | 10 +- .../api/system/entity/param/SysUserParam.java | 9 +- .../qiaoba/auth/aspectj/DataScopeAspect.java | 12 +- .../common/base/enums/DataBaseEnum.java | 13 +- .../common/base/utils/DatabaseUtil.java | 9 +- .../qiaoba-common-datasource/pom.xml | 9 +- .../config/DynamicDataSourceConfig.java | 23 +- .../monitor/DatasourceConnectionMonitor.java | 2 +- .../common/database/utils/JdbcUtil.java | 14 +- .../service/impl/SysDictDataServiceImpl.java | 1 + .../service/impl/SysRoleServiceImpl.java | 9 +- .../service/impl/SysUserServiceImpl.java | 4 +- .../main/resources/mapper/SysMenuMapper.xml | 2 +- .../main/resources/mapper/SysUserMapper.xml | 4 +- .../filters/DynamicDataSourceFilter.java | 3 + 20 files changed, 941 insertions(+), 73 deletions(-) rename document/db/{qiaoba-boot.sql => MySQL/qiaoba-boot-MySQL5.7.sql} (89%) create mode 100644 document/db/PostgreSQL/qiaoba-boot-PostgreSQL14.sql diff --git a/document/db/qiaoba-boot.sql b/document/db/MySQL/qiaoba-boot-MySQL5.7.sql similarity index 89% rename from document/db/qiaoba-boot.sql rename to document/db/MySQL/qiaoba-boot-MySQL5.7.sql index 8cd7de0..37cd80d 100644 --- a/document/db/qiaoba-boot.sql +++ b/document/db/MySQL/qiaoba-boot-MySQL5.7.sql @@ -11,7 +11,7 @@ Target Server Version : 50742 File Encoding : 65001 - Date: 14/06/2023 16:41:43 + Date: 15/06/2023 16:11:20 */ SET NAMES utf8mb4; @@ -95,7 +95,6 @@ CREATE TABLE `sys_dict_data` ( `dict_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典类型', `css_class` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '样式属性(其他样式扩展)', `list_class` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表格回显样式', - `is_default` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'N' COMMENT '是否默认(Y是 N否)', `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', `create_user` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', @@ -109,7 +108,7 @@ CREATE TABLE `sys_dict_data` ( -- ---------------------------- -- Records of sys_dict_data -- ---------------------------- -INSERT INTO `sys_dict_data` VALUES (1665587419228155906, 0, '2', '2', 'test', NULL, 'default', 'N', '1', 'admin', '2023-06-05 13:12:41', '', NULL, NULL, 1); +INSERT INTO `sys_dict_data` VALUES (1665587419228155906, 0, '2', '2', 'test', NULL, 'default', '1', 'admin', '2023-06-05 13:12:41', '', NULL, NULL, 1); -- ---------------------------- -- Table structure for sys_dict_type @@ -276,7 +275,7 @@ CREATE TABLE `sys_role` ( -- Records of sys_role -- ---------------------------- INSERT INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '1', '1', 'admin', '2023-04-23 14:35:29', 'admin', '2023-06-13 17:02:24', '超级管理员', 1); -INSERT INTO `sys_role` VALUES (1660535591067213826, '测试', 'test', 1, '1', '1', 'admin', '2023-05-22 14:38:31', '', NULL, NULL, 1); +INSERT INTO `sys_role` VALUES (1660535591067213826, '测试', 'test', 1, '4', '1', 'admin', '2023-05-22 14:38:31', 'admin', '2023-06-15 16:05:49', NULL, 1); -- ---------------------------- -- Table structure for sys_role_dept @@ -365,6 +364,64 @@ INSERT INTO `sys_role_menu` VALUES (1, 1666365996601196545, 1); INSERT INTO `sys_role_menu` VALUES (1, 1666366412382552066, 1); INSERT INTO `sys_role_menu` VALUES (1, 1668543448450719745, 1); INSERT INTO `sys_role_menu` VALUES (1, 1668544169384468481, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 2, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 100, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 101, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 102, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 103, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 104, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 105, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 106, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 109, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1000, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1001, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1002, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1003, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1004, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1005, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1006, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1007, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1008, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1009, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1010, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1011, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1012, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1013, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1014, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1015, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1016, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1017, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1018, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1019, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1020, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1021, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1022, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1023, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1024, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1025, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1026, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1027, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1028, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1029, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1030, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1031, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1032, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1033, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1046, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1047, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1048, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1663431933531869185, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1663432090671468545, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1663432193243172865, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1663446141111689218, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1666365593968984065, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1666365690861600770, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1666365815403069442, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1666365996601196545, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1666366412382552066, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1668543448450719745, 1); +INSERT INTO `sys_role_menu` VALUES (1660535591067213826, 1668544169384468481, 1); -- ---------------------------- -- Table structure for sys_tenant @@ -427,9 +484,9 @@ CREATE TABLE `sys_tenant_datasource` ( -- ---------------------------- -- Records of sys_tenant_datasource -- ---------------------------- -INSERT INTO `sys_tenant_datasource` VALUES (166160396877907998, 'MySQL', '192.168.0.202', '3306', 'qiaoba-boot', 'root', 'Root123456789.', 5, 10, 20, '1', 'admin', '2023-06-07 14:36:11', '', NULL, NULL, 2); +INSERT INTO `sys_tenant_datasource` VALUES (166160396877907998, 'MySQL', '192.168.0.202', '3306', 'qiaoba-boot', 'root', 'Root123456789.', 5, 10, 20, '0', 'admin', '2023-06-07 14:36:11', '', NULL, NULL, 2); INSERT INTO `sys_tenant_datasource` VALUES (166160396877907999, 'MySQL', '192.168.0.203', '3306', 'qiaoba-boot', 'root', 'Root123456789.', 5, 10, 20, '0', 'admin', '2023-06-07 14:36:11', '', NULL, NULL, 2); -INSERT INTO `sys_tenant_datasource` VALUES (166160396877908000, 'MySQL', '127.0.0.1', '3306', 'qiaoba-boot', 'root', 'root', 5, 10, 20, '0', 'admin', '2023-06-07 14:36:11', '', NULL, NULL, 2); +INSERT INTO `sys_tenant_datasource` VALUES (166160396877908000, 'PostgreSQL', '192.168.0.202', '5432', 'qiaoba-boot', 'postgres', 'postgres', 5, 10, 20, '1', 'admin', '2023-06-07 14:36:11', '', NULL, NULL, 2); -- ---------------------------- -- Table structure for sys_user @@ -459,7 +516,7 @@ CREATE TABLE `sys_user` ( -- Records of sys_user -- ---------------------------- INSERT INTO `sys_user` VALUES (1, 1659443064624918529, 'admin', '小王', '4567@163.com', '18800001124', '1', '/resource/2023/05/19/blob/37f932d6ae4541d7b9688de6ab0b9f50.blob', '$2a$10$otwytPwmUHPy04dCf8S6I.Za7D.xGQ5MJOdEQk8fWTHCWDJCayur.', '1', 'admin', '2023-05-08 15:16:53', 'admin', '2023-05-23 10:11:24', NULL, 1); -INSERT INTO `sys_user` VALUES (1660830718629277697, 1659443256656932865, 'admin1', 'qq', '', '', '0', '', '$2a$10$mDfrzPMZuxvKeKmqUPA4hOgNC2Zdgb8vOgVL8hP8IIdT6fAWpe0Bm', '1', 'admin', '2023-05-23 10:11:15', '', NULL, NULL, 1); +INSERT INTO `sys_user` VALUES (1660830718629277697, 1659443256656932865, 'admin1', 'qq', '', '', '0', '', '$2a$10$J4OOu6bmc6rXF1cH8JKxH.nXfeglU1Wq9Y5iL07P2VFlxLMSDCMVq', '1', 'admin', '2023-05-23 10:11:15', 'admin', '2023-06-15 16:06:06', NULL, 1); -- ---------------------------- -- Table structure for sys_user_post diff --git a/document/db/PostgreSQL/qiaoba-boot-PostgreSQL14.sql b/document/db/PostgreSQL/qiaoba-boot-PostgreSQL14.sql new file mode 100644 index 0000000..7bd871e --- /dev/null +++ b/document/db/PostgreSQL/qiaoba-boot-PostgreSQL14.sql @@ -0,0 +1,794 @@ +/* + Navicat Premium Data Transfer + + Source Server : PgSQL-虚拟机-202 + Source Server Type : PostgreSQL + Source Server Version : 140008 + Source Host : 192.168.0.202:5432 + Source Catalog : mydb + Source Schema : qiaoba-boot + + Target Server Type : PostgreSQL + Target Server Version : 140008 + File Encoding : 65001 + + Date: 15/06/2023 16:09:50 +*/ + + +-- ---------------------------- +-- Table structure for sys_config +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_config"; +CREATE TABLE "qiaoba-boot"."sys_config" ( + "config_id" varchar(64) COLLATE "pg_catalog"."default" 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(64) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."config_id" IS '参数主键'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."config_name" IS '参数名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."config_key" IS '参数键名'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."config_value" IS '参数键值'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."config_type" IS '系统内置(Y是 N否)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_config"."remark" IS '备注'; +COMMENT ON TABLE "qiaoba-boot"."sys_config" IS '参数配置表'; + +-- ---------------------------- +-- Records of sys_config +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_config" VALUES ('1661598740507910145', 'Token有效期', 'sys.token.expireTime', '96', 'Y', 'admin', '2023-05-25 13:22:50', 'admin', '2023-05-25 15:02:42', '单位:小时,仅支持正整数', '2'); +INSERT INTO "qiaoba-boot"."sys_config" VALUES ('1661602101802164225', '账号黑名单开关', 'sys.account.blacklistOnOff', 'true', 'Y', 'admin', '2023-05-25 13:22:31', 'admin', '2023-05-25 13:57:14', '(true开启,false关闭)', '2'); +INSERT INTO "qiaoba-boot"."sys_config" VALUES ('1661603407233077249', '账号注册开关', 'sys.account.registerUser', 'false', 'Y', 'admin', '2023-05-25 13:21:38', 'admin', '2023-05-25 15:07:00', '(true开启,false关闭)', '2'); +INSERT INTO "qiaoba-boot"."sys_config" VALUES ('1661603968779079681', '登录验证码开关', 'sys.account.captchaOnOff', 'false', 'Y', 'admin', '2023-05-25 13:23:52', 'admin', '2023-06-09 14:40:17', '(true开启,false关闭)', '2'); +INSERT INTO "qiaoba-boot"."sys_config" VALUES ('1661603968779079682', '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-light', 'Y', 'admin', '2022-08-15 18:01:28', 'admin', '2023-05-25 13:26:27', '深色主题theme-dark,浅色主题theme-light', '2'); +INSERT INTO "qiaoba-boot"."sys_config" VALUES ('1661603968779079683', '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2022-08-15 18:01:28', '', NULL, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow', '2'); +INSERT INTO "qiaoba-boot"."sys_config" VALUES ('1668426274817994753', '登陆最大错误次数', 'sys.account.loginErrorMaxCount', '10', 'Y', 'admin', '2023-06-13 09:13:16', 'admin', '2023-06-13 09:35:59', '超过次数, 就会被拉黑', '2'); +INSERT INTO "qiaoba-boot"."sys_config" VALUES ('1668428263694135297', '黑名单过期时间', 'sys.account.blacklistExpireTime', '30', 'Y', 'admin', '2023-06-13 09:21:11', 'admin', '2023-06-13 09:35:29', '拉黑时间, 单位:分钟, 仅支持正整数', '2'); + +-- ---------------------------- +-- Table structure for sys_dept +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_dept"; +CREATE TABLE "qiaoba-boot"."sys_dept" ( + "dept_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "parent_id" varchar(64) COLLATE "pg_catalog"."default", + "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(64) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."dept_id" IS '部门id'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."parent_id" IS '父部门id'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."ancestors" IS '祖级列表'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."dept_name" IS '部门名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."order_num" IS '显示顺序'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."leader" IS '负责人ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."phone" IS '手机号'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."email" IS '邮箱'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."status" IS '部门状态(1正常 0停用)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."remark" IS '备注'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dept"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_dept" IS '部门表'; + +-- ---------------------------- +-- Records of sys_dept +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_dept" VALUES ('1659442897402212353', '0', '0', '集团总公司', 1, 'Kitt', '18811112222', 'kitt@admin.com', '1', 'admin', '2023-05-19 14:16:32', 'admin', '2023-05-19 14:19:04', NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_dept" VALUES ('1659443006122766337', '1659442897402212353', '0,1659442897402212353', '安徽分部', 1, NULL, NULL, NULL, '1', 'admin', '2023-05-19 14:16:58', 'admin', '2023-05-19 14:17:19', NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_dept" VALUES ('1659443064624918529', '1659442897402212353', '0,1659442897402212353', '江苏分部', 2, NULL, NULL, NULL, '1', 'admin', '2023-05-19 14:17:12', 'admin', '2023-05-19 14:17:24', NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_dept" VALUES ('1659443154873757697', '1659443006122766337', '0,1659442897402212353,1659443006122766337', '合肥分公司', 1, NULL, NULL, NULL, '1', 'admin', '2023-05-19 14:17:34', '', NULL, NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_dept" VALUES ('1659443184389074946', '1659443006122766337', '0,1659442897402212353,1659443006122766337', '芜湖分公司', 2, NULL, NULL, NULL, '1', 'admin', '2023-05-19 14:17:41', '', NULL, NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_dept" VALUES ('1659443224335626242', '1659443064624918529', '0,1659442897402212353,1659443064624918529', '南京分公司', 1, NULL, NULL, NULL, '1', 'admin', '2023-05-19 14:17:50', '', NULL, NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_dept" VALUES ('1659443256656932865', '1659443064624918529', '0,1659442897402212353,1659443064624918529', '苏州分公司', 2, NULL, NULL, NULL, '1', 'admin', '2023-05-19 14:17:58', 'admin', '2023-05-25 13:31:01', NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_dept" VALUES ('1659443329390358529', '1659443006122766337', '0,1659442897402212353,1659443006122766337', '安庆分公司', 3, NULL, NULL, NULL, '1', 'admin', '2023-05-19 14:18:15', 'admin', '2023-05-19 14:39:34', NULL, '2'); + +-- ---------------------------- +-- Table structure for sys_dict_data +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_dict_data"; +CREATE TABLE "qiaoba-boot"."sys_dict_data" ( + "dict_code" varchar(64) COLLATE "pg_catalog"."default" 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(64) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."dict_code" IS '字典编码'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."dict_sort" IS '字典排序'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."dict_label" IS '字典标签'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."dict_value" IS '字典键值'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."dict_type" IS '字典类型'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."css_class" IS '样式属性(其他样式扩展)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."list_class" IS '表格回显样式'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."status" IS '状态(0正常 1停用)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."remark" IS '备注'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_data"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_dict_data" IS '字典数据表'; + +-- ---------------------------- +-- Records of sys_dict_data +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_dict_data" VALUES ('1665587419228155906', 0, '2', '2', 'test', NULL, 'default', '1', 'admin', '2023-06-05 13:12:41', '', NULL, NULL, '1'); + +-- ---------------------------- +-- Table structure for sys_dict_type +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_dict_type"; +CREATE TABLE "qiaoba-boot"."sys_dict_type" ( + "dict_id" varchar(64) COLLATE "pg_catalog"."default" 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(64) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."dict_id" IS '字典主键'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."dict_name" IS '字典名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."dict_type" IS '字典类型'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."status" IS '状态(0正常 1停用)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."remark" IS '备注'; +COMMENT ON COLUMN "qiaoba-boot"."sys_dict_type"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_dict_type" IS '字典类型表'; + +-- ---------------------------- +-- Records of sys_dict_type +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_dict_type" VALUES ('1665578778676703234', '测试', 'test', '1', 'admin', '2023-06-05 12:38:20', '', NULL, NULL, '1'); +INSERT INTO "qiaoba-boot"."sys_dict_type" VALUES ('1665587609699889154', '测试2', '测试2', '1', 'admin', '2023-06-05 13:13:26', '', NULL, NULL, '1'); + +-- ---------------------------- +-- Table structure for sys_menu +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_menu"; +CREATE TABLE "qiaoba-boot"."sys_menu" ( + "menu_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "menu_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, + "parent_id" varchar(64) COLLATE "pg_catalog"."default", + "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" char(1) COLLATE "pg_catalog"."default", + "is_cache" char(1) COLLATE "pg_catalog"."default", + "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(64) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."menu_id" IS '菜单ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."menu_name" IS '菜单名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."parent_id" IS '父菜单ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."order_num" IS '显示顺序'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."path" IS '路由地址'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."component" IS '组件路径'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."query" IS '路由参数'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."is_frame" IS '是否为外链(1是 0否)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."is_cache" IS '是否缓存(1缓存 0不缓存)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."menu_type" IS '菜单类型(M目录 C菜单 F按钮)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."is_visible" IS '菜单状态(1显示 0隐藏)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."perms" IS '权限标识'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."icon" IS '菜单图标'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_menu"."remark" IS '备注'; +COMMENT ON TABLE "qiaoba-boot"."sys_menu" IS '菜单权限表'; + +-- ---------------------------- +-- Records of sys_menu +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1', '系统管理', '0', 1, 'system', NULL, '', '0', '0', 'M', '1', '', 'system', 'admin', '2023-04-23 14:35:29', '', NULL, '系统管理目录', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('2', '系统监控', '0', 2, 'monitor', NULL, '', '0', '0', 'M', '1', '', 'monitor', 'admin', '2023-05-27 22:25:03', '', NULL, '系统监控目录', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('100', '用户管理', '1', 1, 'user', 'system/user/index', '', '0', '0', 'C', '1', 'system:user:list', 'user', 'admin', '2023-04-23 14:35:29', '', NULL, '用户管理菜单', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('101', '角色管理', '1', 2, 'role', 'system/role/index', '', '0', '0', 'C', '1', 'system:role:list', 'peoples', 'admin', '2023-04-23 14:35:29', '', NULL, '角色管理菜单', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('102', '菜单管理', '1', 3, 'menu', 'system/menu/index', '', '0', '0', 'C', '1', 'system:menu:list', 'tree-table', 'admin', '2023-04-23 14:35:29', '', NULL, '菜单管理菜单', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('103', '部门管理', '1', 4, 'dept', 'system/dept/index', '', '0', '0', 'C', '1', 'system:dept:list', 'tree', 'admin', '2023-04-23 14:35:29', '', NULL, '部门管理菜单', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('104', '岗位管理', '1', 5, 'post', 'system/post/index', '', '0', '0', 'C', '1', 'system:post:list', 'post', 'admin', '2023-04-23 14:35:29', '', NULL, '岗位管理菜单', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('105', '字典管理', '1', 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', '字典管理菜单', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('106', '参数设置', '1', 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', '参数设置菜单', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('109', '登录用户', '2', 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', '在线用户菜单', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1000', '用户查询', '100', 1, '', '', '', '0', '0', 'F', '1', 'system:user:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1001', '用户新增', '100', 2, '', '', '', '0', '0', 'F', '1', 'system:user:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1002', '用户修改', '100', 3, '', '', '', '0', '0', 'F', '1', 'system:user:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1003', '用户删除', '100', 4, '', '', '', '0', '0', 'F', '1', 'system:user:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1004', '用户导出', '100', 5, '', '', '', '0', '0', 'F', '1', 'system:user:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1005', '用户导入', '100', 6, '', '', '', '0', '0', 'F', '1', 'system:user:import', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1006', '重置密码', '100', 7, '', '', '', '0', '0', 'F', '1', 'system:user:resetPwd', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1007', '角色查询', '101', 1, '', '', '', '0', '0', 'F', '1', 'system:role:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1008', '角色新增', '101', 2, '', '', '', '0', '0', 'F', '1', 'system:role:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1009', '角色修改', '101', 3, '', '', '', '0', '0', 'F', '1', 'system:role:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1010', '角色删除', '101', 4, '', '', '', '0', '0', 'F', '1', 'system:role:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1011', '角色导出', '101', 5, '', '', '', '0', '0', 'F', '1', 'system:role:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1012', '菜单查询', '102', 1, '', '', '', '0', '0', 'F', '1', 'system:menu:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1013', '菜单新增', '102', 2, '', '', '', '0', '0', 'F', '1', 'system:menu:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1014', '菜单修改', '102', 3, '', '', '', '0', '0', 'F', '1', 'system:menu:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1015', '菜单删除', '102', 4, '', '', '', '0', '0', 'F', '1', 'system:menu:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1016', '部门查询', '103', 1, '', '', '', '0', '0', 'F', '1', 'system:dept:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1017', '部门新增', '103', 2, '', '', '', '0', '0', 'F', '1', 'system:dept:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1018', '部门修改', '103', 3, '', '', '', '0', '0', 'F', '1', 'system:dept:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1019', '部门删除', '103', 4, '', '', '', '0', '0', 'F', '1', 'system:dept:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1020', '岗位查询', '104', 1, '', '', '', '0', '0', 'F', '1', 'system:post:query', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1021', '岗位新增', '104', 2, '', '', '', '0', '0', 'F', '1', 'system:post:add', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1022', '岗位修改', '104', 3, '', '', '', '0', '0', 'F', '1', 'system:post:edit', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1023', '岗位删除', '104', 4, '', '', '', '0', '0', 'F', '1', 'system:post:remove', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1024', '岗位导出', '104', 5, '', '', '', '0', '0', 'F', '1', 'system:post:export', '#', 'admin', '2023-04-23 14:35:29', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1025', '字典查询', '105', 1, '#', '', '', '0', '0', 'F', '1', 'system:dict:query', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1026', '字典新增', '105', 2, '#', '', '', '0', '0', 'F', '1', 'system:dict:add', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1027', '字典修改', '105', 3, '#', '', '', '0', '0', 'F', '1', 'system:dict:edit', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1028', '字典删除', '105', 4, '#', '', '', '0', '0', 'F', '1', 'system:dict:remove', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1029', '字典导出', '105', 5, '#', '', '', '0', '0', 'F', '1', 'system:dict:export', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1030', '参数查询', '106', 1, '#', '', '', '0', '0', 'F', '1', 'system:config:query', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1031', '参数新增', '106', 2, '#', '', '', '0', '0', 'F', '1', 'system:config:add', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1032', '参数修改', '106', 3, '#', '', '', '0', '0', 'F', '1', 'system:config:edit', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1033', '参数删除', '106', 4, '#', '', '', '0', '0', 'F', '1', 'system:config:remove', '#', 'admin', '2022-08-15 18:01:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1046', '在线查询', '109', 1, '#', '', '', '0', '0', 'F', '1', 'monitor:online:query', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1047', '批量强退', '109', 2, '#', '', '', '0', '0', 'F', '1', 'monitor:online:batchLogout', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1048', '单条强退', '109', 3, '#', '', '', '0', '0', 'F', '1', 'monitor:online:forceLogout', '#', 'admin', '2023-05-27 22:22:59', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1663431933531869185', '租户管理', '1668543448450719745', 1, 'tenant', 'tenant/index', NULL, '0', '0', 'C', '1', 'tenant:list', 'logininfor', 'admin', '2023-05-30 14:27:33', 'admin', '2023-06-13 17:03:52', '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1663432090671468545', '新建租户', '1663431933531869185', 1, '', NULL, NULL, '0', '0', 'F', '1', 'tenant:add', '#', 'admin', '2023-05-30 14:28:10', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1663432193243172865', '修改租户', '1663431933531869185', 2, '', NULL, NULL, '0', '0', 'F', '1', 'tenant:edit', '#', 'admin', '2023-05-30 14:28:35', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1663446141111689218', '查询详情', '1663431933531869185', 3, '', NULL, NULL, '0', '0', 'F', '1', 'tenant:query', '#', 'admin', '2023-05-30 15:24:00', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1666365593968984065', '新增数据源', '1663431933531869185', 5, '', NULL, NULL, '0', '0', 'F', '1', 'tenant:datasource:add', '#', 'admin', '2023-06-07 16:44:52', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1666365690861600770', '修改数据源', '1663431933531869185', 6, '', NULL, NULL, '0', '0', 'F', '1', 'tenant:datasource:edit', '#', 'admin', '2023-06-07 16:45:15', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1666365815403069442', '删除数据源', '1663431933531869185', 7, '', NULL, NULL, '0', '0', 'F', '1', 'tenant:datasource:remove', '#', 'admin', '2023-06-07 16:45:45', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1666365996601196545', '数据源列表', '1663431933531869185', 8, '', NULL, NULL, '0', '0', 'F', '1', 'tenant:datasource:list', '#', 'admin', '2023-06-07 16:46:28', '', NULL, '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1666366412382552066', '删除租户', '1663431933531869185', 4, '', NULL, NULL, '0', '0', 'F', '1', 'tenant:remove', '#', 'admin', '2023-06-07 16:48:07', 'admin', '2023-06-13 16:52:20', '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1668543448450719745', '租户管理', '0', 3, 'tenant', NULL, NULL, '0', '0', 'M', '1', NULL, 'component', 'admin', '2023-06-13 16:58:53', 'admin', '2023-06-13 17:03:42', '', '2'); +INSERT INTO "qiaoba-boot"."sys_menu" VALUES ('1668544169384468481', '租户初始化', '1668543448450719745', 2, 'initialize', 'tenant/initialize', NULL, '0', '0', 'C', '0', NULL, '#', 'admin', '2023-06-13 17:01:45', 'admin', '2023-06-13 17:03:49', '', '2'); + +-- ---------------------------- +-- Table structure for sys_post +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_post"; +CREATE TABLE "qiaoba-boot"."sys_post" ( + "post_id" varchar(64) COLLATE "pg_catalog"."default" 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(64) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."post_id" IS '岗位ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."post_code" IS '岗位编码'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."post_name" IS '岗位名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."post_sort" IS '显示顺序'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."status" IS '状态(1正常 0停用)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."remark" IS '备注'; +COMMENT ON COLUMN "qiaoba-boot"."sys_post"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_post" IS '岗位信息表'; + +-- ---------------------------- +-- Records of sys_post +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_post" VALUES ('1659440467696431105', 'ceo', '总经理', 1, '1', 'admin', '2023-05-19 14:06:53', 'admin', '2023-05-22 14:56:56', NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_post" VALUES ('1659440519936487426', 'cto', '技术总监', 2, '1', 'admin', '2023-05-19 14:07:06', 'admin', '2023-05-22 14:57:10', NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_post" VALUES ('1659440562026328065', 'hr', '人事', 3, '1', 'admin', '2023-05-19 14:07:16', '', NULL, NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_post" VALUES ('1659440712018833410', 'acct', '会计', 4, '1', 'admin', '2023-05-19 14:07:51', '', NULL, NULL, '2'); + +-- ---------------------------- +-- Table structure for sys_role +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_role"; +CREATE TABLE "qiaoba-boot"."sys_role" ( + "role_id" varchar(64) COLLATE "pg_catalog"."default" 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(64) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."role_id" IS '角色ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."role_name" IS '角色名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."role_key" IS '角色权限字符串'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."role_sort" IS '显示顺序'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."data_scope" IS '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."status" IS '角色状态(1正常 0停用)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."remark" IS '备注'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_role" IS '角色信息表'; + +-- ---------------------------- +-- Records of sys_role +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_role" VALUES ('1', '超级管理员', 'admin', 1, '1', '1', 'admin', '2023-04-23 14:35:29', 'admin', '2023-06-13 17:02:24', '超级管理员', '2'); +INSERT INTO "qiaoba-boot"."sys_role" VALUES ('1660535591067213826', '测试', 'test', 2, '4', '1', 'admin', '2023-05-22 14:38:31', 'admin', '2023-06-15 15:18:56.881', NULL, '2'); + +-- ---------------------------- +-- Table structure for sys_role_dept +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_role_dept"; +CREATE TABLE "qiaoba-boot"."sys_role_dept" ( + "role_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "dept_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "tenant_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_role_dept"."role_id" IS '角色ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role_dept"."dept_id" IS '部门ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role_dept"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_role_dept" IS '角色和部门关联表'; + +-- ---------------------------- +-- Records of sys_role_dept +-- ---------------------------- + +-- ---------------------------- +-- Table structure for sys_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_role_menu"; +CREATE TABLE "qiaoba-boot"."sys_role_menu" ( + "role_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "menu_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "tenant_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_role_menu"."role_id" IS '角色ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role_menu"."menu_id" IS '菜单ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_role_menu"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_role_menu" IS '角色和菜单关联表'; + +-- ---------------------------- +-- Records of sys_role_menu +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '2', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '100', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '101', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '102', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '103', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '104', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '105', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '106', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '109', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1000', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1001', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1002', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1003', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1004', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1005', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1006', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1007', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1008', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1009', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1010', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1011', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1012', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1013', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1014', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1015', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1016', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1017', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1018', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1019', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1020', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1021', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1022', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1023', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1024', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1025', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1026', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1027', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1028', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1029', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1030', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1031', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1032', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1033', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1046', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1047', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1048', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1663431933531869185', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1663432090671468545', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1663432193243172865', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1663446141111689218', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1666365593968984065', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1666365690861600770', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1666365815403069442', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1666365996601196545', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1666366412382552066', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1668543448450719745', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1', '1668544169384468481', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1022', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1663431933531869185', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1021', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1020', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1666365815403069442', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1019', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1018', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1017', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1016', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1666365996601196545', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1015', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1014', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1013', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1012', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1668543448450719745', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1663446141111689218', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1666366412382552066', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1668544169384468481', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1033', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1032', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1031', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1030', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1029', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1028', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '2', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1027', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1026', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1025', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1024', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1023', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1663432193243172865', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1000', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1663432090671468545', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1666365690861600770', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1011', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1010', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1666365593968984065', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1008', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '100', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1007', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1006', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '101', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1005', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '102', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1004', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '103', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1048', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1003', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '104', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1047', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1002', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '105', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1046', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1001', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '106', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '109', '2'); +INSERT INTO "qiaoba-boot"."sys_role_menu" VALUES ('1660535591067213826', '1009', '2'); + +-- ---------------------------- +-- Table structure for sys_tenant +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_tenant"; +CREATE TABLE "qiaoba-boot"."sys_tenant" ( + "tenant_id" varchar(64) COLLATE "pg_catalog"."default" 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" int8, + "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 "qiaoba-boot"."sys_tenant"."company_name" IS '公司名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."contact_name" IS '联系人名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."contact_phone" IS '联系人电话'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."address" IS '公司地址'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."profile" IS '公司简介'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."license_number" IS '统一社会信用代码'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."domain" IS '域名'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."expire_time" IS '过期时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."account_count" IS '用户数量'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."status" IS '状态'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."mode" IS '模式'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."initialized" IS '是否已初始化'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant"."remark" IS '备注'; +COMMENT ON TABLE "qiaoba-boot"."sys_tenant" IS '租户表'; + +-- ---------------------------- +-- Records of sys_tenant +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_tenant" VALUES ('1', '主系统', '111', '111', '11', '11122', '111', NULL, '2099-05-30 23:59:59', 111, '1', '3', NULL, 'admin', '2023-05-30 15:18:04', 'admin', '2023-06-13 16:04:04', '111'); +INSERT INTO "qiaoba-boot"."sys_tenant" VALUES ('2', '副系统', '111', '111', '11', '11122', '111', NULL, '2023-06-30 15:27:02', 111, '1', '3', NULL, 'admin', '2023-06-07 14:36:11', 'admin', '2023-06-13 16:20:35', '111'); +INSERT INTO "qiaoba-boot"."sys_tenant" VALUES ('1668531266220535809', '而且其', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1', '3', '1', 'admin', '2023-06-13 16:10:28', 'admin', '2023-06-13 16:24:03', NULL); + +-- ---------------------------- +-- Table structure for sys_tenant_datasource +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_tenant_datasource"; +CREATE TABLE "qiaoba-boot"."sys_tenant_datasource" ( + "datasource_id" varchar(64) COLLATE "pg_catalog"."default" 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, + "name" varchar(100) COLLATE "pg_catalog"."default" NOT NULL, + "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(64) COLLATE "pg_catalog"."default" NOT NULL +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."type" IS '类型'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."ip" IS 'IP'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."port" IS '端口'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."name" IS '名称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."username" IS '账号'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."password" IS '密码'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."init_count" IS '初始连接数'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."min_count" IS '最小空闲数'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."max_count" IS '最大连接数'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."is_primary" IS '主要数据源'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_tenant_datasource"."remark" IS '备注'; +COMMENT ON TABLE "qiaoba-boot"."sys_tenant_datasource" IS '租户数据源'; + +-- ---------------------------- +-- Records of sys_tenant_datasource +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_tenant_datasource" VALUES ('166160396877907998', 'MySQL', '192.168.0.202', '3306', 'qiaoba-boot', 'root', 'Root123456789.', 5, 10, 20, '1', 'admin', '2023-06-07 14:36:11', '', NULL, NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_tenant_datasource" VALUES ('166160396877907999', 'MySQL', '192.168.0.203', '3306', 'qiaoba-boot', 'root', 'Root123456789.', 5, 10, 20, '1', 'admin', '2023-06-07 14:36:11', '', NULL, NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_tenant_datasource" VALUES ('166160396877908000', 'MySQL', '127.0.0.1', '3306', 'qiaoba-boot', 'root', 'root', 5, 10, 20, '1', 'admin', '2023-06-07 14:36:11', '', NULL, NULL, '2'); + +-- ---------------------------- +-- Table structure for sys_user +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_user"; +CREATE TABLE "qiaoba-boot"."sys_user" ( + "user_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "dept_id" varchar(64) COLLATE "pg_catalog"."default", + "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(64) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."user_id" IS '用户ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."dept_id" IS '部门ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."username" IS '用户账号'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."nickname" IS '用户昵称'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."email" IS '用户邮箱'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."phone" IS '手机号码'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."gender" IS '用户性别(0男 1女 2未知)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."avatar" IS '头像地址'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."password" IS '密码'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."status" IS '帐号状态(1正常 0停用)'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."create_user" IS '创建者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."create_time" IS '创建时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."update_user" IS '更新者'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."update_time" IS '更新时间'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."remark" IS '备注'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_user" IS '用户信息表'; + +-- ---------------------------- +-- Records of sys_user +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_user" VALUES ('1', '1659443064624918529', 'admin', '小王', '4567@163.com', '18800001124', '1', '/resource/2023/05/19/blob/37f932d6ae4541d7b9688de6ab0b9f50.blob', '$2a$10$otwytPwmUHPy04dCf8S6I.Za7D.xGQ5MJOdEQk8fWTHCWDJCayur.', '1', 'admin', '2023-05-08 15:16:53', 'admin', '2023-05-23 10:11:24', NULL, '2'); +INSERT INTO "qiaoba-boot"."sys_user" VALUES ('1660830718629277697', '1659443006122766337', 'admin1', 'qq', '', '', '0', '', '$2a$10$cuijP9wZFpayVeJvL89B7OCTU1/UdCvVIHdTbvf3UhQnohLG.OSJ.', '1', 'admin', '2023-05-23 10:11:15', 'admin', '2023-06-15 15:18:28.784', '23123', '2'); +INSERT INTO "qiaoba-boot"."sys_user" VALUES ('1669254011136786433', '1659443184389074946', 'abc12345', '12313', NULL, NULL, '0', NULL, '$2a$10$P2apMJ1qZgxHLffvuWgkgOVdm.LiWvDziTRFXTDfbnP6pmnt4e6IG', '1', 'admin', '2023-06-15 16:02:24.138', NULL, NULL, NULL, '2'); + +-- ---------------------------- +-- Table structure for sys_user_post +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_user_post"; +CREATE TABLE "qiaoba-boot"."sys_user_post" ( + "user_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "post_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "tenant_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_user_post"."user_id" IS '用户ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user_post"."post_id" IS '岗位ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user_post"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_user_post" IS '用户与岗位关联表'; + +-- ---------------------------- +-- Records of sys_user_post +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_user_post" VALUES ('1650123803828019202', '1659440467696431105', '2'); +INSERT INTO "qiaoba-boot"."sys_user_post" VALUES ('1650123803828019202', '1659440519936487426', '2'); +INSERT INTO "qiaoba-boot"."sys_user_post" VALUES ('1660830718629277697', '1659440467696431105', '2'); + +-- ---------------------------- +-- Table structure for sys_user_role +-- ---------------------------- +DROP TABLE IF EXISTS "qiaoba-boot"."sys_user_role"; +CREATE TABLE "qiaoba-boot"."sys_user_role" ( + "user_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "role_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "tenant_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL +) +; +COMMENT ON COLUMN "qiaoba-boot"."sys_user_role"."user_id" IS '用户ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user_role"."role_id" IS '角色ID'; +COMMENT ON COLUMN "qiaoba-boot"."sys_user_role"."tenant_id" IS '租户ID'; +COMMENT ON TABLE "qiaoba-boot"."sys_user_role" IS '用户和角色关联表'; + +-- ---------------------------- +-- Records of sys_user_role +-- ---------------------------- +INSERT INTO "qiaoba-boot"."sys_user_role" VALUES ('1', '1', '2'); +INSERT INTO "qiaoba-boot"."sys_user_role" VALUES ('1660830718629277697', '1660535591067213826', '2'); + +-- ---------------------------- +-- Primary Key structure for table sys_config +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."sys_config" ADD CONSTRAINT "sys_config_pkey" PRIMARY KEY ("config_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_dept +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."sys_dept" ADD CONSTRAINT "sys_dept_pkey" PRIMARY KEY ("dept_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_dict_data +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."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 "qiaoba-boot"."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 "qiaoba-boot"."sys_dict_type" ADD CONSTRAINT "sys_dict_type_pkey" PRIMARY KEY ("dict_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_menu +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."sys_menu" ADD CONSTRAINT "sys_menu_pkey" PRIMARY KEY ("menu_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_post +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."sys_post" ADD CONSTRAINT "sys_post_pkey" PRIMARY KEY ("post_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_role +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."sys_role" ADD CONSTRAINT "sys_role_pkey" PRIMARY KEY ("role_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_role_dept +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."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 "qiaoba-boot"."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 "qiaoba-boot"."sys_tenant" ADD CONSTRAINT "sys_tenant_pkey" PRIMARY KEY ("tenant_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_tenant_datasource +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."sys_tenant_datasource" ADD CONSTRAINT "sys_tenant_datasource_pkey" PRIMARY KEY ("datasource_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_user +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."sys_user" ADD CONSTRAINT "sys_user_pkey" PRIMARY KEY ("user_id"); + +-- ---------------------------- +-- Primary Key structure for table sys_user_post +-- ---------------------------- +ALTER TABLE "qiaoba-boot"."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 "qiaoba-boot"."sys_user_role" ADD CONSTRAINT "sys_user_role_pkey" PRIMARY KEY ("user_id", "role_id", "tenant_id"); diff --git a/pom.xml b/pom.xml index 77dd04d..7023c9e 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,8 @@ 5.8.18 8.0.33 + + 42.6.0 3.5.3.1 @@ -93,6 +95,12 @@ mysql-connector-java ${mysql-connector.version} + + + org.postgresql + postgresql + ${pgsql.version} + com.baomidou diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictData.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictData.java index d2ea3ae..8185f40 100644 --- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictData.java +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictData.java @@ -25,9 +25,6 @@ public class SysDictData extends BaseEntity { @TableId private String dictCode; - @Excel(name = "字典排序", width = 20) - private Long dictSort; - @Excel(name = "字典标签", width = 20) private String dictLabel; @@ -41,10 +38,10 @@ public class SysDictData extends BaseEntity { private String listClass; - @Excel(name = "是否默认", width = 20, replace = {"是_Y", "否_N"}) - private String isDefault; - @Excel(name = "状态", width = 20, replace = {"正常_1", "停用_0"}) private String status; + @Excel(name = "字典排序", width = 20) + private Long dictSort; + } diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRole.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRole.java index d3339a1..2981c2e 100644 --- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRole.java +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRole.java @@ -22,16 +22,16 @@ public class SysRole extends BaseEntity { private static final long serialVersionUID = 1L; @TableId - @Excel(name = "岗位序号", width = 20) + @Excel(name = "角色序号", width = 20) private String roleId; - @Excel(name = "岗位序号", width = 20) + @Excel(name = "角色名称", width = 20) private String roleName; - @Excel(name = "岗位序号", width = 20) + @Excel(name = "权限字符", width = 20) private String roleKey; - @Excel(name = "岗位序号", width = 20) + @Excel(name = "角色序号", width = 20) private Integer roleSort; @Excel(name = "数据范围", width = 20, replace = {"所有数据权限_1", "自定义数据权限_2", "本部门数据权限_3", "本部门及以下数据权限_4", "仅本人数据权限_5"}) diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysRoleParam.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysRoleParam.java index 6354dde..75f254b 100644 --- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysRoleParam.java +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysRoleParam.java @@ -3,8 +3,10 @@ package com.qiaoba.api.system.entity.param; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; +import java.util.Date; /** * 角色查询参数 @@ -28,9 +30,9 @@ public class SysRoleParam implements Serializable { @Schema(description = "状态(0->禁用,1->正常)") private String status; - @Schema(description = "开始时间") - private String beginTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date beginTime; - @Schema(description = "结束时间") - private String endTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; } diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysUserParam.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysUserParam.java index 9a2b911..1a67693 100644 --- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysUserParam.java +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysUserParam.java @@ -3,6 +3,9 @@ package com.qiaoba.api.system.entity.param; import com.qiaoba.common.base.entity.DataScopeParam; import lombok.Getter; import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; /** * 用户查询参数 @@ -27,8 +30,10 @@ public class SysUserParam extends DataScopeParam { private String status; - private String beginTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date beginTime; - private String endTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; } diff --git a/qiaoba-auth/src/main/java/com/qiaoba/auth/aspectj/DataScopeAspect.java b/qiaoba-auth/src/main/java/com/qiaoba/auth/aspectj/DataScopeAspect.java index 5bab27d..58d9594 100644 --- a/qiaoba-auth/src/main/java/com/qiaoba/auth/aspectj/DataScopeAspect.java +++ b/qiaoba-auth/src/main/java/com/qiaoba/auth/aspectj/DataScopeAspect.java @@ -91,20 +91,20 @@ public class DataScopeAspect { break; } else if (DATA_SCOPE_CUSTOM.equals(dataScope)) { sqlString.append(StrUtil.format( - " OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias, + " OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = '{}' ) ", deptAlias, role.getRoleId())); } else if (DATA_SCOPE_DEPT.equals(dataScope)) { - sqlString.append(StrUtil.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); + sqlString.append(StrUtil.format(" OR {}.dept_id = '{}' ", deptAlias, user.getDeptId())); } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) { sqlString.append(StrUtil.format( - " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or {} )", + " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = '{}' or {} )", deptAlias, user.getDeptId(), DatabaseUtil.handleFindInSet(user.getDeptId(), "ancestors"))); } else if (DATA_SCOPE_SELF.equals(dataScope)) { if (StrUtil.isNotBlank(userAlias)) { - sqlString.append(StrUtil.format(" OR {}.user_id = {} ", userAlias, user.getUserId())); + sqlString.append(StrUtil.format(" OR {}.user_id = '{}' ", userAlias, user.getUserId())); } else { // 数据权限为仅本人且没有userAlias别名不查询任何数据 - sqlString.append(StrUtil.format(" OR {}.dept_id = 0 ", deptAlias)); + sqlString.append(StrUtil.format(" OR {}.dept_id = '0' ", deptAlias)); } } conditions.add(dataScope); @@ -112,7 +112,7 @@ public class DataScopeAspect { // 多角色情况下,所有角色都不包含传递过来的权限字符,这个时候sqlString也会为空,所以要限制一下,不查询任何数据 if (CollUtil.isEmpty(conditions)) { - sqlString.append(StrUtil.format(" OR {}.dept_id = 0 ", deptAlias)); + sqlString.append(StrUtil.format(" OR {}.dept_id = '0' ", deptAlias)); } if (StrUtil.isNotBlank(sqlString)) { diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/enums/DataBaseEnum.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/enums/DataBaseEnum.java index 3117645..97feef9 100644 --- a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/enums/DataBaseEnum.java +++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/enums/DataBaseEnum.java @@ -36,7 +36,7 @@ public enum DataBaseEnum { * PostgreSQL */ POSTGRE_SQL("PostgreSQL", - "jdbc:postgresql://localhost:5432/{}?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true", + "jdbc:postgresql://{}:{}/mydb?currentSchema={}&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowMultiQueries=true", "org.postgresql.Driver"), /** @@ -50,17 +50,6 @@ public enum DataBaseEnum { private final String url; private final String driver; - public static DataBaseEnum find(String databaseProductName) { - if (StrUtil.isBlank(databaseProductName)) { - return null; - } - for (DataBaseEnum type : values()) { - if (type.getType().equals(databaseProductName)) { - return type; - } - } - return null; - } public static String getDriver(String type) { for (DataBaseEnum dataBaseEnum : values()) { diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/utils/DatabaseUtil.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/utils/DatabaseUtil.java index 9b6b196..5b8b881 100644 --- a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/utils/DatabaseUtil.java +++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/utils/DatabaseUtil.java @@ -23,15 +23,16 @@ public class DatabaseUtil { * @return 处理后的sql */ public static String handleFindInSet(Object var1, String var2) { - DataBaseEnum dataBaseType = DataBaseEnum.find(BaseContext.getDatabaseType()); + String databaseType = BaseContext.getDatabaseType(); + log.debug("租户ID: [{}], 数据源类型: {}", BaseContext.getTenantId(), databaseType); String var = Convert.toStr(var1); - if (dataBaseType == DataBaseEnum.SQL_SERVER) { + if (DataBaseEnum.SQL_SERVER.getType().equals(databaseType)) { // charindex(',100,' , ',0,100,101,') <> 0 return "charindex('," + var + ",' , ','+" + var2 + "+',') <> 0"; - } else if (dataBaseType == DataBaseEnum.POSTGRE_SQL) { + } else if (DataBaseEnum.POSTGRE_SQL.getType().equals(databaseType)) { // (select position(',100,' in ',0,100,101,')) <> 0 return "(select position('," + var + ",' in ','||" + var2 + "||',')) <> 0"; - } else if (dataBaseType == DataBaseEnum.ORACLE) { + } else if (DataBaseEnum.ORACLE.getType().equals(databaseType)) { // instr(',0,100,101,' , ',100,') <> 0 return "instr(','||" + var2 + "||',' , '," + var + ",') <> 0"; } diff --git a/qiaoba-commons/qiaoba-common-datasource/pom.xml b/qiaoba-commons/qiaoba-common-datasource/pom.xml index bdce586..d2a1702 100644 --- a/qiaoba-commons/qiaoba-common-datasource/pom.xml +++ b/qiaoba-commons/qiaoba-common-datasource/pom.xml @@ -17,11 +17,16 @@ com.alibaba druid-spring-boot-starter - + mysql mysql-connector-java + + + org.postgresql + postgresql + com.baomidou @@ -33,4 +38,4 @@ - \ No newline at end of file + diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/DynamicDataSourceConfig.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/DynamicDataSourceConfig.java index da9b847..4ad4dd5 100644 --- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/DynamicDataSourceConfig.java +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/DynamicDataSourceConfig.java @@ -3,6 +3,7 @@ package com.qiaoba.common.database.config; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.DruidPooledConnection; import com.qiaoba.common.base.constants.TenantConstant; import com.qiaoba.common.base.context.BaseContext; import com.qiaoba.common.base.enums.BaseEnum; @@ -64,6 +65,11 @@ public class DynamicDataSourceConfig { */ public static List TENANT_IDS = ListUtil.toList(TenantConstant.DEFAULT_TENANT_ID); + /** + * 租户数据源类型 + */ + public static Map TENANT_DATASOURCE_TYPE_MAP = new ConcurrentHashMap<>(); + /** * 把DynamicDataSourceContext 纳入容器管理,其他地方使用DynamicDataSourceConfig 类可以直接从容器取对象,并调用freshDataSource方法 */ @@ -83,7 +89,7 @@ public class DynamicDataSourceConfig { private void initDefault() { List dataSources = dataSourceProperties.getDataSources(); // 0索引作为主数据源 - addPrimaryMap(DynamicDatasourceConstant.MASTER_PREFIX + TenantConstant.DEFAULT_TENANT_ID, buildDataSource(dataSources.get(0))); + addPrimaryMap(DynamicDatasourceConstant.MASTER_PREFIX + TenantConstant.DEFAULT_TENANT_ID, buildDataSource(TenantConstant.DEFAULT_TENANT_ID, dataSources.get(0))); dataSources.remove(0); // 非0索引的备用 addBackupMap(TenantConstant.DEFAULT_TENANT_ID, dataSources); @@ -99,7 +105,7 @@ public class DynamicDataSourceConfig { for (int i = 0; i < dataSources.size(); i++) { DynamicDataSource dynamicDataSource = dataSources.get(i); if (BaseEnum.YES.getCode().equals(dynamicDataSource.getIsPrimary())) { - addPrimaryMap(DynamicDatasourceConstant.MASTER_PREFIX + tenantId, buildDataSource(dataSources.get(i))); + addPrimaryMap(DynamicDatasourceConstant.MASTER_PREFIX + tenantId, buildDataSource(dataSources.get(i).getTenantId(), dataSources.get(i))); // 去除主要数据源,剩下皆为备用数据源 dataSources.remove(i); break; @@ -125,11 +131,11 @@ public class DynamicDataSourceConfig { dataSource.freshDataSource(PRIMARY_DATASOURCE_MAP); } - public static Object buildDataSource(DynamicDataSource dynamicDataSource) { - log.debug("正在创建数据源DataSource, 租户: {}", dynamicDataSource.getTenantId()); + public static Object buildDataSource(String tenantId, DynamicDataSource dynamicDataSource) { + log.debug("正在创建数据源DataSource, 租户: {}", tenantId); boolean connect = JdbcUtil.checkConnect(dynamicDataSource.getDriver(), dynamicDataSource.getUrl(), dynamicDataSource.getUsername(), dynamicDataSource.getPassword()); if (!connect) { - log.error("租户: {} 数据源连接失败, Url: {}", dynamicDataSource.getTenantId(), dynamicDataSource.getUrl()); + log.error("租户: {} 数据源连接失败, Url: {}", tenantId, dynamicDataSource.getUrl()); return null; } DruidDataSource dataSource = new DruidDataSource(); @@ -142,7 +148,13 @@ public class DynamicDataSourceConfig { dataSource.setMaxActive(dynamicDataSource.getMaxActive()); dataSource.setKeepAlive(false); try { + // 初始化数据源 dataSource.init(); + // 将数据源的类型保存 + DruidPooledConnection connection = dataSource.getConnection(); + TENANT_DATASOURCE_TYPE_MAP.put(tenantId, connection.getMetaData().getDatabaseProductName()); + // 归还 connection + connection.close(); return dataSource; } catch (Exception e) { dataSource.close(); @@ -184,5 +196,6 @@ public class DynamicDataSourceConfig { public void setDefaultSetting() { BaseContext.setDataSource(DynamicDatasourceConstant.MASTER_PREFIX + TenantConstant.DEFAULT_TENANT_ID); BaseContext.setTenantId(TenantConstant.DEFAULT_TENANT_ID); + BaseContext.setDatabaseType(TENANT_DATASOURCE_TYPE_MAP.get(TenantConstant.DEFAULT_TENANT_ID)); } } diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/monitor/DatasourceConnectionMonitor.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/monitor/DatasourceConnectionMonitor.java index d86b144..f90fd9d 100644 --- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/monitor/DatasourceConnectionMonitor.java +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/monitor/DatasourceConnectionMonitor.java @@ -114,7 +114,7 @@ public class DatasourceConnectionMonitor { Integer backupIndex = null; for (int i = 0; i < dataSources.size(); i++) { - Object dynamicDataSource = DynamicDataSourceConfig.buildDataSource(dataSources.get(i)); + Object dynamicDataSource = DynamicDataSourceConfig.buildDataSource(tenantId, dataSources.get(i)); // 不是空,说明备用数据源有用 if (Objects.nonNull(dynamicDataSource)) { dynamicDataSourceConfig.changePrimaryDatasource(tenantId, dynamicDataSource); 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 374ec23..382cb64 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 @@ -6,7 +6,6 @@ import com.qiaoba.common.base.exceptions.ServiceException; import java.sql.Connection; import java.sql.DriverManager; -import java.sql.SQLException; /** * JdbcUtil @@ -29,15 +28,12 @@ public class JdbcUtil { public static boolean checkConnect(String driver, String url, String username, String password) { Connection conn = null; try { - try { - Class.forName(driver); - //建立连接 - conn = DriverManager.getConnection(url, username, password); - return true; - } catch (SQLException e) { - return false; - } + Class.forName(driver); + //建立连接 + conn = DriverManager.getConnection(url, username, password); + return true; } catch (Exception e) { + e.printStackTrace(); return false; } finally { IoUtil.close(conn); diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictDataServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictDataServiceImpl.java index 5aee900..e76042a 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictDataServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictDataServiceImpl.java @@ -111,6 +111,7 @@ public class SysDictDataServiceImpl implements SysDictDataService { private QueryWrapper param2Wrapper(SysDictDataParam param) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() + .orderByAsc(SysDictData::getDictSort) .like(StrUtil.isNotBlank(param.getDictType()), SysDictData::getDictType, param.getDictType()) .like(StrUtil.isNotBlank(param.getDictLabel()), SysDictData::getDictLabel, param.getDictLabel()) .eq(StrUtil.isNotBlank(param.getStatus()), SysDictData::getStatus, param.getStatus()); diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysRoleServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysRoleServiceImpl.java index 198d873..94fe5a8 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysRoleServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysRoleServiceImpl.java @@ -23,10 +23,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.util.*; /** * 角色管理 服务层实现 @@ -133,8 +130,8 @@ public class SysRoleServiceImpl implements SysRoleService { wrapper.lambda() .orderByAsc(SysRole::getRoleSort) .eq(StrUtil.isNotBlank(param.getStatus()), SysRole::getStatus, param.getStatus()) - .ge(StrUtil.isNotBlank(param.getBeginTime()), SysRole::getCreateTime, param.getBeginTime()) - .le(StrUtil.isNotBlank(param.getEndTime()), SysRole::getCreateTime, param.getEndTime()) + .ge(Objects.nonNull(param.getBeginTime()), SysRole::getCreateTime, param.getBeginTime()) + .le(Objects.nonNull(param.getEndTime()), SysRole::getCreateTime, param.getEndTime()) .like(StrUtil.isNotBlank(param.getRoleName()), SysRole::getRoleName, param.getRoleName()) .like(StrUtil.isNotBlank(param.getRoleKey()), SysRole::getRoleKey, param.getRoleKey()); return wrapper; diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysUserServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysUserServiceImpl.java index 01bd8ba..7caa2fd 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysUserServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysUserServiceImpl.java @@ -158,8 +158,8 @@ public class SysUserServiceImpl implements SysUserService { .orderByAsc(SysUser::getCreateTime) .eq(StrUtil.isNotBlank(sysUserParam.getDeptId()), SysUser::getDeptId, sysUserParam.getDeptId()) .eq(StrUtil.isNotBlank(sysUserParam.getStatus()), SysUser::getStatus, sysUserParam.getStatus()) - .ge(StrUtil.isNotBlank(sysUserParam.getBeginTime()), SysUser::getCreateTime, sysUserParam.getBeginTime()) - .le(StrUtil.isNotBlank(sysUserParam.getEndTime()), SysUser::getCreateTime, sysUserParam.getEndTime()) + .ge(Objects.nonNull(sysUserParam.getBeginTime()), SysUser::getCreateTime, sysUserParam.getBeginTime()) + .le(Objects.nonNull(sysUserParam.getEndTime()), SysUser::getCreateTime, sysUserParam.getEndTime()) .like(StrUtil.isNotBlank(sysUserParam.getNickname()), SysUser::getNickname, sysUserParam.getNickname()) .like(StrUtil.isNotBlank(sysUserParam.getPhone()), SysUser::getPhone, sysUserParam.getPhone()); return wrapper; diff --git a/qiaoba-modules/qiaoba-module-system/src/main/resources/mapper/SysMenuMapper.xml b/qiaoba-modules/qiaoba-module-system/src/main/resources/mapper/SysMenuMapper.xml index 3ed5d2e..9a204c1 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/resources/mapper/SysMenuMapper.xml +++ b/qiaoba-modules/qiaoba-module-system/src/main/resources/mapper/SysMenuMapper.xml @@ -33,7 +33,7 @@