|
|
@@ -0,0 +1,149 @@
|
|
|
+# 帮助文章分类枚举表设计
|
|
|
+
|
|
|
+## 背景
|
|
|
+
|
|
|
+当前 `SysHelpClassification` 是 Java 硬编码枚举,新增分类需要改代码重新部署。
|
|
|
+改为数据库字典表后,管理后台直接维护分类,各业务模块通过 `category_code` 查询对应内容,无需改代码。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 一、表结构设计
|
|
|
+
|
|
|
+### 1. 分类主表 `sys_help_category`
|
|
|
+
|
|
|
+存储所有分类/协议类型,管理后台从此表读取下拉选项。
|
|
|
+
|
|
|
+```sql
|
|
|
+CREATE TABLE `sys_help_category` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `code` VARCHAR(50) NOT NULL COMMENT '分类编码(英文唯一标识,业务方使用此字段查询)',
|
|
|
+ `name_zh` VARCHAR(100) NOT NULL COMMENT '中文名称',
|
|
|
+ `name_en` VARCHAR(100) NOT NULL COMMENT '英文名称',
|
|
|
+ `scene` VARCHAR(50) NOT NULL DEFAULT 'HELP' COMMENT '适用场景: HELP=帮助中心, PROTOCOL=协议展示, NOTICE=公告',
|
|
|
+ `sort` INT NOT NULL DEFAULT 0 COMMENT '排序值,越大越靠前',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 1=启用, 0=禁用',
|
|
|
+ `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注(说明该分类的用途)',
|
|
|
+ `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_code` (`code`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='帮助文章分类枚举表';
|
|
|
+```
|
|
|
+
|
|
|
+### 2. `sys_help` 表调整
|
|
|
+
|
|
|
+将原来的硬编码枚举字段替换为分类 code 外键。
|
|
|
+
|
|
|
+```sql
|
|
|
+-- 新增 category_code 字段,替代原 sys_help_classification 枚举字段
|
|
|
+ALTER TABLE `sys_help`
|
|
|
+ ADD COLUMN `category_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '分类编码,关联 sys_help_category.code' AFTER `title`,
|
|
|
+ ADD INDEX `idx_category_code` (`category_code`);
|
|
|
+```
|
|
|
+
|
|
|
+> **迁移说明**:上线时先写入初始数据(见下方),再执行字段迁移,将旧枚举 ordinal 映射到对应 code。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 二、初始数据
|
|
|
+
|
|
|
+对应现有 `SysHelpClassification` 枚举,全量初始化:
|
|
|
+
|
|
|
+```sql
|
|
|
+INSERT INTO `sys_help_category` (`code`, `name_zh`, `name_en`, `scene`, `sort`, `status`, `remark`) VALUES
|
|
|
+('HELP', '新手入门', 'Getting Started', 'HELP', 100, 1, '注册、下载、基础操作等新手引导'),
|
|
|
+('FAQ', '常见问题', 'FAQ', 'HELP', 90, 1, '用户高频问题汇总'),
|
|
|
+('EXCHANGE', '交易指南', 'Trading Guide', 'HELP', 80, 1, '现货/合约交易操作说明'),
|
|
|
+('COININFO', '币种资料', 'Coin Info', 'HELP', 70, 1, '各币种项目介绍'),
|
|
|
+('ANALYSIS', '行情技术', 'Market Analysis', 'HELP', 60, 1, '技术分析、行情解读'),
|
|
|
+('FOLLOW_PROTOCOL', '交易员条款', 'Trader Agreement', 'PROTOCOL', 55, 1, '带单交易员服务协议'),
|
|
|
+('PRIVACY', '隐私条款', 'Privacy Policy', 'PROTOCOL', 50, 1, '用户隐私政策'),
|
|
|
+('DISCLAIMER', '免责声明', 'Disclaimer', 'PROTOCOL', 45, 1, '平台免责声明'),
|
|
|
+('PROTOCOL', '条款协议', 'Terms of Service', 'PROTOCOL', 40, 1, '用户服务协议/利用规约'),
|
|
|
+('QR_CODE', 'APP二维码', 'APP QR Code', 'HELP', 10, 1, '应用下载二维码展示页'),
|
|
|
+('OTHER', '其他', 'Other', 'HELP', 0, 1, '未归类内容');
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 三、字段说明
|
|
|
+
|
|
|
+### `sys_help_category` 字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 说明 |
|
|
|
+|-------------|--------------|------|-------------------------------------------------------------------|
|
|
|
+| id | bigint | 是 | 主键,自增 |
|
|
|
+| code | varchar(50) | 是 | 唯一编码,**业务方通过此字段查询**,如 `PROTOCOL`、`PRIVACY` |
|
|
|
+| name_zh | varchar(100) | 是 | 中文名称,管理后台下拉显示 |
|
|
|
+| name_en | varchar(100) | 是 | 英文名称,前端多语言使用 |
|
|
|
+| scene | varchar(50) | 是 | 适用场景,用于前端分区展示,见场景枚举说明 |
|
|
|
+| sort | int | 是 | 排序值,越大越靠前,默认 0 |
|
|
|
+| status | tinyint | 是 | 1=启用,0=禁用;禁用后该分类不再出现在下拉中 |
|
|
|
+| remark | varchar(255) | 否 | 备注,说明该分类的业务用途 |
|
|
|
+| create_time | datetime | 是 | 创建时间 |
|
|
|
+| update_time | datetime | 是 | 最后修改时间 |
|
|
|
+
|
|
|
+### `scene` 场景枚举值
|
|
|
+
|
|
|
+| 值 | 说明 |
|
|
|
+|----------|----------------------------------------------|
|
|
|
+| HELP | 帮助中心展示(新手指南、FAQ、交易指南等) |
|
|
|
+| PROTOCOL | 协议页面展示(服务条款、隐私政策、免责等) |
|
|
|
+| NOTICE | 公告/通知(预留,后续扩展) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 四、业务查询示例
|
|
|
+
|
|
|
+### 查询帮助中心所有启用分类(供下拉选择)
|
|
|
+```sql
|
|
|
+SELECT id, code, name_zh, name_en
|
|
|
+FROM sys_help_category
|
|
|
+WHERE status = 1 AND scene = 'HELP'
|
|
|
+ORDER BY sort DESC;
|
|
|
+```
|
|
|
+
|
|
|
+### 查询指定协议类型的文章(如服务条款,支持多语言)
|
|
|
+```sql
|
|
|
+SELECT h.id, h.title, h.content, h.lang
|
|
|
+FROM sys_help h
|
|
|
+WHERE h.category_code = 'PROTOCOL'
|
|
|
+ AND h.status = 1 -- CommonStatus.NORMAL
|
|
|
+ AND h.lang = 'EN'
|
|
|
+ORDER BY h.is_top ASC, h.sort DESC;
|
|
|
+```
|
|
|
+
|
|
|
+### 查询协议页所有分类及其文章(一次性加载)
|
|
|
+```sql
|
|
|
+SELECT c.code, c.name_zh, h.title, h.content, h.lang
|
|
|
+FROM sys_help_category c
|
|
|
+LEFT JOIN sys_help h ON h.category_code = c.code AND h.status = 1
|
|
|
+WHERE c.scene = 'PROTOCOL' AND c.status = 1
|
|
|
+ORDER BY c.sort DESC, h.sort DESC;
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五、后续扩展方式
|
|
|
+
|
|
|
+新增分类时,**只需在管理后台插入一行**,无需改代码:
|
|
|
+
|
|
|
+```sql
|
|
|
+-- 示例:新增"新手指南"分类(APP端新手流程)
|
|
|
+INSERT INTO `sys_help_category` (`code`, `name_zh`, `name_en`, `scene`, `sort`, `remark`)
|
|
|
+VALUES ('BEGINNER_GUIDE', '新手指南', 'Beginner Guide', 'HELP', 95, 'APP端新手引导流程专用');
|
|
|
+```
|
|
|
+
|
|
|
+前端/API 按 `code` 字段拉取对应分类的文章,`code` 值与业务约定后保持不变,新增分类不影响现有业务。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 六、管理后台接口建议
|
|
|
+
|
|
|
+| 接口 | 方法 | 路径 | 说明 |
|
|
|
+|------|------|------|------|
|
|
|
+| 分类列表(下拉用) | GET | `/cms/help-category/list` | 返回所有启用分类,按 scene 过滤 |
|
|
|
+| 分类分页查询 | POST | `/cms/help-category/page-query` | 管理列表,支持 scene/status 筛选 |
|
|
|
+| 新增分类 | POST | `/cms/help-category/create` | 新增一个分类 |
|
|
|
+| 修改分类 | POST | `/cms/help-category/update` | 修改名称、排序、状态等 |
|
|
|
+| 删除分类 | POST | `/cms/help-category/deletes` | 软删除(status=0)或物理删除 |
|