Files
cursor/plans/VIP-740abbc4.plan.md
ray zhou 2dd9f17da9 ok
2026-06-29 14:51:55 +08:00

4.1 KiB
Raw Permalink Blame History


todos:

  • id: "sql" content: "新建 slot_console/db/migrate_vip_bet_bonus_rate.sqlALTER 加列 bet_bonus_rate decimal(5,2) + UPDATE 写入 VIP1-15 初始值" status: pending
  • id: "console-logic" content: "改 UserGameStatistics::switchBonus() 按 VIP 等级取 bet_bonus_rateVIP0/空配置不转换,补日志上下文" status: pending
  • id: "console-model" content: "slot_console UserVipConfigModel 补 @property bet_bonus_rate" status: pending
  • id: "admin-model-validate" content: "slot_admin UserVipConfigModel @property + UserVipConfigValidate rule/message/scene 增加 bet_bonus_rate" status: pending
  • id: "vue" content: "slot_admin_vue edit.vue 与 index.vue 增加解锁流速字段与列" status: pending
  • id: "verify" content: "按门禁跑 verify-slot-backend.sh 与 docker php -l输出检测报告" status: pending isProject: false

背景

slot_console 每日统计在用户亏损时把冻结金额转为可领取金额,当前用全局固定费率:

        $gameBaseInfo = ConfigService::getInstance()->getGroupData('game_base');
        $bonus = intval($gameBaseInfo['bet_bonus_rate'] * $lose/100);

需求:解锁流速按 VIP 等级阶梯VIP1=0.5% … VIP15=2.0%),后台可配置。user_vip_config 现无此字段(已有的 lose_rate 是「亏损奖励」另一活动,不复用)。

决策(已确认)

  • 全栈实现DB 列 + slot_admin/vue 后台可配 + slot_console 按等级取值。
  • 新列 bet_bonus_ratedecimal(5,2),单位 %。
  • VIP0 比例为 0不再转换冻结金额

改动点

1. DB 迁移(新建 SQL

新建 slot_console/db/migrate_vip_bet_bonus_rate.sql

  • ALTER TABLE s_common.user_vip_config ADD COLUMN bet_bonus_rate decimal(5,2) NOT NULL DEFAULT 0 COMMENT '冻结金额解锁流速(%)按VIP等级' AFTER lose_rate;
  • 按需求 UPDATE 写入 VIP1-15 初始值0.5/0.6/.../1.8/2.0VIP15=2.0)。

2. slot_console 取值逻辑

switchBonus()slot_console/app/command/UserGameStatistics.php

  • VipService::getVipLevelConfig($userInfoEntity->vip_level) 取 VIP 配置(已有 Redis 缓存)。
  • VIP0 / 配置为空 / 费率<=0 直接 return不转换
  • $bonus = intval($vipConfig->bet_bonus_rate * $lose / 100); 取代 game_base 读取。
  • 日志补 vip_levelbet_bonus_rate

模型 PHPDoc 加 @property 字段:slot_console/app/model/UserVipConfigModel.php

3. slot_admin 后台

4. slot_admin_vue 前端

  • edit.vueformData + rules + 新增「解锁流速(%)」a-form-item field="bet_bonus_rate"
  • index.vuecolumns 增加「解锁流速」列。

数据流

flowchart LR
  admin[slot_admin 配置bet_bonus_rate] --> db[(s_common.user_vip_config)]
  admin --> cache[(redis vip:config:level:*)]
  console[slot_console switchBonus] --> vipsvc[VipService.getVipLevelConfig]
  vipsvc --> cache
  vipsvc --> db
  console --> wallet[switchBonus 转可领取]

注意

  • game_base.bet_bonus_rate 配置改为不再被 switchBonus 使用(保留配置项,不删除)。
  • Redis 缓存存 model->toArray()新列自动随后台保存刷新TTL 600s
  • 完成前按门禁跑 verify-slot-backend.sh 与 docker php -l,并对照 php-clean-code 输出检测报告。