Socket/app/services/opening/OpeningNnService.php
2026-01-28 23:48:20 +08:00

556 lines
31 KiB
PHP

<?php
namespace app\services\opening;
use app\models\bet\Bet;
use app\models\process\NumberTab;
use app\models\user\User;
use app\services\connect\InitTableService;
use freedom\utils\CardPositionNn;
use freedom\utils\RedisUtil;
use freedom\utils\SocketSession;
use think\swoole\Websocket;
class OpeningNnService
{
/**
* TODO Dt开结果处理
* @param array $event
* @param array $tableInfo
* @param Websocket $ws
* @return void
*/
public static function openingNn(array $event, array $tableInfo, Websocket $ws){
//判断结果并推送结果
$res = self::doOpening($event,$tableInfo);
if ($res['status'] == false){
$ws->emit('openingNn',['status' => false, 'msg' => $res['msg']]);
return;
}
list($data,$lastNumberTabInfo,$newNumberTabInfo) = $res['data'];
$round = [
'boot_id' => $newNumberTabInfo['boot_id'],
'boot_num' => $newNumberTabInfo['boot_num'],
'number_tab_id' => $newNumberTabInfo['id'],
'previous_number_tab_id' => $lastNumberTabInfo['id'],
'number_tab_number' => $newNumberTabInfo['number'] + 1,
'number_tab_status' => InitTableService::numberTabStatus($newNumberTabInfo)
];
$round = array_merge($round,$data);
$ws->emit('openingNn',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
$ws->to(SocketSession::HOUSE_NAME)->emit('openingNnResult',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
//处理注单
self::doBet($ws,$tableInfo,$lastNumberTabInfo,$data);
}
/**
* TODO 判断结果
* @param array $event
* @param array $tableInfo
* @return array
*/
public static function doOpening(array $event, array $tableInfo): array
{
if (!isset($event['number_tab_id'])) return ['status' => false, 'msg' => 'opening_fail_2'];
$numberTabId = intval($event['number_tab_id']);
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
if (!$numberTabInfo || $numberTabId != $numberTabInfo['id']) return ['status' => false, 'msg' => 'opening_fail_2'];
if ($numberTabInfo['bet_status'] != 2) return ['status' => false, 'msg' => 'opening_fail_4'];
//NN只有扫描台,不是扫描台返回false
if ($tableInfo['is_scavenging'] != 1) return ['status' => false, 'msg' => 'opening_fail'];
$cardInfo = RedisUtil::getCard($numberTabId);
if (!$cardInfo) return ['status' => false, 'msg' => 'opening_fail_6'];
// 判断是否所有的牌都已经扫描
foreach ($cardInfo AS $v){
if ($v == 0){
return ['status' => false, 'msg' => 'opening_fail_6'];
}
}
// 比较结果
$player1Card[0] = $cardInfo['player_1_card_1'];
$player1Card[1] = $cardInfo['player_1_card_2'];
$player1Card[2] = $cardInfo['player_1_card_3'];
$player1Card[3] = $cardInfo['player_1_card_4'];
$player1Card[4] = $cardInfo['player_1_card_5'];
$player2Card[0] = $cardInfo['player_2_card_1'];
$player2Card[1] = $cardInfo['player_2_card_2'];
$player2Card[2] = $cardInfo['player_2_card_3'];
$player2Card[3] = $cardInfo['player_2_card_4'];
$player2Card[4] = $cardInfo['player_2_card_5'];
$player3Card[0] = $cardInfo['player_3_card_1'];
$player3Card[1] = $cardInfo['player_3_card_2'];
$player3Card[2] = $cardInfo['player_3_card_3'];
$player3Card[3] = $cardInfo['player_3_card_4'];
$player3Card[4] = $cardInfo['player_3_card_5'];
$bankerCard[0] = $cardInfo['banker_card_1'];
$bankerCard[1] = $cardInfo['banker_card_2'];
$bankerCard[2] = $cardInfo['banker_card_3'];
$bankerCard[3] = $cardInfo['banker_card_4'];
$bankerCard[4] = $cardInfo['banker_card_5'];
$player1Result = CardPositionNn::JudgeCowCow($player1Card);
$player2Result = CardPositionNn::JudgeCowCow($player2Card);
$player3Result = CardPositionNn::JudgeCowCow($player3Card);
$bankerResult = CardPositionNn::JudgeCowCow($bankerCard);
$data = [];
$data['result_player_1'] = $player1Result['cow'];
$data['result_player_2'] = $player2Result['cow'];
$data['result_player_3'] = $player3Result['cow'];
$data['result_banker'] = $bankerResult['cow'];
if($data['result_player_1'] > $data['result_banker']){
$data['win_player_1'] = 1;
}else if($data['result_player_1'] < $data['result_banker']){
$data['win_player_1'] = 0;
}else if($data['result_player_1'] == $data['result_banker']){
$data['win_player_1'] = CardPositionNn::compareCard($player1Result['max'], $bankerResult['max']);
}
if($data['result_player_2'] > $data['result_banker']){
$data['win_player_2'] = 1;
}else if($data['result_player_2'] < $data['result_banker']){
$data['win_player_2'] = 0;
}else if($data['result_player_2'] == $data['result_banker']){
$data['win_player_2'] = CardPositionNn::compareCard($player2Result['max'], $bankerResult['max']);
}
if($data['result_player_3'] > $data['result_banker']){
$data['win_player_3'] = 1;
}else if($data['result_player_3'] < $data['result_banker']){
$data['win_player_3'] = 0;
}else if($data['result_player_3'] == $data['result_banker']){
$data['win_player_3'] = CardPositionNn::compareCard($player3Result['max'], $bankerResult['max']);
}
//开盘
$numberTabUpdate = [
'result_player_1' => $data['result_player_1'],
'result_player_2' => $data['result_player_2'],
'result_player_3' => $data['result_player_3'],
'result_banker' => $data['result_banker'],
'win_player_1' => $data['win_player_1'],
'win_player_2' => $data['win_player_2'],
'win_player_3' => $data['win_player_3'],
'end_time' => time(),
'bet_status' => 3,
];
$newNumberTabInfo = NumberTab::next($numberTabInfo,$numberTabUpdate,$tableInfo);
if ($newNumberTabInfo){
$lastNumberTabInfo = array_merge($numberTabInfo,$numberTabUpdate);
return ['status' => true, 'data' => [$data,$lastNumberTabInfo,$newNumberTabInfo]];
}else{
return ['status' => false, 'msg' => 'opening_fail'];
}
}
/**
* TODO Bet处理
* @param Websocket $ws 桌子信息
* @param array $tableInfo 桌子信息
* @param array $numberTabInfo 开结果的当前局信息
* @param array $data 输赢数据
* @return void
*/
public static function doBet(Websocket $ws, array $tableInfo, array $numberTabInfo, array $data){
$bankerWinTotal = 0;
if($numberTabInfo['rob_banker_id'] > 0 ){
$betInfo = Bet::getByNumberTabIdNotRob($numberTabInfo['id'],$numberTabInfo['rob_banker_id']);
$bankerBetInfo = Bet::getByNumberTabIdRob($numberTabInfo['id'],$numberTabInfo['rob_banker_id']);
}else{
$betInfo = Bet::getByNumberTabIdValid($numberTabInfo['id']);
}
foreach($betInfo AS $v){
$userInfo = User::get(intval($v['user_id']));
if (!$userInfo){
continue;
}
$amount = $v['amount_player_1'] +
$v['amount_player_1_times'] +
$v['amount_player_1_banker'] +
$v['amount_player_1_banker_times'] +
$v['amount_player_2'] +
$v['amount_player_2_times'] +
$v['amount_player_2_banker'] +
$v['amount_player_2_banker_times'] +
$v['amount_player_3'] +
$v['amount_player_3_times'] +
$v['amount_player_3_banker'] +
$v['amount_player_3_banker_times'];
$withholdAmount = $v['withhold_player_1_times'] +
$v['withhold_player_1_banker_times'] +
$v['withhold_player_2_times'] +
$v['withhold_player_2_banker_times'] +
$v['withhold_player_3_times'] +
$v['withhold_player_3_banker_times'];
$winTotal = 0;
$winTotalActual = 0;
$timesPlayer1 = 1;
$timesPlayer2 = 1;
$timesPlayer3 = 1;
$rebate = 0;
// 双边洗码 (庄正闲负绝对值)
$rebatePlayer1 = 0;
$rebatePlayer2 = 0;
$rebatePlayer3 = 0;
//闲1
if($data['win_player_1'] == 1){
if($v['amount_player_1'] > 0){
$winTotal += round($v['amount_player_1'] * $userInfo['price_n0_n6'],2);
$winTotalActual += round($v['amount_player_1'] * 1,2);
$rebatePlayer1 -= $v['amount_player_1'];
}
if($v['amount_player_1_times'] > 0){
if(0 <= $data['result_player_1'] && $data['result_player_1'] < 7){
$winTotal += round($v['amount_player_1_times'] * $userInfo['price_n0_n6'],2);
$winTotalActual += round($v['amount_player_1_times'] * 1,2);
}elseif(7 <= $data['result_player_1'] && $data['result_player_1'] <= 9){
$winTotal += round($v['amount_player_1_times'] * $userInfo['price_n7_n9'],2) ;
$winTotalActual += round($v['amount_player_1_times'] * 2,2);
$timesPlayer1 = $userInfo['price_n7_n9'];
}elseif($data['result_player_1'] == 10){
$winTotal += round($v['amount_player_1_times'] * $userInfo['price_nn'],2);
$winTotalActual += round($v['amount_player_1_times'] * 3,2);
$timesPlayer1 = $userInfo['price_nn'];
}elseif($data['result_player_1'] == 11){
$winTotal += round($v['amount_player_1_times'] * $userInfo['price_5n'],2);
$winTotalActual += round($v['amount_player_1_times'] * 5,2);
$timesPlayer1 = $userInfo['price_5n'];
}
$rebatePlayer1 -= $v['amount_player_1_times'];
}
if($v['amount_player_1_banker'] > 0){
$winTotal -= $v['amount_player_1_banker'];
$winTotalActual -= $v['amount_player_1_banker'];
$rebate += $v['amount_player_1_banker'];
$rebatePlayer1 += $v['amount_player_1_banker'];
}
if($v['amount_player_1_banker_times'] > 0){
if(0 <= $data['result_player_1'] && $data['result_player_1'] < 7){
$winTotal -= $v['amount_player_1_banker_times'];
$rebate += $v['amount_player_1_banker_times'];
$rebatePlayer1 += $v['amount_player_1_banker_times'];
}elseif(7 <= $data['result_player_1'] && $data['result_player_1'] <= 9){
$winTotal -= round($v['amount_player_1_banker_times'] * 2,2);
$rebate += round($v['amount_player_1_banker_times'] * 2);
$rebatePlayer1 += round($v['amount_player_1_banker_times'] * 2);
}elseif($data['result_player_1'] == 10){
$winTotal -= round($v['amount_player_1_banker_times'] * 3,2);
$rebate += round($v['amount_player_1_banker_times'] * 3);
$rebatePlayer1 += round($v['amount_player_1_banker_times'] * 3);
}elseif($data['result_player_1'] == 11){
$winTotal -= round($v['amount_player_1_banker_times'] * 5,2);
$rebate += round($v['amount_player_1_banker_times'] * 5);
$rebatePlayer1 += round($v['amount_player_1_banker_times'] * 5);
}
}
}elseif($data['win_player_1'] == 0){
if($v['amount_player_1_banker'] > 0){
$winTotal += round($v['amount_player_1_banker'] * $userInfo['price_n0_n6'],2) ;
$rebatePlayer1 += $v['amount_player_1_banker'];
}
if($v['amount_player_1_banker_times'] > 0){
if(0 <= $data['result_banker'] && $data['result_banker'] < 7){
$winTotal += round($v['amount_player_1_banker_times'] * $userInfo['price_n0_n6'],2);
}elseif(7 <= $data['result_banker'] && $data['result_banker'] <= 9){
$winTotal += round($v['amount_player_1_banker_times'] * $userInfo['price_n7_n9'],2);
$timesPlayer1 = $userInfo['price_n7_n9'];
}elseif($data['result_banker'] == 10){
$winTotal += round($v['amount_player_1_banker_times'] * $userInfo['price_nn'],2);
$timesPlayer1 = $userInfo['price_nn'];
}elseif($data['result_banker'] == 11){
$winTotal += round($v['amount_player_1_banker_times'] * $userInfo['price_5n'],2);
$timesPlayer1 = $userInfo['price_5n'];
}
$rebatePlayer1 += $v['amount_player_1_banker_times'];
}
if($v['amount_player_1'] > 0){
$winTotal -= $v['amount_player_1'];
$rebate += $v['amount_player_1'];
$rebatePlayer1 -= $v['amount_player_1'];
}
if($v['amount_player_1_times'] > 0){
if(0 <= $data['result_banker'] && $data['result_banker'] < 7){
$winTotal -= $v['amount_player_1_times'];
$rebate += $v['amount_player_1_times'];
$rebatePlayer1 -= $v['amount_player_1_times'];
}elseif(7 <= $data['result_banker'] && $data['result_banker'] <= 9){
$winTotal -= $v['amount_player_1_times'] * 2;
$winTotalActual -= $v['amount_player_1_times'] * 2;
$rebate += $v['amount_player_1_times'] * 2;
$rebatePlayer1 -= $v['amount_player_1_times'] * 2;
}elseif($data['result_banker'] == 10){
$winTotal -= $v['amount_player_1_times'] * 3;
$winTotalActual -= $v['amount_player_1_times'] * 3;
$rebate += $v['amount_player_1_times'] * 3;
$rebatePlayer1 -= $v['amount_player_1_times'] * 3;
}elseif($data['result_banker'] == 11){
$winTotal -= $v['amount_player_1_times'] * 5;
$winTotalActual -= $v['amount_player_1_times'] * 5;
$rebate += $v['amount_player_1_times'] * 5;
$rebatePlayer1 -= $v['amount_player_1_times'] * 5;
}
}
}
//闲2
if($data['win_player_2'] == 1){
if($v['amount_player_2'] > 0){
$winTotal += round($v['amount_player_2'] * $userInfo['price_n0_n6'],2);
$winTotalActual += round($v['amount_player_2'] * 1,2);
$rebatePlayer2 -= $v['amount_player_2'];
}
if($v['amount_player_2_times'] > 0){
if(0 <= $data['result_player_2'] && $data['result_player_2'] < 7){
$winTotal += round($v['amount_player_2_times'] * $userInfo['price_n0_n6'],2);
$winTotalActual += round($v['amount_player_2_times'] * 1,2);
}elseif(7 <= $data['result_player_2'] && $data['result_player_2'] <= 9){
$winTotal += round($v['amount_player_2_times'] * $userInfo['price_n7_n9'],2) ;
$winTotalActual += round($v['amount_player_2_times'] * 2,2);
$timesPlayer2 = $userInfo['price_n7_n9'];
}elseif($data['result_player_2'] == 10){
$winTotal += round($v['amount_player_2_times'] * $userInfo['price_nn'],2);
$winTotalActual += round($v['amount_player_2_times'] * 3,2);
$timesPlayer2 = $userInfo['price_nn'];
}elseif($data['result_player_2'] == 11){
$winTotal += round($v['amount_player_2_times'] * $userInfo['price_5n'],2);
$winTotalActual += round($v['amount_player_2_times'] * 5,2);
$timesPlayer2 = $userInfo['price_5n'];
}
$rebatePlayer2 -= $v['amount_player_2_times'];
}
if($v['amount_player_2_banker'] > 0){
$winTotal -= $v['amount_player_2_banker'];
$winTotalActual -= $v['amount_player_2_banker'];
$rebate += $v['amount_player_2_banker'];
$rebatePlayer2 += $v['amount_player_2_banker'];
}
if($v['amount_player_2_banker_times'] > 0){
if(0 <= $data['result_player_2'] && $data['result_player_2'] < 7){
$winTotal -= $v['amount_player_2_banker_times'];
$rebate += $v['amount_player_2_banker_times'];
$rebatePlayer2 += $v['amount_player_2_banker_times'];
}elseif(7 <= $data['result_player_2'] && $data['result_player_2'] <= 9){
$winTotal -= round($v['amount_player_2_banker_times'] * 2,2);
$rebate += round($v['amount_player_2_banker_times'] * 2);
$rebatePlayer2 += round($v['amount_player_2_banker_times'] * 2);
}elseif($data['result_player_2'] == 10){
$winTotal -= round($v['amount_player_2_banker_times'] * 3,2);
$rebate += round($v['amount_player_2_banker_times'] * 3);
$rebatePlayer2 += round($v['amount_player_2_banker_times'] * 3);
}elseif($data['result_player_2'] == 11){
$winTotal -= round($v['amount_player_2_banker_times'] * 5,2);
$rebate += round($v['amount_player_2_banker_times'] * 5);
$rebatePlayer2 += round($v['amount_player_2_banker_times'] * 5);
}
}
}elseif($data['win_player_2'] == 0){
if($v['amount_player_2_banker'] > 0){
$winTotal += round($v['amount_player_2_banker'] * $userInfo['price_n0_n6'],2) ;
$rebatePlayer2 += $v['amount_player_2_banker'];
}
if($v['amount_player_2_banker_times'] > 0){
if(0 <= $data['result_banker'] && $data['result_banker'] < 7){
$winTotal += round($v['amount_player_2_banker_times'] * $userInfo['price_n0_n6'],2);
}elseif(7 <= $data['result_banker'] && $data['result_banker'] <= 9){
$winTotal += round($v['amount_player_2_banker_times'] * $userInfo['price_n7_n9'],2);
$timesPlayer2 = $userInfo['price_n7_n9'];
}elseif($data['result_banker'] == 10){
$winTotal += round($v['amount_player_2_banker_times'] * $userInfo['price_nn'],2);
$timesPlayer2 = $userInfo['price_nn'];
}elseif($data['result_banker'] == 11){
$winTotal += round($v['amount_player_2_banker_times'] * $userInfo['price_5n'],2);
$timesPlayer2 = $userInfo['price_5n'];
}
$rebatePlayer2 += $v['amount_player_2_banker_times'];
}
if($v['amount_player_2'] > 0){
$winTotal -= $v['amount_player_2'];
$rebate += $v['amount_player_2'];
$rebatePlayer2 -= $v['amount_player_2'];
}
if($v['amount_player_2_times'] > 0){
if(0 <= $data['result_banker'] && $data['result_banker'] < 7){
$winTotal -= $v['amount_player_2_times'];
$rebate += $v['amount_player_2_times'];
$rebatePlayer2 -= $v['amount_player_2_times'];
}elseif(7 <= $data['result_banker'] && $data['result_banker'] <= 9){
$winTotal -= $v['amount_player_2_times'] * 2;
$winTotalActual -= $v['amount_player_2_times'] * 2;
$rebate += $v['amount_player_2_times'] * 2;
$rebatePlayer2 -= $v['amount_player_2_times'] * 2;
}elseif($data['result_banker'] == 10){
$winTotal -= $v['amount_player_2_times'] * 3;
$winTotalActual -= $v['amount_player_2_times'] * 3;
$rebate += $v['amount_player_2_times'] * 3;
$rebatePlayer2 -= $v['amount_player_2_times'] * 3;
}elseif($data['result_banker'] == 11){
$winTotal -= $v['amount_player_2_times'] * 5;
$winTotalActual -= $v['amount_player_2_times'] * 5;
$rebate += $v['amount_player_2_times'] * 5;
$rebatePlayer2 -= $v['amount_player_2_times'] * 5;
}
}
}
//闲3
if($data['win_player_3'] == 1){
if($v['amount_player_3'] > 0){
$winTotal += round($v['amount_player_3'] * $userInfo['price_n0_n6'],2);
$winTotalActual += round($v['amount_player_3'] * 1,2);
$rebatePlayer3 -= $v['amount_player_3'];
}
if($v['amount_player_3_times'] > 0){
if(0 <= $data['result_player_3'] && $data['result_player_3'] < 7){
$winTotal += round($v['amount_player_3_times'] * $userInfo['price_n0_n6'],2);
$winTotalActual += round($v['amount_player_3_times'] * 1,2);
}elseif(7 <= $data['result_player_3'] && $data['result_player_3'] <= 9){
$winTotal += round($v['amount_player_3_times'] * $userInfo['price_n7_n9'],2) ;
$winTotalActual += round($v['amount_player_3_times'] * 2,2);
$timesPlayer3 = $userInfo['price_n7_n9'];
}elseif($data['result_player_3'] == 10){
$winTotal += round($v['amount_player_3_times'] * $userInfo['price_nn'],2);
$winTotalActual += round($v['amount_player_3_times'] * 3,2);
$timesPlayer3 = $userInfo['price_nn'];
}elseif($data['result_player_3'] == 11){
$winTotal += round($v['amount_player_3_times'] * $userInfo['price_5n'],2);
$winTotalActual += round($v['amount_player_3_times'] * 5,2);
$timesPlayer3 = $userInfo['price_5n'];
}
$rebatePlayer3 -= $v['amount_player_3_times'];
}
if($v['amount_player_3_banker'] > 0){
$winTotal -= $v['amount_player_3_banker'];
$winTotalActual -= $v['amount_player_3_banker'];
$rebate += $v['amount_player_3_banker'];
$rebatePlayer3 += $v['amount_player_3_banker'];
}
if($v['amount_player_3_banker_times'] > 0){
if(0 <= $data['result_player_3'] && $data['result_player_3'] < 7){
$winTotal -= $v['amount_player_3_banker_times'];
$rebate += $v['amount_player_3_banker_times'];
$rebatePlayer3 += $v['amount_player_3_banker_times'];
}elseif(7 <= $data['result_player_3'] && $data['result_player_3'] <= 9){
$winTotal -= round($v['amount_player_3_banker_times'] * 2,2);
$rebate += round($v['amount_player_3_banker_times'] * 2);
$rebatePlayer3 += round($v['amount_player_3_banker_times'] * 2);
}elseif($data['result_player_3'] == 10){
$winTotal -= round($v['amount_player_3_banker_times'] * 3,2);
$rebate += round($v['amount_player_3_banker_times'] * 3);
$rebatePlayer3 += round($v['amount_player_3_banker_times'] * 3);
}elseif($data['result_player_3'] == 11){
$winTotal -= round($v['amount_player_3_banker_times'] * 5,2);
$rebate += round($v['amount_player_3_banker_times'] * 5);
$rebatePlayer3 += round($v['amount_player_3_banker_times'] * 5);
}
}
}elseif($data['win_player_3'] == 0){
if($v['amount_player_3_banker'] > 0){
$winTotal += round($v['amount_player_3_banker'] * $userInfo['price_n0_n6'],2) ;
$rebatePlayer3 += $v['amount_player_3_banker'];
}
if($v['amount_player_3_banker_times'] > 0){
if(0 <= $data['result_banker'] && $data['result_banker'] < 7){
$winTotal += round($v['amount_player_3_banker_times'] * $userInfo['price_n0_n6'],2);
}elseif(7 <= $data['result_banker'] && $data['result_banker'] <= 9){
$winTotal += round($v['amount_player_3_banker_times'] * $userInfo['price_n7_n9'],2);
$timesPlayer3 = $userInfo['price_n7_n9'];
}elseif($data['result_banker'] == 10){
$winTotal += round($v['amount_player_3_banker_times'] * $userInfo['price_nn'],2);
$timesPlayer3 = $userInfo['price_nn'];
}elseif($data['result_banker'] == 11){
$winTotal += round($v['amount_player_3_banker_times'] * $userInfo['price_5n'],2);
$timesPlayer3 = $userInfo['price_5n'];
}
$rebatePlayer3 += $v['amount_player_3_banker_times'];
}
if($v['amount_player_3'] > 0){
$winTotal -= $v['amount_player_3'];
$rebate += $v['amount_player_3'];
$rebatePlayer3 -= $v['amount_player_3'];
}
if($v['amount_player_3_times'] > 0){
if(0 <= $data['result_banker'] && $data['result_banker'] < 7){
$winTotal -= $v['amount_player_3_times'];
$rebate += $v['amount_player_3_times'];
$rebatePlayer3 -= $v['amount_player_3_times'];
}elseif(7 <= $data['result_banker'] && $data['result_banker'] <= 9){
$winTotal -= $v['amount_player_3_times'] * 2;
$winTotalActual -= $v['amount_player_3_times'] * 2;
$rebate += $v['amount_player_3_times'] * 2;
$rebatePlayer3 -= $v['amount_player_3_times'] * 2;
}elseif($data['result_banker'] == 10){
$winTotal -= $v['amount_player_3_times'] * 3;
$winTotalActual -= $v['amount_player_3_times'] * 3;
$rebate += $v['amount_player_3_times'] * 3;
$rebatePlayer3 -= $v['amount_player_3_times'] * 3;
}elseif($data['result_banker'] == 11){
$winTotal -= $v['amount_player_3_times'] * 5;
$winTotalActual -= $v['amount_player_3_times'] * 5;
$rebate += $v['amount_player_3_times'] * 5;
$rebatePlayer3 -= $v['amount_player_3_times'] * 5;
}
}
}
// 双边洗码
if($userInfo['type_xima'] == 1){
$rebate = abs($rebatePlayer1) + abs($rebatePlayer2) + abs($rebatePlayer3);
}
//计算庄家输赢
if($numberTabInfo['rob_banker_username']){
if($userInfo['is_sw'] == 0){
$bankerWinTotal = $winTotalActual + $bankerWinTotal;
}
}
$v['position_first'] = $numberTabInfo['position_first'];
$betInfoItem = array_merge($v,$data);
$betInfoItem['times_player_1'] = $timesPlayer1;
$betInfoItem['times_player_2'] = $timesPlayer2;
$betInfoItem['times_player_3'] = $timesPlayer3;
$res = Bet::openingBet($tableInfo,$betInfoItem,$userInfo,$numberTabInfo,$amount,$winTotal,$rebate,$withholdAmount);
if ($res['status']){
$tableUser = app('swoole.table.user');
$userSession = $tableUser->get((string) $v['user_id']);
if ($userSession && is_array($userSession)){
$ws->setSender(0)->to($userSession['fd'])->emit('opening',[
'status' => true,
'table_id' => $tableInfo['id'],
'round' => [
'money' => $res['money'],
'win_total' => $winTotal,
'previous_number_tab_id' => $v['number_tab_id']
]
]);
}
}
}
/**
* 计算抢庄
*/
if($numberTabInfo['rob_banker_id'] > 0){
$userInfo = User::get(intval($numberTabInfo['rob_banker_id']));
//更新user表余额
$winTotal = to_number($bankerWinTotal);
if($winTotal > 0){
$winTotal = $winTotal * 0.94;
}
$amount = 0;
$rebate = abs($bankerWinTotal);
$bankerBetInfo = array_merge($bankerBetInfo,$data);
$res = Bet::openingBet($tableInfo,$bankerBetInfo,$userInfo,$numberTabInfo,$amount,$winTotal,$rebate);
if ($res['status']){
$tableUser = app('swoole.table.user');
$userSession = $tableUser->get((string) $userInfo['id']);
if ($userSession && is_array($userSession)){
$ws->setSender(0)->to($userSession['fd'])->emit('opening',[
'status' => true,
'table_id' => $tableInfo['id'],
'round' => [
'money' => $res['money'],
'previous_number_tab_id' => $bankerBetInfo['number_tab_id']
]
]);
}
}
}
}
}