Files
henan-backend/docs/updata_sql.md
T

5.2 KiB
Raw Blame History

数据库变更台账

数据库改动只写这里:中文标题 + 完整可执行 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:

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 实测结果):

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 个后台页面依赖这些表,未建表前打开会报「表不存在」。 执行方式(需单独确认后进行):

docker exec -i henan_mysql_db mysql -uroot -p123456 --default-character-set=utf8mb4 -D henan < mahjong-py/schema.sql