feat: 新增牛牛(game_id=4)作废本局功能
edit_number_tab()新增game_id==4分支,调用retreated_nn()方法: - 回滚所有用户余额(减去win_total) - bet记录标记status=2(已作废),保留审计痕迹 - 删除关联的洗码/分成/代理抽水记录 - 处理抢庄用户余额回滚 - 写入retreated_log操作日志 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
71d7ff1d7b
commit
22b23064d8
@ -266,6 +266,17 @@ class Waybill extends Common
|
||||
}else{
|
||||
return json(array('code' => 0, 'msg' => '请选择结果,然后再提交'));
|
||||
}
|
||||
}elseif($table['game_id'] == 4){
|
||||
// 牛牛作废本局 - 取消单局输赢,退回原投注额
|
||||
$number_tab_info = Db::name('number_tab')->where(array('game_id' => $game_id, 'table_id' => $table_id, 'boot_id' => $boot_id, 'id' => $number_tab_id))->find();
|
||||
if(empty($number_tab_info)){
|
||||
return json(array('code' => 0, 'msg' => '数据出错,不能修改,请稍后再试'));
|
||||
}
|
||||
if($number_tab_info['bet_status'] != 3){
|
||||
return json(array('code' => 0, 'msg' => '该局尚未开出结果,无法作废'));
|
||||
}
|
||||
$returnInfo = $this->retreated_nn($game_id,$table_id,$boot_id,$number_tab_id,$number_tab_info);
|
||||
return json($returnInfo);
|
||||
}
|
||||
}else{
|
||||
return json(array('code' => 0, 'msg' => '数据出错,不能修改,请稍后再试'));
|
||||
@ -780,4 +791,58 @@ class Waybill extends Common
|
||||
}
|
||||
return array('code' => 1, 'msg' => '修改成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理牛牛作废本局
|
||||
* 作废逻辑:回滚所有用户余额,将bet状态标记为已作废(status=2),删除洗码/分成/代理抽水记录
|
||||
* $game_id 游戏ID (4=牛牛)
|
||||
* $table_id 桌子ID
|
||||
* $boot_id 靴ID
|
||||
* $number_tab_id 铺ID
|
||||
* $number_tab_info 当前铺数据
|
||||
*/
|
||||
function retreated_nn($game_id,$table_id,$boot_id,$number_tab_id,$number_tab_info){
|
||||
$lastNumberTabInfo = $number_tab_info;
|
||||
// 1. 获取该局所有有效下注记录(status=1)
|
||||
$bets = Db::name('bet')->where(array('game_id' => $game_id, 'table_id' => $table_id, 'boot_id' => $boot_id, 'number_tab_id' => $lastNumberTabInfo['id'], 'status' => 1))->select();
|
||||
if(empty($bets)){
|
||||
return array('code' => 0, 'msg' => '该局没有下注记录,无需作废');
|
||||
}
|
||||
// 2. 回滚用户余额:减去已结算的win_total(赢了的扣回,输了的退回)
|
||||
foreach($bets AS $key => $value){
|
||||
$bet_win_total = $value['win_total'];
|
||||
Db::execute("update `cg_user` set `money` = `money` - ".$bet_win_total." where `id`=".$value['user_id']);
|
||||
}
|
||||
// 3. 将bet记录标记为已作废(status=2),而非删除,保留审计痕迹
|
||||
Db::name('bet')->where(array('game_id' => $game_id, 'table_id' => $table_id, 'boot_id' => $boot_id, 'number_tab_id' => $lastNumberTabInfo['id'], 'status' => 1))->update(array('status' => 2));
|
||||
// 4. 删除该局的洗码、分成、代理抽水记录
|
||||
Db::name('xima')->where(array('game_id' => $game_id, 'table_id' => $table_id, 'boot_id' => $boot_id, 'number_tab_id' => $lastNumberTabInfo['id']))->delete();
|
||||
Db::name('cs')->where(array('game_id' => $game_id, 'table_id' => $table_id, 'boot_id' => $boot_id, 'number_tab_id' => $lastNumberTabInfo['id']))->delete();
|
||||
Db::name('agent_commission')->where(array('game_id' => $game_id, 'table_id' => $table_id, 'boot_id' => $boot_id, 'number_tab_id' => $lastNumberTabInfo['id']))->delete();
|
||||
// 5. 处理抢庄用户的余额回滚
|
||||
if($lastNumberTabInfo['rob_banker_id'] > 0){
|
||||
$bankerBet = Db::name('bet')->where(array('game_id' => $game_id, 'table_id' => $table_id, 'boot_id' => $boot_id, 'number_tab_id' => $lastNumberTabInfo['id'], 'user_id' => $lastNumberTabInfo['rob_banker_id']))->find();
|
||||
if($bankerBet && $bankerBet['status'] != 2){
|
||||
$bet_win_total = $bankerBet['win_total'];
|
||||
Db::execute("update `cg_user` set `money` = `money` - ".$bet_win_total." where `id`=".$bankerBet['user_id']);
|
||||
Db::name('bet')->where(array('id' => $bankerBet['id']))->update(array('status' => 2));
|
||||
}
|
||||
}
|
||||
// 6. 记录作废操作日志
|
||||
$retreated_log_data = array();
|
||||
$retreated_log_data['mode'] = 2; // mode=2 表示作废
|
||||
$retreated_log_data['type'] = 1;
|
||||
$retreated_log_data['create_time'] = time();
|
||||
$retreated_log_data['gamei_id'] = $game_id;
|
||||
$retreated_log_data['table_id'] = $table_id;
|
||||
$retreated_log_data['table_name'] = $lastNumberTabInfo['table_name'];
|
||||
$retreated_log_data['boot_id'] = $boot_id;
|
||||
$retreated_log_data['boot_num'] = $lastNumberTabInfo['boot_num'];
|
||||
$retreated_log_data['number_tab_id'] = $number_tab_id;
|
||||
$retreated_log_data['number'] = $lastNumberTabInfo['number'];
|
||||
$str = '庄:'.$lastNumberTabInfo['result_banker'].' 闲1:'.$lastNumberTabInfo['result_player_1'].' 闲2:'.$lastNumberTabInfo['result_player_2'].' 闲3:'.$lastNumberTabInfo['result_player_3'];
|
||||
$retreated_log_data['remark'] = '牛牛作废本局,原结果为:'.$str.',已退回所有投注额';
|
||||
Db::name('retreated_log')->insert($retreated_log_data);
|
||||
return array('code' => 1, 'msg' => '作废成功,已退回所有投注额');
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user