包含所有线上运行的改动: - 荷官端倒计时卡顿修复(CountdownService TTL+10/前端watchdog) - 停止下注debounce防重复(8个handle.js) - 洗码量规则重写(单边/双边/开和不计/百家乐+龙虎) - 龙虎和局不杀庄闲(全额退回) - 日志系统(Logger工具类/日志查看/清理脚本) - 好路提醒异常处理(WaybillRemindService try-catch) - 扫牌器连接改进(ScanConnectService) - 牛牛/三卡开牌修复 - .gitignore更新/.DS_Store清理
2.4 KiB
2.4 KiB
洗码量(码量)计算规则
客户在 2026-05-28 明确的完整规则,由此重写了开奖结算逻辑。 实现位置:
app/services/opening/OpeningBaccaratService.php、OpeningDtService.php
核心定义
洗码量 = 投注额(按原投注额度计,不乘赔率)
系统有两种洗码模式,存于 cg_user.type_xima:
| type_xima | 模式 | 规则 |
|---|---|---|
| 1 | 双边洗码 | 所有投注都计洗码,开和不计 |
| 2 | 单边洗码 | 只有输口计洗码,开和不计 |
注意:历史代码里 type_xima 的语义曾被误用为
1=双边/2=单边,已确认数据库中 单边洗码会员是type_xima=2。
百家乐(game_id=1)
下注位置:庄、闲、和、庄对、闲对、幸运6、大、小
单边洗码(type_xima=2)— 输口计洗码:
- 庄赢:洗码 = 闲 + 和 + 没中的对子 + 没中的幸运6 + 没中的大小
- 闲赢:洗码 = 庄 + 和 + 没中的对子 + 没中的幸运6 + 没中的大小
- 和局:庄闲退回不计,洗码 = 没中的对子 + 没中的幸运6 + 没中的大小
双边洗码(type_xima=1)— 所有投注都计洗码:
- 庄赢/闲赢:洗码 = 全部投注额(
$amount) - 和局:庄闲退回部分不计,其余照常(开和不计核心投注)
龙虎(game_id=2)
下注位置:龙、虎、和
- 和局不杀龙虎,龙虎全额退回(dt_half 旧逻辑"和局杀一半"已废除)
- 单边洗码:龙赢→洗码=虎+和;虎赢→洗码=龙+和
- 双边洗码:龙赢/虎赢→洗码=全部投注额;和局→0
- 赔率:龙/虎 1:0.97,和 1:40
百家乐赔率补充
- 庄 1:0.95,闲 1:1,和 1:8
- 免佣模式(baccarat_type=1):庄赢且非幸运6 时 1:1,幸运6 时 1:0.5
关键代码模式
// 输口判断:开出的结果 != 投注位置 → 该位置投注额计入 ximaliang
if($userInfo['type_xima'] == 1){
$ximaliang = $amount; // 双边:全部投注
}else{
$ximaliang += <各输口投注额>; // 单边:仅输口
}
// 开和:庄闲退回,ximaliang 不累加这部分
数据落地
- 洗码记录写入
cg_xima表,字段ximaliang(原投注额)、maliang(=ximaliang×码率)、net_maliang - 开奖时(OpeningXxxService→Bet::openingBet)实时按各级代理当前码率计算并落库
- 码率/占成在开奖时实时读 DB,改了码率只影响之后开的局,已开未结的局不变