diff --git a/gym-manage-api/manage-app/pom.xml b/gym-manage-api/manage-app/pom.xml
index 5d5e344..9351954 100644
--- a/gym-manage-api/manage-app/pom.xml
+++ b/gym-manage-api/manage-app/pom.xml
@@ -70,6 +70,10 @@
org.postgresql
postgresql
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
com.h2database
h2
diff --git a/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/DataSourceConfig.java b/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/DataSourceConfig.java
new file mode 100644
index 0000000..2320a5d
--- /dev/null
+++ b/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/DataSourceConfig.java
@@ -0,0 +1,29 @@
+package cn.novalon.gym.manage.app.config;
+
+import com.zaxxer.hikari.HikariDataSource;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+
+@Configuration
+public class DataSourceConfig {
+
+ @Bean
+ @Primary
+ @ConfigurationProperties("spring.datasource")
+ public DataSourceProperties dataSourceProperties() {
+ return new DataSourceProperties();
+ }
+
+ @Bean
+ @Primary
+ public DataSource dataSource(DataSourceProperties properties) {
+ return properties.initializeDataSourceBuilder()
+ .type(HikariDataSource.class)
+ .build();
+ }
+}
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V12__Insert_user_role_data.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V12__Insert_user_role_data.sql
deleted file mode 100644
index bf68b48..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V12__Insert_user_role_data.sql
+++ /dev/null
@@ -1,51 +0,0 @@
--- Novalon管理系统普通用户角色和数据
--- 版本: V10
--- 描述: 创建普通用户角色并分配权限
-
--- 插入普通用户角色
-INSERT INTO sys_role (role_name, role_key, role_sort, status, create_by, update_by)
-VALUES ('普通用户', 'user', 2, 1, 'system', 'system')
-ON CONFLICT (role_key) DO UPDATE SET
- role_name = EXCLUDED.role_name,
- role_sort = EXCLUDED.role_sort,
- status = EXCLUDED.status;
-
--- 为普通用户分配基本权限(查看个人信息、修改密码等)
--- 注意:这里只分配基本权限,不包含管理功能权限
-INSERT INTO sys_permission (permission_name, permission_key, permission_type, parent_id, path, component, icon, sort, status, create_by, update_by)
-VALUES
-('个人中心', 'profile', 'MENU', 0, '/profile', 'views/profile/index', 'user', 1, 1, 'system', 'system'),
-('个人信息', 'profile:info', 'BUTTON', (SELECT id FROM sys_permission WHERE permission_key = 'profile'), '', '', '', 1, 1, 'system', 'system'),
-('修改密码', 'profile:password', 'BUTTON', (SELECT id FROM sys_permission WHERE permission_key = 'profile'), '', '', '', 2, 1, 'system', 'system')
-ON CONFLICT (permission_key) DO NOTHING;
-
--- 为普通用户角色分配权限
-INSERT INTO sys_role_permission (role_id, permission_id, create_by, update_by)
-SELECT
- r.id as role_id,
- p.id as permission_id,
- 'system' as create_by,
- 'system' as update_by
-FROM sys_role r
-CROSS JOIN sys_permission p
-WHERE r.role_key = 'user'
- AND p.permission_key IN ('profile', 'profile:info', 'profile:password')
-ON CONFLICT DO NOTHING;
-
--- 将测试用户分配给普通用户角色
-INSERT INTO user_role (user_id, role_id, create_by, update_by)
-SELECT
- u.id as user_id,
- r.id as role_id,
- 'system' as create_by,
- 'system' as update_by
-FROM sys_user u
-CROSS JOIN sys_role r
-WHERE u.username = 'user' AND r.role_key = 'user'
-ON CONFLICT DO NOTHING;
-
--- 重置序列值
-SELECT setval('sys_role_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_role));
-SELECT setval('sys_permission_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_permission));
-SELECT setval('sys_role_permission_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_role_permission));
-SELECT setval('user_role_id_seq', (SELECT COALESCE(MAX(id), 1) FROM user_role));
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V13__Update_test_user_password.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V13__Update_test_user_password.sql
deleted file mode 100644
index 998c07b..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V13__Update_test_user_password.sql
+++ /dev/null
@@ -1,46 +0,0 @@
--- Novalon管理系统测试数据脚本
--- 版本: V11
--- 描述: 更新测试用户密码为Test@123,插入E2E测试所需数据
-
--- 更新admin用户密码为Test@123
--- BCrypt哈希值对应明文密码: Test@123
-UPDATE sys_user
-SET password = '$2a$12$nZ1EMUpZQljbnEdIKzH72eHlDJKUmHmHppnTTVth/SlHs5VpSAr8C'
-WHERE username = 'admin';
-
--- 更新user用户密码为Test@123
-UPDATE sys_user
-SET password = '$2a$12$nZ1EMUpZQljbnEdIKzH72eHlDJKUmHmHppnTTVth/SlHs5VpSAr8C'
-WHERE username = 'user';
-
--- 插入测试角色(如果不存在)
-INSERT INTO sys_role (role_name, role_key, role_sort, status, create_by, update_by)
-VALUES
-('测试管理员', 'test_admin', 2, 1, 'system', 'system'),
-('普通用户', 'normal_user', 3, 1, 'system', 'system'),
-('访客', 'guest', 4, 1, 'system', 'system')
-ON CONFLICT (role_key) DO NOTHING;
-
--- 为admin用户分配超级管理员角色
-INSERT INTO user_role (user_id, role_id, created_by)
-SELECT 1, id, 'system' FROM sys_role WHERE role_key = 'admin'
-ON CONFLICT DO NOTHING;
-
--- 为user用户分配普通用户角色
-INSERT INTO user_role (user_id, role_id, created_by)
-SELECT 2, id, 'system' FROM sys_role WHERE role_key = 'normal_user'
-ON CONFLICT DO NOTHING;
-
--- 插入E2E测试专用用户
--- BCrypt哈希值对应明文密码: Test@123
-INSERT INTO sys_user (id, username, password, email, phone, nickname, status, create_by, update_by)
-VALUES
-(10, 'e2e_test_user', '$2a$12$nZ1EMUpZQljbnEdIKzH72eHlDJKUmHmHppnTTVth/SlHs5VpSAr8C', 'e2e@test.com', '13900139000', 'E2E测试用户', 1, 'system', 'system')
-ON CONFLICT (username) DO UPDATE SET
- password = EXCLUDED.password,
- status = EXCLUDED.status;
-
--- 为E2E测试用户分配超级管理员角色
-INSERT INTO user_role (user_id, role_id, created_by)
-SELECT 10, id, 'system' FROM sys_role WHERE role_key = 'admin'
-ON CONFLICT DO NOTHING;
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V14__Fix_menu_data.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V14__Fix_menu_data.sql
deleted file mode 100644
index 06b1852..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V14__Fix_menu_data.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- V14__Fix_menu_data.sql
--- 清理测试菜单数据
-DELETE FROM sys_menu WHERE menu_name LIKE '%测试%' OR menu_name LIKE '%回归%';
-
--- 插入一级菜单
-INSERT INTO sys_menu (menu_name, parent_id, order_num, menu_type, status, created_at, updated_at) VALUES
-('系统管理', 0, 1, 'M', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('系统监控', 0, 2, 'M', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('审计日志', 0, 3, 'M', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
-
--- 插入二级菜单(系统管理下)
-INSERT INTO sys_menu (menu_name, parent_id, order_num, menu_type, component, perms, status, created_at, updated_at) VALUES
-('用户管理', (SELECT id FROM sys_menu WHERE menu_name = '系统管理' AND parent_id = 0), 1, 'C', 'system/user/index', 'system:user:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('角色管理', (SELECT id FROM sys_menu WHERE menu_name = '系统管理' AND parent_id = 0), 2, 'C', 'system/role/index', 'system:role:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('菜单管理', (SELECT id FROM sys_menu WHERE menu_name = '系统管理' AND parent_id = 0), 3, 'C', 'system/menu/index', 'system:menu:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('参数配置', (SELECT id FROM sys_menu WHERE menu_name = '系统管理' AND parent_id = 0), 4, 'C', 'system/config/index', 'system:config:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('字典管理', (SELECT id FROM sys_menu WHERE menu_name = '系统管理' AND parent_id = 0), 5, 'C', 'system/dict/index', 'system:dict:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
-
--- 插入二级菜单(系统监控下)
-INSERT INTO sys_menu (menu_name, parent_id, order_num, menu_type, component, perms, status, created_at, updated_at) VALUES
-('文件管理', (SELECT id FROM sys_menu WHERE menu_name = '系统监控' AND parent_id = 0), 1, 'C', 'system/file/index', 'system:file:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('通知公告', (SELECT id FROM sys_menu WHERE menu_name = '系统监控' AND parent_id = 0), 2, 'C', 'system/notice/index', 'system:notice:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
-
--- 插入二级菜单(审计日志下)
-INSERT INTO sys_menu (menu_name, parent_id, order_num, menu_type, component, perms, status, created_at, updated_at) VALUES
-('登录日志', (SELECT id FROM sys_menu WHERE menu_name = '审计日志' AND parent_id = 0), 1, 'C', 'audit/login/index', 'audit:login:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('操作日志', (SELECT id FROM sys_menu WHERE menu_name = '审计日志' AND parent_id = 0), 2, 'C', 'audit/operation/index', 'audit:operation:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-('异常日志', (SELECT id FROM sys_menu WHERE menu_name = '审计日志' AND parent_id = 0), 3, 'C', 'audit/exception/index', 'audit:exception:list', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V15__Add_missing_audit_log_columns.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V15__Add_missing_audit_log_columns.sql
deleted file mode 100644
index d4a278f..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V15__Add_missing_audit_log_columns.sql
+++ /dev/null
@@ -1,12 +0,0 @@
--- Novalon管理系统审计日志表补充字段
--- 版本: V15
--- 描述: 为审计日志表添加缺失的基础字段,与BaseDomain保持一致
-ALTER TABLE audit_log ADD COLUMN IF NOT EXISTS create_by VARCHAR(50);
-ALTER TABLE audit_log ADD COLUMN IF NOT EXISTS update_by VARCHAR(50);
-ALTER TABLE audit_log ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
-ALTER TABLE audit_log ADD COLUMN IF NOT EXISTS deleted_at TIMESTAMP;
-
-COMMENT ON COLUMN audit_log.create_by IS '创建人';
-COMMENT ON COLUMN audit_log.update_by IS '更新人';
-COMMENT ON COLUMN audit_log.updated_at IS '更新时间';
-COMMENT ON COLUMN audit_log.deleted_at IS '删除时间';
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V1__Create_all_tables.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V1__Create_all_tables.sql
index 3f7c728..88b0986 100644
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V1__Create_all_tables.sql
+++ b/gym-manage-api/manage-db/src/main/resources/db/migration/V1__Create_all_tables.sql
@@ -1,15 +1,19 @@
-- Novalon管理系统数据库初始化脚本
-- 版本: V1
--- 描述: 创建所有核心表结构
+-- 描述: 创建所有核心表结构(合并版)
+
+-- ============================================
+-- 用户与角色相关表
+-- ============================================
+
-- 用户表
CREATE TABLE IF NOT EXISTS sys_user (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100),
phone VARCHAR(20),
nickname VARCHAR(100),
- role_id BIGINT,
status INTEGER DEFAULT 1,
create_by VARCHAR(50),
update_by VARCHAR(50),
@@ -17,9 +21,10 @@ CREATE TABLE IF NOT EXISTS sys_user (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
-- 角色表
CREATE TABLE IF NOT EXISTS sys_role (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
role_name VARCHAR(100) NOT NULL,
role_key VARCHAR(100) NOT NULL UNIQUE,
role_sort INTEGER DEFAULT 0,
@@ -30,9 +35,60 @@ CREATE TABLE IF NOT EXISTS sys_role (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
--- 菜单表(统一使用sys_menu表名)
+
+-- 用户角色关联表(支持多对多关系)
+CREATE TABLE IF NOT EXISTS user_role (
+ id BIGSERIAL PRIMARY KEY,
+ user_id BIGINT NOT NULL,
+ role_id BIGINT NOT NULL,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ created_by VARCHAR(50),
+ CONSTRAINT fk_user_role_user FOREIGN KEY (user_id) REFERENCES sys_user(id) ON DELETE CASCADE,
+ CONSTRAINT fk_user_role_role FOREIGN KEY (role_id) REFERENCES sys_role(id) ON DELETE CASCADE,
+ CONSTRAINT uk_user_role UNIQUE (user_id, role_id)
+);
+
+-- ============================================
+-- 权限相关表
+-- ============================================
+
+-- 权限表
+CREATE TABLE IF NOT EXISTS sys_permission (
+ id BIGSERIAL PRIMARY KEY,
+ permission_name VARCHAR(100) NOT NULL,
+ permission_code VARCHAR(100) NOT NULL UNIQUE,
+ resource VARCHAR(200) NOT NULL,
+ action VARCHAR(50) NOT NULL,
+ description VARCHAR(500),
+ status INTEGER DEFAULT 1,
+ create_by VARCHAR(50),
+ update_by VARCHAR(50),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ deleted_at TIMESTAMP
+);
+
+-- 角色权限关联表
+CREATE TABLE IF NOT EXISTS sys_role_permission (
+ id BIGSERIAL PRIMARY KEY,
+ role_id BIGINT NOT NULL,
+ permission_id BIGINT NOT NULL,
+ create_by VARCHAR(50),
+ update_by VARCHAR(50),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ FOREIGN KEY (role_id) REFERENCES sys_role(id) ON DELETE CASCADE,
+ FOREIGN KEY (permission_id) REFERENCES sys_permission(id) ON DELETE CASCADE,
+ UNIQUE (role_id, permission_id)
+);
+
+-- ============================================
+-- 菜单相关表
+-- ============================================
+
+-- 菜单表
CREATE TABLE IF NOT EXISTS sys_menu (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
menu_name VARCHAR(50) NOT NULL,
parent_id BIGINT DEFAULT 0,
order_num INTEGER DEFAULT 0,
@@ -46,9 +102,14 @@ CREATE TABLE IF NOT EXISTS sys_menu (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
+-- ============================================
+-- 字典相关表
+-- ============================================
+
-- 字典类型表
CREATE TABLE IF NOT EXISTS sys_dict_type (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
dict_name VARCHAR(100) NOT NULL,
dict_type VARCHAR(100) NOT NULL UNIQUE,
status VARCHAR(1) DEFAULT '0',
@@ -59,9 +120,10 @@ CREATE TABLE IF NOT EXISTS sys_dict_type (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
-- 字典数据表
CREATE TABLE IF NOT EXISTS sys_dict_data (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
dict_sort INTEGER DEFAULT 0,
dict_label VARCHAR(100) NOT NULL,
dict_value VARCHAR(100) NOT NULL,
@@ -76,9 +138,10 @@ CREATE TABLE IF NOT EXISTS sys_dict_data (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
-- 字典表(通用字典)
CREATE TABLE IF NOT EXISTS sys_dictionary (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
type VARCHAR(100) NOT NULL,
code VARCHAR(100) NOT NULL,
name VARCHAR(100) NOT NULL,
@@ -90,9 +153,14 @@ CREATE TABLE IF NOT EXISTS sys_dictionary (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
+-- ============================================
+-- 系统配置表
+-- ============================================
+
-- 系统配置表
CREATE TABLE IF NOT EXISTS sys_config (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
config_name VARCHAR(100) NOT NULL,
config_key VARCHAR(100) NOT NULL UNIQUE,
config_value VARCHAR(500) NOT NULL,
@@ -103,9 +171,14 @@ CREATE TABLE IF NOT EXISTS sys_config (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
+-- ============================================
+-- 日志相关表
+-- ============================================
+
-- 登录日志表
CREATE TABLE IF NOT EXISTS sys_login_log (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
username VARCHAR(50),
ip VARCHAR(50),
location VARCHAR(255),
@@ -115,9 +188,10 @@ CREATE TABLE IF NOT EXISTS sys_login_log (
message VARCHAR(255),
login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
+
-- 异常日志表
CREATE TABLE IF NOT EXISTS sys_exception_log (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
username VARCHAR(50),
title VARCHAR(100),
exception_name VARCHAR(100),
@@ -128,9 +202,10 @@ CREATE TABLE IF NOT EXISTS sys_exception_log (
ip VARCHAR(50),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
+
-- 操作日志表
CREATE TABLE IF NOT EXISTS operation_log (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
username VARCHAR(50),
operation VARCHAR(100),
method VARCHAR(200),
@@ -146,9 +221,53 @@ CREATE TABLE IF NOT EXISTS operation_log (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
+-- 审计日志表
+CREATE TABLE IF NOT EXISTS audit_log (
+ id BIGSERIAL PRIMARY KEY,
+ entity_type VARCHAR(100) NOT NULL,
+ entity_id BIGINT,
+ operation_type VARCHAR(20) NOT NULL,
+ operator VARCHAR(100),
+ operation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ before_data JSONB,
+ after_data JSONB,
+ changed_fields TEXT[],
+ ip_address VARCHAR(50),
+ user_agent TEXT,
+ description TEXT,
+ create_by VARCHAR(50),
+ update_by VARCHAR(50),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ deleted_at TIMESTAMP
+);
+
+-- 审计日志归档表
+CREATE TABLE IF NOT EXISTS audit_log_archive (
+ id BIGSERIAL PRIMARY KEY,
+ entity_type VARCHAR(100) NOT NULL,
+ entity_id BIGINT,
+ operation_type VARCHAR(20) NOT NULL,
+ operator VARCHAR(100),
+ operation_time TIMESTAMP,
+ before_data JSONB,
+ after_data JSONB,
+ changed_fields TEXT[],
+ ip_address VARCHAR(50),
+ user_agent TEXT,
+ description TEXT,
+ created_at TIMESTAMP,
+ archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
+
+-- ============================================
+-- 通知与消息表
+-- ============================================
+
-- 系统公告表
CREATE TABLE IF NOT EXISTS sys_notice (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
notice_title VARCHAR(50) NOT NULL,
notice_type VARCHAR(1) NOT NULL,
notice_content TEXT,
@@ -159,9 +278,10 @@ CREATE TABLE IF NOT EXISTS sys_notice (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
-- 用户消息表
CREATE TABLE IF NOT EXISTS sys_user_message (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
notice_id BIGINT,
message_title VARCHAR(255),
@@ -174,9 +294,14 @@ CREATE TABLE IF NOT EXISTS sys_user_message (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
+-- ============================================
+-- 文件管理表
+-- ============================================
+
-- 文件管理表
CREATE TABLE IF NOT EXISTS sys_file (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
file_name VARCHAR(255) NOT NULL,
file_path VARCHAR(500) NOT NULL,
file_size BIGINT,
@@ -189,9 +314,14 @@ CREATE TABLE IF NOT EXISTS sys_file (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
+-- ============================================
+-- OAuth2相关表
+-- ============================================
+
-- OAuth2客户端表
CREATE TABLE IF NOT EXISTS oauth2_client (
- id BIGINT PRIMARY KEY,
+ id BIGSERIAL PRIMARY KEY,
client_id VARCHAR(100) NOT NULL UNIQUE,
client_secret VARCHAR(255) NOT NULL,
client_name VARCHAR(100),
@@ -208,7 +338,31 @@ CREATE TABLE IF NOT EXISTS oauth2_client (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
+
+-- ============================================
-- 表注释
+-- ============================================
+
+COMMENT ON TABLE sys_user IS '系统用户表';
+COMMENT ON TABLE sys_role IS '系统角色表';
+COMMENT ON TABLE user_role IS '用户角色关联表';
+COMMENT ON TABLE sys_permission IS '系统权限表';
+COMMENT ON TABLE sys_role_permission IS '角色权限关联表';
+COMMENT ON TABLE sys_menu IS '系统菜单表';
+COMMENT ON TABLE sys_dict_type IS '字典类型表';
+COMMENT ON TABLE sys_dict_data IS '字典数据表';
+COMMENT ON TABLE sys_dictionary IS '通用字典表';
+COMMENT ON TABLE sys_config IS '系统配置表';
+COMMENT ON TABLE sys_login_log IS '登录日志表';
+COMMENT ON TABLE sys_exception_log IS '异常日志表';
+COMMENT ON TABLE operation_log IS '操作日志表';
+COMMENT ON TABLE audit_log IS '审计日志表';
+COMMENT ON TABLE audit_log_archive IS '审计日志归档表';
+COMMENT ON TABLE sys_notice IS '系统公告表';
+COMMENT ON TABLE sys_user_message IS '用户消息表';
+COMMENT ON TABLE sys_file IS '文件管理表';
+COMMENT ON TABLE oauth2_client IS 'OAuth2客户端表';
+
COMMENT ON TABLE sys_exception_log IS '异常日志表';
COMMENT ON COLUMN sys_exception_log.id IS '主键ID';
COMMENT ON COLUMN sys_exception_log.username IS '操作用户';
@@ -220,5 +374,33 @@ COMMENT ON COLUMN sys_exception_log.exception_msg IS '异常消息';
COMMENT ON COLUMN sys_exception_log.exception_stack IS '异常堆栈';
COMMENT ON COLUMN sys_exception_log.ip IS 'IP地址';
COMMENT ON COLUMN sys_exception_log.create_time IS '创建时间';
-COMMENT ON TABLE sys_menu IS '系统菜单表';
-COMMENT ON TABLE sys_login_log IS '登录日志表';
\ No newline at end of file
+
+COMMENT ON TABLE audit_log IS '审计日志表';
+COMMENT ON COLUMN audit_log.id IS '主键ID';
+COMMENT ON COLUMN audit_log.entity_type IS '实体类型(如User, Role等)';
+COMMENT ON COLUMN audit_log.entity_id IS '实体ID';
+COMMENT ON COLUMN audit_log.operation_type IS '操作类型(CREATE, UPDATE, DELETE)';
+COMMENT ON COLUMN audit_log.operator IS '操作人';
+COMMENT ON COLUMN audit_log.operation_time IS '操作时间';
+COMMENT ON COLUMN audit_log.before_data IS '变更前数据(JSON格式)';
+COMMENT ON COLUMN audit_log.after_data IS '变更后数据(JSON格式)';
+COMMENT ON COLUMN audit_log.changed_fields IS '变更字段列表';
+COMMENT ON COLUMN audit_log.ip_address IS 'IP地址';
+COMMENT ON COLUMN audit_log.description IS '操作描述';
+COMMENT ON COLUMN audit_log.created_at IS '记录创建时间';
+
+COMMENT ON TABLE audit_log_archive IS '审计日志归档表';
+COMMENT ON COLUMN audit_log_archive.id IS '主键ID';
+COMMENT ON COLUMN audit_log_archive.entity_type IS '实体类型(如User, Role等)';
+COMMENT ON COLUMN audit_log_archive.entity_id IS '实体ID';
+COMMENT ON COLUMN audit_log_archive.operation_type IS '操作类型(CREATE, UPDATE, DELETE)';
+COMMENT ON COLUMN audit_log_archive.operator IS '操作人';
+COMMENT ON COLUMN audit_log_archive.operation_time IS '操作时间';
+COMMENT ON COLUMN audit_log_archive.before_data IS '变更前数据(JSON格式)';
+COMMENT ON COLUMN audit_log_archive.after_data IS '变更后数据(JSON格式)';
+COMMENT ON COLUMN audit_log_archive.changed_fields IS '变更字段列表';
+COMMENT ON COLUMN audit_log_archive.ip_address IS 'IP地址';
+COMMENT ON COLUMN audit_log_archive.user_agent IS '用户代理';
+COMMENT ON COLUMN audit_log_archive.description IS '操作描述';
+COMMENT ON COLUMN audit_log_archive.created_at IS '记录创建时间';
+COMMENT ON COLUMN audit_log_archive.archived_at IS '归档时间';
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V2__Insert_initial_data.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V2__Insert_initial_data.sql
index faff6d7..447f2c4 100644
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V2__Insert_initial_data.sql
+++ b/gym-manage-api/manage-db/src/main/resources/db/migration/V2__Insert_initial_data.sql
@@ -1,67 +1,233 @@
-- Novalon管理系统初始数据脚本
-- 版本: V2
--- 描述: 插入必要的初始数据
+-- 描述: 插入所有必要的初始数据(合并版)
--- 插入初始角色
-INSERT INTO sys_role (role_name, role_key, role_sort, status, create_by, update_by)
-VALUES ('超级管理员', 'admin', 1, 1, 'system', 'system')
-ON CONFLICT (role_key) DO NOTHING;
+-- ============================================
+-- 角色数据
+-- ============================================
--- 插入初始管理员用户
--- BCrypt哈希值对应明文密码: admin123
-INSERT INTO sys_user (id, username, password, email, phone, status, create_by, update_by)
-VALUES (1, 'admin', '$2b$12$SFefXlGRFMA0fvxIufpWPuIAl0OPLgRDoCZPThCvjpiJGPYS8yNYy', 'admin@novalon.com', '13800138000', 1, 'system', 'system')
-ON CONFLICT (username) DO UPDATE SET
- password = EXCLUDED.password,
- status = EXCLUDED.status;
-
--- 插入测试用户(用于E2E测试)
--- BCrypt哈希值对应明文密码: admin123
-INSERT INTO sys_user (id, username, password, email, phone, status, create_by, update_by)
-VALUES (2, 'user', '$2b$12$SFefXlGRFMA0fvxIufpWPuIAl0OPLgRDoCZPThCvjpiJGPYS8yNYy', 'user@novalon.com', '13800138001', 1, 'system', 'system')
-ON CONFLICT (username) DO UPDATE SET
- password = EXCLUDED.password,
- status = EXCLUDED.status;
-
--- 插入初始字典类型
-INSERT INTO sys_dict_type (dict_name, dict_type, status, remark, create_by, update_by)
+INSERT INTO sys_role (id, role_name, role_key, role_sort, status, create_by, update_by, created_at, updated_at)
VALUES
-('用户状态', 'user_status', '0', '用户状态列表', 'system', 'system'),
-('菜单状态', 'menu_status', '0', '菜单状态列表', 'system', 'system'),
-('角色状态', 'role_status', '0', '角色状态列表', 'system', 'system'),
-('系统开关', 'sys_normal_disable', '0', '系统开关列表', 'system', 'system')
+(1, '超级管理员', 'admin', 1, 1, 'system', 'system', NOW(), NOW()),
+(2, '测试管理员', 'test_admin', 2, 1, 'system', 'system', NOW(), NOW()),
+(3, '普通用户', 'normal_user', 3, 1, 'system', 'system', NOW(), NOW()),
+(4, '访客', 'guest', 4, 1, 'system', 'system', NOW(), NOW());
+
+SELECT setval('sys_role_id_seq', 4);
+
+-- ============================================
+-- 用户数据
+-- ============================================
+
+-- 密码均为: Test@123 (BCrypt哈希)
+INSERT INTO sys_user (id, username, password, email, phone, nickname, status, create_by, update_by, created_at, updated_at)
+VALUES
+(1, 'admin', '$2a$12$nZ1EMUpZQljbnEdIKzH72eHlDJKUmHmHppnTTVth/SlHs5VpSAr8C', 'admin@novalon.com', '13800138000', '超级管理员', 1, 'system', 'system', NOW(), NOW()),
+(2, 'user', '$2a$12$nZ1EMUpZQljbnEdIKzH72eHlDJKUmHmHppnTTVth/SlHs5VpSAr8C', 'user@novalon.com', '13800138001', '普通用户', 1, 'system', 'system', NOW(), NOW()),
+(10, 'e2e_test_user', '$2a$12$nZ1EMUpZQljbnEdIKzH72eHlDJKUmHmHppnTTVth/SlHs5VpSAr8C', 'e2e@test.com', '13900139000', 'E2E测试用户', 1, 'system', 'system', NOW(), NOW())
+ON CONFLICT (username) DO UPDATE SET
+ password = EXCLUDED.password,
+ status = EXCLUDED.status;
+
+SELECT setval('sys_user_id_seq', 10);
+
+-- ============================================
+-- 用户角色关联
+-- ============================================
+
+-- 为admin用户分配超级管理员角色
+INSERT INTO user_role (user_id, role_id, created_by, created_at)
+VALUES
+(1, 1, 'system', NOW()),
+(2, 3, 'system', NOW()),
+(10, 1, 'system', NOW())
+ON CONFLICT (user_id, role_id) DO NOTHING;
+
+-- ============================================
+-- 权限数据
+-- ============================================
+
+INSERT INTO sys_permission (permission_name, permission_code, resource, action, description, status, create_by, update_by, created_at, updated_at) VALUES
+('用户查看', 'system:user:view', '/api/users', 'GET', '查看用户列表', 1, 'system', 'system', NOW(), NOW()),
+('用户创建', 'system:user:create', '/api/users', 'POST', '创建用户', 1, 'system', 'system', NOW(), NOW()),
+('用户编辑', 'system:user:edit', '/api/users', 'PUT', '编辑用户', 1, 'system', 'system', NOW(), NOW()),
+('用户删除', 'system:user:delete', '/api/users', 'DELETE', '删除用户', 1, 'system', 'system', NOW(), NOW()),
+('角色查看', 'system:role:view', '/api/roles', 'GET', '查看角色列表', 1, 'system', 'system', NOW(), NOW()),
+('角色创建', 'system:role:create', '/api/roles', 'POST', '创建角色', 1, 'system', 'system', NOW(), NOW()),
+('角色编辑', 'system:role:edit', '/api/roles', 'PUT', '编辑角色', 1, 'system', 'system', NOW(), NOW()),
+('角色删除', 'system:role:delete', '/api/roles', 'DELETE', '删除角色', 1, 'system', 'system', NOW(), NOW()),
+('角色分配权限', 'system:role:assign', '/api/roles/*/permissions', 'POST', '为角色分配权限', 1, 'system', 'system', NOW(), NOW()),
+('权限查看', 'system:permission:view', '/api/permissions', 'GET', '查看权限列表', 1, 'system', 'system', NOW(), NOW()),
+('权限创建', 'system:permission:create', '/api/permissions', 'POST', '创建权限', 1, 'system', 'system', NOW(), NOW()),
+('权限编辑', 'system:permission:edit', '/api/permissions', 'PUT', '编辑权限', 1, 'system', 'system', NOW(), NOW()),
+('权限删除', 'system:permission:delete', '/api/permissions', 'DELETE', '删除权限', 1, 'system', 'system', NOW(), NOW()),
+('菜单查看', 'system:menu:view', '/api/menus', 'GET', '查看菜单列表', 1, 'system', 'system', NOW(), NOW()),
+('菜单创建', 'system:menu:create', '/api/menus', 'POST', '创建菜单', 1, 'system', 'system', NOW(), NOW()),
+('菜单编辑', 'system:menu:edit', '/api/menus', 'PUT', '编辑菜单', 1, 'system', 'system', NOW(), NOW()),
+('菜单删除', 'system:menu:delete', '/api/menus', 'DELETE', '删除菜单', 1, 'system', 'system', NOW(), NOW()),
+('字典查看', 'system:dict:view', '/api/dict', 'GET', '查看字典列表', 1, 'system', 'system', NOW(), NOW()),
+('字典创建', 'system:dict:create', '/api/dict', 'POST', '创建字典', 1, 'system', 'system', NOW(), NOW()),
+('字典编辑', 'system:dict:edit', '/api/dict', 'PUT', '编辑字典', 1, 'system', 'system', NOW(), NOW()),
+('字典删除', 'system:dict:delete', '/api/dict', 'DELETE', '删除字典', 1, 'system', 'system', NOW(), NOW()),
+('配置查看', 'system:config:view', '/api/config', 'GET', '查看系统配置', 1, 'system', 'system', NOW(), NOW()),
+('配置创建', 'system:config:create', '/api/config', 'POST', '创建系统配置', 1, 'system', 'system', NOW(), NOW()),
+('配置编辑', 'system:config:edit', '/api/config', 'PUT', '编辑系统配置', 1, 'system', 'system', NOW(), NOW()),
+('配置删除', 'system:config:delete', '/api/config', 'DELETE', '删除系统配置', 1, 'system', 'system', NOW(), NOW()),
+('日志查看', 'system:log:view', '/api/logs', 'GET', '查看日志', 1, 'system', 'system', NOW(), NOW()),
+('文件上传', 'system:file:upload', '/api/files/upload', 'POST', '上传文件', 1, 'system', 'system', NOW(), NOW()),
+('文件下载', 'system:file:download', '/api/files/download', 'GET', '下载文件', 1, 'system', 'system', NOW(), NOW()),
+('文件删除', 'system:file:delete', '/api/files', 'DELETE', '删除文件', 1, 'system', 'system', NOW(), NOW()),
+('公告查看', 'system:notice:view', '/api/notices', 'GET', '查看公告', 1, 'system', 'system', NOW(), NOW()),
+('公告创建', 'system:notice:create', '/api/notices', 'POST', '创建公告', 1, 'system', 'system', NOW(), NOW()),
+('公告编辑', 'system:notice:edit', '/api/notices', 'PUT', '编辑公告', 1, 'system', 'system', NOW(), NOW()),
+('公告删除', 'system:notice:delete', '/api/notices', 'DELETE', '删除公告', 1, 'system', 'system', NOW(), NOW());
+
+-- 为管理员角色分配所有权限
+INSERT INTO sys_role_permission (role_id, permission_id, create_by, update_by, created_at, updated_at)
+SELECT 1, id, 'system', 'system', NOW(), NOW() FROM sys_permission WHERE status = 1;
+
+-- ============================================
+-- 菜单数据
+-- ============================================
+
+-- 一级菜单
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(1, '系统管理', 0, 1, 'M', NULL, NULL, 1, NOW(), NOW()),
+(2, '审计日志', 0, 2, 'M', NULL, NULL, 1, NOW(), NOW()),
+(3, '系统监控', 0, 3, 'M', NULL, NULL, 1, NOW(), NOW());
+
+-- 系统管理子菜单
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(11, '用户管理', 1, 1, 'C', 'system:user:list', 'system/user/index', 1, NOW(), NOW()),
+(12, '角色管理', 1, 2, 'C', 'system:role:list', 'system/role/index', 1, NOW(), NOW()),
+(13, '菜单管理', 1, 3, 'C', 'system:menu:list', 'system/menu/index', 1, NOW(), NOW()),
+(14, '部门管理', 1, 4, 'C', 'system:dept:list', 'system/dept/index', 1, NOW(), NOW()),
+(15, '字典管理', 1, 5, 'C', 'system:dict:list', 'system/dict/index', 1, NOW(), NOW()),
+(16, '参数管理', 1, 6, 'C', 'system:config:list', 'system/config/index', 1, NOW(), NOW()),
+(17, '通知公告', 1, 7, 'C', 'system:notice:list', 'system/notice/index', 1, NOW(), NOW()),
+(18, '文件管理', 1, 8, 'C', 'system:file:list', 'system/file/index', 1, NOW(), NOW());
+
+-- 用户管理按钮权限
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(111, '用户查询', 11, 1, 'F', 'system:user:query', NULL, 1, NOW(), NOW()),
+(112, '用户新增', 11, 2, 'F', 'system:user:add', NULL, 1, NOW(), NOW()),
+(113, '用户修改', 11, 3, 'F', 'system:user:edit', NULL, 1, NOW(), NOW()),
+(114, '用户删除', 11, 4, 'F', 'system:user:remove', NULL, 1, NOW(), NOW()),
+(115, '用户导出', 11, 5, 'F', 'system:user:export', NULL, 1, NOW(), NOW()),
+(116, '用户导入', 11, 6, 'F', 'system:user:import', NULL, 1, NOW(), NOW()),
+(117, '重置密码', 11, 7, 'F', 'system:user:resetPwd', NULL, 1, NOW(), NOW());
+
+-- 角色管理按钮权限
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(121, '角色查询', 12, 1, 'F', 'system:role:query', NULL, 1, NOW(), NOW()),
+(122, '角色新增', 12, 2, 'F', 'system:role:add', NULL, 1, NOW(), NOW()),
+(123, '角色修改', 12, 3, 'F', 'system:role:edit', NULL, 1, NOW(), NOW()),
+(124, '角色删除', 12, 4, 'F', 'system:role:remove', NULL, 1, NOW(), NOW()),
+(125, '角色导出', 12, 5, 'F', 'system:role:export', NULL, 1, NOW(), NOW());
+
+-- 菜单管理按钮权限
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(131, '菜单查询', 13, 1, 'F', 'system:menu:query', NULL, 1, NOW(), NOW()),
+(132, '菜单新增', 13, 2, 'F', 'system:menu:add', NULL, 1, NOW(), NOW()),
+(133, '菜单修改', 13, 3, 'F', 'system:menu:edit', NULL, 1, NOW(), NOW()),
+(134, '菜单删除', 13, 4, 'F', 'system:menu:remove', NULL, 1, NOW(), NOW());
+
+-- 审计日志子菜单
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(21, '操作日志', 2, 1, 'C', 'audit:operation:list', 'audit/operation/index', 1, NOW(), NOW()),
+(22, '登录日志', 2, 2, 'C', 'audit:login:list', 'audit/login/index', 1, NOW(), NOW()),
+(23, '异常日志', 2, 3, 'C', 'audit:exception:list', 'audit/exception/index', 1, NOW(), NOW());
+
+-- 操作日志按钮权限
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(211, '操作查询', 21, 1, 'F', 'audit:operation:query', NULL, 1, NOW(), NOW()),
+(212, '操作删除', 21, 2, 'F', 'audit:operation:remove', NULL, 1, NOW(), NOW()),
+(213, '操作导出', 21, 3, 'F', 'audit:operation:export', NULL, 1, NOW(), NOW());
+
+-- 登录日志按钮权限
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(221, '登录查询', 22, 1, 'F', 'audit:login:query', NULL, 1, NOW(), NOW()),
+(222, '登录删除', 22, 2, 'F', 'audit:login:remove', NULL, 1, NOW(), NOW()),
+(223, '登录导出', 22, 3, 'F', 'audit:login:export', NULL, 1, NOW(), NOW());
+
+-- 异常日志按钮权限
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(231, '异常查询', 23, 1, 'F', 'audit:exception:query', NULL, 1, NOW(), NOW()),
+(232, '异常删除', 23, 2, 'F', 'audit:exception:remove', NULL, 1, NOW(), NOW()),
+(233, '异常导出', 23, 3, 'F', 'audit:exception:export', NULL, 1, NOW(), NOW());
+
+-- 系统监控子菜单
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(31, '在线用户', 3, 1, 'C', 'monitor:online:list', 'monitor/online/index', 1, NOW(), NOW()),
+(32, '定时任务', 3, 2, 'C', 'monitor:job:list', 'monitor/job/index', 1, NOW(), NOW()),
+(33, '数据监控', 3, 3, 'C', 'monitor:data:list', 'monitor/data/index', 1, NOW(), NOW()),
+(34, '服务监控', 3, 4, 'C', 'monitor:server:list', 'monitor/server/index', 1, NOW(), NOW()),
+(35, '缓存监控', 3, 5, 'C', 'monitor:cache:list', 'monitor/cache/index', 1, NOW(), NOW());
+
+-- 在线用户按钮权限
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(311, '在线查询', 31, 1, 'F', 'monitor:online:query', NULL, 1, NOW(), NOW()),
+(312, '在线强退', 31, 2, 'F', 'monitor:online:forceLogout', NULL, 1, NOW(), NOW());
+
+-- 定时任务按钮权限
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
+(321, '任务查询', 32, 1, 'F', 'monitor:job:query', NULL, 1, NOW(), NOW()),
+(322, '任务新增', 32, 2, 'F', 'monitor:job:add', NULL, 1, NOW(), NOW()),
+(323, '任务修改', 32, 3, 'F', 'monitor:job:edit', NULL, 1, NOW(), NOW()),
+(324, '任务删除', 32, 4, 'F', 'monitor:job:remove', NULL, 1, NOW(), NOW()),
+(325, '任务执行', 32, 5, 'F', 'monitor:job:execute', NULL, 1, NOW(), NOW());
+
+SELECT setval('sys_menu_id_seq', 400);
+
+-- ============================================
+-- 字典数据
+-- ============================================
+
+-- 字典类型
+INSERT INTO sys_dict_type (dict_name, dict_type, status, remark, create_by, update_by, created_at, updated_at)
+VALUES
+('用户状态', 'user_status', '0', '用户状态列表', 'system', 'system', NOW(), NOW()),
+('菜单状态', 'menu_status', '0', '菜单状态列表', 'system', 'system', NOW(), NOW()),
+('角色状态', 'role_status', '0', '角色状态列表', 'system', 'system', NOW(), NOW()),
+('系统开关', 'sys_normal_disable', '0', '系统开关列表', 'system', 'system', NOW(), NOW())
ON CONFLICT (dict_type) DO NOTHING;
--- 插入初始字典数据
-INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, update_by)
+-- 字典数据
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, update_by, created_at, updated_at)
VALUES
-- 用户状态
-(1, '正常', '1', 'user_status', '', 'primary', 'Y', '0', 'system', 'system'),
-(2, '停用', '0', 'user_status', '', 'danger', 'N', '0', 'system', 'system'),
+(1, '正常', '1', 'user_status', '', 'primary', 'Y', '0', 'system', 'system', NOW(), NOW()),
+(2, '停用', '0', 'user_status', '', 'danger', 'N', '0', 'system', 'system', NOW(), NOW()),
-- 菜单状态
-(1, '正常', '0', 'menu_status', '', 'primary', 'Y', '0', 'system', 'system'),
-(2, '停用', '1', 'menu_status', '', 'danger', 'N', '0', 'system', 'system'),
+(1, '正常', '0', 'menu_status', '', 'primary', 'Y', '0', 'system', 'system', NOW(), NOW()),
+(2, '停用', '1', 'menu_status', '', 'danger', 'N', '0', 'system', 'system', NOW(), NOW()),
-- 角色状态
-(1, '正常', '0', 'role_status', '', 'primary', 'Y', '0', 'system', 'system'),
-(2, '停用', '1', 'role_status', '', 'danger', 'N', '0', 'system', 'system'),
+(1, '正常', '0', 'role_status', '', 'primary', 'Y', '0', 'system', 'system', NOW(), NOW()),
+(2, '停用', '1', 'role_status', '', 'danger', 'N', '0', 'system', 'system', NOW(), NOW()),
-- 系统开关
-(1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'system', 'system'),
-(2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'system', 'system')
-ON CONFLICT DO NOTHING;
+(1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'system', 'system', NOW(), NOW()),
+(2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'system', 'system', NOW(), NOW());
--- 插入初始系统配置
-INSERT INTO sys_config (config_name, config_key, config_value, config_type, create_by, update_by)
+-- ============================================
+-- 系统配置
+-- ============================================
+
+INSERT INTO sys_config (config_name, config_key, config_value, config_type, create_by, update_by, created_at, updated_at)
VALUES
-('用户管理-用户初始密码', 'sys.user.initPassword', '123456', 'Y', 'system', 'system'),
-('主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'system', 'system'),
-('用户自助-验证码开关', 'sys.account.captchaEnabled', 'true', 'Y', 'system', 'system'),
-('用户自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 'system', 'system'),
-('账号自助-密码验证码', 'sys.account.pwdCaptchaEnabled', 'true', 'Y', 'system', 'system')
+('用户管理-用户初始密码', 'sys.user.initPassword', '123456', 'Y', 'system', 'system', NOW(), NOW()),
+('主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'system', 'system', NOW(), NOW()),
+('用户自助-验证码开关', 'sys.account.captchaEnabled', 'true', 'Y', 'system', 'system', NOW(), NOW()),
+('用户自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 'system', 'system', NOW(), NOW()),
+('账号自助-密码验证码', 'sys.account.pwdCaptchaEnabled', 'true', 'Y', 'system', 'system', NOW(), NOW())
ON CONFLICT (config_key) DO NOTHING;
+-- ============================================
-- 重置序列值
-SELECT setval('sys_user_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_user));
-SELECT setval('sys_role_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_role));
+-- ============================================
+
SELECT setval('sys_dict_type_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_dict_type));
SELECT setval('sys_dict_data_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_dict_data));
-SELECT setval('sys_config_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_config));
\ No newline at end of file
+SELECT setval('sys_config_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_config));
+SELECT setval('sys_permission_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_permission));
+SELECT setval('sys_role_permission_id_seq', (SELECT COALESCE(MAX(id), 1) FROM sys_role_permission));
+SELECT setval('user_role_id_seq', (SELECT COALESCE(MAX(id), 1) FROM user_role));
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V5__Create_indexes.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V3__Create_indexes.sql
similarity index 59%
rename from gym-manage-api/manage-db/src/main/resources/db/migration/V5__Create_indexes.sql
rename to gym-manage-api/manage-db/src/main/resources/db/migration/V3__Create_indexes.sql
index 5633553..8fa1aea 100644
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V5__Create_indexes.sql
+++ b/gym-manage-api/manage-db/src/main/resources/db/migration/V3__Create_indexes.sql
@@ -1,7 +1,11 @@
-- Novalon管理系统索引优化脚本
--- 版本: V5
+-- 版本: V3
-- 描述: 为表创建必要的索引以提升查询性能
+-- ============================================
+-- 用户与角色表索引
+-- ============================================
+
-- 用户表索引
CREATE INDEX IF NOT EXISTS idx_users_username ON sys_user(username);
CREATE INDEX IF NOT EXISTS idx_users_email ON sys_user(email);
@@ -13,11 +17,35 @@ CREATE INDEX IF NOT EXISTS idx_roles_role_key ON sys_role(role_key);
CREATE INDEX IF NOT EXISTS idx_roles_status ON sys_role(status);
CREATE INDEX IF NOT EXISTS idx_roles_deleted_at ON sys_role(deleted_at);
+-- 用户角色关联表索引
+CREATE INDEX IF NOT EXISTS idx_user_role_user_id ON user_role(user_id);
+CREATE INDEX IF NOT EXISTS idx_user_role_role_id ON user_role(role_id);
+
+-- ============================================
+-- 权限表索引
+-- ============================================
+
+-- 权限表索引
+CREATE INDEX IF NOT EXISTS idx_permission_code ON sys_permission(permission_code);
+CREATE INDEX IF NOT EXISTS idx_permission_resource ON sys_permission(resource);
+CREATE INDEX IF NOT EXISTS idx_permission_status ON sys_permission(status);
+
+-- 角色权限关联表索引
+CREATE INDEX IF NOT EXISTS idx_role_permission_role_id ON sys_role_permission(role_id);
+CREATE INDEX IF NOT EXISTS idx_role_permission_permission_id ON sys_role_permission(permission_id);
+
+-- ============================================
-- 菜单表索引
+-- ============================================
+
CREATE INDEX IF NOT EXISTS idx_sys_menu_parent_id ON sys_menu(parent_id);
CREATE INDEX IF NOT EXISTS idx_sys_menu_status ON sys_menu(status);
CREATE INDEX IF NOT EXISTS idx_sys_menu_deleted_at ON sys_menu(deleted_at);
+-- ============================================
+-- 字典表索引
+-- ============================================
+
-- 字典类型表索引
CREATE INDEX IF NOT EXISTS idx_sys_dict_type_dict_type ON sys_dict_type(dict_type);
CREATE INDEX IF NOT EXISTS idx_sys_dict_type_status ON sys_dict_type(status);
@@ -29,16 +57,23 @@ CREATE INDEX IF NOT EXISTS idx_sys_dict_data_dict_value ON sys_dict_data(dict_va
CREATE INDEX IF NOT EXISTS idx_sys_dict_data_status ON sys_dict_data(status);
CREATE INDEX IF NOT EXISTS idx_sys_dict_data_deleted_at ON sys_dict_data(deleted_at);
--- 字典表索引
+-- 通用字典表索引
CREATE INDEX IF NOT EXISTS idx_sys_dictionary_type ON sys_dictionary(type);
CREATE INDEX IF NOT EXISTS idx_sys_dictionary_type_code ON sys_dictionary(type, code);
CREATE INDEX IF NOT EXISTS idx_sys_dictionary_deleted_at ON sys_dictionary(deleted_at);
+-- ============================================
-- 系统配置表索引
+-- ============================================
+
CREATE INDEX IF NOT EXISTS idx_sys_config_config_key ON sys_config(config_key);
CREATE INDEX IF NOT EXISTS idx_sys_config_config_type ON sys_config(config_type);
CREATE INDEX IF NOT EXISTS idx_sys_config_deleted_at ON sys_config(deleted_at);
+-- ============================================
+-- 日志表索引
+-- ============================================
+
-- 登录日志表索引
CREATE INDEX IF NOT EXISTS idx_sys_login_log_username ON sys_login_log(username);
CREATE INDEX IF NOT EXISTS idx_sys_login_log_ip ON sys_login_log(ip);
@@ -57,6 +92,26 @@ CREATE INDEX IF NOT EXISTS idx_operation_log_created_at ON operation_log(created
CREATE INDEX IF NOT EXISTS idx_operation_log_status ON operation_log(status);
CREATE INDEX IF NOT EXISTS idx_operation_log_deleted_at ON operation_log(deleted_at);
+-- 审计日志表索引
+CREATE INDEX IF NOT EXISTS idx_audit_log_entity_type ON audit_log(entity_type);
+CREATE INDEX IF NOT EXISTS idx_audit_log_entity_id ON audit_log(entity_id);
+CREATE INDEX IF NOT EXISTS idx_audit_log_operation_type ON audit_log(operation_type);
+CREATE INDEX IF NOT EXISTS idx_audit_log_operator ON audit_log(operator);
+CREATE INDEX IF NOT EXISTS idx_audit_log_operation_time ON audit_log(operation_time);
+CREATE INDEX IF NOT EXISTS idx_audit_log_entity ON audit_log(entity_type, entity_id);
+
+-- 审计日志归档表索引
+CREATE INDEX IF NOT EXISTS idx_audit_log_archive_entity_type ON audit_log_archive(entity_type);
+CREATE INDEX IF NOT EXISTS idx_audit_log_archive_entity_id ON audit_log_archive(entity_id);
+CREATE INDEX IF NOT EXISTS idx_audit_log_archive_operation_type ON audit_log_archive(operation_type);
+CREATE INDEX IF NOT EXISTS idx_audit_log_archive_operator ON audit_log_archive(operator);
+CREATE INDEX IF NOT EXISTS idx_audit_log_archive_operation_time ON audit_log_archive(operation_time);
+CREATE INDEX IF NOT EXISTS idx_audit_log_archive_archived_at ON audit_log_archive(archived_at);
+
+-- ============================================
+-- 通知与消息表索引
+-- ============================================
+
-- 系统公告表索引
CREATE INDEX IF NOT EXISTS idx_sys_notice_notice_type ON sys_notice(notice_type);
CREATE INDEX IF NOT EXISTS idx_sys_notice_status ON sys_notice(status);
@@ -68,11 +123,17 @@ CREATE INDEX IF NOT EXISTS idx_sys_user_message_notice_id ON sys_user_message(no
CREATE INDEX IF NOT EXISTS idx_sys_user_message_is_read ON sys_user_message(is_read);
CREATE INDEX IF NOT EXISTS idx_sys_user_message_deleted_at ON sys_user_message(deleted_at);
+-- ============================================
-- 文件管理表索引
+-- ============================================
+
CREATE INDEX IF NOT EXISTS idx_sys_file_file_type ON sys_file(file_type);
CREATE INDEX IF NOT EXISTS idx_sys_file_deleted_at ON sys_file(deleted_at);
+-- ============================================
-- OAuth2客户端表索引
+-- ============================================
+
CREATE INDEX IF NOT EXISTS idx_oauth2_client_client_id ON oauth2_client(client_id);
CREATE INDEX IF NOT EXISTS idx_oauth2_client_enabled ON oauth2_client(enabled);
-CREATE INDEX IF NOT EXISTS idx_oauth2_client_deleted_at ON oauth2_client(deleted_at);
\ No newline at end of file
+CREATE INDEX IF NOT EXISTS idx_oauth2_client_deleted_at ON oauth2_client(deleted_at);
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V3__Create_user_role_table.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V3__Create_user_role_table.sql
deleted file mode 100644
index ba8628d..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V3__Create_user_role_table.sql
+++ /dev/null
@@ -1,23 +0,0 @@
--- 创建用户角色关联表(支持多对多关系)
-CREATE TABLE IF NOT EXISTS user_role (
- id BIGSERIAL PRIMARY KEY,
- user_id BIGINT NOT NULL,
- role_id BIGINT NOT NULL,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- created_by VARCHAR(50),
- CONSTRAINT fk_user_role_user FOREIGN KEY (user_id) REFERENCES sys_user(id) ON DELETE CASCADE,
- CONSTRAINT fk_user_role_role FOREIGN KEY (role_id) REFERENCES sys_role(id) ON DELETE CASCADE,
- CONSTRAINT uk_user_role UNIQUE (user_id, role_id)
-);
-
--- 创建索引
-CREATE INDEX IF NOT EXISTS idx_user_role_user_id ON user_role(user_id);
-CREATE INDEX IF NOT EXISTS idx_user_role_role_id ON user_role(role_id);
-
--- 表注释
-COMMENT ON TABLE user_role IS '用户角色关联表';
-COMMENT ON COLUMN user_role.id IS '主键ID';
-COMMENT ON COLUMN user_role.user_id IS '用户ID';
-COMMENT ON COLUMN user_role.role_id IS '角色ID';
-COMMENT ON COLUMN user_role.created_at IS '创建时间';
-COMMENT ON COLUMN user_role.created_by IS '创建人';
\ No newline at end of file
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V4__Create_permission_tables.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V4__Create_permission_tables.sql
deleted file mode 100644
index 99e82c0..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V4__Create_permission_tables.sql
+++ /dev/null
@@ -1,104 +0,0 @@
--- Novalon管理系统权限功能数据库迁移脚本
--- 版本: V4
--- 描述: 创建权限管理相关表结构
-
--- 权限表
-CREATE TABLE IF NOT EXISTS sys_permission (
- id BIGSERIAL PRIMARY KEY,
- permission_name VARCHAR(100) NOT NULL,
- permission_code VARCHAR(100) NOT NULL UNIQUE,
- resource VARCHAR(200) NOT NULL,
- action VARCHAR(50) NOT NULL,
- description VARCHAR(500),
- status INTEGER DEFAULT 1,
- create_by VARCHAR(50),
- update_by VARCHAR(50),
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- deleted_at TIMESTAMP
-);
-
--- 角色权限关联表
-CREATE TABLE IF NOT EXISTS sys_role_permission (
- id BIGSERIAL PRIMARY KEY,
- role_id BIGINT NOT NULL,
- permission_id BIGINT NOT NULL,
- create_by VARCHAR(50),
- update_by VARCHAR(50),
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (role_id) REFERENCES sys_role(id) ON DELETE CASCADE,
- FOREIGN KEY (permission_id) REFERENCES sys_permission(id) ON DELETE CASCADE,
- UNIQUE (role_id, permission_id)
-);
-
--- 表注释
-COMMENT ON TABLE sys_permission IS '系统权限表';
-COMMENT ON COLUMN sys_permission.id IS '主键ID';
-COMMENT ON COLUMN sys_permission.permission_name IS '权限名称';
-COMMENT ON COLUMN sys_permission.permission_code IS '权限编码';
-COMMENT ON COLUMN sys_permission.resource IS '资源路径';
-COMMENT ON COLUMN sys_permission.action IS '操作类型';
-COMMENT ON COLUMN sys_permission.description IS '权限描述';
-COMMENT ON COLUMN sys_permission.status IS '状态:0-禁用,1-正常';
-COMMENT ON COLUMN sys_permission.create_by IS '创建者';
-COMMENT ON COLUMN sys_permission.update_by IS '更新者';
-COMMENT ON COLUMN sys_permission.created_at IS '创建时间';
-COMMENT ON COLUMN sys_permission.updated_at IS '更新时间';
-COMMENT ON COLUMN sys_permission.deleted_at IS '删除时间';
-
-COMMENT ON TABLE sys_role_permission IS '角色权限关联表';
-COMMENT ON COLUMN sys_role_permission.id IS '主键ID';
-COMMENT ON COLUMN sys_role_permission.role_id IS '角色ID';
-COMMENT ON COLUMN sys_role_permission.permission_id IS '权限ID';
-COMMENT ON COLUMN sys_role_permission.create_by IS '创建者';
-COMMENT ON COLUMN sys_role_permission.update_by IS '更新者';
-COMMENT ON COLUMN sys_role_permission.created_at IS '创建时间';
-COMMENT ON COLUMN sys_role_permission.updated_at IS '更新时间';
-
--- 创建索引
-CREATE INDEX IF NOT EXISTS idx_permission_code ON sys_permission(permission_code);
-CREATE INDEX IF NOT EXISTS idx_permission_resource ON sys_permission(resource);
-CREATE INDEX IF NOT EXISTS idx_permission_status ON sys_permission(status);
-CREATE INDEX IF NOT EXISTS idx_role_permission_role_id ON sys_role_permission(role_id);
-CREATE INDEX IF NOT EXISTS idx_role_permission_permission_id ON sys_role_permission(permission_id);
-
--- 插入初始权限数据
-INSERT INTO sys_permission (permission_name, permission_code, resource, action, description, status) VALUES
-('用户查看', 'system:user:view', '/api/users', 'GET', '查看用户列表', 1),
-('用户创建', 'system:user:create', '/api/users', 'POST', '创建用户', 1),
-('用户编辑', 'system:user:edit', '/api/users', 'PUT', '编辑用户', 1),
-('用户删除', 'system:user:delete', '/api/users', 'DELETE', '删除用户', 1),
-('角色查看', 'system:role:view', '/api/roles', 'GET', '查看角色列表', 1),
-('角色创建', 'system:role:create', '/api/roles', 'POST', '创建角色', 1),
-('角色编辑', 'system:role:edit', '/api/roles', 'PUT', '编辑角色', 1),
-('角色删除', 'system:role:delete', '/api/roles', 'DELETE', '删除角色', 1),
-('角色分配权限', 'system:role:assign', '/api/roles/*/permissions', 'POST', '为角色分配权限', 1),
-('权限查看', 'system:permission:view', '/api/permissions', 'GET', '查看权限列表', 1),
-('权限创建', 'system:permission:create', '/api/permissions', 'POST', '创建权限', 1),
-('权限编辑', 'system:permission:edit', '/api/permissions', 'PUT', '编辑权限', 1),
-('权限删除', 'system:permission:delete', '/api/permissions', 'DELETE', '删除权限', 1),
-('菜单查看', 'system:menu:view', '/api/menus', 'GET', '查看菜单列表', 1),
-('菜单创建', 'system:menu:create', '/api/menus', 'POST', '创建菜单', 1),
-('菜单编辑', 'system:menu:edit', '/api/menus', 'PUT', '编辑菜单', 1),
-('菜单删除', 'system:menu:delete', '/api/menus', 'DELETE', '删除菜单', 1),
-('字典查看', 'system:dict:view', '/api/dict', 'GET', '查看字典列表', 1),
-('字典创建', 'system:dict:create', '/api/dict', 'POST', '创建字典', 1),
-('字典编辑', 'system:dict:edit', '/api/dict', 'PUT', '编辑字典', 1),
-('字典删除', 'system:dict:delete', '/api/dict', 'DELETE', '删除字典', 1),
-('配置查看', 'system:config:view', '/api/config', 'GET', '查看系统配置', 1),
-('配置创建', 'system:config:create', '/api/config', 'POST', '创建系统配置', 1),
-('配置编辑', 'system:config:edit', '/api/config', 'PUT', '编辑系统配置', 1),
-('配置删除', 'system:config:delete', '/api/config', 'DELETE', '删除系统配置', 1),
-('日志查看', 'system:log:view', '/api/logs', 'GET', '查看日志', 1),
-('文件上传', 'system:file:upload', '/api/files/upload', 'POST', '上传文件', 1),
-('文件下载', 'system:file:download', '/api/files/download', 'GET', '下载文件', 1),
-('文件删除', 'system:file:delete', '/api/files', 'DELETE', '删除文件', 1),
-('公告查看', 'system:notice:view', '/api/notices', 'GET', '查看公告', 1),
-('公告创建', 'system:notice:create', '/api/notices', 'POST', '创建公告', 1),
-('公告编辑', 'system:notice:edit', '/api/notices', 'PUT', '编辑公告', 1),
-('公告删除', 'system:notice:delete', '/api/notices', 'DELETE', '删除公告', 1);
-
--- 为管理员角色分配所有权限
-INSERT INTO sys_role_permission (role_id, permission_id)
-SELECT 1, id FROM sys_permission WHERE status = 1;
\ No newline at end of file
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V9__Grant_permissions.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V4__Grant_permissions.sql
similarity index 97%
rename from gym-manage-api/manage-db/src/main/resources/db/migration/V9__Grant_permissions.sql
rename to gym-manage-api/manage-db/src/main/resources/db/migration/V4__Grant_permissions.sql
index 268dc90..f20aa1f 100644
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V9__Grant_permissions.sql
+++ b/gym-manage-api/manage-db/src/main/resources/db/migration/V4__Grant_permissions.sql
@@ -1,5 +1,5 @@
-- Novalon管理系统权限授予脚本
--- 版本: V9
+-- 版本: V4
-- 描述: 为novalon用户授予所有表的访问权限
-- 授予所有表的SELECT, INSERT, UPDATE, DELETE权限
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V6__Init_menu_data.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V6__Init_menu_data.sql
deleted file mode 100644
index d283adb..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V6__Init_menu_data.sql
+++ /dev/null
@@ -1,90 +0,0 @@
--- 系统菜单初始化数据
--- 版本: V6
--- 描述: 初始化系统菜单数据
-
--- 一级菜单
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(1, 0, '系统管理', 1, 'M', NULL, NULL, 1, NOW(), NOW()),
-(2, 0, '审计日志', 2, 'M', NULL, NULL, 1, NOW(), NOW()),
-(3, 0, '系统监控', 3, 'M', NULL, NULL, 1, NOW(), NOW());
-
--- 系统管理子菜单
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(11, 1, '用户管理', 1, 'C', 'system:user:list', 'system/user/index', 1, NOW(), NOW()),
-(12, 1, '角色管理', 2, 'C', 'system:role:list', 'system/role/index', 1, NOW(), NOW()),
-(13, 1, '菜单管理', 3, 'C', 'system:menu:list', 'system/menu/index', 1, NOW(), NOW()),
-(14, 1, '部门管理', 4, 'C', 'system:dept:list', 'system/dept/index', 1, NOW(), NOW()),
-(15, 1, '字典管理', 5, 'C', 'system:dict:list', 'system/dict/index', 1, NOW(), NOW()),
-(16, 1, '参数管理', 6, 'C', 'system:config:list', 'system/config/index', 1, NOW(), NOW()),
-(17, 1, '通知公告', 7, 'C', 'system:notice:list', 'system/notice/index', 1, NOW(), NOW()),
-(18, 1, '文件管理', 8, 'C', 'system:file:list', 'system/file/index', 1, NOW(), NOW());
-
--- 用户管理按钮权限
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(111, 11, '用户查询', 1, 'F', 'system:user:query', NULL, 1, NOW(), NOW()),
-(112, 11, '用户新增', 2, 'F', 'system:user:add', NULL, 1, NOW(), NOW()),
-(113, 11, '用户修改', 3, 'F', 'system:user:edit', NULL, 1, NOW(), NOW()),
-(114, 11, '用户删除', 4, 'F', 'system:user:remove', NULL, 1, NOW(), NOW()),
-(115, 11, '用户导出', 5, 'F', 'system:user:export', NULL, 1, NOW(), NOW()),
-(116, 11, '用户导入', 6, 'F', 'system:user:import', NULL, 1, NOW(), NOW()),
-(117, 11, '重置密码', 7, 'F', 'system:user:resetPwd', NULL, 1, NOW(), NOW());
-
--- 角色管理按钮权限
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(121, 12, '角色查询', 1, 'F', 'system:role:query', NULL, 1, NOW(), NOW()),
-(122, 12, '角色新增', 2, 'F', 'system:role:add', NULL, 1, NOW(), NOW()),
-(123, 12, '角色修改', 3, 'F', 'system:role:edit', NULL, 1, NOW(), NOW()),
-(124, 12, '角色删除', 4, 'F', 'system:role:remove', NULL, 1, NOW(), NOW()),
-(125, 12, '角色导出', 5, 'F', 'system:role:export', NULL, 1, NOW(), NOW());
-
--- 菜单管理按钮权限
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(131, 13, '菜单查询', 1, 'F', 'system:menu:query', NULL, 1, NOW(), NOW()),
-(132, 13, '菜单新增', 2, 'F', 'system:menu:add', NULL, 1, NOW(), NOW()),
-(133, 13, '菜单修改', 3, 'F', 'system:menu:edit', NULL, 1, NOW(), NOW()),
-(134, 13, '菜单删除', 4, 'F', 'system:menu:remove', NULL, 1, NOW(), NOW());
-
--- 审计日志子菜单
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(21, 2, '操作日志', 1, 'C', 'audit:operation:list', 'audit/operation/index', 1, NOW(), NOW()),
-(22, 2, '登录日志', 2, 'C', 'audit:login:list', 'audit/login/index', 1, NOW(), NOW()),
-(23, 2, '异常日志', 3, 'C', 'audit:exception:list', 'audit/exception/index', 1, NOW(), NOW());
-
--- 操作日志按钮权限
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(211, 21, '操作查询', 1, 'F', 'audit:operation:query', NULL, 1, NOW(), NOW()),
-(212, 21, '操作删除', 2, 'F', 'audit:operation:remove', NULL, 1, NOW(), NOW()),
-(213, 21, '操作导出', 3, 'F', 'audit:operation:export', NULL, 1, NOW(), NOW());
-
--- 登录日志按钮权限
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(221, 22, '登录查询', 1, 'F', 'audit:login:query', NULL, 1, NOW(), NOW()),
-(222, 22, '登录删除', 2, 'F', 'audit:login:remove', NULL, 1, NOW(), NOW()),
-(223, 22, '登录导出', 3, 'F', 'audit:login:export', NULL, 1, NOW(), NOW());
-
--- 异常日志按钮权限
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(231, 23, '异常查询', 1, 'F', 'audit:exception:query', NULL, 1, NOW(), NOW()),
-(232, 23, '异常删除', 2, 'F', 'audit:exception:remove', NULL, 1, NOW(), NOW()),
-(233, 23, '异常导出', 3, 'F', 'audit:exception:export', NULL, 1, NOW(), NOW());
-
--- 系统监控子菜单
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(31, 3, '在线用户', 1, 'C', 'monitor:online:list', 'monitor/online/index', 1, NOW(), NOW()),
-(32, 3, '定时任务', 2, 'C', 'monitor:job:list', 'monitor/job/index', 1, NOW(), NOW()),
-(33, 3, '数据监控', 3, 'C', 'monitor:data:list', 'monitor/data/index', 1, NOW(), NOW()),
-(34, 3, '服务监控', 4, 'C', 'monitor:server:list', 'monitor/server/index', 1, NOW(), NOW()),
-(35, 3, '缓存监控', 5, 'C', 'monitor:cache:list', 'monitor/cache/index', 1, NOW(), NOW());
-
--- 在线用户按钮权限
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(311, 31, '在线查询', 1, 'F', 'monitor:online:query', NULL, 1, NOW(), NOW()),
-(312, 31, '在线强退', 2, 'F', 'monitor:online:forceLogout', NULL, 1, NOW(), NOW());
-
--- 定时任务按钮权限
-INSERT INTO sys_menu (id, parent_id, menu_name, order_num, menu_type, perms, component, status, created_at, updated_at) VALUES
-(321, 32, '任务查询', 1, 'F', 'monitor:job:query', NULL, 1, NOW(), NOW()),
-(322, 32, '任务新增', 2, 'F', 'monitor:job:add', NULL, 1, NOW(), NOW()),
-(323, 32, '任务修改', 3, 'F', 'monitor:job:edit', NULL, 1, NOW(), NOW()),
-(324, 32, '任务删除', 4, 'F', 'monitor:job:remove', NULL, 1, NOW(), NOW()),
-(325, 32, '任务执行', 5, 'F', 'monitor:job:execute', NULL, 1, NOW(), NOW());
\ No newline at end of file
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V7__Add_audit_log_table.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V7__Add_audit_log_table.sql
deleted file mode 100644
index 59ab06d..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V7__Add_audit_log_table.sql
+++ /dev/null
@@ -1,40 +0,0 @@
--- Novalon管理系统审计日志表
--- 版本: V7
--- 描述: 创建审计日志表,记录数据变更前后的完整对比
-CREATE TABLE IF NOT EXISTS audit_log (
- id BIGSERIAL PRIMARY KEY,
- entity_type VARCHAR(100) NOT NULL,
- entity_id BIGINT,
- operation_type VARCHAR(20) NOT NULL,
- operator VARCHAR(100),
- operation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- before_data JSONB,
- after_data JSONB,
- changed_fields TEXT [],
- ip_address VARCHAR(50),
- user_agent TEXT,
- description TEXT,
- create_by VARCHAR(50),
- update_by VARCHAR(50),
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- deleted_at TIMESTAMP
-);
-CREATE INDEX idx_audit_log_entity_type ON audit_log(entity_type);
-CREATE INDEX idx_audit_log_entity_id ON audit_log(entity_id);
-CREATE INDEX idx_audit_log_operation_type ON audit_log(operation_type);
-CREATE INDEX idx_audit_log_operator ON audit_log(operator);
-CREATE INDEX idx_audit_log_operation_time ON audit_log(operation_time);
-CREATE INDEX idx_audit_log_entity ON audit_log(entity_type, entity_id);
-COMMENT ON TABLE audit_log IS '审计日志表';
-COMMENT ON COLUMN audit_log.id IS '主键ID';
-COMMENT ON COLUMN audit_log.entity_type IS '实体类型(如User, Role等)';
-COMMENT ON COLUMN audit_log.entity_id IS '实体ID';
-COMMENT ON COLUMN audit_log.operation_type IS '操作类型(CREATE, UPDATE, DELETE)';
-COMMENT ON COLUMN audit_log.operator IS '操作人';
-COMMENT ON COLUMN audit_log.operation_time IS '操作时间';
-COMMENT ON COLUMN audit_log.before_data IS '变更前数据(JSON格式)';
-COMMENT ON COLUMN audit_log.after_data IS '变更后数据(JSON格式)';
-COMMENT ON COLUMN audit_log.changed_fields IS '变更字段列表';
-COMMENT ON COLUMN audit_log.ip_address IS 'IP地址';COMMENT ON COLUMN audit_log.description IS '操作描述';
-COMMENT ON COLUMN audit_log.created_at IS '记录创建时间';
diff --git a/gym-manage-api/manage-db/src/main/resources/db/migration/V8__Create_audit_log_archive_table.sql b/gym-manage-api/manage-db/src/main/resources/db/migration/V8__Create_audit_log_archive_table.sql
deleted file mode 100644
index 1ed2236..0000000
--- a/gym-manage-api/manage-db/src/main/resources/db/migration/V8__Create_audit_log_archive_table.sql
+++ /dev/null
@@ -1,43 +0,0 @@
--- Novalon管理系统审计日志归档表
--- 版本: V8
--- 描述: 创建审计日志归档表,用于存储历史审计日志
-
-CREATE TABLE IF NOT EXISTS audit_log_archive (
- id BIGSERIAL PRIMARY KEY,
- entity_type VARCHAR(100) NOT NULL,
- entity_id BIGINT,
- operation_type VARCHAR(20) NOT NULL,
- operator VARCHAR(100),
- operation_time TIMESTAMP,
- before_data JSONB,
- after_data JSONB,
- changed_fields TEXT[],
- ip_address VARCHAR(50),
- user_agent TEXT,
- description TEXT,
- created_at TIMESTAMP,
- archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE INDEX idx_audit_log_archive_entity_type ON audit_log_archive(entity_type);
-CREATE INDEX idx_audit_log_archive_entity_id ON audit_log_archive(entity_id);
-CREATE INDEX idx_audit_log_archive_operation_type ON audit_log_archive(operation_type);
-CREATE INDEX idx_audit_log_archive_operator ON audit_log_archive(operator);
-CREATE INDEX idx_audit_log_archive_operation_time ON audit_log_archive(operation_time);
-CREATE INDEX idx_audit_log_archive_archived_at ON audit_log_archive(archived_at);
-
-COMMENT ON TABLE audit_log_archive IS '审计日志归档表';
-COMMENT ON COLUMN audit_log_archive.id IS '主键ID';
-COMMENT ON COLUMN audit_log_archive.entity_type IS '实体类型(如User, Role等)';
-COMMENT ON COLUMN audit_log_archive.entity_id IS '实体ID';
-COMMENT ON COLUMN audit_log_archive.operation_type IS '操作类型(CREATE, UPDATE, DELETE)';
-COMMENT ON COLUMN audit_log_archive.operator IS '操作人';
-COMMENT ON COLUMN audit_log_archive.operation_time IS '操作时间';
-COMMENT ON COLUMN audit_log_archive.before_data IS '变更前数据(JSON格式)';
-COMMENT ON COLUMN audit_log_archive.after_data IS '变更后数据(JSON格式)';
-COMMENT ON COLUMN audit_log_archive.changed_fields IS '变更字段列表';
-COMMENT ON COLUMN audit_log_archive.ip_address IS 'IP地址';
-COMMENT ON COLUMN audit_log_archive.user_agent IS '用户代理';
-COMMENT ON COLUMN audit_log_archive.description IS '操作描述';
-COMMENT ON COLUMN audit_log_archive.created_at IS '记录创建时间';
-COMMENT ON COLUMN audit_log_archive.archived_at IS '归档时间';