4.1 KiB
4.1 KiB
todos:
- id: "sql" content: "新建 slot_console/db/migrate_vip_bet_bonus_rate.sql:ALTER 加列 bet_bonus_rate decimal(5,2) + UPDATE 写入 VIP1-15 初始值" status: pending
- id: "console-logic" content: "改 UserGameStatistics::switchBonus() 按 VIP 等级取 bet_bonus_rate,VIP0/空配置不转换,补日志上下文" 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_rate,decimal(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.0,VIP15=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_level、bet_bonus_rate。
模型 PHPDoc 加 @property 字段:slot_console/app/model/UserVipConfigModel.php。
3. slot_admin 后台
- model/UserVipConfigModel.php:
@property增加bet_bonus_rate。 - validate/UserVipConfigValidate.php:
rule/message/scene(save,update)增加bet_bonus_rate => require。 - 该字段为百分比小数,直接存储,不走
setNumberFormat(控制器format()无需改)。
4. slot_admin_vue 前端
- edit.vue:
formData+rules+ 新增「解锁流速(%)」a-form-item field="bet_bonus_rate"。 - index.vue:
columns增加「解锁流速」列。
数据流
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与 dockerphp -l,并对照 php-clean-code 输出检测报告。