From aa2b64bd7fd77b065b08fee39521d772c0b39fa4 Mon Sep 17 00:00:00 2001
From: chenhj <chenhj@lunor.cn>
Date: 星期日, 25 五月 2025 00:43:01 +0800
Subject: [PATCH] Merge pull request 'chen' (#8) from chen into master

---
 ruoyi-admin/src/main/resources/db/beforeSql/mysql/quartz.sql                                                            |    0 
 ruoyi-admin/src/main/resources/application.yml.example                                                                  |   16 
 ruoyi-admin/src/main/resources/logback.xml.example                                                                      |    2 
 ruoyi-admin/pom.xml                                                                                                     |   35 +
 ruoyi-admin/src/main/resources/db/beforeSql/mysql/ry_20250417.sql                                                       |    0 
 ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__QRTZ.sql                                              |  354 +++++++++++
 ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql                                               | 1285 +++++++++++++++++++++++++++++++++++++++++
 pom.xml                                                                                                                 |    7 
 ruoyi-admin/src/main/resources/application-druid.yml.example                                                            |   20 
 ruoyi-system/src/main/resources/db/migration/postgresql/postgresql/V20250525003447__create_table_storage_attachment.sql |   25 
 ruoyi-system/src/main/resources/db/migration/postgresql/postgresql/V20250525003427__create_table_storage_blob.sql       |   20 
 project.md                                                                                                              |   52 +
 12 files changed, 1,799 insertions(+), 17 deletions(-)

diff --git a/pom.xml b/pom.xml
index 857f440..80cc54d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,6 +34,7 @@
         <jaxb-api.version>2.3.1</jaxb-api.version>
         <jakarta.version>6.0.0</jakarta.version>
         <springdoc.version>2.6.0</springdoc.version>
+        <postgresql.version>42.7.3</postgresql.version>
     </properties>
 
     <!-- 渚濊禆澹版槑 -->
@@ -185,10 +186,10 @@
                 <version>${ruoyi.version}</version>
             </dependency>
 
-            <!--  flyway 鏁版嵁搴撹縼绉诲伐鍏� -->
             <dependency>
-                <groupId>org.flywaydb</groupId>
-                <artifactId>flyway-core</artifactId>
+                <groupId>org.postgresql</groupId>
+                <artifactId>postgresql</artifactId>
+                <version>${postgresql.version}</version>
             </dependency>
 
         </dependencies>
diff --git a/project.md b/project.md
new file mode 100644
index 0000000..6c23933
--- /dev/null
+++ b/project.md
@@ -0,0 +1,52 @@
+## 鎻掍欢瑙f瀽
+
+### 鏁版嵁搴撹縼绉诲伐鍏�
+
+https://documentation.red-gate.com/fd/
+
+pom.xml 澧炲姞閰嶇疆
+```xml
+<!--  flyway 鏁版嵁搴撹縼绉诲伐鍏� -->
+<dependency>
+    <groupId>org.flywaydb</groupId>
+    <artifactId>flyway-core</artifactId>
+    <version>10.11.0</version> <!-- 鎴栨洿楂樼増鏈紝濡� 10.11.0 -->
+</dependency>
+
+```
+
+mysql杩佺Щ
+```xml
+<dependency>
+    <groupId>org.flywaydb</groupId>
+    <artifactId>flyway-mysql</artifactId>
+</dependency>
+```
+
+pgsql杩佺Щ
+```xml
+<dependency>
+    <groupId>org.flywaydb</groupId>
+    <artifactId>flyway-database-postgresql</artifactId>
+</dependency>
+```
+
+applcation.yml 澧炲姞閰嶇疆
+```yml
+  flyway:
+    enabled: true
+    baseline-on-migrate: true
+    baseline-version: 20230720000000
+    clean-disabled: true
+    #鎸囧畾sql鏂囦欢璺緞
+    locations:
+      - classpath:db/migration/postgresql
+```
+璇峰湪姣忎竴涓ā鍧楃殑src/main/resources/db/migration/postgresql涓嬪垱寤簊ql鏂囦欢锛屾病鏈夎鎵嬪姩鏂板鐩綍
+
+杩佺Щ鏂囦欢鍛藉悕瑙勫垯V2023072000000__create_table_note_template.sql
+
+寮�鍙戞椂鏈熷彲淇敼鍘嗗彶sql鑴氭湰锛屾姇浜ц浣跨敤鏂板sql鏂囦欢淇敼鏁版嵁搴擄紝绂佹鐩存帴淇敼鏁版嵁搴�
+
+### rabbitmq 娣诲姞寤舵椂闃熷垪鎻掍欢
+https://blog.csdn.net/zsh66666666/article/details/131077656
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 5a17b7e..33d0aba 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -36,6 +36,32 @@
             <artifactId>mysql-connector-j</artifactId>
         </dependency>
 
+        <!--  flyway 鏁版嵁搴撹縼绉诲伐鍏� -->
+        <dependency>
+            <groupId>org.flywaydb</groupId>
+            <artifactId>flyway-core</artifactId>
+            <version>10.11.0</version> <!-- 鎴栨洿楂樼増鏈紝濡� 10.11.0 -->
+        </dependency>
+
+        <!--  mysql杩佺Щ  -->
+        <dependency>
+            <groupId>org.flywaydb</groupId>
+            <artifactId>flyway-mysql</artifactId>
+        </dependency>
+
+        <!--  pgsql杩佺Щ  -->
+        <dependency>
+            <groupId>org.flywaydb</groupId>
+            <artifactId>flyway-database-postgresql</artifactId>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.flywaydb</groupId>
+            <artifactId>flyway-maven-plugin</artifactId>
+            <version>10.11.0</version>
+        </dependency>
+
         <!-- 鏍稿績妯″潡-->
         <dependency>
             <groupId>com.ruoyi</groupId>
@@ -53,6 +79,13 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-generator</artifactId>
         </dependency>
+
+        <!-- postgresql椹卞姩鍖� -->
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+        </dependency>
+
 
     </dependencies>
 
@@ -81,7 +114,7 @@
                     <failOnMissingWebXml>false</failOnMissingWebXml>
                     <warName>${project.artifactId}</warName>
                 </configuration>   
-           </plugin>   
+           </plugin>
         </plugins>
         <finalName>${project.artifactId}</finalName>
     </build>
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml.example b/ruoyi-admin/src/main/resources/application-druid.yml.example
index bb5cdec..4d78ad4 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml.example
+++ b/ruoyi-admin/src/main/resources/application-druid.yml.example
@@ -2,20 +2,24 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+#        driverClassName: com.mysql.cj.jdbc.Driver     # mysql椹卞姩
+        driverClassName: org.postgresql.Driver
         druid:
             # 涓诲簱鏁版嵁婧�
             master:
-                url: jdbc:mysql://localhost:3306/ry-zd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                username: root
-                password: 123456
+#                mysql
+#                url: jdbc:mysql://124.220.0.228:3300/ruoyi-java?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+#                pg
+                url: jdbc:postgresql://lunor.cn:5431/ruoyi-java
+                username: test
+                password: chj123456
             # 浠庡簱鏁版嵁婧�
             slave:
                 # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
                 enabled: false
-                url: 
-                username: 
-                password: 
+                url:
+                username:
+                password:
             # 鍒濆杩炴帴鏁�
             initialSize: 5
             # 鏈�灏忚繛鎺ユ睜鏁伴噺
@@ -35,7 +39,7 @@
             # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
             maxEvictableIdleTimeMillis: 900000
             # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
-            validationQuery: SELECT 1 FROM DUAL
+            validationQuery: SELECT VERSION()
             testWhileIdle: true
             testOnBorrow: false
             testOnReturn: false
diff --git a/ruoyi-admin/src/main/resources/application.yml.example b/ruoyi-admin/src/main/resources/application.yml.example
index 367b61c..a173945 100644
--- a/ruoyi-admin/src/main/resources/application.yml.example
+++ b/ruoyi-admin/src/main/resources/application.yml.example
@@ -7,7 +7,7 @@
   # 鐗堟潈骞翠唤
   copyrightYear: 2025
   # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
-  profile: D:/ruoyi/uploadPath
+  profile: D:/Backup/妗岄潰/download
   # 鑾峰彇ip鍦板潃寮�鍏�
   addressEnabled: false
   # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
@@ -69,13 +69,13 @@
     # redis 閰嶇疆
     redis:
       # 鍦板潃
-      host: localhost
+      host: lunor.cn
       # 绔彛锛岄粯璁や负6379
-      port: 6379
+      port: 6380
       # 鏁版嵁搴撶储寮�
       database: 0
       # 瀵嗙爜
-      password:
+      password: 123456
       # 杩炴帴瓒呮椂鏃堕棿
       timeout: 10s
       lettuce:
@@ -88,6 +88,14 @@
           max-active: 8
           # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
           max-wait: -1ms
+  flyway:
+    enabled: true
+    baseline-on-migrate: true
+    baseline-version: 20230720000000
+    clean-disabled: true
+    #鎸囧畾sql鏂囦欢璺緞
+    locations:
+      - classpath:db/migration/postgresql
 
 # token閰嶇疆
 token:
diff --git a/sql/quartz.sql b/ruoyi-admin/src/main/resources/db/beforeSql/mysql/quartz.sql
similarity index 100%
rename from sql/quartz.sql
rename to ruoyi-admin/src/main/resources/db/beforeSql/mysql/quartz.sql
diff --git a/sql/ry_20250417.sql b/ruoyi-admin/src/main/resources/db/beforeSql/mysql/ry_20250417.sql
similarity index 100%
rename from sql/ry_20250417.sql
rename to ruoyi-admin/src/main/resources/db/beforeSql/mysql/ry_20250417.sql
diff --git a/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__QRTZ.sql b/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__QRTZ.sql
new file mode 100644
index 0000000..3d9ebbd
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__QRTZ.sql
@@ -0,0 +1,354 @@
+-- ----------------------------
+-- 1銆佸瓨鍌ㄦ瘡涓�涓凡閰嶇疆鐨� jobDetail 鐨勮缁嗕俊鎭�
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
+
+CREATE TABLE QRTZ_JOB_DETAILS
+(
+    sched_name        VARCHAR(120) NOT NULL,      -- 璋冨害鍚嶇О
+    job_name          VARCHAR(200) NOT NULL,      -- 浠诲姟鍚嶇О
+    job_group         VARCHAR(200) NOT NULL,      -- 浠诲姟缁勫悕
+    description       VARCHAR(250),               -- 鐩稿叧浠嬬粛
+    job_class_name    VARCHAR(250) NOT NULL,      -- 鎵ц浠诲姟绫诲悕绉�
+    is_durable        VARCHAR(1)   NOT NULL,      -- 鏄惁鎸佷箙鍖�
+    is_nonconcurrent  VARCHAR(1)   NOT NULL,      -- 鏄惁骞跺彂
+    is_update_data    VARCHAR(1)   NOT NULL,      -- 鏄惁鏇存柊鏁版嵁
+    requests_recovery VARCHAR(1)   NOT NULL,      -- 鏄惁鎺ュ彈鎭㈠鎵ц
+    job_data          BYTEA,                      -- 瀛樻斁鎸佷箙鍖杍ob瀵硅薄
+    PRIMARY KEY (sched_name, job_name, job_group) -- 涓婚敭
+);
+
+COMMENT ON TABLE QRTZ_JOB_DETAILS IS '浠诲姟璇︾粏淇℃伅琛�';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.job_name IS '浠诲姟鍚嶇О';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.job_group IS '浠诲姟缁勫悕';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.description IS '鐩稿叧浠嬬粛';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.job_class_name IS '鎵ц浠诲姟绫诲悕绉�';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.is_durable IS '鏄惁鎸佷箙鍖�';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.is_nonconcurrent IS '鏄惁骞跺彂';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.is_update_data IS '鏄惁鏇存柊鏁版嵁';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.requests_recovery IS '鏄惁鎺ュ彈鎭㈠鎵ц';
+COMMENT ON COLUMN QRTZ_JOB_DETAILS.job_data IS '瀛樻斁鎸佷箙鍖杍ob瀵硅薄';
+
+
+-- ----------------------------
+-- 2銆� 瀛樺偍宸查厤缃殑 Trigger 鐨勪俊鎭�
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
+CREATE TABLE QRTZ_TRIGGERS
+(
+    sched_name     VARCHAR(120) NOT NULL,
+    trigger_name   VARCHAR(200) NOT NULL,
+    trigger_group  VARCHAR(200) NOT NULL,
+    job_name       VARCHAR(200) NOT NULL,
+    job_group      VARCHAR(200) NOT NULL,
+    description    VARCHAR(250) NULL,
+    next_fire_time BIGINT       NULL,
+    prev_fire_time BIGINT       NULL,
+    priority       INTEGER      NULL,
+    trigger_state  VARCHAR(16)  NOT NULL,
+    trigger_type   VARCHAR(8)   NOT NULL,
+    start_time     BIGINT       NOT NULL,
+    end_time       BIGINT       NULL,
+    calendar_name  VARCHAR(200) NULL,
+    misfire_instr  SMALLINT     NULL,
+    job_data       BYTEA        NULL,
+    PRIMARY KEY (sched_name, trigger_name, trigger_group),
+    FOREIGN KEY (sched_name, job_name, job_group) REFERENCES QRTZ_JOB_DETAILS (sched_name, job_name, job_group)
+);
+
+COMMENT ON TABLE QRTZ_TRIGGERS IS '瑙﹀彂鍣ㄨ缁嗕俊鎭〃';
+COMMENT ON COLUMN QRTZ_TRIGGERS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_TRIGGERS.trigger_name IS '瑙﹀彂鍣ㄧ殑鍚嶅瓧';
+COMMENT ON COLUMN QRTZ_TRIGGERS.trigger_group IS '瑙﹀彂鍣ㄦ墍灞炵粍鐨勫悕瀛�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.job_name IS 'qrtz_job_details琛╦ob_name鐨勫閿�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.job_group IS 'qrtz_job_details琛╦ob_group鐨勫閿�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.description IS '鐩稿叧浠嬬粛';
+COMMENT ON COLUMN QRTZ_TRIGGERS.next_fire_time IS '涓婁竴娆¤Е鍙戞椂闂达紙姣锛�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.prev_fire_time IS '涓嬩竴娆¤Е鍙戞椂闂达紙榛樿涓�-1琛ㄧず涓嶈Е鍙戯級';
+COMMENT ON COLUMN QRTZ_TRIGGERS.priority IS '浼樺厛绾�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.trigger_state IS '瑙﹀彂鍣ㄧ姸鎬�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.trigger_type IS '瑙﹀彂鍣ㄧ殑绫诲瀷';
+COMMENT ON COLUMN QRTZ_TRIGGERS.start_time IS '寮�濮嬫椂闂�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.end_time IS '缁撴潫鏃堕棿';
+COMMENT ON COLUMN QRTZ_TRIGGERS.calendar_name IS '鏃ョ▼琛ㄥ悕绉�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.misfire_instr IS '琛ュ伩鎵ц鐨勭瓥鐣�';
+COMMENT ON COLUMN QRTZ_TRIGGERS.job_data IS '瀛樻斁鎸佷箙鍖杍ob瀵硅薄';
+
+
+
+
+-- ----------------------------
+-- 3銆� 瀛樺偍绠�鍗曠殑 Trigger锛屽寘鎷噸澶嶆鏁帮紝闂撮殧锛屼互鍙婂凡瑙﹀彂鐨勬鏁�
+-- ----------------------------
+CREATE TABLE QRTZ_SIMPLE_TRIGGERS
+(
+    sched_name      VARCHAR(120) NOT NULL,
+    trigger_name    VARCHAR(200) NOT NULL,
+    trigger_group   VARCHAR(200) NOT NULL,
+    repeat_count    BIGINT       NOT NULL,
+    repeat_interval BIGINT       NOT NULL,
+    times_triggered BIGINT       NOT NULL,
+    PRIMARY KEY (sched_name, trigger_name, trigger_group),
+    FOREIGN KEY (sched_name, trigger_name, trigger_group)
+        REFERENCES QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
+);
+
+COMMENT ON TABLE QRTZ_SIMPLE_TRIGGERS IS '绠�鍗曡Е鍙戝櫒鐨勪俊鎭〃';
+COMMENT ON COLUMN QRTZ_SIMPLE_TRIGGERS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_SIMPLE_TRIGGERS.trigger_name IS 'qrtz_triggers琛╰rigger_name鐨勫閿�';
+COMMENT ON COLUMN QRTZ_SIMPLE_TRIGGERS.trigger_group IS 'qrtz_triggers琛╰rigger_group鐨勫閿�';
+COMMENT ON COLUMN QRTZ_SIMPLE_TRIGGERS.repeat_count IS '閲嶅鐨勬鏁扮粺璁�';
+COMMENT ON COLUMN QRTZ_SIMPLE_TRIGGERS.repeat_interval IS '閲嶅鐨勯棿闅旀椂闂�';
+COMMENT ON COLUMN QRTZ_SIMPLE_TRIGGERS.times_triggered IS '宸茬粡瑙﹀彂鐨勬鏁�';
+
+
+
+-- ----------------------------
+-- 4銆� 瀛樺偍 Cron Trigger锛屽寘鎷� Cron 琛ㄨ揪寮忓拰鏃跺尯淇℃伅
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
+
+CREATE TABLE QRTZ_CRON_TRIGGERS
+(
+    sched_name      VARCHAR(120) NOT NULL,                                 -- 璋冨害鍚嶇О
+    trigger_name    VARCHAR(200) NOT NULL,                                 -- qrtz_triggers琛╰rigger_name鐨勫閿�
+    trigger_group   VARCHAR(200) NOT NULL,                                 -- qrtz_triggers琛╰rigger_group鐨勫閿�
+    cron_expression VARCHAR(200) NOT NULL,                                 -- cron琛ㄨ揪寮�
+    time_zone_id    VARCHAR(80),                                           -- 鏃跺尯
+    PRIMARY KEY (sched_name, trigger_name, trigger_group),                 -- 涓婚敭
+    FOREIGN KEY (sched_name, trigger_name, trigger_group)
+        REFERENCES QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group) -- 澶栭敭绾︽潫
+);
+
+COMMENT ON TABLE QRTZ_CRON_TRIGGERS IS 'Cron绫诲瀷鐨勮Е鍙戝櫒琛�';
+COMMENT ON COLUMN QRTZ_CRON_TRIGGERS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_CRON_TRIGGERS.trigger_name IS 'qrtz_triggers琛╰rigger_name鐨勫閿�';
+COMMENT ON COLUMN QRTZ_CRON_TRIGGERS.trigger_group IS 'qrtz_triggers琛╰rigger_group鐨勫閿�';
+COMMENT ON COLUMN QRTZ_CRON_TRIGGERS.cron_expression IS 'cron琛ㄨ揪寮�';
+COMMENT ON COLUMN QRTZ_CRON_TRIGGERS.time_zone_id IS '鏃跺尯';
+
+
+
+
+-- ----------------------------
+-- 5銆� Trigger 浣滀负 Blob 绫诲瀷瀛樺偍(鐢ㄤ簬 Quartz 鐢ㄦ埛鐢� JDBC 鍒涘缓浠栦滑鑷繁瀹氬埗鐨� Trigger 绫诲瀷锛孞obStore 骞朵笉鐭ラ亾濡備綍瀛樺偍瀹炰緥鐨勬椂鍊�)
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
+
+CREATE TABLE QRTZ_BLOB_TRIGGERS
+(
+    sched_name    VARCHAR(120) NOT NULL,                                   -- 璋冨害鍚嶇О
+    trigger_name  VARCHAR(200) NOT NULL,                                   -- qrtz_triggers琛╰rigger_name鐨勫閿�
+    trigger_group VARCHAR(200) NOT NULL,                                   -- qrtz_triggers琛╰rigger_group鐨勫閿�
+    blob_data     BYTEA,                                                   -- 瀛樻斁鎸佷箙鍖朤rigger瀵硅薄
+    PRIMARY KEY (sched_name, trigger_name, trigger_group),                 -- 涓婚敭
+    FOREIGN KEY (sched_name, trigger_name, trigger_group)
+        REFERENCES QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group) -- 澶栭敭绾︽潫
+);
+
+COMMENT ON TABLE QRTZ_BLOB_TRIGGERS IS 'Blob绫诲瀷鐨勮Е鍙戝櫒琛�';
+COMMENT ON COLUMN QRTZ_BLOB_TRIGGERS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_BLOB_TRIGGERS.trigger_name IS 'qrtz_triggers琛╰rigger_name鐨勫閿�';
+COMMENT ON COLUMN QRTZ_BLOB_TRIGGERS.trigger_group IS 'qrtz_triggers琛╰rigger_group鐨勫閿�';
+COMMENT ON COLUMN QRTZ_BLOB_TRIGGERS.blob_data IS '瀛樻斁鎸佷箙鍖朤rigger瀵硅薄';
+
+
+
+
+
+-- ----------------------------
+-- 6銆� 浠� Blob 绫诲瀷瀛樺偍瀛樻斁鏃ュ巻淇℃伅锛� quartz鍙厤缃竴涓棩鍘嗘潵鎸囧畾涓�涓椂闂磋寖鍥�
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_CALENDARS;
+
+CREATE TABLE QRTZ_CALENDARS
+(
+    sched_name    VARCHAR(120) NOT NULL,    -- 璋冨害鍚嶇О
+    calendar_name VARCHAR(200) NOT NULL,    -- 鏃ュ巻鍚嶇О
+    calendar      BYTEA        NOT NULL,    -- 瀛樻斁鎸佷箙鍖朿alendar瀵硅薄
+    PRIMARY KEY (sched_name, calendar_name) -- 涓婚敭
+);
+
+COMMENT ON TABLE QRTZ_CALENDARS IS '鏃ュ巻淇℃伅琛�';
+COMMENT ON COLUMN QRTZ_CALENDARS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_CALENDARS.calendar_name IS '鏃ュ巻鍚嶇О';
+COMMENT ON COLUMN QRTZ_CALENDARS.calendar IS '瀛樻斁鎸佷箙鍖朿alendar瀵硅薄';
+
+
+
+
+
+
+-- ----------------------------
+-- 7銆� 瀛樺偍宸叉殏鍋滅殑 Trigger 缁勭殑淇℃伅
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
+
+CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS
+(
+    sched_name    VARCHAR(120) NOT NULL,    -- 璋冨害鍚嶇О
+    trigger_group VARCHAR(200) NOT NULL,    -- qrtz_triggers琛╰rigger_group鐨勫閿�
+    PRIMARY KEY (sched_name, trigger_group) -- 涓婚敭
+);
+
+COMMENT ON TABLE QRTZ_PAUSED_TRIGGER_GRPS IS '鏆傚仠鐨勮Е鍙戝櫒琛�';
+COMMENT ON COLUMN QRTZ_PAUSED_TRIGGER_GRPS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_PAUSED_TRIGGER_GRPS.trigger_group IS 'qrtz_triggers琛╰rigger_group鐨勫閿�';
+
+
+
+
+
+
+
+-- ----------------------------
+-- 8銆� 瀛樺偍涓庡凡瑙﹀彂鐨� Trigger 鐩稿叧鐨勭姸鎬佷俊鎭紝浠ュ強鐩歌仈 Job 鐨勬墽琛屼俊鎭�
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
+
+CREATE TABLE QRTZ_FIRED_TRIGGERS
+(
+    sched_name        VARCHAR(120) NOT NULL, -- 璋冨害鍚嶇О
+    entry_id          VARCHAR(95)  NOT NULL, -- 璋冨害鍣ㄥ疄渚媔d
+    trigger_name      VARCHAR(200) NOT NULL, -- qrtz_triggers琛╰rigger_name鐨勫閿�
+    trigger_group     VARCHAR(200) NOT NULL, -- qrtz_triggers琛╰rigger_group鐨勫閿�
+    instance_name     VARCHAR(200) NOT NULL, -- 璋冨害鍣ㄥ疄渚嬪悕
+    fired_time        BIGINT       NOT NULL, -- 瑙﹀彂鐨勬椂闂�
+    sched_time        BIGINT       NOT NULL, -- 瀹氭椂鍣ㄥ埗瀹氱殑鏃堕棿
+    priority          INTEGER      NOT NULL, -- 浼樺厛绾�
+    state             VARCHAR(16)  NOT NULL, -- 鐘舵��
+    job_name          VARCHAR(200),          -- 浠诲姟鍚嶇О
+    job_group         VARCHAR(200),          -- 浠诲姟缁勫悕
+    is_nonconcurrent  VARCHAR(1),            -- 鏄惁骞跺彂
+    requests_recovery VARCHAR(1),            -- 鏄惁鎺ュ彈鎭㈠鎵ц
+    PRIMARY KEY (sched_name, entry_id)       -- 涓婚敭
+);
+
+COMMENT ON TABLE QRTZ_FIRED_TRIGGERS IS '宸茶Е鍙戠殑瑙﹀彂鍣ㄨ〃';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.entry_id IS '璋冨害鍣ㄥ疄渚媔d';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.trigger_name IS 'qrtz_triggers琛╰rigger_name鐨勫閿�';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.trigger_group IS 'qrtz_triggers琛╰rigger_group鐨勫閿�';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.instance_name IS '璋冨害鍣ㄥ疄渚嬪悕';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.fired_time IS '瑙﹀彂鐨勬椂闂�';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.sched_time IS '瀹氭椂鍣ㄥ埗瀹氱殑鏃堕棿';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.priority IS '浼樺厛绾�';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.state IS '鐘舵��';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.job_name IS '浠诲姟鍚嶇О';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.job_group IS '浠诲姟缁勫悕';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.is_nonconcurrent IS '鏄惁骞跺彂';
+COMMENT ON COLUMN QRTZ_FIRED_TRIGGERS.requests_recovery IS '鏄惁鎺ュ彈鎭㈠鎵ц';
+
+
+
+
+
+
+
+
+-- ----------------------------
+-- 9銆� 瀛樺偍灏戦噺鐨勬湁鍏� Scheduler 鐨勭姸鎬佷俊鎭紝鍋囧鏄敤浜庨泦缇や腑锛屽彲浠ョ湅鍒板叾浠栫殑 Scheduler 瀹炰緥
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
+
+CREATE TABLE QRTZ_SCHEDULER_STATE
+(
+    sched_name        VARCHAR(120) NOT NULL, -- 璋冨害鍚嶇О
+    instance_name     VARCHAR(200) NOT NULL, -- 瀹炰緥鍚嶇О
+    last_checkin_time BIGINT       NOT NULL, -- 涓婃妫�鏌ユ椂闂�
+    checkin_interval  BIGINT       NOT NULL, -- 妫�鏌ラ棿闅旀椂闂�
+    PRIMARY KEY (sched_name, instance_name)  -- 涓婚敭
+);
+
+COMMENT ON TABLE QRTZ_SCHEDULER_STATE IS '璋冨害鍣ㄧ姸鎬佽〃';
+COMMENT ON COLUMN QRTZ_SCHEDULER_STATE.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_SCHEDULER_STATE.instance_name IS '瀹炰緥鍚嶇О';
+COMMENT ON COLUMN QRTZ_SCHEDULER_STATE.last_checkin_time IS '涓婃妫�鏌ユ椂闂�';
+COMMENT ON COLUMN QRTZ_SCHEDULER_STATE.checkin_interval IS '妫�鏌ラ棿闅旀椂闂�';
+
+
+
+
+
+
+
+-- ----------------------------
+-- 10銆� 瀛樺偍绋嬪簭鐨勬偛瑙傞攣鐨勪俊鎭�(鍋囧浣跨敤浜嗘偛瑙傞攣)
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_LOCKS;
+
+CREATE TABLE QRTZ_LOCKS
+(
+    sched_name VARCHAR(120) NOT NULL,   -- 璋冨害鍚嶇О
+    lock_name  VARCHAR(40)  NOT NULL,   -- 鎮茶閿佸悕绉�
+    PRIMARY KEY (sched_name, lock_name) -- 涓婚敭
+);
+
+COMMENT ON TABLE QRTZ_LOCKS IS '瀛樺偍鐨勬偛瑙傞攣淇℃伅琛�';
+COMMENT ON COLUMN QRTZ_LOCKS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_LOCKS.lock_name IS '鎮茶閿佸悕绉�';
+
+
+
+
+
+
+
+
+
+-- ----------------------------
+-- 11銆� Quartz闆嗙兢瀹炵幇鍚屾鏈哄埗鐨勮閿佽〃
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
+
+CREATE TABLE QRTZ_SIMPROP_TRIGGERS
+(
+    sched_name    VARCHAR(120) NOT NULL,                                   -- 璋冨害鍚嶇О
+    trigger_name  VARCHAR(200) NOT NULL,                                   -- qrtz_triggers琛╰rigger_name鐨勫閿�
+    trigger_group VARCHAR(200) NOT NULL,                                   -- qrtz_triggers琛╰rigger_group鐨勫閿�
+    str_prop_1    VARCHAR(512),                                            -- String绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�
+    str_prop_2    VARCHAR(512),                                            -- String绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟
+    str_prop_3    VARCHAR(512),                                            -- String绫诲瀷鐨則rigger鐨勭涓変釜鍙傛暟
+    int_prop_1    INTEGER,                                                 -- int绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�
+    int_prop_2    INTEGER,                                                 -- int绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟
+    long_prop_1   BIGINT,                                                  -- long绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�
+    long_prop_2   BIGINT,                                                  -- long绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟
+    dec_prop_1    NUMERIC(13, 4),                                          -- decimal绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�
+    dec_prop_2    NUMERIC(13, 4),                                          -- decimal绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟
+    bool_prop_1   VARCHAR(1),                                              -- Boolean绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�
+    bool_prop_2   VARCHAR(1),                                              -- Boolean绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟
+    PRIMARY KEY (sched_name, trigger_name, trigger_group),                 -- 涓婚敭
+    FOREIGN KEY (sched_name, trigger_name, trigger_group)
+        REFERENCES QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group) -- 澶栭敭绾︽潫
+);
+
+COMMENT ON TABLE QRTZ_SIMPROP_TRIGGERS IS '鍚屾鏈哄埗鐨勮閿佽〃';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.sched_name IS '璋冨害鍚嶇О';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.trigger_name IS 'qrtz_triggers琛╰rigger_name鐨勫閿�';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.trigger_group IS 'qrtz_triggers琛╰rigger_group鐨勫閿�';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.str_prop_1 IS 'String绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.str_prop_2 IS 'String绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.str_prop_3 IS 'String绫诲瀷鐨則rigger鐨勭涓変釜鍙傛暟';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.int_prop_1 IS 'int绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.int_prop_2 IS 'int绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.long_prop_1 IS 'long绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.long_prop_2 IS 'long绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.dec_prop_1 IS 'decimal绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.dec_prop_2 IS 'decimal绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.bool_prop_1 IS 'Boolean绫诲瀷鐨則rigger鐨勭涓�涓弬鏁�';
+COMMENT ON COLUMN QRTZ_SIMPROP_TRIGGERS.bool_prop_2 IS 'Boolean绫诲瀷鐨則rigger鐨勭浜屼釜鍙傛暟';
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql b/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql
new file mode 100644
index 0000000..af37cc5
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql
@@ -0,0 +1,1285 @@
+-- ----------------------------
+-- 閮ㄩ棬琛�
+-- ----------------------------
+DROP TABLE IF EXISTS sys_dept;
+
+CREATE TABLE sys_dept
+(
+    dept_id     BIGSERIAL PRIMARY KEY,    -- 閮ㄩ棬id锛岃嚜澧炲瓧娈碉紝涓婚敭
+    parent_id   BIGINT      DEFAULT 0,    -- 鐖堕儴闂╥d
+    ancestors   VARCHAR(50) DEFAULT '',   -- 绁栫骇鍒楄〃
+    dept_name   VARCHAR(30) DEFAULT '',   -- 閮ㄩ棬鍚嶇О
+    order_num   INTEGER     DEFAULT 0,    -- 鏄剧ず椤哄簭
+    leader      VARCHAR(20) DEFAULT NULL, -- 璐熻矗浜�
+    phone       VARCHAR(11) DEFAULT NULL, -- 鑱旂郴鐢佃瘽
+    email       VARCHAR(50) DEFAULT NULL, -- 閭
+    status      CHAR(1)     DEFAULT '0',  -- 閮ㄩ棬鐘舵�侊紙0姝e父 1鍋滅敤锛�
+    del_flag    CHAR(1)     DEFAULT '0',  -- 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�
+    create_by   VARCHAR(64) DEFAULT '',   -- 鍒涘缓鑰�
+    create_time TIMESTAMP,                -- 鍒涘缓鏃堕棿
+    update_by   VARCHAR(64) DEFAULT '',   -- 鏇存柊鑰�
+    update_time TIMESTAMP                 -- 鏇存柊鏃堕棿
+);
+
+COMMENT ON TABLE sys_dept IS '閮ㄩ棬琛�';
+COMMENT ON COLUMN sys_dept.dept_id IS '閮ㄩ棬id';
+COMMENT ON COLUMN sys_dept.parent_id IS '鐖堕儴闂╥d';
+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 '璐熻矗浜�';
+COMMENT ON COLUMN sys_dept.phone IS '鑱旂郴鐢佃瘽';
+COMMENT ON COLUMN sys_dept.email IS '閭';
+COMMENT ON COLUMN sys_dept.status IS '閮ㄩ棬鐘舵�侊紙0姝e父 1鍋滅敤锛�';
+COMMENT ON COLUMN sys_dept.del_flag IS '鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�';
+COMMENT ON COLUMN sys_dept.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_dept.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_dept.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_dept.update_time IS '鏇存柊鏃堕棿';
+
+-- 閮ㄩ棬鏁版嵁
+INSERT INTO sys_dept
+(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time,
+ update_by, update_time)
+VALUES (100, 0, '0', '鑻ヤ緷绉戞妧', 0, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP, '', NULL),
+       (101, 100, '0,100', '娣卞湷鎬诲叕鍙�', 1, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL),
+       (102, 100, '0,100', '闀挎矙鍒嗗叕鍙�', 2, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL),
+       (103, 101, '0,100,101', '鐮斿彂閮ㄩ棬', 1, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL),
+       (104, 101, '0,100,101', '甯傚満閮ㄩ棬', 2, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL),
+       (105, 101, '0,100,101', '娴嬭瘯閮ㄩ棬', 3, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL),
+       (106, 101, '0,100,101', '璐㈠姟閮ㄩ棬', 4, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL),
+       (107, 101, '0,100,101', '杩愮淮閮ㄩ棬', 5, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL),
+       (108, 102, '0,100,102', '甯傚満閮ㄩ棬', 1, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL),
+       (109, 102, '0,100,102', '璐㈠姟閮ㄩ棬', 2, '鑻ヤ緷', '15888888888', 'ry@qq.com', '0', '0', 'admin', CURRENT_TIMESTAMP,
+        '', NULL);
+
+
+
+-- ----------------------------
+-- 鐢ㄦ埛淇℃伅琛�
+-- ----------------------------
+
+DROP TABLE IF EXISTS sys_user;
+
+CREATE TABLE sys_user
+(
+    user_id     BIGSERIAL PRIMARY KEY,     -- 鐢ㄦ埛ID锛岃嚜澧炲瓧娈碉紝涓婚敭
+    dept_id     BIGINT       DEFAULT NULL, -- 閮ㄩ棬ID
+    user_name   VARCHAR(30) NOT NULL,      -- 鐢ㄦ埛璐﹀彿
+    nick_name   VARCHAR(30) NOT NULL,      -- 鐢ㄦ埛鏄电О
+    user_type   VARCHAR(2)   DEFAULT '00', -- 鐢ㄦ埛绫诲瀷锛�00绯荤粺鐢ㄦ埛锛�
+    email       VARCHAR(50)  DEFAULT '',   -- 鐢ㄦ埛閭
+    phonenumber VARCHAR(11)  DEFAULT '',   -- 鎵嬫満鍙风爜
+    sex         CHAR(1)      DEFAULT '0',  -- 鐢ㄦ埛鎬у埆锛�0鐢� 1濂� 2鏈煡锛�
+    avatar      VARCHAR(100) DEFAULT '',   -- 澶村儚鍦板潃
+    password    VARCHAR(100) DEFAULT '',   -- 瀵嗙爜
+    status      CHAR(1)      DEFAULT '0',  -- 璐﹀彿鐘舵�侊紙0姝e父 1鍋滅敤锛�
+    del_flag    CHAR(1)      DEFAULT '0',  -- 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�
+    login_ip    VARCHAR(128) DEFAULT '',   -- 鏈�鍚庣櫥褰旾P
+    login_date  TIMESTAMP,                 -- 鏈�鍚庣櫥褰曟椂闂�
+    create_by   VARCHAR(64)  DEFAULT '',   -- 鍒涘缓鑰�
+    create_time TIMESTAMP,                 -- 鍒涘缓鏃堕棿
+    update_by   VARCHAR(64)  DEFAULT '',   -- 鏇存柊鑰�
+    update_time TIMESTAMP,                 -- 鏇存柊鏃堕棿
+    remark      VARCHAR(500) DEFAULT NULL  -- 澶囨敞
+);
+
+COMMENT ON TABLE sys_user IS '鐢ㄦ埛淇℃伅琛�';
+COMMENT ON COLUMN sys_user.user_id IS '鐢ㄦ埛ID';
+COMMENT ON COLUMN sys_user.dept_id IS '閮ㄩ棬ID';
+COMMENT ON COLUMN sys_user.user_name IS '鐢ㄦ埛璐﹀彿';
+COMMENT ON COLUMN sys_user.nick_name IS '鐢ㄦ埛鏄电О';
+COMMENT ON COLUMN sys_user.user_type IS '鐢ㄦ埛绫诲瀷锛�00绯荤粺鐢ㄦ埛锛�';
+COMMENT ON COLUMN sys_user.email IS '鐢ㄦ埛閭';
+COMMENT ON COLUMN sys_user.phonenumber IS '鎵嬫満鍙风爜';
+COMMENT ON COLUMN sys_user.sex 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 '璐﹀彿鐘舵�侊紙0姝e父 1鍋滅敤锛�';
+COMMENT ON COLUMN sys_user.del_flag IS '鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�';
+COMMENT ON COLUMN sys_user.login_ip IS '鏈�鍚庣櫥褰旾P';
+COMMENT ON COLUMN sys_user.login_date IS '鏈�鍚庣櫥褰曟椂闂�';
+COMMENT ON COLUMN sys_user.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_user.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_user.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_user.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_user.remark IS '澶囨敞';
+
+-- 鍒濆鍖�-鐢ㄦ埛淇℃伅琛ㄦ暟鎹�
+INSERT INTO sys_user (dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status,
+                      del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark)
+VALUES (103, 'admin', '鑻ヤ緷', '00', 'ry@163.com', '15888888888', '1', '',
+        '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', CURRENT_TIMESTAMP,
+        'admin', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP, '绠$悊鍛�'),
+       (105, 'ry', '鑻ヤ緷', '00', 'ry@qq.com', '15666666666', '1', '',
+        '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', CURRENT_TIMESTAMP,
+        'admin', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP, '娴嬭瘯鍛�');
+
+
+-- ----------------------------
+-- 宀椾綅淇℃伅琛�
+-- ----------------------------
+DROP TABLE IF EXISTS sys_post;
+
+CREATE TABLE sys_post
+(
+    post_id     BIGSERIAL PRIMARY KEY,    -- 宀椾綅ID锛岃嚜澧炲瓧娈碉紝涓婚敭
+    post_code   VARCHAR(64) NOT NULL,     -- 宀椾綅缂栫爜
+    post_name   VARCHAR(50) NOT NULL,     -- 宀椾綅鍚嶇О
+    post_sort   INT         NOT NULL,     -- 鏄剧ず椤哄簭
+    status      CHAR(1)     NOT NULL,     -- 鐘舵�侊紙0姝e父 1鍋滅敤锛�
+    create_by   VARCHAR(64)  DEFAULT '',  -- 鍒涘缓鑰�
+    create_time TIMESTAMP,                -- 鍒涘缓鏃堕棿
+    update_by   VARCHAR(64)  DEFAULT '',  -- 鏇存柊鑰�
+    update_time TIMESTAMP,                -- 鏇存柊鏃堕棿
+    remark      VARCHAR(500) DEFAULT NULL -- 澶囨敞
+);
+
+COMMENT ON TABLE sys_post IS '宀椾綅淇℃伅琛�';
+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 '鐘舵�侊紙0姝e父 1鍋滅敤锛�';
+COMMENT ON COLUMN sys_post.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_post.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_post.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_post.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_post.remark IS '澶囨敞';
+
+-- 鍒濆鍖�-宀椾綅淇℃伅琛ㄦ暟鎹�
+INSERT INTO sys_post (post_code, post_name, post_sort, status, create_by, create_time, update_by, update_time, remark)
+VALUES ('ceo', '钁d簨闀�', 1, '0', 'admin', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP, ''),
+       ('se', '椤圭洰缁忕悊', 2, '0', 'admin', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP, ''),
+       ('hr', '浜哄姏璧勬簮', 3, '0', 'admin', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP, ''),
+       ('user', '鏅�氬憳宸�', 4, '0', 'admin', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP, '');
+
+
+-- ----------------------------
+-- 瑙掕壊淇℃伅琛�
+-- ----------------------------
+DROP TABLE IF EXISTS sys_role;
+
+-- 鍒涘缓瑙掕壊淇℃伅琛�
+CREATE TABLE sys_role
+(
+    role_id             BIGSERIAL PRIMARY KEY,     -- 瑙掕壊ID锛岃嚜澧炲瓧娈碉紝涓婚敭
+    role_name           VARCHAR(30)  NOT NULL,     -- 瑙掕壊鍚嶇О
+    role_key            VARCHAR(100) NOT NULL,     -- 瑙掕壊鏉冮檺瀛楃涓�
+    role_sort           INT          NOT NULL,     -- 鏄剧ず椤哄簭
+    data_scope          CHAR(1)      DEFAULT '1',  -- 鏁版嵁鑼冨洿
+    menu_check_strictly BOOLEAN      DEFAULT TRUE, -- 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
+    dept_check_strictly BOOLEAN      DEFAULT TRUE, -- 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
+    status              CHAR(1)      NOT NULL,     -- 瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�
+    del_flag            CHAR(1)      DEFAULT '0',  -- 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�
+    create_by           VARCHAR(64)  DEFAULT '',   -- 鍒涘缓鑰�
+    create_time         TIMESTAMP,                 -- 鍒涘缓鏃堕棿
+    update_by           VARCHAR(64)  DEFAULT '',   -- 鏇存柊鑰�
+    update_time         TIMESTAMP,                 -- 鏇存柊鏃堕棿
+    remark              VARCHAR(500) DEFAULT NULL  -- 澶囨敞
+);
+
+-- 娣诲姞娉ㄩ噴
+COMMENT ON TABLE sys_role IS '瑙掕壊淇℃伅琛�';
+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 '鏁版嵁鑼冨洿';
+COMMENT ON COLUMN sys_role.menu_check_strictly IS '鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�';
+COMMENT ON COLUMN sys_role.dept_check_strictly IS '閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�';
+COMMENT ON COLUMN sys_role.status IS '瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�';
+COMMENT ON COLUMN sys_role.del_flag IS '鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�';
+COMMENT ON COLUMN sys_role.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_role.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_role.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_role.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_role.remark IS '澶囨敞';
+
+-- 鍒濆鍖�-瑙掕壊淇℃伅琛ㄦ暟鎹�
+INSERT INTO sys_role (role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status,
+                      del_flag, create_by, create_time, update_by, update_time, remark)
+VALUES ('瓒呯骇绠$悊鍛�', 'admin', 1, '1', TRUE, TRUE, '0', '0', 'admin', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP,
+        '瓒呯骇绠$悊鍛�'),
+       ('鏅�氳鑹�', 'common', 2, '2', TRUE, TRUE, '0', '0', 'admin', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP,
+        '鏅�氳鑹�');
+
+-- ----------------------------
+-- 鑿滃崟鏉冮檺琛�
+-- ----------------------------
+DROP TABLE IF EXISTS sys_menu;
+
+CREATE TABLE sys_menu
+(
+    menu_id     BIGSERIAL   NOT NULL PRIMARY KEY,
+    menu_name   VARCHAR(50) NOT NULL,
+    parent_id   BIGINT       DEFAULT 0,
+    order_num   INTEGER      DEFAULT 0,
+    path        VARCHAR(200) DEFAULT '',
+    component   VARCHAR(255) DEFAULT NULL,
+    query       VARCHAR(255) DEFAULT NULL,
+    route_name  VARCHAR(50)  DEFAULT '',
+    is_frame    INTEGER      DEFAULT 1,
+    is_cache    INTEGER      DEFAULT 0,
+    menu_type   CHAR(1)      DEFAULT '',
+    visible     CHAR(1)      DEFAULT '0',
+    status      CHAR(1)      DEFAULT '0',
+    perms       VARCHAR(100) DEFAULT NULL,
+    icon        VARCHAR(100) DEFAULT '#',
+    create_by   VARCHAR(64)  DEFAULT '',
+    create_time TIMESTAMP,
+    update_by   VARCHAR(64)  DEFAULT '',
+    update_time TIMESTAMP,
+    remark      VARCHAR(500) DEFAULT ''
+);
+
+COMMENT ON TABLE sys_menu IS '鑿滃崟鏉冮檺琛�';
+
+-- Optional: Set comments on the columns
+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 '鐖惰彍鍗旾D';
+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.route_name IS '璺敱鍚嶇О';
+COMMENT ON COLUMN sys_menu.is_frame IS '鏄惁涓哄閾撅紙0鏄� 1鍚︼級';
+COMMENT ON COLUMN sys_menu.is_cache IS '鏄惁缂撳瓨锛�0缂撳瓨 1涓嶇紦瀛橈級';
+COMMENT ON COLUMN sys_menu.menu_type IS '鑿滃崟绫诲瀷锛圡鐩綍 C鑿滃崟 F鎸夐挳锛�';
+COMMENT ON COLUMN sys_menu.visible IS '鑿滃崟鐘舵�侊紙0鏄剧ず 1闅愯棌锛�';
+COMMENT ON COLUMN sys_menu.status IS '鑿滃崟鐘舵�侊紙0姝e父 1鍋滅敤锛�';
+COMMENT ON COLUMN sys_menu.perms IS '鏉冮檺鏍囪瘑';
+COMMENT ON COLUMN sys_menu.icon IS '鑿滃崟鍥炬爣';
+COMMENT ON COLUMN sys_menu.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_menu.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_menu.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_menu.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_menu.remark IS '澶囨敞';
+
+
+-- ----------------------------
+-- 鍒濆鍖�-鑿滃崟淇℃伅琛ㄦ暟鎹�
+-- ----------------------------
+-- 涓�绾ц彍鍗�
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
+                      menu_type, visible,
+                      status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values ('1', '绯荤粺绠$悊', '0', '1', 'system', null, '', '', 1, 0, 'M', '0', '0', '', 'system', 'admin',
+        CURRENT_TIMESTAMP, '', null, '绯荤粺绠$悊鐩綍'),
+       ('2', '绯荤粺鐩戞帶', '0', '2', 'monitor', null, '', '', 1, 0, 'M', '0', '0', '', 'monitor', 'admin',
+        CURRENT_TIMESTAMP, '', null, '绯荤粺鐩戞帶鐩綍'),
+       ('3', '绯荤粺宸ュ叿', '0', '3', 'tool', null, '', '', 1, 0, 'M', '0', '0', '', 'tool', 'admin', CURRENT_TIMESTAMP,
+        '', null, '绯荤粺宸ュ叿鐩綍'),
+       ('4', '鑻ヤ緷瀹樼綉', '0', '4', 'http://ruoyi.vip', null, '', '', 0, 0, 'M', '0', '0', '', 'guide', 'admin',
+        CURRENT_TIMESTAMP, '', null, '鑻ヤ緷瀹樼綉鍦板潃');
+
+-- 浜岀骇鑿滃崟
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
+                      menu_type, visible,
+                      status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values ('100', '鐢ㄦ埛绠$悊', '1', '1', 'user', 'system/user/index', '', '', 1, 0, 'C', '0', '0', 'system:user:list',
+        'user', 'admin', CURRENT_TIMESTAMP, '', null, '鐢ㄦ埛绠$悊鑿滃崟'),
+       ('101', '瑙掕壊绠$悊', '1', '2', 'role', 'system/role/index', '', '', 1, 0, 'C', '0', '0', 'system:role:list',
+        'peoples', 'admin', CURRENT_TIMESTAMP, '', null, '瑙掕壊绠$悊鑿滃崟'),
+       ('102', '鑿滃崟绠$悊', '1', '3', 'menu', 'system/menu/index', '', '', 1, 0, 'C', '0', '0', 'system:menu:list',
+        'tree-table', 'admin', CURRENT_TIMESTAMP, '', null, '鑿滃崟绠$悊鑿滃崟'),
+       ('103', '閮ㄩ棬绠$悊', '1', '4', 'dept', 'system/dept/index', '', '', 1, 0, 'C', '0', '0', 'system:dept:list',
+        'tree', 'admin', CURRENT_TIMESTAMP, '', null, '閮ㄩ棬绠$悊鑿滃崟'),
+       ('104', '宀椾綅绠$悊', '1', '5', 'post', 'system/post/index', '', '', 1, 0, 'C', '0', '0', 'system:post:list',
+        'post', 'admin', CURRENT_TIMESTAMP, '', null, '宀椾綅绠$悊鑿滃崟'),
+       ('105', '瀛楀吀绠$悊', '1', '6', 'dict', 'system/dict/index', '', '', 1, 0, 'C', '0', '0', 'system:dict:list',
+        'dict', 'admin', CURRENT_TIMESTAMP, '', null, '瀛楀吀绠$悊鑿滃崟'),
+       ('106', '鍙傛暟璁剧疆', '1', '7', 'config', 'system/config/index', '', '', 1, 0, 'C', '0', '0', 'system:config:list',
+        'edit', 'admin', CURRENT_TIMESTAMP, '', null, '鍙傛暟璁剧疆鑿滃崟'),
+       ('107', '閫氱煡鍏憡', '1', '8', 'notice', 'system/notice/index', '', '', 1, 0, 'C', '0', '0', 'system:notice:list',
+        'message', 'admin', CURRENT_TIMESTAMP, '', null, '閫氱煡鍏憡鑿滃崟'),
+       ('108', '鏃ュ織绠$悊', '1', '9', 'log', '', '', '', 1, 0, 'M', '0', '0', '', 'log', 'admin', CURRENT_TIMESTAMP, '',
+        null, '鏃ュ織绠$悊鑿滃崟'),
+       ('109', '鍦ㄧ嚎鐢ㄦ埛', '2', '1', 'online', 'monitor/online/index', '', '', 1, 0, 'C', '0', '0',
+        'monitor:online:list', 'online', 'admin', CURRENT_TIMESTAMP, '', null, '鍦ㄧ嚎鐢ㄦ埛鑿滃崟'),
+       ('110', '瀹氭椂浠诲姟', '2', '2', 'job', 'monitor/job/index', '', '', 1, 0, 'C', '0', '0', 'monitor:job:list', 'job',
+        'admin', CURRENT_TIMESTAMP, '', null, '瀹氭椂浠诲姟鑿滃崟'),
+       ('111', '鏁版嵁鐩戞帶', '2', '3', 'druid', 'monitor/druid/index', '', '', 1, 0, 'C', '0', '0', 'monitor:druid:list',
+        'druid', 'admin', CURRENT_TIMESTAMP, '', null, '鏁版嵁鐩戞帶鑿滃崟'),
+       ('112', '鏈嶅姟鐩戞帶', '2', '4', 'server', 'monitor/server/index', '', '', 1, 0, 'C', '0', '0',
+        'monitor:server:list', 'server', 'admin', CURRENT_TIMESTAMP, '', null, '鏈嶅姟鐩戞帶鑿滃崟'),
+       ('113', '缂撳瓨鐩戞帶', '2', '5', 'cache', 'monitor/cache/index', '', '', 1, 0, 'C', '0', '0', 'monitor:cache:list',
+        'redis', 'admin', CURRENT_TIMESTAMP, '', null, '缂撳瓨鐩戞帶鑿滃崟'),
+       ('114', '缂撳瓨鍒楄〃', '2', '6', 'cacheList', 'monitor/cache/list', '', '', 1, 0, 'C', '0', '0',
+        'monitor:cache:list', 'redis-list', 'admin', CURRENT_TIMESTAMP, '', null, '缂撳瓨鍒楄〃鑿滃崟'),
+       ('115', '琛ㄥ崟鏋勫缓', '3', '1', 'build', 'tool/build/index', '', '', 1, 0, 'C', '0', '0', 'tool:build:list',
+        'build', 'admin', CURRENT_TIMESTAMP, '', null, '琛ㄥ崟鏋勫缓鑿滃崟'),
+       ('116', '浠g爜鐢熸垚', '3', '2', 'gen', 'tool/gen/index', '', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code',
+        'admin', CURRENT_TIMESTAMP, '', null, '浠g爜鐢熸垚鑿滃崟'),
+       ('117', '绯荤粺鎺ュ彛', '3', '3', 'swagger', 'tool/swagger/index', '', '', 1, 0, 'C', '0', '0', 'tool:swagger:list',
+        'swagger', 'admin', CURRENT_TIMESTAMP, '', null, '绯荤粺鎺ュ彛鑿滃崟');
+
+-- 涓夌骇鑿滃崟
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
+                      menu_type, visible,
+                      status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values ('500', '鎿嶄綔鏃ュ織', '108', '1', 'operlog', 'monitor/operlog/index', '', '', 1, 0, 'C', '0', '0',
+        'monitor:operlog:list', 'form', 'admin', CURRENT_TIMESTAMP, '', null, '鎿嶄綔鏃ュ織鑿滃崟'),
+       ('501', '鐧诲綍鏃ュ織', '108', '2', 'logininfor', 'monitor/logininfor/index', '', '', 1, 0, 'C', '0', '0',
+        'monitor:logininfor:list', 'logininfor', 'admin', CURRENT_TIMESTAMP, '', null, '鐧诲綍鏃ュ織鑿滃崟');
+
+-- 鐢ㄦ埛绠$悊鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1000', '鐢ㄦ埛鏌ヨ', '100', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1001', '鐢ㄦ埛鏂板', '100', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1002', '鐢ㄦ埛淇敼', '100', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1003', '鐢ㄦ埛鍒犻櫎', '100', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1004', '鐢ㄦ埛瀵煎嚭', '100', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:export', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1005', '鐢ㄦ埛瀵煎叆', '100', '6', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:import', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1006', '閲嶇疆瀵嗙爜', '100', '7', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 瑙掕壊绠$悊鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1007', '瑙掕壊鏌ヨ', '101', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1008', '瑙掕壊鏂板', '101', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1009', '瑙掕壊淇敼', '101', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1010', '瑙掕壊鍒犻櫎', '101', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1011', '瑙掕壊瀵煎嚭', '101', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:export', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 鑿滃崟绠$悊鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1012', '鑿滃崟鏌ヨ', '102', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1013', '鑿滃崟鏂板', '102', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1014', '鑿滃崟淇敼', '102', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1015', '鑿滃崟鍒犻櫎', '102', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 閮ㄩ棬绠$悊鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1016', '閮ㄩ棬鏌ヨ', '103', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1017', '閮ㄩ棬鏂板', '103', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1018', '閮ㄩ棬淇敼', '103', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1019', '閮ㄩ棬鍒犻櫎', '103', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 宀椾綅绠$悊鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1020', '宀椾綅鏌ヨ', '104', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1021', '宀椾綅鏂板', '104', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1022', '宀椾綅淇敼', '104', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1023', '宀椾綅鍒犻櫎', '104', '4', '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1024', '宀椾綅瀵煎嚭', '104', '5', '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:export', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 瀛楀吀绠$悊鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1025', '瀛楀吀鏌ヨ', '105', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1026', '瀛楀吀鏂板', '105', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1027', '瀛楀吀淇敼', '105', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1028', '瀛楀吀鍒犻櫎', '105', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1029', '瀛楀吀瀵煎嚭', '105', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:export', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+
+-- 鍙傛暟璁剧疆鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1030', '鍙傛暟鏌ヨ', '106', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1031', '鍙傛暟鏂板', '106', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1032', '鍙傛暟淇敼', '106', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1033', '鍙傛暟鍒犻櫎', '106', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1034', '鍙傛暟瀵煎嚭', '106', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:export', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 閫氱煡鍏憡鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1035', '鍏憡鏌ヨ', '107', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:notice:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1036', '鍏憡鏂板', '107', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:notice:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1037', '鍏憡淇敼', '107', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:notice:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1038', '鍏憡鍒犻櫎', '107', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'system:notice:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 鎿嶄綔鏃ュ織鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1039', '鎿嶄綔鏌ヨ', '500', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1040', '鎿嶄綔鍒犻櫎', '500', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1041', '鏃ュ織瀵煎嚭', '500', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 鐧诲綍鏃ュ織鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1042', '鐧诲綍鏌ヨ', '501', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1043', '鐧诲綍鍒犻櫎', '501', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1044', '鏃ュ織瀵煎嚭', '501', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:export', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1045', '璐︽埛瑙i攣', '501', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:unlock', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 鍦ㄧ嚎鐢ㄦ埛鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1046', '鍦ㄧ嚎鏌ヨ', '109', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1047', '鎵归噺寮洪��', '109', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#',
+        'admin', CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1048', '鍗曟潯寮洪��', '109', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#',
+        'admin', CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 瀹氭椂浠诲姟鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1049', '浠诲姟鏌ヨ', '110', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1050', '浠诲姟鏂板', '110', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:add', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1051', '浠诲姟淇敼', '110', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1052', '浠诲姟鍒犻櫎', '110', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1053', '鐘舵�佷慨鏀�', '110', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1054', '浠诲姟瀵煎嚭', '110', '6', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:export', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- 浠g爜鐢熸垚鎸夐挳
+INSERT INTO sys_menu
+VALUES ('1055', '鐢熸垚鏌ヨ', '116', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1056', '鐢熸垚淇敼', '116', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1057', '鐢熸垚鍒犻櫎', '116', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1058', '瀵煎叆浠g爜', '116', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1059', '棰勮浠g爜', '116', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+INSERT INTO sys_menu
+VALUES ('1060', '鐢熸垚浠g爜', '116', '6', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 'admin',
+        CURRENT_TIMESTAMP, '', NULL, '');
+
+-- ----------------------------
+-- 鐢ㄦ埛鍜岃鑹插叧鑱旇〃  鐢ㄦ埛N-1瑙掕壊
+-- ----------------------------
+drop table if exists sys_user_role;
+
+-- 鍒涘缓琛�
+create table sys_user_role
+(
+    user_id bigint not null,       -- 鐢ㄦ埛ID
+    role_id bigint not null,       -- 瑙掕壊ID
+    primary key (user_id, role_id) -- 澶嶅悎涓婚敭
+);
+
+comment on table sys_user_role is '鐢ㄦ埛鍜岃鑹插叧鑱旇〃';
+comment on column sys_user_role.user_id is '鐢ㄦ埛ID';
+comment on column sys_user_role.role_id is '瑙掕壊ID';
+
+-- 鍒濆鍖�-鐢ㄦ埛鍜岃鑹插叧鑱旇〃鏁版嵁
+insert into sys_user_role (user_id, role_id)
+values ('1', '1'),
+       ('2', '2');
+
+-- ----------------------------
+-- 鐢ㄦ埛鍜岃鑹插叧鑱旇〃  鐢ㄦ埛N-1瑙掕壊
+-- ----------------------------
+drop table if exists sys_role_menu;
+
+create table sys_role_menu
+(
+    role_id bigint not null,       -- 瑙掕壊ID
+    menu_id bigint not null,       -- 鑿滃崟ID
+    primary key (role_id, menu_id) -- 澶嶅悎涓婚敭
+);
+
+comment on table sys_role_menu is '瑙掕壊鍜岃彍鍗曞叧鑱旇〃';
+comment on column sys_role_menu.role_id is '瑙掕壊ID';
+comment on column sys_role_menu.menu_id is '鑿滃崟ID';
+
+-- 鍒濆鍖�-瑙掕壊鍜岃彍鍗曞叧鑱旇〃鏁版嵁
+insert into sys_role_menu (role_id, menu_id)
+values ('2', '1'),
+       ('2', '2'),
+       ('2', '3'),
+       ('2', '4'),
+       ('2', '100'),
+       ('2', '101'),
+       ('2', '102'),
+       ('2', '103'),
+       ('2', '104'),
+       ('2', '105'),
+       ('2', '106'),
+       ('2', '107'),
+       ('2', '108'),
+       ('2', '109'),
+       ('2', '110'),
+       ('2', '111'),
+       ('2', '112'),
+       ('2', '113'),
+       ('2', '114'),
+       ('2', '115'),
+       ('2', '116'),
+       ('2', '117'),
+       ('2', '500'),
+       ('2', '501'),
+       ('2', '1000'),
+       ('2', '1001'),
+       ('2', '1002'),
+       ('2', '1003'),
+       ('2', '1004'),
+       ('2', '1005'),
+       ('2', '1006'),
+       ('2', '1007'),
+       ('2', '1008'),
+       ('2', '1009'),
+       ('2', '1010'),
+       ('2', '1011'),
+       ('2', '1012'),
+       ('2', '1013'),
+       ('2', '1014'),
+       ('2', '1015'),
+       ('2', '1016'),
+       ('2', '1017'),
+       ('2', '1018'),
+       ('2', '1019'),
+       ('2', '1020'),
+       ('2', '1021'),
+       ('2', '1022'),
+       ('2', '1023'),
+       ('2', '1024'),
+       ('2', '1025'),
+       ('2', '1026'),
+       ('2', '1027'),
+       ('2', '1028'),
+       ('2', '1029'),
+       ('2', '1030'),
+       ('2', '1031'),
+       ('2', '1032'),
+       ('2', '1033'),
+       ('2', '1034'),
+       ('2', '1035'),
+       ('2', '1036'),
+       ('2', '1037'),
+       ('2', '1038'),
+       ('2', '1039'),
+       ('2', '1040'),
+       ('2', '1041'),
+       ('2', '1042'),
+       ('2', '1043'),
+       ('2', '1044'),
+       ('2', '1045'),
+       ('2', '1046'),
+       ('2', '1047'),
+       ('2', '1048'),
+       ('2', '1049'),
+       ('2', '1050'),
+       ('2', '1051'),
+       ('2', '1052'),
+       ('2', '1053'),
+       ('2', '1054'),
+       ('2', '1055'),
+       ('2', '1056'),
+       ('2', '1057'),
+       ('2', '1058'),
+       ('2', '1059'),
+       ('2', '1060');
+
+
+-- ----------------------------
+-- 瑙掕壊鍜岄儴闂ㄥ叧鑱旇〃  瑙掕壊1-N閮ㄩ棬
+-- ----------------------------
+
+drop table if exists sys_role_dept;
+create table sys_role_dept
+(
+    role_id bigint not null,
+    dept_id bigint not null,
+    primary key (role_id, dept_id)
+);
+
+-- ----------------------------
+-- 鍒濆鍖�-瑙掕壊鍜岄儴闂ㄥ叧鑱旇〃鏁版嵁
+-- ----------------------------
+
+insert into sys_role_dept (role_id, dept_id)
+values ('2', '100'),
+       ('2', '101'),
+       ('2', '105');
+
+
+-- ----------------------------
+-- 9銆佺敤鎴蜂笌宀椾綅鍏宠仈琛�  鐢ㄦ埛1-N宀椾綅
+-- ----------------------------
+
+drop table if exists sys_user_post;
+create table sys_user_post
+(
+    user_id bigint not null, -- PostgreSQL 鏃犻渶鎸囧畾鍒楅暱搴�
+    post_id bigint not null,
+    primary key (user_id, post_id)
+);
+
+-- ----------------------------
+-- 鍒濆鍖�-鐢ㄦ埛涓庡矖浣嶅叧鑱旇〃鏁版嵁
+-- ----------------------------
+
+insert into sys_user_post (user_id, post_id)
+values ('1', '1'),
+       ('2', '2');
+
+
+-- ----------------------------
+-- 10銆佹搷浣滄棩蹇楄褰�
+-- ----------------------------
+
+drop table if exists sys_oper_log;
+CREATE TABLE sys_oper_log
+(
+    oper_id        BIGSERIAL NOT NULL,
+    title          VARCHAR(50)   DEFAULT '',
+    business_type  INTEGER       DEFAULT 0,
+    method         VARCHAR(200)  DEFAULT '',
+    request_method VARCHAR(10)   DEFAULT '',
+    operator_type  INTEGER       DEFAULT 0,
+    oper_name      VARCHAR(50)   DEFAULT '',
+    dept_name      VARCHAR(50)   DEFAULT '',
+    oper_url       VARCHAR(255)  DEFAULT '',
+    oper_ip        VARCHAR(128)  DEFAULT '',
+    oper_location  VARCHAR(255)  DEFAULT '',
+    oper_param     VARCHAR(2000) DEFAULT '',
+    json_result    VARCHAR(2000) DEFAULT '',
+    status         INTEGER       DEFAULT 0,
+    error_msg      VARCHAR(2000) DEFAULT '',
+    oper_time      TIMESTAMP,
+    cost_time      BIGINT        DEFAULT 0,
+    PRIMARY KEY (oper_id)
+);
+
+COMMENT ON TABLE sys_oper_log IS '鎿嶄綔鏃ュ織璁板綍';
+COMMENT ON COLUMN sys_oper_log.oper_id IS '鏃ュ織涓婚敭';
+COMMENT ON COLUMN sys_oper_log.title IS '妯″潡鏍囬';
+COMMENT ON COLUMN sys_oper_log.business_type IS '涓氬姟绫诲瀷锛�0鍏跺畠 1鏂板 2淇敼 3鍒犻櫎锛�';
+COMMENT ON COLUMN sys_oper_log.method IS '鏂规硶鍚嶇О';
+COMMENT ON COLUMN sys_oper_log.request_method IS '璇锋眰鏂瑰紡';
+COMMENT ON COLUMN sys_oper_log.operator_type IS '鎿嶄綔绫诲埆锛�0鍏跺畠 1鍚庡彴鐢ㄦ埛 2鎵嬫満绔敤鎴凤級';
+COMMENT ON COLUMN sys_oper_log.oper_name IS '鎿嶄綔浜哄憳';
+COMMENT ON COLUMN sys_oper_log.dept_name IS '閮ㄩ棬鍚嶇О';
+COMMENT ON COLUMN sys_oper_log.oper_url IS '璇锋眰URL';
+COMMENT ON COLUMN sys_oper_log.oper_ip IS '涓绘満鍦板潃';
+COMMENT ON COLUMN sys_oper_log.oper_location IS '鎿嶄綔鍦扮偣';
+COMMENT ON COLUMN sys_oper_log.oper_param IS '璇锋眰鍙傛暟';
+COMMENT ON COLUMN sys_oper_log.json_result IS '杩斿洖鍙傛暟';
+COMMENT ON COLUMN sys_oper_log.status IS '鎿嶄綔鐘舵�侊紙0姝e父 1寮傚父锛�';
+COMMENT ON COLUMN sys_oper_log.error_msg IS '閿欒娑堟伅';
+COMMENT ON COLUMN sys_oper_log.oper_time IS '鎿嶄綔鏃堕棿';
+COMMENT ON COLUMN sys_oper_log.cost_time IS '娑堣�楁椂闂�';
+
+-- 鍒涘缓绱㈠紩
+CREATE INDEX idx_sys_oper_log_bt ON sys_oper_log(business_type);
+CREATE INDEX idx_sys_oper_log_s ON sys_oper_log(status);
+CREATE INDEX idx_sys_oper_log_ot ON sys_oper_log(oper_time);
+
+
+-- ----------------------------
+-- 11銆佸瓧鍏哥被鍨嬭〃
+-- ----------------------------
+
+DROP TABLE IF EXISTS sys_dict_type;
+
+CREATE TABLE sys_dict_type
+(
+    dict_id     BIGSERIAL NOT NULL,
+    dict_name   VARCHAR(100) DEFAULT '',
+    dict_type   VARCHAR(100) DEFAULT '',
+    status      CHAR(1)      DEFAULT '0',
+    create_by   VARCHAR(64)  DEFAULT '',
+    create_time TIMESTAMP,
+    update_by   VARCHAR(64)  DEFAULT '',
+    update_time TIMESTAMP,
+    remark      VARCHAR(500) DEFAULT NULL,
+    PRIMARY KEY (dict_id),
+    UNIQUE (dict_type)
+);
+
+
+COMMENT ON TABLE sys_dict_type IS '瀛楀吀绫诲瀷琛�';
+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姝e父 1鍋滅敤锛�';
+COMMENT ON COLUMN sys_dict_type.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_dict_type.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_dict_type.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_dict_type.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_dict_type.remark IS '澶囨敞';
+
+-- 璁剧疆搴忓垪璧峰鍊�
+ALTER SEQUENCE sys_dict_type_dict_id_seq RESTART WITH 100;
+
+-- 鍒濆鍖栨暟鎹彃鍏�
+INSERT INTO sys_dict_type
+VALUES (1, '鐢ㄦ埛鎬у埆', 'sys_user_sex', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鐢ㄦ埛鎬у埆鍒楄〃');
+INSERT INTO sys_dict_type
+VALUES (2, '鑿滃崟鐘舵��', 'sys_show_hide', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鑿滃崟鐘舵�佸垪琛�');
+INSERT INTO sys_dict_type
+VALUES (3, '绯荤粺寮�鍏�', 'sys_normal_disable', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '绯荤粺寮�鍏冲垪琛�');
+INSERT INTO sys_dict_type
+VALUES (4, '浠诲姟鐘舵��', 'sys_job_status', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '浠诲姟鐘舵�佸垪琛�');
+INSERT INTO sys_dict_type
+VALUES (5, '浠诲姟鍒嗙粍', 'sys_job_group', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '浠诲姟鍒嗙粍鍒楄〃');
+INSERT INTO sys_dict_type
+VALUES (6, '绯荤粺鏄惁', 'sys_yes_no', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '绯荤粺鏄惁鍒楄〃');
+INSERT INTO sys_dict_type
+VALUES (7, '閫氱煡绫诲瀷', 'sys_notice_type', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '閫氱煡绫诲瀷鍒楄〃');
+INSERT INTO sys_dict_type
+VALUES (8, '閫氱煡鐘舵��', 'sys_notice_status', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '閫氱煡鐘舵�佸垪琛�');
+INSERT INTO sys_dict_type
+VALUES (9, '鎿嶄綔绫诲瀷', 'sys_oper_type', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鎿嶄綔绫诲瀷鍒楄〃');
+INSERT INTO sys_dict_type
+VALUES (10, '绯荤粺鐘舵��', 'sys_common_status', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鐧诲綍鐘舵�佸垪琛�');
+
+-- ----------------------------
+-- 12銆佸瓧鍏告暟鎹〃
+-- ----------------------------
+
+DROP TABLE IF EXISTS sys_dict_data;
+
+CREATE TABLE sys_dict_data
+(
+    dict_code   BIGSERIAL NOT NULL,
+    dict_sort   INTEGER      DEFAULT 0,
+    dict_label  VARCHAR(100) DEFAULT '',
+    dict_value  VARCHAR(100) DEFAULT '',
+    dict_type   VARCHAR(100) DEFAULT '',
+    css_class   VARCHAR(100) DEFAULT NULL,
+    list_class  VARCHAR(100) DEFAULT NULL,
+    is_default  CHAR(1)      DEFAULT 'N',
+    status      CHAR(1)      DEFAULT '0',
+    create_by   VARCHAR(64)  DEFAULT '',
+    create_time TIMESTAMP,
+    update_by   VARCHAR(64)  DEFAULT '',
+    update_time TIMESTAMP,
+    remark      VARCHAR(500) DEFAULT NULL,
+    PRIMARY KEY (dict_code)
+);
+
+COMMENT ON TABLE sys_dict_data IS '瀛楀吀鏁版嵁琛�';
+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.is_default IS '鏄惁榛樿锛圷鏄� N鍚︼級';
+COMMENT ON COLUMN sys_dict_data.status IS '鐘舵�侊紙0姝e父 1鍋滅敤锛�';
+COMMENT ON COLUMN sys_dict_data.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_dict_data.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_dict_data.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_dict_data.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_dict_data.remark IS '澶囨敞';
+
+-- 璁剧疆搴忓垪璧峰鍊�
+ALTER SEQUENCE sys_dict_data_dict_code_seq RESTART WITH 100;
+
+-- 鍒濆鍖栨暟鎹彃鍏�
+INSERT INTO sys_dict_data
+VALUES (1, 1, '鐢�', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鎬у埆鐢�');
+INSERT INTO sys_dict_data
+VALUES (2, 2, '濂�', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鎬у埆濂�');
+INSERT INTO sys_dict_data
+VALUES (3, 3, '鏈煡', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鎬у埆鏈煡');
+INSERT INTO sys_dict_data
+VALUES (4, 1, '鏄剧ず', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鏄剧ず鑿滃崟');
+INSERT INTO sys_dict_data
+VALUES (5, 2, '闅愯棌', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '闅愯棌鑿滃崟');
+INSERT INTO sys_dict_data
+VALUES (6, 1, '姝e父', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '', NULL,
+        '姝e父鐘舵��');
+INSERT INTO sys_dict_data
+VALUES (7, 2, '鍋滅敤', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL,
+        '鍋滅敤鐘舵��');
+INSERT INTO sys_dict_data
+VALUES (8, 1, '姝e父', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '姝e父鐘舵��');
+INSERT INTO sys_dict_data
+VALUES (9, 2, '鏆傚仠', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鍋滅敤鐘舵��');
+INSERT INTO sys_dict_data
+VALUES (10, 1, '榛樿', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '榛樿鍒嗙粍');
+INSERT INTO sys_dict_data
+VALUES (11, 2, '绯荤粺', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '绯荤粺鍒嗙粍');
+INSERT INTO sys_dict_data
+VALUES (12, 1, '鏄�', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '绯荤粺榛樿鏄�');
+INSERT INTO sys_dict_data
+VALUES (13, 2, '鍚�', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '绯荤粺榛樿鍚�');
+INSERT INTO sys_dict_data
+VALUES (14, 1, '閫氱煡', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '閫氱煡');
+INSERT INTO sys_dict_data
+VALUES (15, 2, '鍏憡', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鍏憡');
+INSERT INTO sys_dict_data
+VALUES (16, 1, '姝e父', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '', NULL,
+        '姝e父鐘舵��');
+INSERT INTO sys_dict_data
+VALUES (17, 2, '鍏抽棴', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL,
+        '鍏抽棴鐘舵��');
+INSERT INTO sys_dict_data
+VALUES (18, 99, '鍏朵粬', '0', 'sys_oper_type', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鍏朵粬鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (19, 1, '鏂板', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鏂板鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (20, 2, '淇敼', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '淇敼鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (21, 3, '鍒犻櫎', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鍒犻櫎鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (22, 4, '鎺堟潈', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '鎺堟潈鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (23, 5, '瀵煎嚭', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '瀵煎嚭鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (24, 6, '瀵煎叆', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '瀵煎叆鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (25, 7, '寮洪��', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL, '寮洪��鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (26, 8, '鐢熸垚浠g爜', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL,
+        '鐢熸垚鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (27, 9, '娓呯┖鏁版嵁', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL,
+        '娓呯┖鎿嶄綔');
+INSERT INTO sys_dict_data
+VALUES (28, 1, '鎴愬姛', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL,
+        '姝e父鐘舵��');
+INSERT INTO sys_dict_data
+VALUES (29, 2, '澶辫触', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '', NULL,
+        '鍋滅敤鐘舵��');
+
+
+
+-- ----------------------------
+-- 13銆佸弬鏁伴厤缃〃
+-- ----------------------------
+
+DROP TABLE IF EXISTS sys_config;
+CREATE TABLE sys_config
+(
+    config_id    SERIAL PRIMARY KEY,
+    config_name  VARCHAR(100) NOT NULL DEFAULT '',
+    config_key   VARCHAR(100) NOT NULL DEFAULT '',
+    config_value VARCHAR(500) NOT NULL DEFAULT '',
+    config_type  CHAR(1)      NOT NULL DEFAULT 'N',
+    create_by    VARCHAR(64)  NOT NULL DEFAULT '',
+    create_time  TIMESTAMP    NOT NULL,
+    update_by    VARCHAR(64)  NOT NULL DEFAULT '',
+    update_time  TIMESTAMP,
+    remark       VARCHAR(500)
+);
+
+-- 娣诲姞琛ㄦ敞閲�
+COMMENT ON TABLE sys_config IS '鍙傛暟閰嶇疆琛�';
+
+-- 娣诲姞鍒楁敞閲�
+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 '绯荤粺鍐呯疆锛圷鏄� N鍚︼級';
+COMMENT ON COLUMN sys_config.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_config.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_config.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_config.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_config.remark IS '澶囨敞';
+
+-- 璁剧疆搴忓垪璧峰鍊间负100
+ALTER SEQUENCE sys_config_config_id_seq RESTART WITH 100;
+
+-- 鍒濆鍖栨暟鎹彃鍏�
+-- 鎻掑叆绯荤粺閰嶇疆鏁版嵁
+INSERT INTO sys_config (config_id, config_name, config_key, config_value, config_type, create_by, create_time,
+                        update_by, update_time, remark)
+VALUES (1, '涓绘鏋堕〉-榛樿鐨偆鏍峰紡鍚嶇О', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', NOW(), '', NULL,
+        '钃濊壊 skin-blue銆佺豢鑹� skin-green銆佺传鑹� skin-purple銆佺孩鑹� skin-red銆侀粍鑹� skin-yellow'),
+       (2, '鐢ㄦ埛绠$悊-璐﹀彿鍒濆瀵嗙爜', 'sys.user.initPassword', '123456', 'Y', 'admin', NOW(), '', NULL,
+        '鍒濆鍖栧瘑鐮� 123456'),
+       (3, '涓绘鏋堕〉-渚ц竟鏍忎富棰�', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', NOW(), '', NULL,
+        '娣辫壊涓婚theme-dark锛屾祬鑹蹭富棰榯heme-light'),
+       (4, '璐﹀彿鑷姪-楠岃瘉鐮佸紑鍏�', 'sys.account.captchaEnabled', 'true', 'Y', 'admin', NOW(), '', NULL,
+        '鏄惁寮�鍚獙璇佺爜鍔熻兘锛坱rue寮�鍚紝false鍏抽棴锛�'),
+       (5, '璐﹀彿鑷姪-鏄惁寮�鍚敤鎴锋敞鍐屽姛鑳�', 'sys.account.registerUser', 'false', 'Y', 'admin', NOW(), '', NULL,
+        '鏄惁寮�鍚敞鍐岀敤鎴峰姛鑳斤紙true寮�鍚紝false鍏抽棴锛�'),
+       (6, '鐢ㄦ埛鐧诲綍-榛戝悕鍗曞垪琛�', 'sys.login.blackIPList', '', 'Y', 'admin', NOW(), '', NULL,
+        '璁剧疆鐧诲綍IP榛戝悕鍗曢檺鍒讹紝澶氫釜鍖归厤椤逛互;鍒嗛殧锛屾敮鎸佸尮閰嶏紙*閫氶厤銆佺綉娈碉級');
+
+
+
+
+-- ----------------------------
+-- 14銆佺郴缁熻闂褰�
+-- ----------------------------
+
+DROP TABLE IF EXISTS sys_logininfor;
+CREATE TABLE sys_logininfor
+(
+    info_id        BIGSERIAL PRIMARY KEY,
+    user_name      VARCHAR(50)  NOT NULL DEFAULT '',
+    ipaddr         VARCHAR(128) NOT NULL DEFAULT '',
+    login_location VARCHAR(255) NOT NULL DEFAULT '',
+    browser        VARCHAR(50)  NOT NULL DEFAULT '',
+    os             VARCHAR(50)  NOT NULL DEFAULT '',
+    status         CHAR(1)      NOT NULL DEFAULT '0',
+    msg            VARCHAR(255) NOT NULL DEFAULT '',
+    login_time     TIMESTAMP    NOT NULL
+);
+
+-- 璁剧疆搴忓垪璧峰鍊间负100
+ALTER SEQUENCE sys_logininfor_info_id_seq RESTART WITH 100;
+
+CREATE INDEX idx_sys_logininfor_s ON sys_logininfor(status);
+CREATE INDEX idx_sys_logininfor_lt ON sys_logininfor(login_time);
+
+COMMENT ON TABLE sys_logininfor IS '绯荤粺璁块棶璁板綍';
+
+COMMENT ON COLUMN sys_logininfor.info_id IS '璁块棶ID';
+COMMENT ON COLUMN sys_logininfor.user_name IS '鐢ㄦ埛璐﹀彿';
+COMMENT ON COLUMN sys_logininfor.ipaddr IS '鐧诲綍IP鍦板潃';
+COMMENT ON COLUMN sys_logininfor.login_location IS '鐧诲綍鍦扮偣';
+COMMENT ON COLUMN sys_logininfor.browser IS '娴忚鍣ㄧ被鍨�';
+COMMENT ON COLUMN sys_logininfor.os IS '鎿嶄綔绯荤粺';
+COMMENT ON COLUMN sys_logininfor.status IS '鐧诲綍鐘舵�侊紙0鎴愬姛 1澶辫触锛�';
+COMMENT ON COLUMN sys_logininfor.msg IS '鎻愮ず娑堟伅';
+COMMENT ON COLUMN sys_logininfor.login_time IS '璁块棶鏃堕棿';
+
+
+
+-- ----------------------------
+-- 15銆佸畾鏃朵换鍔¤皟搴﹁〃
+-- ----------------------------
+
+DROP TABLE IF EXISTS sys_job;
+CREATE TABLE sys_job
+(
+    job_id          BIGSERIAL,
+    job_name        VARCHAR(64)  NOT NULL DEFAULT '',
+    job_group       VARCHAR(64)  NOT NULL DEFAULT 'DEFAULT',
+    invoke_target   VARCHAR(500) NOT NULL,
+    cron_expression VARCHAR(255) NOT NULL DEFAULT '',
+    misfire_policy  VARCHAR(20)  NOT NULL DEFAULT '3',
+    concurrent      CHAR(1)      NOT NULL DEFAULT '1',
+    status          CHAR(1)      NOT NULL DEFAULT '0',
+    create_by       VARCHAR(64)  NOT NULL DEFAULT '',
+    create_time     TIMESTAMP    NOT NULL,
+    update_by       VARCHAR(64)  NOT NULL DEFAULT '',
+    update_time     TIMESTAMP,
+    remark          VARCHAR(500) NOT NULL DEFAULT '',
+    PRIMARY KEY (job_id, job_name, job_group)
+);
+
+-- 璁剧疆搴忓垪璧峰鍊间负100
+ALTER SEQUENCE sys_job_job_id_seq RESTART WITH 100;
+
+-- 娣诲姞琛ㄦ敞閲�
+COMMENT ON TABLE sys_job IS '瀹氭椂浠诲姟璋冨害琛�';
+
+-- 娣诲姞鍒楁敞閲�
+COMMENT ON COLUMN sys_job.job_id IS '浠诲姟ID';
+COMMENT ON COLUMN sys_job.job_name IS '浠诲姟鍚嶇О';
+COMMENT ON COLUMN sys_job.job_group IS '浠诲姟缁勫悕';
+COMMENT ON COLUMN sys_job.invoke_target IS '璋冪敤鐩爣瀛楃涓�';
+COMMENT ON COLUMN sys_job.cron_expression IS 'cron鎵ц琛ㄨ揪寮�';
+COMMENT ON COLUMN sys_job.misfire_policy IS '璁″垝鎵ц閿欒绛栫暐锛�1绔嬪嵆鎵ц 2鎵ц涓�娆� 3鏀惧純鎵ц锛�';
+COMMENT ON COLUMN sys_job.concurrent IS '鏄惁骞跺彂鎵ц锛�0鍏佽 1绂佹锛�';
+COMMENT ON COLUMN sys_job.status IS '鐘舵�侊紙0姝e父 1鏆傚仠锛�';
+COMMENT ON COLUMN sys_job.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_job.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_job.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_job.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_job.remark IS '澶囨敞淇℃伅';
+
+-- 鎻掑叆鏁版嵁
+INSERT INTO sys_job (job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status,
+                     create_by, create_time, update_by, update_time, remark)
+VALUES (1, '绯荤粺榛樿锛堟棤鍙傦級', 'DEFAULT', 'ryTask.ryNoParams', '0/10 * * * * ?', '3', '1', '1', 'admin', NOW(), '', NULL,
+        ''),
+       (2, '绯荤粺榛樿锛堟湁鍙傦級', 'DEFAULT', 'ryTask.ryParams(''ry'')', '0/15 * * * * ?', '3', '1', '1', 'admin', NOW(), '',
+        NULL, ''),
+       (3, '绯荤粺榛樿锛堝鍙傦級', 'DEFAULT', 'ryTask.ryMultipleParams(''ry'', true, 2000, 316.50, 100)', '0/20 * * * * ?',
+        '3', '1', '1', 'admin', NOW(), '', NULL, '');
+
+
+
+
+-- ----------------------------
+-- 16銆佸畾鏃朵换鍔¤皟搴︽棩蹇楄〃
+-- ----------------------------
+DROP TABLE IF EXISTS sys_job_log;
+
+CREATE TABLE sys_job_log
+(
+    job_log_id     BIGSERIAL PRIMARY KEY,
+    job_name       VARCHAR(64)  NOT NULL,
+    job_group      VARCHAR(64)  NOT NULL,
+    invoke_target  VARCHAR(500) NOT NULL,
+    job_message    VARCHAR(500),
+    status         CHAR(1)      NOT NULL DEFAULT '0',
+    exception_info TEXT                  DEFAULT '',
+    create_time    TIMESTAMP    NOT NULL
+);
+
+-- 娣诲姞琛ㄦ敞閲�
+COMMENT ON TABLE sys_job_log IS '瀹氭椂浠诲姟璋冨害鏃ュ織琛�';
+
+-- 娣诲姞鍒楁敞閲�
+COMMENT ON COLUMN sys_job_log.job_log_id IS '浠诲姟鏃ュ織ID';
+COMMENT ON COLUMN sys_job_log.job_name IS '浠诲姟鍚嶇О';
+COMMENT ON COLUMN sys_job_log.job_group IS '浠诲姟缁勫悕';
+COMMENT ON COLUMN sys_job_log.invoke_target IS '璋冪敤鐩爣瀛楃涓�';
+COMMENT ON COLUMN sys_job_log.job_message IS '鏃ュ織淇℃伅';
+COMMENT ON COLUMN sys_job_log.status IS '鎵ц鐘舵�侊紙0姝e父 1澶辫触锛�';
+COMMENT ON COLUMN sys_job_log.exception_info IS '寮傚父淇℃伅';
+COMMENT ON COLUMN sys_job_log.create_time IS '鍒涘缓鏃堕棿';
+
+
+
+-- ----------------------------
+-- 17銆侀�氱煡鍏憡琛�
+-- ----------------------------
+DROP TABLE IF EXISTS sys_notice;
+
+CREATE TABLE sys_notice
+(
+    notice_id      SERIAL PRIMARY KEY,
+    notice_title   VARCHAR(50) NOT NULL,
+    notice_type    CHAR(1)     NOT NULL,
+    notice_content BYTEA                DEFAULT NULL,
+    status         CHAR(1)     NOT NULL DEFAULT '0',
+    create_by      VARCHAR(64) NOT NULL DEFAULT '',
+    create_time    TIMESTAMP   NOT NULL,
+    update_by      VARCHAR(64) NOT NULL DEFAULT '',
+    update_time    TIMESTAMP,
+    remark         VARCHAR(255)         DEFAULT NULL
+);
+
+-- 璁剧疆搴忓垪璧峰鍊间负10
+ALTER SEQUENCE sys_notice_notice_id_seq RESTART WITH 10;
+
+-- 娣诲姞琛ㄦ敞閲�
+COMMENT ON TABLE sys_notice IS '閫氱煡鍏憡琛�';
+
+-- 娣诲姞鍒楁敞閲�
+COMMENT ON COLUMN sys_notice.notice_id IS '鍏憡ID';
+COMMENT ON COLUMN sys_notice.notice_title IS '鍏憡鏍囬';
+COMMENT ON COLUMN sys_notice.notice_type IS '鍏憡绫诲瀷锛�1閫氱煡 2鍏憡锛�';
+COMMENT ON COLUMN sys_notice.notice_content IS '鍏憡鍐呭';
+COMMENT ON COLUMN sys_notice.status IS '鍏憡鐘舵�侊紙0姝e父 1鍏抽棴锛�';
+COMMENT ON COLUMN sys_notice.create_by IS '鍒涘缓鑰�';
+COMMENT ON COLUMN sys_notice.create_time IS '鍒涘缓鏃堕棿';
+COMMENT ON COLUMN sys_notice.update_by IS '鏇存柊鑰�';
+COMMENT ON COLUMN sys_notice.update_time IS '鏇存柊鏃堕棿';
+COMMENT ON COLUMN sys_notice.remark IS '澶囨敞';
+
+-- 鎻掑叆鍒濆鍖栨暟鎹�
+INSERT INTO sys_notice (notice_id, notice_title, notice_type, notice_content, status, create_by, create_time, update_by,
+                        update_time, remark)
+VALUES (1, '娓╅Θ鎻愰啋锛�2018-07-01 鑻ヤ緷鏂扮増鏈彂甯冨暒', '2', E'\\x鏂扮増鏈唴瀹�'::bytea, '0', 'admin', NOW(), '', NULL,
+        '绠$悊鍛�'),
+       (2, '缁存姢閫氱煡锛�2018-07-01 鑻ヤ緷绯荤粺鍑屾櫒缁存姢', '1', E'\\x缁存姢鍐呭'::bytea, '0', 'admin', NOW(), '', NULL, '绠$悊鍛�');
+
+
+
+
+-- ----------------------------
+-- 18銆佷唬鐮佺敓鎴愪笟鍔¤〃
+-- ----------------------------
+
+drop table if exists gen_table;
+create table gen_table
+(
+    table_id          serial primary key,                     -- 浣跨敤 serial 瀹炵幇鑷
+    table_name        varchar(200) default '' not null,       -- 琛ㄥ悕绉�
+    table_comment     varchar(500) default '',                -- 琛ㄦ弿杩�
+    sub_table_name    varchar(64),                            -- 鍏宠仈瀛愯〃鐨勮〃鍚�
+    sub_table_fk_name varchar(64),                            -- 瀛愯〃鍏宠仈鐨勫閿悕
+    class_name        varchar(100) default '' not null,       -- 瀹炰綋绫诲悕绉�
+    tpl_category      varchar(200) default 'crud',            -- 浣跨敤鐨勬ā鏉匡紙crud鍗曡〃鎿嶄綔 tree鏍戣〃鎿嶄綔锛�
+    tpl_web_type      varchar(30)  default '',                -- 鍓嶇妯℃澘绫诲瀷锛坋lement-ui妯$増 element-plus妯$増锛�
+    package_name      varchar(100),                           -- 鐢熸垚鍖呰矾寰�
+    module_name       varchar(30),                            -- 鐢熸垚妯″潡鍚�
+    business_name     varchar(30),                            -- 鐢熸垚涓氬姟鍚�
+    function_name     varchar(50),                            -- 鐢熸垚鍔熻兘鍚�
+    function_author   varchar(50),                            -- 鐢熸垚鍔熻兘浣滆��
+    gen_type          char(1)      default '0',               -- 鐢熸垚浠g爜鏂瑰紡锛�0zip鍘嬬缉鍖� 1鑷畾涔夎矾寰勶級
+    gen_path          varchar(200) default '/',               -- 鐢熸垚璺緞锛堜笉濉粯璁ら」鐩矾寰勶級
+    options           varchar(1000),                          -- 鍏跺畠鐢熸垚閫夐」
+    create_by         varchar(64)  default '',                -- 鍒涘缓鑰�
+    create_time       timestamp    default current_timestamp, -- 鍒涘缓鏃堕棿
+    update_by         varchar(64)  default '',                -- 鏇存柊鑰�
+    update_time       timestamp,                              -- 鏇存柊鏃堕棿
+    remark            varchar(500) default null               -- 澶囨敞
+);
+
+-- 琛ㄦ敞閲�
+comment on table gen_table is '浠g爜鐢熸垚涓氬姟琛�';
+
+-- 瀛楁娉ㄩ噴
+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.tpl_web_type is '鍓嶇妯℃澘绫诲瀷锛坋lement-ui妯$増 element-plus妯$増锛�';
+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 '鐢熸垚浠g爜鏂瑰紡锛�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 '澶囨敞';
+
+-- ----------------------------
+-- 19銆佷唬鐮佺敓鎴愪笟鍔¤〃瀛楁
+-- ----------------------------
+drop table if exists gen_table_column;
+create table gen_table_column
+(
+    column_id      serial primary key,                     -- 浣跨敤 serial 瀹炵幇鑷
+    table_id       bigint,                                 -- 褰掑睘琛ㄧ紪鍙�
+    column_name    varchar(200),                           -- 鍒楀悕绉�
+    column_comment varchar(500),                           -- 鍒楁弿杩�
+    column_type    varchar(100),                           -- 鍒楃被鍨�
+    java_type      varchar(500),                           -- JAVA绫诲瀷
+    java_field     varchar(200),                           -- JAVA瀛楁鍚�
+    is_pk          char(1),                                -- 鏄惁涓婚敭锛�1鏄級
+    is_increment   char(1),                                -- 鏄惁鑷锛�1鏄級
+    is_required    char(1),                                -- 鏄惁蹇呭~锛�1鏄級
+    is_insert      char(1),                                -- 鏄惁涓烘彃鍏ュ瓧娈碉紙1鏄級
+    is_edit        char(1),                                -- 鏄惁缂栬緫瀛楁锛�1鏄級
+    is_list        char(1),                                -- 鏄惁鍒楄〃瀛楁锛�1鏄級
+    is_query       char(1),                                -- 鏄惁鏌ヨ瀛楁锛�1鏄級
+    query_type     varchar(200) default 'EQ',              -- 鏌ヨ鏂瑰紡锛堢瓑浜庛�佷笉绛変簬銆佸ぇ浜庛�佸皬浜庛�佽寖鍥达級
+    html_type      varchar(200),                           -- 鏄剧ず绫诲瀷锛堟枃鏈銆佹枃鏈煙銆佷笅鎷夋銆佸閫夋銆佸崟閫夋銆佹棩鏈熸帶浠讹級
+    dict_type      varchar(200) default '',                -- 瀛楀吀绫诲瀷
+    sort           int,                                    -- 鎺掑簭
+    create_by      varchar(64)  default '',                -- 鍒涘缓鑰�
+    create_time    timestamp    default current_timestamp, -- 鍒涘缓鏃堕棿
+    update_by      varchar(64)  default '',                -- 鏇存柊鑰�
+    update_time    timestamp,                              -- 鏇存柊鏃堕棿
+    foreign key (table_id) references gen_table (table_id) -- 澶栭敭绾︽潫
+);
+
+-- 琛ㄦ敞閲�
+comment on table gen_table_column is '浠g爜鐢熸垚涓氬姟琛ㄥ瓧娈�';
+
+-- 瀛楁娉ㄩ噴
+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 '鏇存柊鏃堕棿';
+
+
+
diff --git a/ruoyi-admin/src/main/resources/logback.xml.example b/ruoyi-admin/src/main/resources/logback.xml.example
index a360583..afdb6d7 100644
--- a/ruoyi-admin/src/main/resources/logback.xml.example
+++ b/ruoyi-admin/src/main/resources/logback.xml.example
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <!-- 鏃ュ織瀛樻斁璺緞 -->
-	<property name="log.path" value="/home/ruoyi/logs" />
+	<property name="log.path" value="C:/Users/12631/Desktop/download/logs" />
     <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
 	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 
diff --git a/ruoyi-system/src/main/resources/db/migration/postgresql/postgresql/V20250525003427__create_table_storage_blob.sql b/ruoyi-system/src/main/resources/db/migration/postgresql/postgresql/V20250525003427__create_table_storage_blob.sql
new file mode 100644
index 0000000..05cf963
--- /dev/null
+++ b/ruoyi-system/src/main/resources/db/migration/postgresql/postgresql/V20250525003427__create_table_storage_blob.sql
@@ -0,0 +1,20 @@
+DROP TABLE IF EXISTS storage_blob;
+
+CREATE TABLE storage_blob
+(
+    id           bigserial PRIMARY KEY,
+    created_at   timestamp    default now() NOT NULL,
+    key          varchar(150) DEFAULT ''    NOT NULL,
+    content_type varchar(100) DEFAULT ''    NOT NULL,
+    filename     varchar(255) DEFAULT ''    NOT NULL,
+    byte_size    bigint       DEFAULT 0     NOT NULL,
+    UNIQUE (key)
+);
+
+COMMENT ON TABLE storage_blob IS '閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�';
+
+COMMENT ON COLUMN storage_blob.key IS '璧勬簮id';
+COMMENT ON COLUMN storage_blob.content_type IS '璧勬簮绫诲瀷锛屼緥濡侸PG鍥剧墖鐨勮祫婧愮被鍨嬩负image/jpg';
+COMMENT ON COLUMN storage_blob.filename IS '鏂囦欢鍚�';
+COMMENT ON COLUMN storage_blob.byte_size IS '璧勬簮灏哄(瀛楄妭)';
+
diff --git a/ruoyi-system/src/main/resources/db/migration/postgresql/postgresql/V20250525003447__create_table_storage_attachment.sql b/ruoyi-system/src/main/resources/db/migration/postgresql/postgresql/V20250525003447__create_table_storage_attachment.sql
new file mode 100644
index 0000000..d743faa
--- /dev/null
+++ b/ruoyi-system/src/main/resources/db/migration/postgresql/postgresql/V20250525003447__create_table_storage_attachment.sql
@@ -0,0 +1,25 @@
+-- ----------------------------
+-- 闄勪欢琛�
+-- ----------------------------
+drop table if exists storage_attachment;
+CREATE TABLE storage_attachments
+(
+    id              bigserial PRIMARY KEY,
+    created_at      timestamp    default now() NOT NULL,
+    updated_at      timestamp    default now() NOT NULL,
+    deleted_at      bigint       DEFAULT 0     NOT NULL,
+    record_type     smallint     DEFAULT 0     NOT NULL,
+    record_id       bigint       DEFAULT 0     NOT NULL,
+    name            varchar(100) DEFAULT ''    NOT NULL,
+    storage_blob_id bigint       DEFAULT 0     NOT NULL
+);
+
+COMMENT ON TABLE storage_attachments IS '閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�';
+
+COMMENT ON COLUMN storage_attachments.record_type IS '鍏宠仈鐨勮褰曠被鍨�';
+COMMENT ON COLUMN storage_attachments.record_id IS '鍏宠仈鐨勮褰昳d';
+COMMENT ON COLUMN storage_attachments.name IS '鍚嶇О, 濡�: file, avatar (鍖哄垎鍚屼竴鏉¤褰曚笉鍚岀被鍨嬬殑闄勪欢)';
+COMMENT ON COLUMN storage_attachments.storage_blob_id IS '鍏宠仈storage_blob璁板綍id';
+
+CREATE INDEX idx_storage_attachments_on_record
+    ON storage_attachments (record_type, record_id);
\ No newline at end of file

--
Gitblit v1.9.3