-- ----------------------------
|
-- 协议配置:协议版本表
|
--
|
-- 目标库 hugray(**系统库**,与 sys_menu/sys_notice 同库)——协议属系统级配置,
|
-- 不落会员库 hugray-account,后端也放在 ruoyi-system 而不是 ruoyi-user。
|
-- 表是新建,用 CREATE TABLE IF NOT EXISTS,脚本可重复执行。
|
-- 演示数据另见 hugray_agreement_demo_20261013.sql。
|
--
|
-- 【追加式表:没有 status、没有 del_flag、没有 update_*】
|
-- 一行 = 一个已发布的版本。发布新版本是 INSERT 新行,旧版本原样保留、**不被修改**,
|
-- 因此列表里的「当前版本 / 历史版本」是查出来时按「同类型 max(agreement_id)」实时算的,
|
-- 不落库、也就不需要任何 UPDATE 逻辑去维护它(后端零事务)。
|
-- 同一类型可以有多个「历史版本」,且这些历史行永远处在终态——这是本表能免掉
|
-- status/del_flag/update_by/update_time 的原因,改表前先想清楚这一点。
|
-- 与 hugray 库的原生表一致(sys_notice/sys_config 都不带 del_flag),也与本库
|
-- 「只保留删不掉的审计痕迹」的口径一致。
|
--
|
-- 【协议编号】
|
-- 就是主键自增。起始 313124100 是为了让编号落在原型那一行(313124142)的量级上,
|
-- 业务上无含义,也与会员/档案的 33140000、33141000 段错开,避免两个库的自增号看起来是同一套。
|
--
|
-- 【枚举取值】沿用本仓库约定,直接存值、不建 sys_dict_type,前端维护同名常量
|
-- (见 hugray-admin/src/utils/agreement.js):
|
-- 协议类型 agreement_type:1用户协议 2隐私权限 3供货协议 4购买协议
|
-- ----------------------------
|
|
USE `hugray`;
|
|
-- ---------- 1. sys_agreement:协议版本 ----------
|
-- content 用 longtext 而不是 sys_notice.notice_content 那种 longblob:
|
-- 新表没有历史包袱,longtext 读回 String 不需要在 mapper 里写 cast(... as char)。
|
--
|
-- 不加 UNIQUE(agreement_type, version):
|
-- 重复版本号由服务层拦并给出「该类型下已存在版本号 X」的提示,
|
-- 交给数据库只会得到一个 500 与一句 SQLIntegrityConstraintViolationException。
|
--
|
-- idx_type_id 同时服务两个查询:按类型筛选,以及取该类型最大 id(当前版本判定)。
|
CREATE TABLE IF NOT EXISTS `sys_agreement` (
|
`agreement_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '协议编号',
|
`agreement_type` char(1) NOT NULL COMMENT '协议类型(1用户协议 2隐私权限 3供货协议 4购买协议)',
|
`version` varchar(32) NOT NULL COMMENT '版本号(原样存文本,如 1.1.01,不做格式校验)',
|
`content` longtext DEFAULT NULL COMMENT '协议内容(富文本 HTML)',
|
`create_by` varchar(64) DEFAULT '' COMMENT '发布人',
|
`create_time` datetime DEFAULT NULL COMMENT '发布时间(列表的「更新时间/更新人」取的就是它与 create_by,见 mapper 注释)',
|
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
PRIMARY KEY (`agreement_id`),
|
KEY `idx_type_id` (`agreement_type`, `agreement_id`)
|
) ENGINE=InnoDB AUTO_INCREMENT=313124100 DEFAULT CHARSET=utf8mb4 COMMENT='协议版本表(追加式:一行一个已发布版本,不修改不删除)';
|
|
-- ---------- 2. 结果核对 ----------
|
SELECT `table_name`, `engine`, `table_comment`, `auto_increment`
|
FROM `information_schema`.`tables`
|
WHERE `table_schema` = 'hugray' AND `table_name` = 'sys_agreement';
|
|
SELECT `column_name`, `column_type`, `is_nullable`, `column_key`, `column_default`, `column_comment`
|
FROM `information_schema`.`columns`
|
WHERE `table_schema` = 'hugray' AND `table_name` = 'sys_agreement'
|
ORDER BY `ordinal_position`;
|
|
SELECT `index_name`, `seq_in_index`, `column_name`, `non_unique`
|
FROM `information_schema`.`statistics`
|
WHERE `table_schema` = 'hugray' AND `table_name` = 'sys_agreement'
|
ORDER BY `index_name`, `seq_in_index`;
|