From 2db123a855bd3bb2182714cd15a9446987b0e7ae Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期六, 24 五月 2025 19:09:32 +0800
Subject: [PATCH] 1.数据库迁移工具引入 2.若依原始sql修改
---
db/migration/V20250524151405__create_QRTZ_SCHEDULER_STATE.sql | 28 +
db/migration/V20250524155005__create_sys_config.sql | 34 +
db/migration/V20250524154305__create_sys_role_menu.sql | 122 ++++
db/migration/V20250524155305__create_sys_job_log.sql | 29 +
db/migration/V20250524152805__create_sys_role.sql | 63 ++
pom.xml | 7
db/migration/V20250524152505__create_sys_user.sql | 73 ++
db/migration/V20250524151205__create_QRTZ_PAUSED_TRIGGER_GRPS.sql | 22
db/migration/V20250524151505__create_QRTZ_LOCKS.sql | 25
db/migration/V20250524154805__create_sys_dict_type.sql | 32 +
db/migration/V20250524150205__create_QRTZ_SIMPLE_TRIGGERS.sql | 29 +
db/migration/V20250524151705__create_QRTZ_SIMPROP_TRIGGERS.sql | 52 ++
db/migration/V20250524152605__create_sys_post.sql | 52 ++
db/migration/V20250524150705__create_QRTZ_TRIGGERS.sql | 48 +
db/migration/V20250524154705__create_sys_oper_log.sql | 28 +
db/migration/V20250524154905__create_sys_dict_data.sql | 63 ++
ruoyi-admin/pom.xml | 12
db/migration/V20250524151305__create_QRTZ_FIRED_TRIGGERS.sql | 45 +
db/migration/V20250524155405__create_sys_notice.sql | 47 +
db/migration/V20250524153205__create_sys_menu.sql | 274 ++++++++++
db/migration/V20250524152105__create_sys_dept.sql | 75 ++
db/migration/V20250524145505__create_QRTZ_JOB_DETAILS.sql | 33 +
db/migration/V20250524154505__create_sys_role_dept.sql | 20
db/migration/V20250524154605__create_sys_user_post.sql | 19
db/migration/V20250524154105__create_sys_user_role.sql | 37 +
db/migration/V20250524150805__create_QRTZ_CRON_TRIGGERS.sql | 27 +
db/migration/V20250524151005__create_QRTZ_BLOB_TRIGGERS.sql | 26 +
db/migration/V20250524155205__create_sys_job.sql | 49 +
db/migration/V20250524151105__create_QRTZ_CALENDARS.sql | 23
db/migration/V20250524155505__create_gen_table_column.sql | 58 ++
db/migration/V20250524155105__create_sys_logininfor.sql | 43 +
db/migration/V20250524155505__create_gen_table.sql | 55 ++
32 files changed, 1,547 insertions(+), 3 deletions(-)
diff --git a/db/migration/V20250524145505__create_QRTZ_JOB_DETAILS.sql b/db/migration/V20250524145505__create_QRTZ_JOB_DETAILS.sql
new file mode 100644
index 0000000..60526bf
--- /dev/null
+++ b/db/migration/V20250524145505__create_QRTZ_JOB_DETAILS.sql
@@ -0,0 +1,33 @@
+-- ----------------------------
+-- 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瀵硅薄';
+
+
diff --git a/db/migration/V20250524150205__create_QRTZ_SIMPLE_TRIGGERS.sql b/db/migration/V20250524150205__create_QRTZ_SIMPLE_TRIGGERS.sql
new file mode 100644
index 0000000..8c94175
--- /dev/null
+++ b/db/migration/V20250524150205__create_QRTZ_SIMPLE_TRIGGERS.sql
@@ -0,0 +1,29 @@
+-- ----------------------------
+-- 2銆� 瀛樺偍宸查厤缃殑 Trigger 鐨勪俊鎭�
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
+
+CREATE TABLE QRTZ_SIMPLE_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鐨勫閿�
+ 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 '宸茬粡瑙﹀彂鐨勬鏁�';
+
+
+
+
diff --git a/db/migration/V20250524150705__create_QRTZ_TRIGGERS.sql b/db/migration/V20250524150705__create_QRTZ_TRIGGERS.sql
new file mode 100644
index 0000000..8fb3c1a
--- /dev/null
+++ b/db/migration/V20250524150705__create_QRTZ_TRIGGERS.sql
@@ -0,0 +1,48 @@
+-- ----------------------------
+-- 3銆� 瀛樺偍绠�鍗曠殑 Trigger锛屽寘鎷噸澶嶆鏁帮紝闂撮殧锛屼互鍙婂凡瑙﹀彂鐨勬鏁�
+-- ----------------------------
+DROP TABLE IF EXISTS QRTZ_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, -- qrtz_job_details琛╦ob_name鐨勫閿�
+ job_group VARCHAR(200) NOT NULL, -- qrtz_job_details琛╦ob_group鐨勫閿�
+ description VARCHAR(250), -- 鐩稿叧浠嬬粛
+ next_fire_time BIGINT, -- 涓婁竴娆¤Е鍙戞椂闂达紙姣锛�
+ prev_fire_time BIGINT, -- 涓嬩竴娆¤Е鍙戞椂闂达紙榛樿涓�-1琛ㄧず涓嶈Е鍙戯級
+ priority INTEGER, -- 浼樺厛绾�
+ trigger_state VARCHAR(16) NOT NULL, -- 瑙﹀彂鍣ㄧ姸鎬�
+ trigger_type VARCHAR(8) NOT NULL, -- 瑙﹀彂鍣ㄧ殑绫诲瀷
+ start_time BIGINT NOT NULL, -- 寮�濮嬫椂闂�
+ end_time BIGINT, -- 缁撴潫鏃堕棿
+ calendar_name VARCHAR(200), -- 鏃ョ▼琛ㄥ悕绉�
+ misfire_instr SMALLINT, -- 琛ュ伩鎵ц鐨勭瓥鐣�
+ job_data BYTEA, -- 瀛樻斁鎸佷箙鍖杍ob瀵硅薄
+ 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瀵硅薄';
+
+
+
diff --git a/db/migration/V20250524150805__create_QRTZ_CRON_TRIGGERS.sql b/db/migration/V20250524150805__create_QRTZ_CRON_TRIGGERS.sql
new file mode 100644
index 0000000..351e861
--- /dev/null
+++ b/db/migration/V20250524150805__create_QRTZ_CRON_TRIGGERS.sql
@@ -0,0 +1,27 @@
+-- ----------------------------
+-- 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 '鏃跺尯';
+
+
+
+
diff --git a/db/migration/V20250524151005__create_QRTZ_BLOB_TRIGGERS.sql b/db/migration/V20250524151005__create_QRTZ_BLOB_TRIGGERS.sql
new file mode 100644
index 0000000..65149cc
--- /dev/null
+++ b/db/migration/V20250524151005__create_QRTZ_BLOB_TRIGGERS.sql
@@ -0,0 +1,26 @@
+-- ----------------------------
+-- 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瀵硅薄';
+
+
+
+
+
diff --git a/db/migration/V20250524151105__create_QRTZ_CALENDARS.sql b/db/migration/V20250524151105__create_QRTZ_CALENDARS.sql
new file mode 100644
index 0000000..9bb7e77
--- /dev/null
+++ b/db/migration/V20250524151105__create_QRTZ_CALENDARS.sql
@@ -0,0 +1,23 @@
+-- ----------------------------
+-- 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瀵硅薄';
+
+
+
+
+
+
diff --git a/db/migration/V20250524151205__create_QRTZ_PAUSED_TRIGGER_GRPS.sql b/db/migration/V20250524151205__create_QRTZ_PAUSED_TRIGGER_GRPS.sql
new file mode 100644
index 0000000..fde4808
--- /dev/null
+++ b/db/migration/V20250524151205__create_QRTZ_PAUSED_TRIGGER_GRPS.sql
@@ -0,0 +1,22 @@
+-- ----------------------------
+-- 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鐨勫閿�';
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524151305__create_QRTZ_FIRED_TRIGGERS.sql b/db/migration/V20250524151305__create_QRTZ_FIRED_TRIGGERS.sql
new file mode 100644
index 0000000..c9a86e0
--- /dev/null
+++ b/db/migration/V20250524151305__create_QRTZ_FIRED_TRIGGERS.sql
@@ -0,0 +1,45 @@
+-- ----------------------------
+-- 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 '鏄惁鎺ュ彈鎭㈠鎵ц';
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524151405__create_QRTZ_SCHEDULER_STATE.sql b/db/migration/V20250524151405__create_QRTZ_SCHEDULER_STATE.sql
new file mode 100644
index 0000000..29d9053
--- /dev/null
+++ b/db/migration/V20250524151405__create_QRTZ_SCHEDULER_STATE.sql
@@ -0,0 +1,28 @@
+-- ----------------------------
+-- 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 '妫�鏌ラ棿闅旀椂闂�';
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524151505__create_QRTZ_LOCKS.sql b/db/migration/V20250524151505__create_QRTZ_LOCKS.sql
new file mode 100644
index 0000000..9b7b637
--- /dev/null
+++ b/db/migration/V20250524151505__create_QRTZ_LOCKS.sql
@@ -0,0 +1,25 @@
+-- ----------------------------
+-- 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 '鎮茶閿佸悕绉�';
+
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524151705__create_QRTZ_SIMPROP_TRIGGERS.sql b/db/migration/V20250524151705__create_QRTZ_SIMPROP_TRIGGERS.sql
new file mode 100644
index 0000000..1b634c6
--- /dev/null
+++ b/db/migration/V20250524151705__create_QRTZ_SIMPROP_TRIGGERS.sql
@@ -0,0 +1,52 @@
+-- ----------------------------
+-- 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/db/migration/V20250524152105__create_sys_dept.sql b/db/migration/V20250524152105__create_sys_dept.sql
new file mode 100644
index 0000000..ad12ed0
--- /dev/null
+++ b/db/migration/V20250524152105__create_sys_dept.sql
@@ -0,0 +1,75 @@
+-- ----------------------------
+-- 閮ㄩ棬琛�
+-- ----------------------------
+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);
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524152505__create_sys_user.sql b/db/migration/V20250524152505__create_sys_user.sql
new file mode 100644
index 0000000..4ae41b9
--- /dev/null
+++ b/db/migration/V20250524152505__create_sys_user.sql
@@ -0,0 +1,73 @@
+-- ----------------------------
+-- 鐢ㄦ埛淇℃伅琛�
+-- ----------------------------
+
+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, '娴嬭瘯鍛�');
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524152605__create_sys_post.sql b/db/migration/V20250524152605__create_sys_post.sql
new file mode 100644
index 0000000..9dd050a
--- /dev/null
+++ b/db/migration/V20250524152605__create_sys_post.sql
@@ -0,0 +1,52 @@
+-- ----------------------------
+-- 宀椾綅淇℃伅琛�
+-- ----------------------------
+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, '');
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524152805__create_sys_role.sql b/db/migration/V20250524152805__create_sys_role.sql
new file mode 100644
index 0000000..36077d9
--- /dev/null
+++ b/db/migration/V20250524152805__create_sys_role.sql
@@ -0,0 +1,63 @@
+-- ----------------------------
+-- 瑙掕壊淇℃伅琛�
+-- ----------------------------
+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,
+ '鏅�氳鑹�');
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524153205__create_sys_menu.sql b/db/migration/V20250524153205__create_sys_menu.sql
new file mode 100644
index 0000000..9c830fa
--- /dev/null
+++ b/db/migration/V20250524153205__create_sys_menu.sql
@@ -0,0 +1,274 @@
+-- ----------------------------
+-- 鑿滃崟鏉冮檺琛�
+-- ----------------------------
+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 (id, name, parent_id, order_num, perms, url, target, icon, visible, status, menu_type, is_frame,
+ is_cache, code, 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 (id, name, parent_id, order_num, perms, url, target, icon, visible, status, menu_type, is_frame,
+ is_cache, code, 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 (id, name, parent_id, order_num, perms, url, target, icon, visible, status, menu_type, is_frame,
+ is_cache, code, 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 (id, name, parent_id, order_num, perms, url, target, icon, visible, status, menu_type, is_frame,
+ is_cache, code, create_by, create_time, update_by, update_time, remark)
+values ('1000', '鐢ㄦ埛鏌ヨ', '100', '1', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1001', '鐢ㄦ埛鏂板', '100', '2', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1002', '鐢ㄦ埛淇敼', '100', '3', '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, perms, url, target, icon, visible, status, is_cache,
+ del_flag, create_by, create_time, update_by, update_time, remarks)
+values ('1003', '鐢ㄦ埛鍒犻櫎', '100', '4', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1004', '鐢ㄦ埛瀵煎嚭', '100', '5', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1005', '鐢ㄦ埛瀵煎叆', '100', '6', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1006', '閲嶇疆瀵嗙爜', '100', '7', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 瑙掕壊绠$悊鎸夐挳
+ ('1007', '瑙掕壊鏌ヨ', '101', '1', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1008', '瑙掕壊鏂板', '101', '2', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1009', '瑙掕壊淇敼', '101', '3', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1010', '瑙掕壊鍒犻櫎', '101', '4', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1011', '瑙掕壊瀵煎嚭', '101', '5', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 鑿滃崟绠$悊鎸夐挳
+ ('1012', '鑿滃崟鏌ヨ', '102', '1', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1013', '鑿滃崟鏂板', '102', '2', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1014', '鑿滃崟淇敼', '102', '3', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1015', '鑿滃崟鍒犻櫎', '102', '4', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 閮ㄩ棬绠$悊鎸夐挳
+ ('1016', '閮ㄩ棬鏌ヨ', '103', '1', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1017', '閮ㄩ棬鏂板', '103', '2', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1018', '閮ㄩ棬淇敼', '103', '3', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1019', '閮ㄩ棬鍒犻櫎', '103', '4', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 宀椾綅绠$悊鎸夐挳
+ ('1020', '宀椾綅鏌ヨ', '104', '1', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1021', '宀椾綅鏂板', '104', '2', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1022', '宀椾綅淇敼', '104', '3', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1023', '宀椾綅鍒犻櫎', '104', '4', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1024', '宀椾綅瀵煎嚭', '104', '5', '', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 瀛楀吀绠$悊鎸夐挳
+ ('1025', '瀛楀吀鏌ヨ', '105', '1', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1026', '瀛楀吀鏂板', '105', '2', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1027', '瀛楀吀淇敼', '105', '3', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1028', '瀛楀吀鍒犻櫎', '105', '4', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1029', '瀛楀吀瀵煎嚭', '105', '5', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 鍙傛暟璁剧疆鎸夐挳
+ ('1030', '鍙傛暟鏌ヨ', '106', '1', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1031', '鍙傛暟鏂板', '106', '2', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1032', '鍙傛暟淇敼', '106', '3', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1033', '鍙傛暟鍒犻櫎', '106', '4', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1034', '鍙傛暟瀵煎嚭', '106', '5', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 閫氱煡鍏憡鎸夐挳
+ ('1035', '鍏憡鏌ヨ', '107', '1', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1036', '鍏憡鏂板', '107', '2', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1037', '鍏憡淇敼', '107', '3', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1038', '鍏憡鍒犻櫎', '107', '4', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 鎿嶄綔鏃ュ織鎸夐挳
+ ('1039', '鎿嶄綔鏌ヨ', '500', '1', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1040', '鎿嶄綔鍒犻櫎', '500', '2', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1041', '鏃ュ織瀵煎嚭', '500', '3', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 鐧诲綍鏃ュ織鎸夐挳
+ ('1042', '鐧诲綍鏌ヨ', '501', '1', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1043', '鐧诲綍鍒犻櫎', '501', '2', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1044', '鏃ュ織瀵煎嚭', '501', '3', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1045', '璐︽埛瑙i攣', '501', '4', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+-- 鍦ㄧ嚎鐢ㄦ埛鎸夐挳
+ ('1046', '鍦ㄧ嚎鏌ヨ', '109', '1', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, ''),
+ ('1047', '鎵归噺寮洪��', '109', '2', '#', '', '', '', 1, 0, 'F', '0', 'admin', current_timestamp, '',
+ current_timestamp, '');
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, perms, url, target, icon, visible, status, is_cache,
+ del_flag, create_by, create_time, update_by, update_time, remarks)
+values ('1048', '鍗曟潯寮洪��', '109', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#',
+ 'admin', CURRENT_TIMESTAMP, '', null, ''),
+ ('1049', '浠诲姟鏌ヨ', '110', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:query', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1050', '浠诲姟鏂板', '110', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:add', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1051', '浠诲姟淇敼', '110', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:edit', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1052', '浠诲姟鍒犻櫎', '110', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:remove', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1053', '鐘舵�佷慨鏀�', '110', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1054', '浠诲姟瀵煎嚭', '110', '6', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:export', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1055', '鐢熸垚鏌ヨ', '116', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1056', '鐢熸垚淇敼', '116', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1057', '鐢熸垚鍒犻櫎', '116', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1058', '瀵煎叆浠g爜', '116', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1059', '棰勮浠g爜', '116', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, ''),
+ ('1060', '鐢熸垚浠g爜', '116', '6', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 'admin',
+ CURRENT_TIMESTAMP, '', null, '');
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524154105__create_sys_user_role.sql b/db/migration/V20250524154105__create_sys_user_role.sql
new file mode 100644
index 0000000..59c659d
--- /dev/null
+++ b/db/migration/V20250524154105__create_sys_user_role.sql
@@ -0,0 +1,37 @@
+-- ----------------------------
+-- 鐢ㄦ埛鍜岃鑹插叧鑱旇〃 鐢ㄦ埛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');
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524154305__create_sys_role_menu.sql b/db/migration/V20250524154305__create_sys_role_menu.sql
new file mode 100644
index 0000000..32e82ef
--- /dev/null
+++ b/db/migration/V20250524154305__create_sys_role_menu.sql
@@ -0,0 +1,122 @@
+-- ----------------------------
+-- 鐢ㄦ埛鍜岃鑹插叧鑱旇〃 鐢ㄦ埛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');
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/db/migration/V20250524154505__create_sys_role_dept.sql b/db/migration/V20250524154505__create_sys_role_dept.sql
new file mode 100644
index 0000000..b2ba922
--- /dev/null
+++ b/db/migration/V20250524154505__create_sys_role_dept.sql
@@ -0,0 +1,20 @@
+-- ----------------------------
+-- 瑙掕壊鍜岄儴闂ㄥ叧鑱旇〃 瑙掕壊1-N閮ㄩ棬
+-- ----------------------------
+
+drop table if exists sys_role_dept;
+create table sys_role_dept
+(
+ role_id bigint not null, -- PostgreSQL 鏃犻渶鎸囧畾鍒楅暱搴�
+ 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');
diff --git a/db/migration/V20250524154605__create_sys_user_post.sql b/db/migration/V20250524154605__create_sys_user_post.sql
new file mode 100644
index 0000000..2a4b62f
--- /dev/null
+++ b/db/migration/V20250524154605__create_sys_user_post.sql
@@ -0,0 +1,19 @@
+-- ----------------------------
+-- 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');
diff --git a/db/migration/V20250524154705__create_sys_oper_log.sql b/db/migration/V20250524154705__create_sys_oper_log.sql
new file mode 100644
index 0000000..e01f927
--- /dev/null
+++ b/db/migration/V20250524154705__create_sys_oper_log.sql
@@ -0,0 +1,28 @@
+-- ----------------------------
+-- 10銆佹搷浣滄棩蹇楄褰�
+-- ----------------------------
+
+drop table if exists sys_oper_log;
+create table sys_oper_log
+(
+ oper_id serial primary key, -- PostgreSQL 浣跨敤 serial 鏉ュ疄鐜拌嚜澧�
+ title varchar(50) default '', -- 榛樿鍊煎拰瀛楁绫诲瀷淇濇寔涓�鑷�
+ business_type smallint default 0, -- PostgreSQL 浣跨敤 smallint 浠f浛 int(2)
+ method varchar(200) default '',
+ request_method varchar(10) default '',
+ operator_type smallint default 0, -- PostgreSQL 浣跨敤 smallint 浠f浛 int(1)
+ 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 smallint default 0, -- PostgreSQL 浣跨敤 smallint 浠f浛 int(1)
+ error_msg varchar(2000) default '',
+ oper_time timestamp, -- PostgreSQL 浣跨敤 timestamp 鏇夸唬 datetime
+ cost_time bigint default 0,
+ index idx_sys_oper_log_bt (business_type),
+ index idx_sys_oper_log_s (status),
+ index idx_sys_oper_log_ot (oper_time)
+);
diff --git a/db/migration/V20250524154805__create_sys_dict_type.sql b/db/migration/V20250524154805__create_sys_dict_type.sql
new file mode 100644
index 0000000..db8842f
--- /dev/null
+++ b/db/migration/V20250524154805__create_sys_dict_type.sql
@@ -0,0 +1,32 @@
+-- ----------------------------
+-- 11銆佸瓧鍏哥被鍨嬭〃
+-- ----------------------------
+
+drop table if exists sys_dict_type;
+create table sys_dict_type
+(
+ dict_id serial primary key, -- PostgreSQL 浣跨敤 serial 鏉ュ疄鐜拌嚜澧�
+ dict_name varchar(100) default '', -- 榛樿鍊煎拰瀛楁绫诲瀷淇濇寔涓�鑷�
+ dict_type varchar(100) default '', -- 瀛楀吀绫诲瀷
+ status char(1) default '0', -- 榛樿鍊间负 '0'
+ create_by varchar(64) default '', -- 鍒涘缓鑰�
+ create_time timestamp, -- PostgreSQL 浣跨敤 timestamp 浠f浛 datetime
+ update_by varchar(64) default '', -- 鏇存柊鑰�
+ update_time timestamp, -- 鏇存柊鏃堕棿
+ remark varchar(500), -- 澶囨敞锛屽彲浠ヤ负 null
+ unique (dict_type) -- 鍞竴绾︽潫
+);
+
+-- 鍒濆鍖栨暟鎹彃鍏�
+insert into sys_dict_type (dict_id, dict_name, dict_type, status, create_by, create_time, update_by, update_time,
+ remark)
+values (1, '鐢ㄦ埛鎬у埆', 'sys_user_sex', '0', 'admin', current_timestamp, '', null, '鐢ㄦ埛鎬у埆鍒楄〃'),
+ (2, '鑿滃崟鐘舵��', 'sys_show_hide', '0', 'admin', current_timestamp, '', null, '鑿滃崟鐘舵�佸垪琛�'),
+ (3, '绯荤粺寮�鍏�', 'sys_normal_disable', '0', 'admin', current_timestamp, '', null, '绯荤粺寮�鍏冲垪琛�'),
+ (4, '浠诲姟鐘舵��', 'sys_job_status', '0', 'admin', current_timestamp, '', null, '浠诲姟鐘舵�佸垪琛�'),
+ (5, '浠诲姟鍒嗙粍', 'sys_job_group', '0', 'admin', current_timestamp, '', null, '浠诲姟鍒嗙粍鍒楄〃'),
+ (6, '绯荤粺鏄惁', 'sys_yes_no', '0', 'admin', current_timestamp, '', null, '绯荤粺鏄惁鍒楄〃'),
+ (7, '閫氱煡绫诲瀷', 'sys_notice_type', '0', 'admin', current_timestamp, '', null, '閫氱煡绫诲瀷鍒楄〃'),
+ (8, '閫氱煡鐘舵��', 'sys_notice_status', '0', 'admin', current_timestamp, '', null, '閫氱煡鐘舵�佸垪琛�'),
+ (9, '鎿嶄綔绫诲瀷', 'sys_oper_type', '0', 'admin', current_timestamp, '', null, '鎿嶄綔绫诲瀷鍒楄〃'),
+ (10, '绯荤粺鐘舵��', 'sys_common_status', '0', 'admin', current_timestamp, '', null, '鐧诲綍鐘舵�佸垪琛�');
diff --git a/db/migration/V20250524154905__create_sys_dict_data.sql b/db/migration/V20250524154905__create_sys_dict_data.sql
new file mode 100644
index 0000000..adc2dcc
--- /dev/null
+++ b/db/migration/V20250524154905__create_sys_dict_data.sql
@@ -0,0 +1,63 @@
+-- ----------------------------
+-- 12銆佸瓧鍏告暟鎹〃
+-- ----------------------------
+
+drop table if exists sys_dict_data;
+create table sys_dict_data
+(
+ dict_code serial primary key, -- PostgreSQL 浣跨敤 serial 瀹炵幇鑷
+ dict_sort int 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, -- 浣跨敤 timestamp 绫诲瀷浠f浛 datetime
+ update_by varchar(64) default '', -- 鏇存柊鑰�
+ update_time timestamp, -- 鏇存柊鏃堕棿
+ remark varchar(500) default null -- 澶囨敞
+);
+
+-- 鍒濆鍖栨暟鎹彃鍏�
+insert into sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default,
+ status, create_by, create_time, update_by, update_time, remark)
+values (1, 1, '鐢�', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', current_timestamp, '', null, '鎬у埆鐢�'),
+ (2, 2, '濂�', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', current_timestamp, '', null, '鎬у埆濂�'),
+ (3, 3, '鏈煡', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', current_timestamp, '', null, '鎬у埆鏈煡'),
+ (4, 1, '鏄剧ず', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', current_timestamp, '', null, '鏄剧ず鑿滃崟'),
+ (5, 2, '闅愯棌', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null, '闅愯棌鑿滃崟'),
+ (6, 1, '姝e父', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', current_timestamp, '', null,
+ '姝e父鐘舵��'),
+ (7, 2, '鍋滅敤', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null,
+ '鍋滅敤鐘舵��'),
+ (8, 1, '姝e父', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', current_timestamp, '', null, '姝e父鐘舵��'),
+ (9, 2, '鏆傚仠', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null, '鍋滅敤鐘舵��'),
+ (10, 1, '榛樿', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', current_timestamp, '', null, '榛樿鍒嗙粍'),
+ (11, 2, '绯荤粺', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', current_timestamp, '', null, '绯荤粺鍒嗙粍'),
+ (12, 1, '鏄�', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', current_timestamp, '', null, '绯荤粺榛樿鏄�'),
+ (13, 2, '鍚�', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null, '绯荤粺榛樿鍚�'),
+ (14, 1, '閫氱煡', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', current_timestamp, '', null, '閫氱煡'),
+ (15, 2, '鍏憡', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', current_timestamp, '', null, '鍏憡'),
+ (16, 1, '姝e父', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', current_timestamp, '', null,
+ '姝e父鐘舵��'),
+ (17, 2, '鍏抽棴', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null,
+ '鍏抽棴鐘舵��'),
+ (18, 99, '鍏朵粬', '0', 'sys_oper_type', '', 'info', 'N', '0', 'admin', current_timestamp, '', null, '鍏朵粬鎿嶄綔'),
+ (19, 1, '鏂板', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', current_timestamp, '', null, '鏂板鎿嶄綔'),
+ (20, 2, '淇敼', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', current_timestamp, '', null, '淇敼鎿嶄綔'),
+ (21, 3, '鍒犻櫎', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null, '鍒犻櫎鎿嶄綔'),
+ (22, 4, '鎺堟潈', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', current_timestamp, '', null, '鎺堟潈鎿嶄綔'),
+ (23, 5, '瀵煎嚭', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', current_timestamp, '', null, '瀵煎嚭鎿嶄綔'),
+ (24, 6, '瀵煎叆', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', current_timestamp, '', null, '瀵煎叆鎿嶄綔'),
+ (25, 7, '寮洪��', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null, '寮洪��鎿嶄綔'),
+ (26, 8, '鐢熸垚浠g爜', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', current_timestamp, '', null,
+ '鐢熸垚鎿嶄綔'),
+ (27, 9, '娓呯┖鏁版嵁', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null,
+ '娓呯┖鎿嶄綔'),
+ (28, 1, '鎴愬姛', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', current_timestamp, '', null,
+ '姝e父鐘舵��'),
+ (29, 2, '澶辫触', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', current_timestamp, '', null,
+ '鍋滅敤鐘舵��');
diff --git a/db/migration/V20250524155005__create_sys_config.sql b/db/migration/V20250524155005__create_sys_config.sql
new file mode 100644
index 0000000..1637b9c
--- /dev/null
+++ b/db/migration/V20250524155005__create_sys_config.sql
@@ -0,0 +1,34 @@
+-- ----------------------------
+-- 13銆佸弬鏁伴厤缃〃
+-- ----------------------------
+
+drop table if exists sys_config;
+create table sys_config
+(
+ config_id serial primary key, -- PostgreSQL 浣跨敤 serial 瀹炵幇鑷
+ config_name varchar(100) default '', -- 鍙傛暟鍚嶇О
+ config_key varchar(100) default '', -- 鍙傛暟閿悕
+ config_value varchar(500) default '', -- 鍙傛暟閿��
+ config_type char(1) default 'N', -- 绯荤粺鍐呯疆锛圷鏄� N鍚︼級
+ create_by varchar(64) default '', -- 鍒涘缓鑰�
+ create_time timestamp, -- 浣跨敤 timestamp 绫诲瀷浠f浛 datetime
+ update_by varchar(64) default '', -- 鏇存柊鑰�
+ update_time timestamp, -- 鏇存柊鏃堕棿
+ remark varchar(500) default null -- 澶囨敞
+);
+
+-- 鍒濆鍖栨暟鎹彃鍏�
+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', current_timestamp, '', null,
+ '钃濊壊 skin-blue銆佺豢鑹� skin-green銆佺传鑹� skin-purple銆佺孩鑹� skin-red銆侀粍鑹� skin-yellow'),
+ (2, '鐢ㄦ埛绠$悊-璐﹀彿鍒濆瀵嗙爜', 'sys.user.initPassword', '123456', 'Y', 'admin', current_timestamp, '', null,
+ '鍒濆鍖栧瘑鐮� 123456'),
+ (3, '涓绘鏋堕〉-渚ц竟鏍忎富棰�', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', current_timestamp, '', null,
+ '娣辫壊涓婚theme-dark锛屾祬鑹蹭富棰榯heme-light'),
+ (4, '璐﹀彿鑷姪-楠岃瘉鐮佸紑鍏�', 'sys.account.captchaEnabled', 'true', 'Y', 'admin', current_timestamp, '', null,
+ '鏄惁寮�鍚獙璇佺爜鍔熻兘锛坱rue寮�鍚紝false鍏抽棴锛�'),
+ (5, '璐﹀彿鑷姪-鏄惁寮�鍚敤鎴锋敞鍐屽姛鑳�', 'sys.account.registerUser', 'false', 'Y', 'admin', current_timestamp, '',
+ null, '鏄惁寮�鍚敞鍐岀敤鎴峰姛鑳斤紙true寮�鍚紝false鍏抽棴锛�'),
+ (6, '鐢ㄦ埛鐧诲綍-榛戝悕鍗曞垪琛�', 'sys.login.blackIPList', '', 'Y', 'admin', current_timestamp, '', null,
+ '璁剧疆鐧诲綍IP榛戝悕鍗曢檺鍒讹紝澶氫釜鍖归厤椤逛互;鍒嗛殧锛屾敮鎸佸尮閰嶏紙*閫氶厤銆佺綉娈碉級');
diff --git a/db/migration/V20250524155105__create_sys_logininfor.sql b/db/migration/V20250524155105__create_sys_logininfor.sql
new file mode 100644
index 0000000..e76f855
--- /dev/null
+++ b/db/migration/V20250524155105__create_sys_logininfor.sql
@@ -0,0 +1,43 @@
+-- ----------------------------
+-- 14銆佺郴缁熻闂褰�
+-- ----------------------------
+
+drop table if exists sys_logininfor;
+create table sys_logininfor
+(
+ info_id serial primary key, -- 浣跨敤 serial 瀹炵幇鑷
+ user_name varchar(50) default '' -- 鐢ㄦ埛璐﹀彿
+ comment '鐢ㄦ埛璐﹀彿',
+ ipaddr varchar(128) default '' -- 鐧诲綍IP鍦板潃
+ comment '鐧诲綍IP鍦板潃',
+ login_location varchar(255) default '' -- 鐧诲綍鍦扮偣
+ comment '鐧诲綍鍦扮偣',
+ browser varchar(50) default '' -- 娴忚鍣ㄧ被鍨�
+ comment '娴忚鍣ㄧ被鍨�',
+ os varchar(50) default '' -- 鎿嶄綔绯荤粺
+ comment '鎿嶄綔绯荤粺',
+ status char(1) default '0' -- 鐧诲綍鐘舵�侊紙0鎴愬姛 1澶辫触锛�
+ comment '鐧诲綍鐘舵�侊紙0鎴愬姛 1澶辫触锛�',
+ msg varchar(255) default '' -- 鎻愮ず娑堟伅
+ comment '鎻愮ず娑堟伅',
+ login_time timestamp -- 璁块棶鏃堕棿
+ comment '璁块棶鏃堕棿'
+);
+
+-- 娣诲姞绱㈠紩
+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 '璁块棶鏃堕棿';
diff --git a/db/migration/V20250524155205__create_sys_job.sql b/db/migration/V20250524155205__create_sys_job.sql
new file mode 100644
index 0000000..557f5e8
--- /dev/null
+++ b/db/migration/V20250524155205__create_sys_job.sql
@@ -0,0 +1,49 @@
+-- ----------------------------
+-- 15銆佸畾鏃朵换鍔¤皟搴﹁〃
+-- ----------------------------
+
+drop table if exists sys_job;
+create table sys_job
+(
+ job_id bigserial primary key, -- 浣跨敤 bigserial 瀹炵幇鑷
+ job_name varchar(64) default '', -- 浠诲姟鍚嶇О
+ job_group varchar(64) default 'DEFAULT', -- 浠诲姟缁勫悕
+ invoke_target varchar(500) not null, -- 璋冪敤鐩爣瀛楃涓�
+ cron_expression varchar(255) default '', -- cron鎵ц琛ㄨ揪寮�
+ misfire_policy varchar(20) default '3', -- 璁″垝鎵ц閿欒绛栫暐锛�1绔嬪嵆鎵ц 2鎵ц涓�娆� 3鏀惧純鎵ц锛�
+ concurrent char(1) default '1', -- 鏄惁骞跺彂鎵ц锛�0鍏佽 1绂佹锛�
+ status char(1) default '0', -- 鐘舵�侊紙0姝e父 1鏆傚仠锛�
+ create_by varchar(64) default '', -- 鍒涘缓鑰�
+ create_time timestamp, -- 鍒涘缓鏃堕棿
+ update_by varchar(64) default '', -- 鏇存柊鑰�
+ update_time timestamp, -- 鏇存柊鏃堕棿
+ remark varchar(500) default '' -- 澶囨敞淇℃伅
+);
+
+-- 琛ㄦ敞閲�
+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_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by,
+ create_time, update_by, update_time, remark)
+values ('绯荤粺榛樿锛堟棤鍙傦級', 'DEFAULT', 'ryTask.ryNoParams', '0/10 * * * * ?', '3', '1', '1', 'admin', current_timestamp,
+ '', null, ''),
+ ('绯荤粺榛樿锛堟湁鍙傦級', 'DEFAULT', 'ryTask.ryParams(\'ry\')', '0/15 * * * * ?', '3', '1', '1', 'admin',
+ current_timestamp, '', null, ''),
+ ('绯荤粺榛樿锛堝鍙傦級', 'DEFAULT', 'ryTask.ryMultipleParams(\'ry\', true, 2000L, 316.50D, 100)', '0/20 * * * * ?',
+ '3', '1', '1', 'admin', current_timestamp, '', null, '');
diff --git a/db/migration/V20250524155305__create_sys_job_log.sql b/db/migration/V20250524155305__create_sys_job_log.sql
new file mode 100644
index 0000000..9ce5b71
--- /dev/null
+++ b/db/migration/V20250524155305__create_sys_job_log.sql
@@ -0,0 +1,29 @@
+-- ----------------------------
+-- 16銆佸畾鏃朵换鍔¤皟搴︽棩蹇楄〃
+-- ----------------------------
+
+drop table if exists sys_job_log;
+create table sys_job_log
+(
+ job_log_id bigserial primary key, -- 浣跨敤 bigserial 瀹炵幇鑷
+ 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) default '0', -- 鎵ц鐘舵�侊紙0姝e父 1澶辫触锛�
+ exception_info varchar(2000) default '', -- 寮傚父淇℃伅
+ create_time timestamp -- 鍒涘缓鏃堕棿
+);
+
+-- 琛ㄦ敞閲�
+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 '鍒涘缓鏃堕棿';
diff --git a/db/migration/V20250524155405__create_sys_notice.sql b/db/migration/V20250524155405__create_sys_notice.sql
new file mode 100644
index 0000000..0b3fd10
--- /dev/null
+++ b/db/migration/V20250524155405__create_sys_notice.sql
@@ -0,0 +1,47 @@
+-- ----------------------------
+-- 17銆侀�氱煡鍏憡琛�
+-- ----------------------------
+
+drop table if exists sys_notice;
+create table sys_notice
+(
+ notice_id serial primary key, -- 浣跨敤 serial 瀹炵幇鑷
+ notice_title varchar(50) not null, -- 鍏憡鏍囬
+ notice_type char(1) not null, -- 鍏憡绫诲瀷锛�1閫氱煡 2鍏憡锛�
+ notice_content bytea default null, -- 鍏憡鍐呭锛屼娇鐢� bytea 瀛樺偍浜岃繘鍒舵暟鎹�
+ status char(1) default '0', -- 鍏憡鐘舵�侊紙0姝e父 1鍏抽棴锛�
+ create_by varchar(64) default '', -- 鍒涘缓鑰�
+ create_time timestamp default current_timestamp, -- 鍒涘缓鏃堕棿锛屼娇鐢� PostgreSQL 鐨� current_timestamp
+ update_by varchar(64) default '', -- 鏇存柊鑰�
+ update_time timestamp, -- 鏇存柊鏃堕棿
+ remark varchar(255) default null -- 澶囨敞
+);
+
+-- 琛ㄦ敞閲�
+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_title, notice_type, notice_content, status, create_by, create_time, update_by,
+ update_time, remark)
+values ('娓╅Θ鎻愰啋锛�2018-07-01 鑻ヤ緷鏂扮増鏈彂甯冨暒', '2', '鏂扮増鏈唴瀹�'::bytea, '0', 'admin', current_timestamp, '', null,
+ '绠$悊鍛�');
+
+insert into sys_notice (notice_title, notice_type, notice_content, status, create_by, create_time, update_by,
+ update_time, remark)
+values ('缁存姢閫氱煡锛�2018-07-01 鑻ヤ緷绯荤粺鍑屾櫒缁存姢', '1', '缁存姢鍐呭'::bytea, '0', 'admin', current_timestamp, '', null,
+ '绠$悊鍛�');
diff --git a/db/migration/V20250524155505__create_gen_table.sql b/db/migration/V20250524155505__create_gen_table.sql
new file mode 100644
index 0000000..6d74554
--- /dev/null
+++ b/db/migration/V20250524155505__create_gen_table.sql
@@ -0,0 +1,55 @@
+-- ----------------------------
+-- 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 '澶囨敞';
diff --git a/db/migration/V20250524155505__create_gen_table_column.sql b/db/migration/V20250524155505__create_gen_table_column.sql
new file mode 100644
index 0000000..85eda38
--- /dev/null
+++ b/db/migration/V20250524155505__create_gen_table_column.sql
@@ -0,0 +1,58 @@
+-- ----------------------------
+-- 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/pom.xml b/pom.xml
index 857f440..5a16a20 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.2.27</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/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 5a17b7e..59c4861 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -54,6 +54,18 @@
<artifactId>ruoyi-generator</artifactId>
</dependency>
+ <!-- postgresql椹卞姩鍖� -->
+ <dependency>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ </dependency>
+
+ <!-- flyway 鏁版嵁搴撹縼绉诲伐鍏� -->
+ <dependency>
+ <groupId>org.flywaydb</groupId>
+ <artifactId>flyway-core</artifactId>
+ </dependency>
+
</dependencies>
<build>
--
Gitblit v1.9.3