系统配置修改

This commit is contained in:
2025-12-09 18:07:44 +08:00
parent e242ff172c
commit b59babed0a
33 changed files with 1177 additions and 128 deletions

View File

@@ -2,48 +2,77 @@ CREATE SCHEMA IF NOT EXISTS file;
DROP TABLE IF EXISTS file.tb_sys_file CASCADE;
CREATE TABLE file.tb_sys_file (
optsn VARCHAR(50) NOT NULL, -- 流水号
file_id VARCHAR(50) NOT NULL, -- 文件ID
name VARCHAR(255) NOT NULL, -- 文件名
path VARCHAR(255) NOT NULL, -- 文件路径
size BIGINT NOT NULL, -- 文件大小
type VARCHAR(50) NOT NULL, -- 文件类型
storage_type VARCHAR(50) NOT NULL, -- 存储类型
mime_type VARCHAR(255) NOT NULL, -- 文件MIME类型
url VARCHAR(255) NOT NULL, -- 文件URL
status VARCHAR(50) NOT NULL, -- 文件状态
service_type VARCHAR(50), -- 服务类型bidding/customer_service/internal等
dept_path VARCHAR(255) NOT NULL, -- 当前部门路径
creator VARCHAR(50) DEFAULT NULL, -- 创建者
updater VARCHAR(50) DEFAULT NULL, -- 更新者
-- BaseDTO 继承字段
optsn VARCHAR(50) NOT NULL, -- 操作流水号
creator VARCHAR(50) DEFAULT NULL, -- 创建人
updater VARCHAR(50) DEFAULT NULL, -- 更新人
dept_path VARCHAR(255) DEFAULT NULL, -- 部门路径
remark TEXT DEFAULT NULL, -- 备注
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
deleted INTEGER NOT NULL DEFAULT 0, -- 是否删除0-未删除1-已删除)
-- TbSysFileDTO 特有字段
file_id VARCHAR(50) NOT NULL, -- 文件ID (主键)
name VARCHAR(255) NOT NULL, -- 文件名
path VARCHAR(500) NOT NULL, -- 文件路径
size BIGINT NOT NULL, -- 文件大小(字节)
type VARCHAR(50) DEFAULT NULL, -- 文件类型
storage_type VARCHAR(50) DEFAULT NULL, -- 存储类型
mime_type VARCHAR(255) DEFAULT NULL, -- MIME 类型
url VARCHAR(500) DEFAULT NULL, -- 文件访问 URL
status VARCHAR(50) DEFAULT NULL, -- 文件状态
module VARCHAR(100) DEFAULT NULL, -- 所属模块
business_id VARCHAR(50) DEFAULT NULL, -- 业务ID
uploader VARCHAR(50) DEFAULT NULL, -- 上传者用户ID
object_name VARCHAR(500) DEFAULT NULL, -- MinIO对象名称
bucket_name VARCHAR(100) DEFAULT NULL, -- MinIO存储桶名称
md5_hash VARCHAR(32) DEFAULT NULL, -- 文件MD5值
extension VARCHAR(20) DEFAULT NULL, -- 文件扩展名
PRIMARY KEY (file_id),
UNIQUE (optsn)
);
CREATE INDEX idx_file_service ON file.tb_sys_file(service_type) WHERE deleted = false;
COMMENT ON TABLE file.tb_sys_file IS '文件表';
COMMENT ON COLUMN file.tb_sys_file.service_type IS '服务类型(用于服务间数据隔离)';
COMMENT ON COLUMN file.tb_sys_file.optsn IS '流水号';
COMMENT ON COLUMN file.tb_sys_file.file_id IS '文件ID';
COMMENT ON COLUMN file.tb_sys_file.name IS '文件名';
COMMENT ON COLUMN file.tb_sys_file.path IS '文件路径';
COMMENT ON COLUMN file.tb_sys_file.size IS '文件大小';
COMMENT ON COLUMN file.tb_sys_file.type IS '文件类型';
COMMENT ON COLUMN file.tb_sys_file.storage_type IS '存储类型';
COMMENT ON COLUMN file.tb_sys_file.mime_type IS '文件MIME类型';
COMMENT ON COLUMN file.tb_sys_file.url IS '文件URL';
COMMENT ON COLUMN file.tb_sys_file.status IS '文件状态';
COMMENT ON COLUMN file.tb_sys_file.dept_path IS '当前部门路径';
COMMENT ON COLUMN file.tb_sys_file.creator IS '创建者';
COMMENT ON COLUMN file.tb_sys_file.updater IS '更新者';
COMMENT ON TABLE file.tb_sys_file IS '系统文件表';
-- BaseDTO 继承字段注释
COMMENT ON COLUMN file.tb_sys_file.optsn IS '操作流水号';
COMMENT ON COLUMN file.tb_sys_file.creator IS '创建人';
COMMENT ON COLUMN file.tb_sys_file.updater IS '更新人';
COMMENT ON COLUMN file.tb_sys_file.dept_path IS '部门路径';
COMMENT ON COLUMN file.tb_sys_file.remark IS '备注';
COMMENT ON COLUMN file.tb_sys_file.create_time IS '创建时间';
COMMENT ON COLUMN file.tb_sys_file.update_time IS '更新时间';
COMMENT ON COLUMN file.tb_sys_file.delete_time IS '删除时间';
COMMENT ON COLUMN file.tb_sys_file.deleted IS '是否删除';
COMMENT ON COLUMN file.tb_sys_file.deleted IS '是否删除0-未删除1-已删除)';
-- TbSysFileDTO 特有字段注释
COMMENT ON COLUMN file.tb_sys_file.file_id IS '文件ID (主键)';
COMMENT ON COLUMN file.tb_sys_file.name IS '文件名';
COMMENT ON COLUMN file.tb_sys_file.path IS '文件路径';
COMMENT ON COLUMN file.tb_sys_file.size IS '文件大小(字节)';
COMMENT ON COLUMN file.tb_sys_file.type IS '文件类型';
COMMENT ON COLUMN file.tb_sys_file.storage_type IS '存储类型';
COMMENT ON COLUMN file.tb_sys_file.mime_type IS 'MIME 类型';
COMMENT ON COLUMN file.tb_sys_file.url IS '文件访问 URL';
COMMENT ON COLUMN file.tb_sys_file.status IS '文件状态';
COMMENT ON COLUMN file.tb_sys_file.module IS '所属模块';
COMMENT ON COLUMN file.tb_sys_file.business_id IS '业务ID';
COMMENT ON COLUMN file.tb_sys_file.uploader IS '上传者用户ID';
COMMENT ON COLUMN file.tb_sys_file.object_name IS 'MinIO对象名称';
COMMENT ON COLUMN file.tb_sys_file.bucket_name IS 'MinIO存储桶名称';
COMMENT ON COLUMN file.tb_sys_file.md5_hash IS '文件MD5值';
COMMENT ON COLUMN file.tb_sys_file.extension IS '文件扩展名';
-- 文件表索引
CREATE INDEX idx_file_module_business ON file.tb_sys_file(module, business_id) WHERE deleted = 0;
CREATE INDEX idx_file_uploader ON file.tb_sys_file(uploader) WHERE deleted = 0;
CREATE INDEX idx_file_bucket ON file.tb_sys_file(bucket_name) WHERE deleted = 0;
CREATE INDEX idx_file_status ON file.tb_sys_file(status) WHERE deleted = 0;
CREATE INDEX idx_file_create_time ON file.tb_sys_file(create_time) WHERE deleted = 0;
CREATE INDEX idx_file_md5 ON file.tb_sys_file(md5_hash) WHERE deleted = 0;
-- =============================
-- 文件关联表
@@ -85,6 +114,7 @@ COMMENT ON COLUMN file.tb_file_relation.update_time IS '更新时间';
COMMENT ON COLUMN file.tb_file_relation.delete_time IS '删除时间';
COMMENT ON COLUMN file.tb_file_relation.deleted IS '是否删除';
-- 文件关联表索引
CREATE INDEX idx_file_relation_object ON file.tb_file_relation(object_type, object_id) WHERE deleted = false;
CREATE INDEX idx_file_relation_file ON file.tb_file_relation(file_id) WHERE deleted = false;
CREATE INDEX idx_file_relation_service ON file.tb_file_relation(service_type) WHERE deleted = false;

View File

@@ -24,9 +24,25 @@ INSERT INTO config.tb_sys_config (
-- 存储与上传
('CFG-0301', 'cfg_upload_max', 'upload.maxSizeMB', '最大上传大小', '50', 'INTEGER', 'input', '单文件最大上传(MB)', NULL, NULL, 'storage', 'mod_file', 10, 0, '前后端需一致校验', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0302', 'cfg_storage_backend', 'storage.backend', '存储后端', 'local', 'String', 'select', '存储后端类型', NULL, '["local", "minio", "s3"]'::json, 'storage', 'mod_file', 20, 0, '本地/MinIO/S3等', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0302', 'cfg_storage_backend', 'storage.backend', '存储后端', 'minio', 'String', 'select', '存储后端类型', NULL, '["local", "minio", "s3"]'::json, 'storage', 'mod_file', 20, 0, '本地/MinIO/S3等当前默认MinIO', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0303', 'cfg_storage_base', 'storage.basePath', '存储路径', '/data/urban-lifeline', 'String', 'input', '本地存储基路径', NULL, NULL, 'storage', 'mod_file', 30, 0, '当 backend=local', 'system', NULL, NULL, now(), NULL, NULL, false),
-- MinIO 对象存储配置
('CFG-0310', 'cfg_minio_endpoint', 'minio.endpoint', 'MinIO服务端点', 'http://localhost:9000', 'String', 'input', 'MinIO服务器地址', NULL, NULL, 'storage', 'mod_file', 40, 0, 'MinIO API服务地址如 http://localhost:9000', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0311', 'cfg_minio_accesskey', 'minio.accessKey', 'MinIO访问密钥', 'minioadmin', 'String', 'input', 'MinIO AccessKey', NULL, NULL, 'storage', 'mod_file', 50, 0, 'MinIO认证的AccessKey', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0312', 'cfg_minio_secretkey', 'minio.secretKey', 'MinIO私钥', 'minioadmin123', 'String', 'password', 'MinIO SecretKey', NULL, NULL, 'storage', 'mod_file', 60, 0, 'MinIO认证的SecretKey', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0313', 'cfg_minio_bucket', 'minio.bucketName', 'MinIO存储桶', 'urban-lifeline', 'String', 'input', 'MinIO默认存储桶名称', NULL, NULL, 'storage', 'mod_file', 70, 0, '用于存储文件的默认bucket', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0314', 'cfg_minio_publicurl', 'minio.publicUrl', 'MinIO公网地址', 'http://localhost:9000', 'String', 'input', 'MinIO公网访问地址', NULL, NULL, 'storage', 'mod_file', 80, 0, '用于生成文件访问URL可与endpoint不同', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0315', 'cfg_minio_ssl', 'minio.ssl.enabled', '启用SSL', 'false', 'BOOLEAN', 'switch', '是否启用SSL连接', NULL, NULL, 'storage', 'mod_file', 90, 0, 'HTTPS连接MinIO服务', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0316', 'cfg_minio_region', 'minio.region', 'MinIO区域', 'us-east-1', 'String', 'input', 'MinIO存储区域', NULL, NULL, 'storage', 'mod_file', 100, 0, 'AWS S3兼容的区域配置', 'system', NULL, NULL, now(), NULL, NULL, false),
-- 文件管理配置
('CFG-0320', 'cfg_file_allowed_exts','file.allowedExtensions', '允许的文件扩展名', 'jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip,rar', 'String', 'textarea', '允许上传的文件扩展名', NULL, NULL, 'storage', 'mod_file', 110, 0, '逗号分隔,如 jpg,png,pdf', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0321', 'cfg_file_forbidden_exts','file.forbiddenExtensions','禁止的文件扩展名', 'exe,bat,sh,php,jsp,asp', 'String', 'textarea', '禁止上传的文件扩展名', NULL, NULL, 'storage', 'mod_file', 120, 0, '逗号分隔,安全考虑', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0322', 'cfg_file_cleanup_days', 'file.tempCleanupDays', '临时文件清理天数', '7', 'INTEGER', 'input', '临时文件自动清理天数', NULL, NULL, 'storage', 'mod_file', 130, 0, '超过天数的临时文件将被清理', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0323', 'cfg_file_duplicate_check','file.duplicateCheck.enabled','启用文件去重', 'true', 'BOOLEAN', 'switch', '是否启用MD5去重检查', NULL, NULL, 'storage', 'mod_file', 140, 0, '基于MD5值检查重复文件', 'system', NULL, NULL, now(), NULL, NULL, false),
('CFG-0324', 'cfg_file_virus_scan', 'file.virusScan.enabled', '启用病毒扫描', 'false', 'BOOLEAN', 'switch', '是否启用文件病毒扫描', NULL, NULL, 'storage', 'mod_file', 150, 0, '需要集成防病毒引擎', 'system', NULL, NULL, now(), NULL, NULL, false),
-- 通知(邮件/SMS
-- 邮件配置
('CFG-0401', 'cfg_mail_host', 'email.host', 'SMTP服务器地址', 'smtp.qq.com', 'String', 'input', 'SMTP服务器地址', NULL, NULL, 'notify', 'mod_message', 10, 1, '邮件发送服务器地址', 'system', NULL, NULL, now(), NULL, NULL, false),

View File

@@ -60,3 +60,38 @@ services:
# Linux 需要添加 extra_hosts 来访问主机服务
extra_hosts:
- "host.docker.internal:host-gateway"
minio:
image: minio/minio:latest
container_name: urban-lifeline-minio
restart: unless-stopped
networks:
- urban-lifeline
ports:
- "9000:9000" # MinIO API 端口
- "9001:9001" # MinIO Console (Web UI) 端口
environment:
# 管理员账户配置
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin123
# Console 地址配置
MINIO_CONSOLE_ADDRESS: ":9001"
MINIO_ADDRESS: ":9000"
# 时区设置
TZ: Asia/Shanghai
volumes:
# 数据持久化到主机目录
- ../../.data/docker/minio/data:/data
- ../../.data/docker/minio/config:/root/.minio
command: server /data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
start_period: 30s