1. 用户管理:新增启用(user/enable)/禁用(user/disable)/注销(user/admin_cancel)接口,
平台超管可操作全部用户,机构管理员限本机构;注销带分布式锁、禁自己/超管守卫
2. 禁用/注销立即踢下线:Redis黑名单(user:disabled:{uid}) + JWT过滤器拦截,
TTL与token有效期一致
3. 系统管理员查看各机构账号:GET user/page/org_account(机构/账号/手机号等筛选)
4. 按手机号查上传/发送/接收记录:GET user_file/record/page_by_phone,
发送/接收方向按部署侧 file.transfer.location 自动映射
5. 机构上传配置:新表 x_upload_config + upload_config/info|modify|check 接口,
上传总开关/后缀白名单/单文件大小限制,网盘落库时强制校验
6. 加固:UserInfoDTO.setPassword 缺省密码未配置时不再抛 rawPassword cannot be null
7. 新增 x_upload_config 建表脚本(upgrade-20260915-release.sql 为上线版)、
生产部署说明、前端接口文档×2、运维脚本 sfile-ctl.sh、AGENTS.md
91 lines
4.9 KiB
SQL
91 lines
4.9 KiB
SQL
-- =====================================================================
|
||
-- s-file 上线数据库脚本(2026-09-15 版本)
|
||
-- 适用场景:已有生产库升级(老版本 → 当前版本)
|
||
--
|
||
-- 本次版本(用户启停/注销、机构账号查询、手机号查记录、机构上传配置)
|
||
-- 相对老版本的数据库变更只有一项:
|
||
-- 新增表 x_upload_config(机构上传配置)
|
||
-- 其余功能(启停/注销/查询)全部复用已有表字段,无需任何变更。
|
||
--
|
||
-- 【执行说明】
|
||
-- * 生产主力库为达梦 DM8(MySQL 兼容模式)→ 只执行【第一部分】
|
||
-- * 若目标库是 PostgreSQL → 只执行【第二部分】
|
||
-- * 执行前建议备份;执行后核对【第三部分】的验证 SQL
|
||
-- * 可重复执行(幂等):表已存在时再执行会报"已存在"错误,属正常,
|
||
-- 说明该脚本已执行过,无需处理
|
||
-- =====================================================================
|
||
|
||
|
||
-- =====================================================================
|
||
-- 第一部分:达梦 DM8 / MySQL
|
||
-- =====================================================================
|
||
|
||
CREATE TABLE x_upload_config (
|
||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
org_id BIGINT DEFAULT NULL COMMENT '机构id',
|
||
upload_enabled BIT(1) DEFAULT b'1' COMMENT '是否允许上传',
|
||
allow_all_type BIT(1) DEFAULT b'1' COMMENT '是否允许全部类型(false时按allowed_suffixes白名单校验)',
|
||
allowed_suffixes VARCHAR(1024) DEFAULT NULL COMMENT '允许的文件后缀(逗号分隔,小写),allow_all_type=false时生效',
|
||
max_file_size BIGINT DEFAULT NULL COMMENT '单文件大小上限(MB),空或0不限制',
|
||
deleted BIT(1) DEFAULT b'0' COMMENT '是否删除',
|
||
create_by BIGINT DEFAULT NULL COMMENT '创建人',
|
||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
update_by BIGINT DEFAULT NULL COMMENT '修改人',
|
||
update_time DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
|
||
proxy_by BIGINT DEFAULT NULL COMMENT '代理人',
|
||
PRIMARY KEY (id) USING BTREE,
|
||
UNIQUE KEY uk_org_id (org_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机构上传配置';
|
||
|
||
-- 说明:不需要初始化数据。
|
||
-- 未配置的机构 = 默认策略(允许上传全部类型、不限大小),
|
||
-- 由各机构管理员在管理后台"上传配置"页面自行配置后落库。
|
||
|
||
|
||
-- =====================================================================
|
||
-- 第二部分:PostgreSQL
|
||
-- =====================================================================
|
||
|
||
-- CREATE TABLE x_upload_config (
|
||
-- id BIGSERIAL PRIMARY KEY,
|
||
-- org_id BIGINT DEFAULT NULL,
|
||
-- upload_enabled BOOLEAN DEFAULT TRUE,
|
||
-- allow_all_type BOOLEAN DEFAULT TRUE,
|
||
-- allowed_suffixes VARCHAR(1024) DEFAULT NULL,
|
||
-- max_file_size BIGINT DEFAULT NULL,
|
||
-- deleted BOOLEAN DEFAULT FALSE,
|
||
-- create_by BIGINT DEFAULT NULL,
|
||
-- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
-- update_by BIGINT DEFAULT NULL,
|
||
-- update_time TIMESTAMP DEFAULT NULL,
|
||
-- proxy_by BIGINT DEFAULT NULL,
|
||
-- CONSTRAINT uk_upload_config_org_id UNIQUE (org_id)
|
||
-- );
|
||
-- COMMENT ON TABLE x_upload_config IS '机构上传配置';
|
||
-- COMMENT ON COLUMN x_upload_config.id IS '主键ID';
|
||
-- COMMENT ON COLUMN x_upload_config.org_id IS '机构id';
|
||
-- COMMENT ON COLUMN x_upload_config.upload_enabled IS '是否允许上传';
|
||
-- COMMENT ON COLUMN x_upload_config.allow_all_type IS '是否允许全部类型(false时按allowed_suffixes白名单校验)';
|
||
-- COMMENT ON COLUMN x_upload_config.allowed_suffixes IS '允许的文件后缀(逗号分隔,小写),allow_all_type=false时生效';
|
||
-- COMMENT ON COLUMN x_upload_config.max_file_size IS '单文件大小上限(MB),空或0不限制';
|
||
-- COMMENT ON COLUMN x_upload_config.deleted IS '是否删除';
|
||
-- COMMENT ON COLUMN x_upload_config.create_by IS '创建人';
|
||
-- COMMENT ON COLUMN x_upload_config.create_time IS '创建时间';
|
||
-- COMMENT ON COLUMN x_upload_config.update_by IS '修改人';
|
||
-- COMMENT ON COLUMN x_upload_config.update_time IS '修改时间';
|
||
-- COMMENT ON COLUMN x_upload_config.proxy_by IS '代理人';
|
||
|
||
|
||
-- =====================================================================
|
||
-- 第三部分:执行后验证(达梦/MySQL 语法)
|
||
-- =====================================================================
|
||
|
||
-- 1) 表存在且为空(0 行正常)
|
||
-- SELECT COUNT(*) FROM x_upload_config;
|
||
|
||
-- 2) 唯一约束存在(应返回 uk_org_id)
|
||
-- SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'X_UPLOAD_CONFIG';
|
||
|
||
-- 3) (可选)回滚脚本 —— 如需回滚上线:
|
||
-- DROP TABLE x_upload_config;
|