Files
henan-backend/docs/updata_sql.md
T

73 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数据库变更台账
> **数据库改动只写这里**:中文标题 + 完整可执行 SQL。不再单独建 `docs/*.sql`(全量基线除外)。
> 只记**变更 SQL**;**不写回滚 SQL** —— 已执行的条目即为既成事实,要撤销请从本文件的 git 历史取旧版本。
> 若某条变更依赖**尚未执行**的前置对象(建表、种子数据等),必须在条目标注清楚,别让后来者踩空。
---
## 新增「麻将胡了」(mahjong 玩法)的后台菜单、角色授权与维护开关
**背景**:麻将胡了以「**新游戏**」类型接入,复用原玫瑰女郎(olympus 玩法)的整套统计口径
—— 消费流水 `source=68`、奖励流水 `source=69`、开箱产出 `source=15`、新游戏返佣费率字段
`tt_user.newGameCommissionRate`。代码层改动(后端统计链路 + 两个前端)见 `docs/修改记录.md`;
本条目**只记数据库变更**。
**本次数据库变更 3 张表、共 17 行**(2026-09-22 已在库 `henan` 执行):
| 表 | 变更 | 说明 |
|---|---|---|
| `sys_config` | 新增 **1 行** | `config_id=154`、`config_key='mahjongMaintenance'`,即「麻将胡了维护」开关 |
| `sys_menu` | 新增 **8 行** | 顶级目录 `mahjong`(`menu_id=3200`)+ 7 个子页面(`3201`~`3207`) |
| `sys_role_menu` | 新增 **8 行** | 全部授权给 `role_id=103` |
> **为什么 `menu_id` 用 `3200~3207`**:`3130~3137` 是已下架的奥林匹斯旧号段,不复用,
> 免得数据里「哪段 ID 属于哪个玩法」的对应关系失真。
**变更 SQL**:
```sql
INSERT INTO `sys_menu`
(`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES
(3200, '麻将胡了', 0, 6, 'mahjong', '', NULL, 1, 0, 'M', '0', '0', '', 'star', 'admin', NOW(), '', NULL, '麻将胡了游戏后台管理目录'),
(3201, '箱子配置', 3200, 1, 'box', 'game/mahjong/box/index', NULL, 1, 0, 'C', '0', '0', 'game:mahjong:box', 'shopping', 'admin', NOW(), '', NULL, '麻将胡了·箱子配置(11 档投注,price ≡ bet)'),
(3202, '饰品列表', 3200, 2, 'bucket', 'game/mahjong/bucket/index', NULL, 1, 0, 'C', '0', '0', 'game:mahjong:bucket', 'star', 'admin', NOW(), '', NULL, '麻将胡了·16 档饰品桶定义(0x~500x,只读)'),
(3203, '回合管理', 3200, 3, 'round', 'game/mahjong/round/index', NULL, 1, 0, 'C', '0', '0', 'game:mahjong:round', 'documentation', 'admin', NOW(), '', NULL, '麻将胡了·预生成回合池(只读)'),
(3204, '奖池水位', 3200, 4, 'rewardPool', 'game/mahjong/rewardPool/index', NULL, 1, 0, 'C', '0', '0', 'game:mahjong:pool', 'money', 'admin', NOW(), '', NULL, '麻将胡了·奖池水位(3 身份:普通/主播/白号)'),
(3205, '玩家记录', 3200, 5, 'record', 'game/mahjong/record/index', NULL, 1, 0, 'C', '0', '0', 'game:mahjong:record', 'list', 'admin', NOW(), '', NULL, '麻将胡了·玩家游玩记录'),
(3206, '每日统计', 3200, 6, 'dailywin', 'game/mahjong/dailywin/index', NULL, 1, 0, 'C', '0', '0', 'game:mahjong:win', 'chart', 'admin', NOW(), '', NULL, '麻将胡了·每日投注/赢奖/RTP 统计'),
(3207, '奖品管理', 3200, 7, 'prize', 'game/mahjong/prize/index', NULL, 1, 0, 'C', '0', '0', 'game:mahjong:prize', 'guide', 'admin', NOW(), '', NULL, '麻将胡了·返奖饰品与返奖区间');
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES
(103, 3200), (103, 3201), (103, 3202), (103, 3203),
(103, 3204), (103, 3205), (103, 3206), (103, 3207);
INSERT INTO `sys_config`
(`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES
(154, '麻将胡了维护', 'mahjongMaintenance', '0', 'Y', 'admin', NOW(), '', NULL, '麻将胡了维护开关 0正常 1维护');
```
**验证**(2026-09-22 实测结果):
```sql
SELECT COUNT(*) FROM sys_menu WHERE menu_id BETWEEN 3200 AND 3207; -- 期望 8,实测 8
SELECT COUNT(*) FROM sys_role_menu WHERE menu_id BETWEEN 3200 AND 3207; -- 期望 8,实测 8
SELECT COUNT(*) FROM sys_config WHERE config_key = 'mahjongMaintenance'; -- 期望 1,实测 1
```
后台左侧出现「麻将胡了」目录(`order_num=6`),下辖 7 个子页面;
「网站设置」页出现「麻将胡了维护」下拉框(0 正常 / 1 维护)。
**⚠️ 尚未落库的前置依赖:麻将胡了的 11 张游戏表**(`game_mahjong_box` / `_bucket` / `_box_bucket` /
`_round` / `_step` / `_record` / `_user` / `_box_template` / `_reward_log` / `_prize_ornament` / `_prize_range`)。
DDL + 种子数据已写在 `mahjong-py/schema.sql`(`CREATE TABLE IF NOT EXISTS` + 11 档箱子 / 饰品桶 / 返奖饰品种子),
**本次未执行** —— 上方 7 个后台页面依赖这些表,未建表前打开会报「表不存在」。
执行方式(需单独确认后进行):
```bash
docker exec -i henan_mysql_db mysql -uroot -p123456 --default-character-set=utf8mb4 -D henan < mahjong-py/schema.sql
```