diff --git a/docs/updata_sql.md b/docs/updata_sql.md index 6f93e39..309d3fd 100644 --- a/docs/updata_sql.md +++ b/docs/updata_sql.md @@ -126,91 +126,18 @@ SELECT COUNT(*) FROM sys_role_menu WHERE menu_id=3208; 2. 水位从 0 起步。`enabled=true` 时前几件货会落在收紧档(水位低 → 随机数高),属预期行为; 需要立刻放水用后台「奖池水位 → 注水」。 ---- +-----------------------对战接口优化-------------------------- -## 新增「麻将胡了」(mahjong 玩法)的后台菜单、角色授权与维护开关 +SHOW INDEX FROM tt_fight; -**背景**:麻将胡了以「**新游戏**」类型接入,复用原玫瑰女郎(olympus 玩法)的整套统计口径 -—— 消费流水 `source=68`、奖励流水 `source=69`、开箱产出 `source=15`、新游戏返佣费率字段 -`tt_user.newGameCommissionRate`。代码层改动(后端统计链路 + 两个前端)见 `docs/修改记录.md`; -本条目**只记数据库变更**。 +ALTER TABLE tt_fight ADD INDEX idx_ttf_status_create (status, create_time); -**本次数据库变更 3 张表、共 17 行**(2026-09-22 已在库 `henan` 执行): +ALTER TABLE tt_fight +ADD COLUMN total_ornaments_price DECIMAL(18,2) NULL COMMENT '本场开箱饰品总价值(百佳榜排序用)', +ADD INDEX idx_ttf_status_total (status, total_ornaments_price); -| 表 | 变更 | 说明 | -|---|---|---| -| `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` | +ALTER TABLE tt_fight_user ADD INDEX idx_tfu_fight_user (fight_id, user_id); -> **为什么 `menu_id` 用 `3200~3207`**:`3130~3137` 是已下架的奥林匹斯旧号段,不复用, -> 免得数据里「哪段 ID 属于哪个玩法」的对应关系失真。 +ALTER TABLE tt_fight ADD INDEX idx_ttf_create_time (create_time); -**变更 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` + `ON DUPLICATE KEY UPDATE`),无任何 `DROP` / `DELETE`。 - -执行方式(**2026-09-22 已执行**): - -```bash -docker exec -i henan_mysql_db mysql -uroot -p123456 --default-character-set=utf8mb4 -D henan < mahjong-py/schema.sql -``` - -落库结果(实测): - -| 表 | 行数 | 说明 | -|---|---|---| -| `game_mahjong_box` | 11 | 11 档投注,`price ≡ bet` | -| `game_mahjong_bucket` | 16 | 0x ~ 500x | -| `game_mahjong_prize_ornament` | 12 | 返奖饰品(沿用玫瑰女郎 id 以维持区间映射) | -| `game_mahjong_prize_range` | 12 | 连续覆盖 0.01 ~ 99,999,999 | -| `_box_bucket` / `_round` / `_step` / `_record` / `_user` / `_box_template` / `_reward_log` | 0 | 空表,等运行期数据 | - -```sql -SELECT COUNT(*) FROM information_schema.tables -WHERE table_schema = 'henan' AND table_name LIKE 'game\_mahjong\_%'; -- 期望 11,实测 11 -``` - -**仍需后台操作生成的运行期数据**(不是建表,别当成漏建): - -1. `game_mahjong_box_bucket` 的 **528 行配比**(16 桶 × 11 箱 × 3 身份)—— 后台 - 「麻将胡了 → 箱子配置 → 一键重算」(`POST /admin/mahjong/box/recalc_all`)。**空表时挑不到回合。** -2. **每箱×身份的初始奖池水位** —— 后台「奖池水位 → 注水」(`¥300` / `¥500` 两档需单独注)。 +-----------------------------------------------------------