add
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use app\models\process\NumberTab;
|
||||
use app\models\user\User;
|
||||
|
||||
/**
|
||||
* TODO CancelBet处理类
|
||||
* Class CancelBetService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class CancelBetService
|
||||
{
|
||||
/**
|
||||
* TODO 处理cancelBet
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return array
|
||||
*/
|
||||
public static function cancelBet(array $event, array $tableInfo): array{
|
||||
$numberTabId = intval($event['number_tab_id']);
|
||||
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
|
||||
if (!$numberTabInfo || $numberTabId != $numberTabInfo['id']) return ['status' => false, 'msg' => 'cannot_cancel_bet'];
|
||||
$time = time();
|
||||
if ($numberTabInfo['bet_status'] != 1 || $time > ($numberTabInfo['bet_start_time'] + $tableInfo['wait_time'])) return ['status' => false, 'msg' => 'cannot_cancel_bet'];
|
||||
$userInfo = User::get(intval($event['user_id']));
|
||||
if (!$userInfo) return ['status' => false, 'msg' => 'cannot_cancel_bet'];
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
if(!$prevBetInfo) return ['status' => false, 'msg' => 'not_user_bet'];
|
||||
return Bet::cancelBet($tableInfo,$numberTabInfo,$userInfo,$prevBetInfo);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToBetBaccaratService
|
||||
* Class ToBetBaccaratService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class ToBetBaccaratService
|
||||
{
|
||||
/**
|
||||
* TODO 处理toBetBaccarat
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toBetBaccarat(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$baccaratType = intval($event['baccarat_type']);
|
||||
$data = array();
|
||||
$data['banker_amount'] = isset($event['banker_amount']) && intval($event['banker_amount']) > 0 ? intval($event['banker_amount']) : 0;
|
||||
$data['player_amount'] = isset($event['player_amount']) && intval($event['player_amount']) > 0 ? intval($event['player_amount']) : 0;
|
||||
$data['tie_amount'] = isset($event['tie_amount']) && intval($event['tie_amount']) > 0 ? intval($event['tie_amount']) : 0;
|
||||
$data['banker_pair_amount'] = isset($event['banker_pair_amount']) && intval($event['banker_pair_amount']) > 0 ? intval($event['banker_pair_amount']) : 0;
|
||||
$data['player_pair_amount'] = isset($event['player_pair_amount']) && intval($event['player_pair_amount']) > 0 ? intval($event['player_pair_amount']) : 0;
|
||||
$data['luck_six_amount'] = isset($event['luck_six_amount']) && intval($event['luck_six_amount']) > 0 ? intval($event['luck_six_amount']) : 0;
|
||||
$data['big_amount'] = isset($event['big_amount']) && intval($event['big_amount']) > 0 ? intval($event['big_amount']) : 0;
|
||||
$data['small_amount'] = isset($event['small_amount']) && intval($event['small_amount']) > 0 ? intval($event['small_amount']) : 0;
|
||||
$seat_num = isset($event['seat_num']) && intval($event['seat_num']) > 0 ? intval($event['seat_num']) : 0;
|
||||
$time = time();
|
||||
$toBetCheck = ToBetCommonService::toBetCheck($tableInfo,$event,$data);
|
||||
if ($toBetCheck['status'] == false){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => $toBetCheck['msg']]);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
$numberTabInfo = $toBetCheck['numberTabInfo'];
|
||||
$userInfo = $toBetCheck['userInfo'];
|
||||
$amount = array_sum($data);
|
||||
|
||||
/***** User Limit Start *****/
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
$betTotalAmount = [];
|
||||
if($prevBetInfo){
|
||||
$betTotalAmount['banker_amount'] = $prevBetInfo['banker_amount'] + $data['banker_amount'];
|
||||
$betTotalAmount['player_amount'] = $prevBetInfo['player_amount'] + $data['player_amount'];
|
||||
$betTotalAmount['tie_amount'] = $prevBetInfo['tie_amount'] + $data['tie_amount'];
|
||||
$betTotalAmount['banker_pair_amount'] = $prevBetInfo['banker_pair_amount'] + $data['banker_pair_amount'];
|
||||
$betTotalAmount['player_pair_amount'] = $prevBetInfo['player_pair_amount'] + $data['player_pair_amount'];
|
||||
$betTotalAmount['luck_six_amount'] = $prevBetInfo['luck_six_amount'] + $data['luck_six_amount'];
|
||||
$betTotalAmount['big_amount'] = $prevBetInfo['big_amount'] + $data['big_amount'];
|
||||
$betTotalAmount['small_amount'] = $prevBetInfo['small_amount'] + $data['small_amount'];
|
||||
}else{
|
||||
$betTotalAmount = $data;
|
||||
}
|
||||
foreach ($betTotalAmount AS $value){
|
||||
if ($value > $userInfo['limit_high']){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if ($value > 0 && $value < $userInfo['limit_low']){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
}
|
||||
/***** User Limit End *****/
|
||||
|
||||
/***** Table Limit Start *****/
|
||||
$limitMoneyArray = explode('-',$tableInfo['limit_money']);
|
||||
$limitMoneyTieArray = explode('-',$tableInfo['limit_money_tie']);
|
||||
$limitMoneyPairArray = explode('-',$tableInfo['limit_money_pair']);
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
if($prevBetInfo){
|
||||
$totalBankerAmount = $prevBetInfo['banker_amount'] + $data['banker_amount'];
|
||||
$totalPlayerAmount = $prevBetInfo['player_amount'] + $data['player_amount'];
|
||||
$totalTieAmount = $prevBetInfo['tie_amount'] + $data['tie_amount'];
|
||||
$totalBPAmount = $prevBetInfo['banker_pair_amount'] + $data['banker_pair_amount'];
|
||||
$totalPPAmount = $prevBetInfo['player_pair_amount'] + $data['player_pair_amount'];
|
||||
}else{
|
||||
$totalBankerAmount = $data['banker_amount'];
|
||||
$totalPlayerAmount = $data['player_amount'];
|
||||
$totalTieAmount = $data['tie_amount'];
|
||||
$totalBPAmount = $data['banker_pair_amount'];
|
||||
$totalPPAmount = $data['player_pair_amount'];
|
||||
}
|
||||
$curNumberTabBankerAmount = $numberTabInfo['banker_amount'] + $data['banker_amount'];
|
||||
$curNumberTabPlayerAmount = $numberTabInfo['player_amount'] + $data['player_amount'];
|
||||
$curNumberTabTieAmount = $numberTabInfo['tie_amount'] + $data['tie_amount'];
|
||||
$curNumberTabBPAmount = $numberTabInfo['banker_pair_amount'] + $data['banker_pair_amount'];
|
||||
$curNumberTabPPAmount = $numberTabInfo['player_pair_amount'] + $data['player_pair_amount'];
|
||||
|
||||
//对冲
|
||||
// $difference = abs(round(($curNumberTabBankerAmount - $curNumberTabPlayerAmount),2));
|
||||
// if($difference > $limitMoneyArray[1] || $curNumberTabTieAmount > $limitMoneyTieArray[1] || $curNumberTabBPAmount > $limitMoneyPairArray[1] || $curNumberTabPPAmount > $limitMoneyPairArray[1]){
|
||||
// $ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
// SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
// return;
|
||||
// }
|
||||
// 桌台
|
||||
if($totalBankerAmount > $limitMoneyArray[1] || $totalPlayerAmount > $limitMoneyArray[1] || $totalTieAmount > $limitMoneyTieArray[1] || $totalBPAmount > $limitMoneyPairArray[1] || $totalPPAmount > $limitMoneyPairArray[1]){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if(($totalBankerAmount > 0 && $totalBankerAmount < $limitMoneyArray[0]) || ($totalPlayerAmount > 0 && $totalPlayerAmount < $limitMoneyArray[0]) || ($totalTieAmount > 0 && $totalTieAmount < $limitMoneyTieArray[0]) || ($totalBPAmount > 0 && $totalBPAmount < $limitMoneyPairArray[0]) || ($totalPPAmount > 0 && $totalPPAmount < $limitMoneyPairArray[0])){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
|
||||
//如果桌子设置了单口最高下注,则所有的下注不能超过桌子单口下注限红
|
||||
if(($tableInfo['limit_money_total'] > 0 && $curNumberTabBankerAmount > $tableInfo['limit_money_total']) || ($tableInfo['limit_money_total'] > 0 && $curNumberTabPlayerAmount > $tableInfo['limit_money_total']) || ($tableInfo['limit_money_tie_total'] > 0 && $curNumberTabTieAmount > $tableInfo['limit_money_tie_total']) || ($tableInfo['limit_money_pair_total'] > 0 && $curNumberTabBPAmount > $tableInfo['limit_money_pair_total']) || ($tableInfo['limit_money_pair_total'] > 0 && $curNumberTabPPAmount > $tableInfo['limit_money_pair_total'])){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
|
||||
/***** Table Limit End *****/
|
||||
$res = Bet::toBet($tableInfo,$userInfo,$numberTabInfo,$prevBetInfo,$data,$seat_num,$betTotalAmount,$time,$baccaratType);
|
||||
if($res){
|
||||
$ws->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'user_id' => $userInfo['id'], 'manager_id' => $userInfo['manager_id'] ,'bet_amount_msg' => $betTotalAmount, 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
if($userInfo['bet_type'] == 2){
|
||||
$tableManager = app('swoole.table.manager');
|
||||
$managerSession = $tableManager->get((string) $userInfo['manager_id']);
|
||||
if ($managerSession && is_array($managerSession)){
|
||||
$ws->setSender(0)->to($managerSession['fd'])->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'user_id' => $userInfo['id'], 'manager_id' => $userInfo['manager_id'] ,'bet_amount_msg' => $betTotalAmount, 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
}
|
||||
}
|
||||
$round = array(
|
||||
'banker_amount' => intval($numberTabInfo['banker_amount'] + $data['banker_amount']),
|
||||
'player_amount' => intval($numberTabInfo['player_amount'] + $data['player_amount']),
|
||||
'tie_amount' => intval($numberTabInfo['tie_amount'] + $data['tie_amount']),
|
||||
'banker_pair_amount' => intval($numberTabInfo['banker_pair_amount'] + $data['banker_pair_amount']),
|
||||
'player_pair_amount' => intval($numberTabInfo['player_pair_amount'] + $data['player_pair_amount']),
|
||||
'luck_six_amount' => intval($numberTabInfo['luck_six_amount'] + $data['luck_six_amount']),
|
||||
'big_amount' => intval($numberTabInfo['big_amount'] + $data['big_amount']),
|
||||
'small_amount' => intval($numberTabInfo['small_amount'] + $data['small_amount']),
|
||||
'amount_item' => array(
|
||||
'banker_amount' => intval($data['banker_amount']),
|
||||
'player_amount' => intval($data['player_amount']),
|
||||
'tie_amount' => intval($data['tie_amount']),
|
||||
'banker_pair_amount' => intval($data['banker_pair_amount']),
|
||||
'player_pair_amount' => intval($data['player_pair_amount']),
|
||||
'luck_six_amount' => intval($data['luck_six_amount']),
|
||||
'big_amount' => intval($data['big_amount']),
|
||||
'small_amount' => intval($data['small_amount']),
|
||||
'user_id' => $userInfo['id'],
|
||||
),
|
||||
);
|
||||
$ws->to(SocketSession::HOUSE_NAME)->emit('allBetAmount',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
|
||||
}else{
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_bet_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use app\models\process\NumberTab;
|
||||
use app\models\user\User;
|
||||
use app\models\user\Session;
|
||||
|
||||
class ToBetCommonService
|
||||
{
|
||||
/**
|
||||
* TODO toBet检验
|
||||
* @param array $tableInfo 桌子信息
|
||||
* @param array $event socket属性
|
||||
* @param array $data 下注信息
|
||||
* @return array
|
||||
*/
|
||||
public static function toBetCheck(array $tableInfo, array $event, array $data): array
|
||||
{
|
||||
/** 通用检验重复部分开始 */
|
||||
$amount = array_sum($data);
|
||||
if ($amount == 0){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_6'];
|
||||
}
|
||||
$numberTabId = isset($event['number_tab_id']) && intval($event['number_tab_id']) > 0 ? intval($event['number_tab_id']) : 0;
|
||||
$userId = isset($event['user_id']) && intval($event['user_id']) > 0 ? intval($event['user_id']) : 0;
|
||||
$userInfo = User::get(['id' => $userId, 'status' => 1, 'is_delete' => 0]);
|
||||
if (!$userInfo) return ['status' => false, 'msg' => 'to_bet_fail_2'];
|
||||
if($userInfo['bet_type'] == 2){
|
||||
$session_id = $userInfo['api_token'];
|
||||
$sessionInfo = Session::get(['session_id' => $session_id]);
|
||||
if(!$sessionInfo){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_9'];
|
||||
}
|
||||
if(!$sessionInfo['server_status']){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_10'];
|
||||
}
|
||||
}
|
||||
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
|
||||
if ($numberTabInfo['id'] != $numberTabId){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_5'];
|
||||
}
|
||||
if ($numberTabInfo['bet_status'] != 1 || time() > ($numberTabInfo['bet_start_time'] + $tableInfo['wait_time'])){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_4'];
|
||||
}
|
||||
// 超过50局幸运6禁止下注
|
||||
if ($numberTabInfo['number'] > 50 && isset($event['luck_six_amount']) && $event['luck_six_amount'] > 0){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_7'];
|
||||
}
|
||||
// 超过30局大小禁止下注
|
||||
if ($numberTabInfo['number'] > 30 && isset($event['big_amount']) && $event['big_amount'] > 0){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_8'];
|
||||
}
|
||||
if ($numberTabInfo['number'] > 30 && isset($event['small_amount']) && $event['small_amount'] > 0){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_8'];
|
||||
}
|
||||
if($userInfo['win_limit'] > 0){
|
||||
$winTotalToday = Bet::getWinTotalToday($userInfo['id']);
|
||||
if($winTotalToday >= $userInfo['win_limit']){
|
||||
return ['status' => false, 'msg' => 'win_limit_tip'];
|
||||
}
|
||||
}
|
||||
if ($userInfo['money'] < $amount){
|
||||
return ['status' => false, 'msg' => 'to_bet_fail_1'];
|
||||
}
|
||||
return ['status' => true, 'numberTabInfo' => $numberTabInfo, 'userInfo' => $userInfo];
|
||||
/** 通用检验重复部分结束 */
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use freedom\utils\DiceUtil;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToBetDiceService
|
||||
* Class ToBetDiceService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
|
||||
class ToBetDiceService{
|
||||
|
||||
/**
|
||||
* TODO 处理骰宝下注
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toBetDice(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$data = array();
|
||||
foreach ($event['amount'] as $k => $v){
|
||||
if (intval($v) > 0){
|
||||
$data[$k] = intval($v);
|
||||
}
|
||||
}
|
||||
$seat_num = isset($event['seat_num']) && intval($event['seat_num']) > 0 ? intval($event['seat_num']) : 0;
|
||||
$time = time();
|
||||
$toBetCheck = ToBetCommonService::toBetCheck($tableInfo,$event,$data);
|
||||
if ($toBetCheck['status'] == false){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => $toBetCheck['msg']]);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
$numberTabInfo = $toBetCheck['numberTabInfo'];
|
||||
$userInfo = $toBetCheck['userInfo'];
|
||||
$amount = array_sum($data);
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
if($prevBetInfo){
|
||||
$beforeAmount = string_to_array($prevBetInfo['dice_amount']);
|
||||
$betTotalAmount = DiceUtil::amountInc($beforeAmount, $data);
|
||||
}else{
|
||||
$betTotalAmount = $data;
|
||||
}
|
||||
|
||||
/***** User Limit Start *****/
|
||||
$totalAmount = array_sum($betTotalAmount);
|
||||
if ($totalAmount > $userInfo['limit_high']){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if ($totalAmount > 0 && $totalAmount < $userInfo['limit_low']){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
/***** User Limit End *****/
|
||||
|
||||
/***** Table Limit Start *****/
|
||||
$totalAmount = array_sum($betTotalAmount);
|
||||
$limitMoneyArray = explode('-',$tableInfo['limit_money']);
|
||||
if($totalAmount > $limitMoneyArray[1]){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if(($totalAmount > 0 && $totalAmount < $limitMoneyArray[0]) ){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
|
||||
//如果桌子设置了单口最高下注,则所有的下注不能超过桌子单口下注限红
|
||||
if(($tableInfo['limit_money_total'] > 0 && $totalAmount > $tableInfo['limit_money_total'])){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
|
||||
/***** Table Limit End *****/
|
||||
|
||||
|
||||
|
||||
$res = Bet::toBet($tableInfo,$userInfo,$numberTabInfo,$prevBetInfo,$data,$seat_num,$betTotalAmount,$time,0);
|
||||
$numberTabAmount = string_to_array($numberTabInfo['dice_amount']);
|
||||
if($res){
|
||||
$ws->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'bet_amount_msg' => $betTotalAmount, 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
$totalAmountArray = DiceUtil::amountInc($numberTabAmount, $data);
|
||||
$round = [
|
||||
'amount_total' => $totalAmountArray,
|
||||
'amount_item' => $data
|
||||
];
|
||||
$ws->to(SocketSession::HOUSE_NAME)->emit('allBetAmount',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
|
||||
}else{
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_bet_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToBetDtService
|
||||
* Class ToBetDtService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class ToBetDtService
|
||||
{
|
||||
/**
|
||||
* TODO 处理toBetDt
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toBetDt(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$data = array();
|
||||
$data['banker_amount'] = isset($event['banker_amount']) && intval($event['banker_amount']) > 0 ? intval($event['banker_amount']) : 0;
|
||||
$data['player_amount'] = isset($event['player_amount']) && intval($event['player_amount']) > 0 ? intval($event['player_amount']) : 0;
|
||||
$data['tie_amount'] = isset($event['tie_amount']) && intval($event['tie_amount']) > 0 ? intval($event['tie_amount']) : 0;
|
||||
$seat_num = isset($event['seat_num']) && intval($event['seat_num']) > 0 ? intval($event['seat_num']) : 0;
|
||||
|
||||
$time = time();
|
||||
$toBetCheck = ToBetCommonService::toBetCheck($tableInfo,$event,$data);
|
||||
if ($toBetCheck['status'] == false){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => $toBetCheck['msg']]);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
$numberTabInfo = $toBetCheck['numberTabInfo'];
|
||||
$userInfo = $toBetCheck['userInfo'];
|
||||
$amount = array_sum($data);
|
||||
|
||||
/***** User Limit Start *****/
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
$betTotalAmount = [];
|
||||
if($prevBetInfo){
|
||||
$betTotalAmount['banker_amount'] = $prevBetInfo['banker_amount'] + $data['banker_amount'];
|
||||
$betTotalAmount['player_amount'] = $prevBetInfo['player_amount'] + $data['player_amount'];
|
||||
$betTotalAmount['tie_amount'] = $prevBetInfo['tie_amount'] + $data['tie_amount'];
|
||||
}else{
|
||||
$betTotalAmount = $data;
|
||||
}
|
||||
if($betTotalAmount['banker_amount'] > $userInfo['limit_high'] || $betTotalAmount['player_amount'] > $userInfo['limit_high'] || $betTotalAmount['tie_amount'] > $userInfo['limit_high_tie']){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if(($betTotalAmount['banker_amount'] > 0 && $betTotalAmount['banker_amount'] < $userInfo['limit_low']) || ($betTotalAmount['player_amount'] > 0 && $betTotalAmount['player_amount'] < $userInfo['limit_low']) || ($betTotalAmount['tie_amount'] > 0 && $betTotalAmount['tie_amount'] < $userInfo['limit_low_tie'])){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
/***** User Limit End *****/
|
||||
|
||||
/***** Table Limit Start *****/
|
||||
$limitMoneyArray = explode('-',$tableInfo['limit_money']);
|
||||
$limitMoneyTieArray = explode('-',$tableInfo['limit_money_tie']);
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
if($prevBetInfo){
|
||||
$totalBankerAmount = $prevBetInfo['banker_amount'] + $data['banker_amount'];
|
||||
$totalPlayerAmount = $prevBetInfo['player_amount'] + $data['player_amount'];
|
||||
$totalTieAmount = $prevBetInfo['tie_amount'] + $data['tie_amount'];
|
||||
}else{
|
||||
$totalBankerAmount = $data['banker_amount'];
|
||||
$totalPlayerAmount = $data['player_amount'];
|
||||
$totalTieAmount = $data['tie_amount'];
|
||||
}
|
||||
$curNumberTabBankerAmount = $numberTabInfo['banker_amount'] + $data['banker_amount'];
|
||||
$curNumberTabPlayerAmount = $numberTabInfo['player_amount'] + $data['player_amount'];
|
||||
$curNumberTabTieAmount = $numberTabInfo['tie_amount'] + $data['tie_amount'];
|
||||
//
|
||||
// $difference = abs(round(($curNumberTabBankerAmount - $curNumberTabPlayerAmount),2));
|
||||
// if($difference > $limitMoneyArray[1] || $curNumberTabTieAmount > $limitMoneyTieArray[1]){
|
||||
// $ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
// SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
// return;
|
||||
// }
|
||||
|
||||
if($totalBankerAmount > $limitMoneyArray[1] || $totalPlayerAmount > $limitMoneyArray[1] || $totalTieAmount > $limitMoneyTieArray[1]){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if(($totalBankerAmount > 0 && $totalBankerAmount < $limitMoneyArray[0]) || ($totalPlayerAmount > 0 && $totalPlayerAmount < $limitMoneyArray[0]) || ($totalTieAmount > 0 && $totalTieAmount < $limitMoneyTieArray[0])){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
|
||||
//如果桌子设置了单口最高下注,则所有的下注不能超过桌子单口下注限红
|
||||
if(($tableInfo['limit_money_total'] > 0 && $curNumberTabBankerAmount > $tableInfo['limit_money_total']) || ($tableInfo['limit_money_total'] > 0 && $curNumberTabPlayerAmount > $tableInfo['limit_money_total']) || ($tableInfo['limit_money_tie_total'] > 0 && $curNumberTabTieAmount > $tableInfo['limit_money_tie_total']) ){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
/***** Table Limit End *****/
|
||||
|
||||
$res = Bet::toBet($tableInfo,$userInfo,$numberTabInfo,$prevBetInfo,$data,$seat_num,$betTotalAmount,$time,0);
|
||||
if($res){
|
||||
$ws->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'bet_amount_msg' => $betTotalAmount, 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
if($userInfo['bet_type'] == 2){
|
||||
$tableManager = app('swoole.table.manager');
|
||||
$managerSession = $tableManager->get((string) $userInfo['manager_id']);
|
||||
if ($managerSession && is_array($managerSession)){
|
||||
$ws->setSender(0)->to($managerSession['fd'])->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'user_id' => $userInfo['id'], 'manager_id' => $userInfo['manager_id'] ,'bet_amount_msg' => $betTotalAmount, 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
}
|
||||
}
|
||||
$round = array(
|
||||
'banker_amount' => intval($numberTabInfo['banker_amount'] + $data['banker_amount']),
|
||||
'player_amount' => intval($numberTabInfo['player_amount'] + $data['player_amount']),
|
||||
'tie_amount' => intval($numberTabInfo['tie_amount'] + $data['tie_amount']),
|
||||
'amount_item' => array(
|
||||
'banker_amount' => intval($data['banker_amount']),
|
||||
'player_amount' => intval($data['player_amount']),
|
||||
'tie_amount' => intval($data['tie_amount']),
|
||||
'user_id' => $userInfo['id'],
|
||||
),
|
||||
);
|
||||
$ws->to(SocketSession::HOUSE_NAME)->emit('allBetAmount',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
|
||||
}else{
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_bet_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToBetNnService
|
||||
* Class ToBetNnService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class ToBetNnService
|
||||
{
|
||||
/**
|
||||
* TODO 处理toBetNn
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toBetNn(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$data = array();
|
||||
|
||||
$data['amount_player_1'] = isset($event['amount_player_1']) && intval($event['amount_player_1']) > 0 ? intval($event['amount_player_1']) : 0;
|
||||
$data['amount_player_1_times'] = isset($event['amount_player_1_times']) && intval($event['amount_player_1_times']) > 0 ? intval($event['amount_player_1_times']) : 0;
|
||||
$data['withhold_player_1_times'] = $data['amount_player_1_times'] * 4;
|
||||
$data['amount_player_1_banker'] = isset($event['amount_player_1_banker']) && intval($event['amount_player_1_banker']) > 0 ? intval($event['amount_player_1_banker']) : 0;
|
||||
$data['amount_player_1_banker_times'] = isset($event['amount_player_1_banker_times']) && intval($event['amount_player_1_banker_times']) > 0 ? intval($event['amount_player_1_banker_times']) : 0;
|
||||
$data['withhold_player_1_banker_times'] = $data['amount_player_1_banker_times'] * 4;
|
||||
|
||||
$data['amount_player_2'] = isset($event['amount_player_2']) && intval($event['amount_player_2']) > 0 ? intval($event['amount_player_2']) : 0;
|
||||
$data['amount_player_2_times'] = isset($event['amount_player_2_times']) && intval($event['amount_player_2_times']) > 0 ? intval($event['amount_player_2_times']) : 0;
|
||||
$data['withhold_player_2_times'] = $data['amount_player_2_times'] * 4;
|
||||
$data['amount_player_2_banker'] = isset($event['amount_player_2_banker']) && intval($event['amount_player_2_banker']) > 0 ? intval($event['amount_player_2_banker']) : 0;
|
||||
$data['amount_player_2_banker_times'] = isset($event['amount_player_2_banker_times']) && intval($event['amount_player_2_banker_times']) > 0 ? intval($event['amount_player_2_banker_times']) : 0;
|
||||
$data['withhold_player_2_banker_times'] = $data['amount_player_2_banker_times'] * 4;
|
||||
|
||||
$data['amount_player_3'] = isset($event['amount_player_3']) && intval($event['amount_player_3']) > 0 ? intval($event['amount_player_3']) : 0;
|
||||
$data['amount_player_3_times'] = isset($event['amount_player_3_times']) && intval($event['amount_player_3_times']) > 0 ? intval($event['amount_player_3_times']) : 0;
|
||||
$data['withhold_player_3_times'] = $data['amount_player_3_times'] * 4;
|
||||
$data['amount_player_3_banker'] = isset($event['amount_player_3_banker']) && intval($event['amount_player_3_banker']) > 0 ? intval($event['amount_player_3_banker']) : 0;
|
||||
$data['amount_player_3_banker_times'] = isset($event['amount_player_3_banker_times']) && intval($event['amount_player_3_banker_times']) > 0 ? intval($event['amount_player_3_banker_times']) : 0;
|
||||
$data['withhold_player_3_banker_times'] = $data['amount_player_3_banker_times'] * 4;
|
||||
$seat_num = isset($event['seat_num']) && intval($event['seat_num']) > 0 ? intval($event['seat_num']) : 0;
|
||||
|
||||
$time = time();
|
||||
$toBetCheck = ToBetCommonService::toBetCheck($tableInfo,$event,$data);
|
||||
if ($toBetCheck['status'] == false){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => $toBetCheck['msg']]);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
$numberTabInfo = $toBetCheck['numberTabInfo'];
|
||||
$userInfo = $toBetCheck['userInfo'];
|
||||
$amount = array_sum($data);
|
||||
|
||||
/***** User Limit Start *****/
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
$betTotalAmount = [];
|
||||
if($prevBetInfo){
|
||||
$betTotalAmount['amount_player_1'] = $prevBetInfo['amount_player_1'] + $data['amount_player_1'];
|
||||
$betTotalAmount['amount_player_2'] = $prevBetInfo['amount_player_2'] + $data['amount_player_2'];
|
||||
$betTotalAmount['amount_player_3'] = $prevBetInfo['amount_player_3'] + $data['amount_player_3'];
|
||||
|
||||
$betTotalAmount['amount_player_1_times'] = $prevBetInfo['amount_player_1_times'] + $data['amount_player_1_times'];
|
||||
$betTotalAmount['amount_player_2_times'] = $prevBetInfo['amount_player_2_times'] + $data['amount_player_2_times'];
|
||||
$betTotalAmount['amount_player_3_times'] = $prevBetInfo['amount_player_3_times'] + $data['amount_player_3_times'];
|
||||
|
||||
$betTotalAmount['withhold_player_1_times'] = $prevBetInfo['withhold_player_1_times'] + $data['withhold_player_1_times'];
|
||||
$betTotalAmount['withhold_player_2_times'] = $prevBetInfo['withhold_player_2_times'] + $data['withhold_player_2_times'];
|
||||
$betTotalAmount['withhold_player_3_times'] = $prevBetInfo['withhold_player_3_times'] + $data['withhold_player_3_times'];
|
||||
|
||||
$betTotalAmount['amount_player_1_banker'] = $prevBetInfo['amount_player_1_banker'] + $data['amount_player_1_banker'];
|
||||
$betTotalAmount['amount_player_2_banker'] = $prevBetInfo['amount_player_2_banker'] + $data['amount_player_2_banker'];
|
||||
$betTotalAmount['amount_player_3_banker'] = $prevBetInfo['amount_player_3_banker'] + $data['amount_player_3_banker'];
|
||||
|
||||
$betTotalAmount['amount_player_1_banker_times'] = $prevBetInfo['amount_player_1_banker_times'] + $data['amount_player_1_banker_times'];
|
||||
$betTotalAmount['amount_player_2_banker_times'] = $prevBetInfo['amount_player_2_banker_times'] + $data['amount_player_2_banker_times'];
|
||||
$betTotalAmount['amount_player_3_banker_times'] = $prevBetInfo['amount_player_3_banker_times'] + $data['amount_player_3_banker_times'];
|
||||
|
||||
$betTotalAmount['withhold_player_1_banker_times'] = $prevBetInfo['withhold_player_1_banker_times'] + $data['withhold_player_1_banker_times'];
|
||||
$betTotalAmount['withhold_player_2_banker_times'] = $prevBetInfo['withhold_player_2_banker_times'] + $data['withhold_player_2_banker_times'];
|
||||
$betTotalAmount['withhold_player_3_banker_times'] = $prevBetInfo['withhold_player_3_banker_times'] + $data['withhold_player_3_banker_times'];
|
||||
}else{
|
||||
$betTotalAmount = $data;
|
||||
}
|
||||
$withholdKeys = [
|
||||
'withhold_player_1_times',
|
||||
'withhold_player_2_times',
|
||||
'withhold_player_3_times',
|
||||
'withhold_player_1_banker_times',
|
||||
'withhold_player_2_banker_times',
|
||||
'withhold_player_3_banker_times',
|
||||
];
|
||||
foreach ($betTotalAmount AS $k => $v){
|
||||
if ($v > $userInfo['limit_high'] && !in_array($k,$withholdKeys)){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
}
|
||||
foreach ($betTotalAmount AS $k => $v){
|
||||
if ($v > 0 && $v < $userInfo['limit_low'] && !in_array($k,$withholdKeys)){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
}
|
||||
/***** User Limit End *****/
|
||||
|
||||
/***** Table Limit Start *****/
|
||||
$limitMoneyArray = explode('-',$tableInfo['limit_money']);
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
if($prevBetInfo){
|
||||
$total_player_1 = $prevBetInfo['amount_player_1'] + $data['amount_player_1'];
|
||||
$total_player_2 = $prevBetInfo['amount_player_2'] + $data['amount_player_2'];
|
||||
$total_player_3 = $prevBetInfo['amount_player_3'] + $data['amount_player_3'];
|
||||
|
||||
$total_player_1_times = $prevBetInfo['amount_player_1_times'] + $data['amount_player_1_times'];
|
||||
$total_player_2_times = $prevBetInfo['amount_player_2_times'] + $data['amount_player_2_times'];
|
||||
$total_player_3_times = $prevBetInfo['amount_player_3_times'] + $data['amount_player_3_times'];
|
||||
|
||||
$total_player_1_withhold = $prevBetInfo['withhold_player_1_times'] + $data['withhold_player_1_times'];
|
||||
$total_player_2_withhold = $prevBetInfo['withhold_player_2_times'] + $data['withhold_player_2_times'];
|
||||
$total_player_3_withhold = $prevBetInfo['withhold_player_3_times'] + $data['withhold_player_3_times'];
|
||||
|
||||
$total_player_1_banker = $prevBetInfo['amount_player_1_banker'] + $data['amount_player_1_banker'];
|
||||
$total_player_2_banker = $prevBetInfo['amount_player_2_banker'] + $data['amount_player_2_banker'];
|
||||
$total_player_3_banker = $prevBetInfo['amount_player_3_banker'] + $data['amount_player_3_banker'];
|
||||
|
||||
$total_player_1_banker_times = $prevBetInfo['amount_player_1_banker_times'] + $data['amount_player_1_banker_times'];
|
||||
$total_player_2_banker_times = $prevBetInfo['amount_player_2_banker_times'] + $data['amount_player_2_banker_times'];
|
||||
$total_player_3_banker_times = $prevBetInfo['amount_player_3_banker_times'] + $data['amount_player_3_banker_times'];
|
||||
|
||||
$total_player_1_banker_times_withhold = $prevBetInfo['withhold_player_1_banker_times'] + $data['withhold_player_1_banker_times'];
|
||||
$total_player_2_banker_times_withhold = $prevBetInfo['withhold_player_2_banker_times'] + $data['withhold_player_2_banker_times'];
|
||||
$total_player_3_banker_times_withhold = $prevBetInfo['withhold_player_3_banker_times'] + $data['withhold_player_3_banker_times'];
|
||||
|
||||
}else{
|
||||
$total_player_1 = $data['amount_player_1'];
|
||||
$total_player_2 = $data['amount_player_2'];
|
||||
$total_player_3 = $data['amount_player_3'];
|
||||
|
||||
$total_player_1_times = $data['amount_player_1_times'];
|
||||
$total_player_2_times = $data['amount_player_2_times'];
|
||||
$total_player_3_times = $data['amount_player_3_times'];
|
||||
|
||||
$total_player_1_withhold = $data['withhold_player_1_times'];
|
||||
$total_player_2_withhold = $data['withhold_player_2_times'];
|
||||
$total_player_3_withhold = $data['withhold_player_3_times'];
|
||||
|
||||
$total_player_1_banker = $data['amount_player_1_banker'];
|
||||
$total_player_2_banker = $data['amount_player_2_banker'];
|
||||
$total_player_3_banker = $data['amount_player_3_banker'];
|
||||
|
||||
$total_player_1_banker_times = $data['amount_player_1_banker_times'];
|
||||
$total_player_2_banker_times = $data['amount_player_2_banker_times'];
|
||||
$total_player_3_banker_times = $data['amount_player_3_banker_times'];
|
||||
|
||||
$total_player_1_banker_times_withhold = $data['withhold_player_1_banker_times'];
|
||||
$total_player_2_banker_times_withhold = $data['withhold_player_2_banker_times'];
|
||||
$total_player_3_banker_times_withhold = $data['withhold_player_3_banker_times'];
|
||||
}
|
||||
|
||||
if($total_player_1 > $limitMoneyArray[1] || $total_player_2 > $limitMoneyArray[1] || $total_player_3 > $limitMoneyArray[1] || $total_player_1_times > $limitMoneyArray[1] || $total_player_2_times > $limitMoneyArray[1] || $total_player_3_times > $limitMoneyArray[1] || $total_player_1_banker > $limitMoneyArray[1] || $total_player_2_banker > $limitMoneyArray[1] || $total_player_3_banker > $limitMoneyArray[1] || $total_player_1_banker_times > $limitMoneyArray[1] || $total_player_2_banker_times > $limitMoneyArray[1] || $total_player_3_banker_times > $limitMoneyArray[1] ){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if(($total_player_1 > 0 && $total_player_1 < $limitMoneyArray[0]) || ($total_player_2 > 0 && $total_player_2 < $limitMoneyArray[0]) || ($total_player_3 > 0 && $total_player_3 < $limitMoneyArray[0]) || ($total_player_1_times > 0 && $total_player_1_times < $limitMoneyArray[0]) || ($total_player_2_times > 0 && $total_player_2_times < $limitMoneyArray[0]) || ($total_player_3_times > 0 && $total_player_3_times < $limitMoneyArray[0]) || ($total_player_1_banker > 0 && $total_player_1_banker < $limitMoneyArray[0]) || ($total_player_2_banker > 0 && $total_player_2_banker < $limitMoneyArray[0]) || ($total_player_3_banker > 0 && $total_player_3_banker < $limitMoneyArray[0]) || ($total_player_1_banker_times > 0 && $total_player_1_banker_times < $limitMoneyArray[0]) || ($total_player_2_banker_times > 0 && $total_player_2_banker_times < $limitMoneyArray[0]) || ($total_player_3_banker_times > 0 && $total_player_3_banker_times < $limitMoneyArray[0])){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
/***** Table Limit End *****/
|
||||
|
||||
$res = Bet::toBet($tableInfo,$userInfo,$numberTabInfo,$prevBetInfo,$data,$seat_num,$betTotalAmount,$time,0);
|
||||
if($res){
|
||||
$ws->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'bet_amount_msg' => $betTotalAmount, 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
// 待确定是否推送即时彩池,现不推送
|
||||
}else{
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_bet_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use freedom\utils\RouletteUtil;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToBetRouletteService
|
||||
* Class ToBetRouletteService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
|
||||
class ToBetRouletteService{
|
||||
|
||||
/**
|
||||
* TODO 处理轮盘下注
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toBetRoulette(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$data = array();
|
||||
$event_amount = $event['amount'];
|
||||
$fieldName = 'roulette_'.$event['roulette_type'].'_amount';
|
||||
foreach ($event_amount as $k => $v){
|
||||
if (intval($v) > 0){
|
||||
$data[$k] = intval($v);
|
||||
}
|
||||
}
|
||||
$seat_num = isset($event['seat_num']) && intval($event['seat_num']) > 0 ? intval($event['seat_num']) : 0;
|
||||
|
||||
$time = time();
|
||||
$toBetCheck = ToBetCommonService::toBetCheck($tableInfo,$event,$data);
|
||||
if ($toBetCheck['status'] == false){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => $toBetCheck['msg']]);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
$numberTabInfo = $toBetCheck['numberTabInfo'];
|
||||
$userInfo = $toBetCheck['userInfo'];
|
||||
$amount = array_sum($data);
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
|
||||
if($prevBetInfo){
|
||||
$beforeAmount = string_to_array($prevBetInfo[$fieldName]);
|
||||
$betTotalAmount = RouletteUtil::amountInc($beforeAmount, $data);
|
||||
}else{
|
||||
$betTotalAmount = $data;
|
||||
}
|
||||
$res = Bet::toBet($tableInfo,$userInfo,$numberTabInfo,$prevBetInfo,$data,$seat_num,$betTotalAmount,$time,0,$fieldName);
|
||||
$numberTabAmount = string_to_array($numberTabInfo[$fieldName]);
|
||||
if($res){
|
||||
$ws->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'bet_amount_msg' => [$fieldName => $betTotalAmount], 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
$totalAmountArray = RouletteUtil::amountInc($numberTabAmount, $data);
|
||||
$round = [
|
||||
'amount_total' => $totalAmountArray,
|
||||
'amount_item' => $data
|
||||
];
|
||||
$ws->to(SocketSession::HOUSE_NAME)->emit('allBetAmount',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
|
||||
}else{
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_bet_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,190 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToBetTcService
|
||||
* Class ToBetTcService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class ToBetTcService
|
||||
{
|
||||
/**
|
||||
* TODO 处理toBetTc
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toBetTc(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$data = array();
|
||||
|
||||
$data['amount_player_1'] = isset($event['amount_player_1']) && intval($event['amount_player_1']) > 0 ? intval($event['amount_player_1']) : 0;
|
||||
$data['amount_player_1_times'] = isset($event['amount_player_1_times']) && intval($event['amount_player_1_times']) > 0 ? intval($event['amount_player_1_times']) : 0;
|
||||
$data['withhold_player_1_times'] = $data['amount_player_1_times'] * 19;
|
||||
$data['amount_player_1_banker'] = isset($event['amount_player_1_banker']) && intval($event['amount_player_1_banker']) > 0 ? intval($event['amount_player_1_banker']) : 0;
|
||||
$data['amount_player_1_banker_times'] = isset($event['amount_player_1_banker_times']) && intval($event['amount_player_1_banker_times']) > 0 ? intval($event['amount_player_1_banker_times']) : 0;
|
||||
$data['withhold_player_1_banker_times'] = $data['amount_player_1_banker_times'] * 19;
|
||||
|
||||
$data['amount_player_2'] = isset($event['amount_player_2']) && intval($event['amount_player_2']) > 0 ? intval($event['amount_player_2']) : 0;
|
||||
$data['amount_player_2_times'] = isset($event['amount_player_2_times']) && intval($event['amount_player_2_times']) > 0 ? intval($event['amount_player_2_times']) : 0;
|
||||
$data['withhold_player_2_times'] = $data['amount_player_2_times'] * 19;
|
||||
$data['amount_player_2_banker'] = isset($event['amount_player_2_banker']) && intval($event['amount_player_2_banker']) > 0 ? intval($event['amount_player_2_banker']) : 0;
|
||||
$data['amount_player_2_banker_times'] = isset($event['amount_player_2_banker_times']) && intval($event['amount_player_2_banker_times']) > 0 ? intval($event['amount_player_2_banker_times']) : 0;
|
||||
$data['withhold_player_2_banker_times'] = $data['amount_player_2_banker_times'] * 19;
|
||||
|
||||
$data['amount_player_3'] = isset($event['amount_player_3']) && intval($event['amount_player_3']) > 0 ? intval($event['amount_player_3']) : 0;
|
||||
$data['amount_player_3_times'] = isset($event['amount_player_3_times']) && intval($event['amount_player_3_times']) > 0 ? intval($event['amount_player_3_times']) : 0;
|
||||
$data['withhold_player_3_times'] = $data['amount_player_3_times'] * 19;
|
||||
$data['amount_player_3_banker'] = isset($event['amount_player_3_banker']) && intval($event['amount_player_3_banker']) > 0 ? intval($event['amount_player_3_banker']) : 0;
|
||||
$data['amount_player_3_banker_times'] = isset($event['amount_player_3_banker_times']) && intval($event['amount_player_3_banker_times']) > 0 ? intval($event['amount_player_3_banker_times']) : 0;
|
||||
$data['withhold_player_3_banker_times'] = $data['amount_player_3_banker_times'] * 19;
|
||||
|
||||
$seat_num = isset($event['seat_num']) && intval($event['seat_num']) > 0 ? intval($event['seat_num']) : 0;
|
||||
|
||||
$time = time();
|
||||
$toBetCheck = ToBetCommonService::toBetCheck($tableInfo,$event,$data);
|
||||
if ($toBetCheck['status'] == false){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => $toBetCheck['msg']]);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
$numberTabInfo = $toBetCheck['numberTabInfo'];
|
||||
$userInfo = $toBetCheck['userInfo'];
|
||||
$amount = array_sum($data);
|
||||
|
||||
/***** User Limit Start *****/
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
$betTotalAmount = [];
|
||||
if($prevBetInfo){
|
||||
$betTotalAmount['amount_player_1'] = $prevBetInfo['amount_player_1'] + $data['amount_player_1'];
|
||||
$betTotalAmount['amount_player_2'] = $prevBetInfo['amount_player_2'] + $data['amount_player_2'];
|
||||
$betTotalAmount['amount_player_3'] = $prevBetInfo['amount_player_3'] + $data['amount_player_3'];
|
||||
|
||||
$betTotalAmount['amount_player_1_times'] = $prevBetInfo['amount_player_1_times'] + $data['amount_player_1_times'];
|
||||
$betTotalAmount['amount_player_2_times'] = $prevBetInfo['amount_player_2_times'] + $data['amount_player_2_times'];
|
||||
$betTotalAmount['amount_player_3_times'] = $prevBetInfo['amount_player_3_times'] + $data['amount_player_3_times'];
|
||||
|
||||
$betTotalAmount['withhold_player_1_times'] = $prevBetInfo['withhold_player_1_times'] + $data['withhold_player_1_times'];
|
||||
$betTotalAmount['withhold_player_2_times'] = $prevBetInfo['withhold_player_2_times'] + $data['withhold_player_2_times'];
|
||||
$betTotalAmount['withhold_player_3_times'] = $prevBetInfo['withhold_player_3_times'] + $data['withhold_player_3_times'];
|
||||
|
||||
$betTotalAmount['amount_player_1_banker'] = $prevBetInfo['amount_player_1_banker'] + $data['amount_player_1_banker'];
|
||||
$betTotalAmount['amount_player_2_banker'] = $prevBetInfo['amount_player_2_banker'] + $data['amount_player_2_banker'];
|
||||
$betTotalAmount['amount_player_3_banker'] = $prevBetInfo['amount_player_3_banker'] + $data['amount_player_3_banker'];
|
||||
|
||||
$betTotalAmount['amount_player_1_banker_times'] = $prevBetInfo['amount_player_1_banker_times'] + $data['amount_player_1_banker_times'];
|
||||
$betTotalAmount['amount_player_2_banker_times'] = $prevBetInfo['amount_player_2_banker_times'] + $data['amount_player_2_banker_times'];
|
||||
$betTotalAmount['amount_player_3_banker_times'] = $prevBetInfo['amount_player_3_banker_times'] + $data['amount_player_3_banker_times'];
|
||||
|
||||
$betTotalAmount['withhold_player_1_banker_times'] = $prevBetInfo['withhold_player_1_banker_times'] + $data['withhold_player_1_banker_times'];
|
||||
$betTotalAmount['withhold_player_2_banker_times'] = $prevBetInfo['withhold_player_2_banker_times'] + $data['withhold_player_2_banker_times'];
|
||||
$betTotalAmount['withhold_player_3_banker_times'] = $prevBetInfo['withhold_player_3_banker_times'] + $data['withhold_player_3_banker_times'];
|
||||
}else{
|
||||
$betTotalAmount = $data;
|
||||
}
|
||||
$withholdKeys = [
|
||||
'withhold_player_1_times',
|
||||
'withhold_player_2_times',
|
||||
'withhold_player_3_times',
|
||||
'withhold_player_1_banker_times',
|
||||
'withhold_player_2_banker_times',
|
||||
'withhold_player_3_banker_times',
|
||||
];
|
||||
foreach ($betTotalAmount AS $k => $v){
|
||||
if ($v > $userInfo['limit_high'] && !in_array($k,$withholdKeys)){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
}
|
||||
foreach ($betTotalAmount AS $k => $v){
|
||||
if ($v > 0 && $v < $userInfo['limit_low'] && !in_array($k,$withholdKeys)){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
}
|
||||
/***** User Limit End *****/
|
||||
|
||||
/***** Table Limit Start *****/
|
||||
$limitMoneyArray = explode('-',$tableInfo['limit_money']);
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
if($prevBetInfo){
|
||||
$total_player_1 = $prevBetInfo['amount_player_1'] + $data['amount_player_1'];
|
||||
$total_player_2 = $prevBetInfo['amount_player_2'] + $data['amount_player_2'];
|
||||
$total_player_3 = $prevBetInfo['amount_player_3'] + $data['amount_player_3'];
|
||||
|
||||
$total_player_1_times = $prevBetInfo['amount_player_1_times'] + $data['amount_player_1_times'];
|
||||
$total_player_2_times = $prevBetInfo['amount_player_2_times'] + $data['amount_player_2_times'];
|
||||
$total_player_3_times = $prevBetInfo['amount_player_3_times'] + $data['amount_player_3_times'];
|
||||
|
||||
$total_player_1_withhold = $prevBetInfo['withhold_player_1_times'] + $data['withhold_player_1_times'];
|
||||
$total_player_2_withhold = $prevBetInfo['withhold_player_2_times'] + $data['withhold_player_2_times'];
|
||||
$total_player_3_withhold = $prevBetInfo['withhold_player_3_times'] + $data['withhold_player_3_times'];
|
||||
|
||||
$total_player_1_banker = $prevBetInfo['amount_player_1_banker'] + $data['amount_player_1_banker'];
|
||||
$total_player_2_banker = $prevBetInfo['amount_player_2_banker'] + $data['amount_player_2_banker'];
|
||||
$total_player_3_banker = $prevBetInfo['amount_player_3_banker'] + $data['amount_player_3_banker'];
|
||||
|
||||
$total_player_1_banker_times = $prevBetInfo['amount_player_1_banker_times'] + $data['amount_player_1_banker_times'];
|
||||
$total_player_2_banker_times = $prevBetInfo['amount_player_2_banker_times'] + $data['amount_player_2_banker_times'];
|
||||
$total_player_3_banker_times = $prevBetInfo['amount_player_3_banker_times'] + $data['amount_player_3_banker_times'];
|
||||
|
||||
$total_player_1_banker_times_withhold = $prevBetInfo['withhold_player_1_banker_times'] + $data['withhold_player_1_banker_times'];
|
||||
$total_player_2_banker_times_withhold = $prevBetInfo['withhold_player_2_banker_times'] + $data['withhold_player_2_banker_times'];
|
||||
$total_player_3_banker_times_withhold = $prevBetInfo['withhold_player_3_banker_times'] + $data['withhold_player_3_banker_times'];
|
||||
|
||||
}else{
|
||||
$total_player_1 = $data['amount_player_1'];
|
||||
$total_player_2 = $data['amount_player_2'];
|
||||
$total_player_3 = $data['amount_player_3'];
|
||||
|
||||
$total_player_1_times = $data['amount_player_1_times'];
|
||||
$total_player_2_times = $data['amount_player_2_times'];
|
||||
$total_player_3_times = $data['amount_player_3_times'];
|
||||
|
||||
$total_player_1_withhold = $data['withhold_player_1_times'];
|
||||
$total_player_2_withhold = $data['withhold_player_2_times'];
|
||||
$total_player_3_withhold = $data['withhold_player_3_times'];
|
||||
|
||||
$total_player_1_banker = $data['amount_player_1_banker'];
|
||||
$total_player_2_banker = $data['amount_player_2_banker'];
|
||||
$total_player_3_banker = $data['amount_player_3_banker'];
|
||||
|
||||
$total_player_1_banker_times = $data['amount_player_1_banker_times'];
|
||||
$total_player_2_banker_times = $data['amount_player_2_banker_times'];
|
||||
$total_player_3_banker_times = $data['amount_player_3_banker_times'];
|
||||
|
||||
$total_player_1_banker_times_withhold = $data['withhold_player_1_banker_times'];
|
||||
$total_player_2_banker_times_withhold = $data['withhold_player_2_banker_times'];
|
||||
$total_player_3_banker_times_withhold = $data['withhold_player_3_banker_times'];
|
||||
}
|
||||
|
||||
if($total_player_1 > $limitMoneyArray[1] || $total_player_2 > $limitMoneyArray[1] || $total_player_3 > $limitMoneyArray[1] || $total_player_1_times > $limitMoneyArray[1] || $total_player_2_times > $limitMoneyArray[1] || $total_player_3_times > $limitMoneyArray[1] || $total_player_1_banker > $limitMoneyArray[1] || $total_player_2_banker > $limitMoneyArray[1] || $total_player_3_banker > $limitMoneyArray[1] || $total_player_1_banker_times > $limitMoneyArray[1] || $total_player_2_banker_times > $limitMoneyArray[1] || $total_player_3_banker_times > $limitMoneyArray[1]){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if(($total_player_1 > 0 && $total_player_1 < $limitMoneyArray[0]) || ($total_player_2 > 0 && $total_player_2 < $limitMoneyArray[0]) || ($total_player_3 > 0 && $total_player_3 < $limitMoneyArray[0]) || ($total_player_1_times > 0 && $total_player_1_times < $limitMoneyArray[0]) || ($total_player_2_times > 0 && $total_player_2_times < $limitMoneyArray[0]) || ($total_player_3_times > 0 && $total_player_3_times < $limitMoneyArray[0]) || ($total_player_1_banker > 0 && $total_player_1_banker < $limitMoneyArray[0]) || ($total_player_2_banker > 0 && $total_player_2_banker < $limitMoneyArray[0]) || ($total_player_3_banker > 0 && $total_player_3_banker < $limitMoneyArray[0]) || ($total_player_1_banker_times > 0 && $total_player_1_banker_times < $limitMoneyArray[0]) || ($total_player_2_banker_times > 0 && $total_player_2_banker_times < $limitMoneyArray[0]) || ($total_player_3_banker_times > 0 && $total_player_3_banker_times < $limitMoneyArray[0]) ){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
/***** Table Limit End *****/
|
||||
|
||||
$res = Bet::toBet($tableInfo,$userInfo,$numberTabInfo,$prevBetInfo,$data,$seat_num,$betTotalAmount,$time,0);
|
||||
if($res){
|
||||
$ws->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'bet_amount_msg' => $betTotalAmount, 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
// 待确定是否推送即时彩池,现不推送
|
||||
}else{
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_bet_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToBetToningService
|
||||
* Class ToBetToningService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class ToBetToningService
|
||||
{
|
||||
/**
|
||||
* TODO 处理色碟下注
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toBetToning(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$data = array();
|
||||
$data['toning_zero'] = isset($event['toning_zero']) && intval($event['toning_zero']) > 0 ? intval($event['toning_zero']) : 0;
|
||||
$data['toning_four'] = isset($event['toning_four']) && intval($event['toning_four']) > 0 ? intval($event['toning_four']) : 0;
|
||||
$data['toning_one'] = isset($event['toning_one']) && intval($event['toning_one']) > 0 ? intval($event['toning_one']) : 0;
|
||||
$data['toning_three'] = isset($event['toning_three']) && intval($event['toning_three']) > 0 ? intval($event['toning_three']) : 0;
|
||||
$data['toning_big'] = isset($event['toning_big']) && intval($event['toning_big']) > 0 ? intval($event['toning_big']) : 0;
|
||||
$data['toning_small'] = isset($event['toning_small']) && intval($event['toning_small']) > 0 ? intval($event['toning_small']) : 0;
|
||||
$data['toning_singular'] = isset($event['toning_singular']) && intval($event['toning_singular']) > 0 ? intval($event['toning_singular']) : 0;
|
||||
$data['toning_plural'] = isset($event['toning_plural']) && intval($event['toning_plural']) > 0 ? intval($event['toning_plural']) : 0;
|
||||
$seat_num = isset($event['seat_num']) && intval($event['seat_num']) > 0 ? intval($event['seat_num']) : 0;
|
||||
|
||||
$time = time();
|
||||
$toBetCheck = ToBetCommonService::toBetCheck($tableInfo,$event,$data);
|
||||
if ($toBetCheck['status'] == false){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => $toBetCheck['msg']]);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
$numberTabInfo = $toBetCheck['numberTabInfo'];
|
||||
$userInfo = $toBetCheck['userInfo'];
|
||||
$amount = array_sum($data);
|
||||
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
$betTotalAmount = [];
|
||||
if($prevBetInfo){
|
||||
$betArray = string_to_array($prevBetInfo['toning_amount']);
|
||||
$betTotalAmount['toning_zero'] = $betArray['toning_zero'] + $data['toning_zero'];
|
||||
$betTotalAmount['toning_four'] = $betArray['toning_four'] + $data['toning_four'];
|
||||
$betTotalAmount['toning_one'] = $betArray['toning_one'] + $data['toning_one'];
|
||||
$betTotalAmount['toning_three'] = $betArray['toning_three'] + $data['toning_three'];
|
||||
$betTotalAmount['toning_big'] = $betArray['toning_big'] + $data['toning_big'];
|
||||
$betTotalAmount['toning_small'] = $betArray['toning_small'] + $data['toning_small'];
|
||||
$betTotalAmount['toning_singular'] = $betArray['toning_singular'] + $data['toning_singular'];
|
||||
$betTotalAmount['toning_plural'] = $betArray['toning_plural'] + $data['toning_plural'];
|
||||
}else{
|
||||
$betTotalAmount = $data;
|
||||
}
|
||||
/***** User Limit Start *****/
|
||||
$totalAmount = array_sum($betTotalAmount);
|
||||
if ($totalAmount > $userInfo['limit_high']){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if ($totalAmount > 0 && $totalAmount < $userInfo['limit_low']){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_user']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
/***** User Limit End *****/
|
||||
|
||||
/***** Table Limit Start *****/
|
||||
$totalAmount = array_sum($betTotalAmount);
|
||||
$limitMoneyArray = explode('-',$tableInfo['limit_money']);
|
||||
if($totalAmount > $limitMoneyArray[1]){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'exceeds_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
if(($totalAmount > 0 && $totalAmount < $limitMoneyArray[0]) ){
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'under_limit_table']);
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
return;
|
||||
}
|
||||
$res = Bet::toBet($tableInfo,$userInfo,$numberTabInfo,$prevBetInfo,$data,$seat_num,$betTotalAmount,$time,0);
|
||||
$numberTabAmount = string_to_array($numberTabInfo['toning_amount']);
|
||||
if($res){
|
||||
$ws->emit('toBet',['status' => true, 'table_id' => $tableInfo['id'], 'bet_amount_msg' => $betTotalAmount, 'money' => ($userInfo['money'] - $amount),'seat_num' => $seat_num, 'msg' => 'to_bet_success']);
|
||||
$round = array(
|
||||
'toning_zero' => isset($numberTabAmount['toning_zero']) ? intval($numberTabAmount['toning_zero'] + $data['toning_zero']) : $data['toning_zero'],
|
||||
'toning_four' => isset($numberTabAmount['toning_four']) ? intval($numberTabAmount['toning_four'] + $data['toning_four']) : $data['toning_four'],
|
||||
'toning_one' => isset($numberTabAmount['toning_one']) ? intval($numberTabAmount['toning_one'] + $data['toning_one']) : $data['toning_one'],
|
||||
'toning_three' => isset($numberTabAmount['toning_three']) ? intval($numberTabAmount['toning_three'] + $data['toning_three']) : $data['toning_three'],
|
||||
'toning_big' => isset($numberTabAmount['toning_big']) ? intval($numberTabAmount['toning_big'] + $data['toning_big']) : $data['toning_big'],
|
||||
'toning_small' => isset($numberTabAmount['toning_small']) ? intval($numberTabAmount['toning_small'] + $data['toning_small']) : $data['toning_small'],
|
||||
'toning_singular' => isset($numberTabAmount['toning_singular']) ? intval($numberTabAmount['toning_singular'] + $data['toning_singular']) : $data['toning_singular'],
|
||||
'toning_plural' => isset($numberTabAmount['toning_plural']) ? intval($numberTabAmount['toning_plural'] + $data['toning_plural']) : $data['toning_plural'],
|
||||
'amount_item' => array(
|
||||
'toning_zero' => $data['toning_zero'],
|
||||
'toning_four' => $data['toning_four'],
|
||||
'toning_one' => $data['toning_one'],
|
||||
'toning_three' => $data['toning_three'],
|
||||
'toning_big' => $data['toning_big'],
|
||||
'toning_small' => $data['toning_small'],
|
||||
'toning_singular' => $data['toning_singular'],
|
||||
'toning_plural' => $data['toning_plural'],
|
||||
'user_id' => $userInfo['id'],
|
||||
),
|
||||
);
|
||||
$ws->to(SocketSession::HOUSE_NAME)->emit('allBetAmount',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
|
||||
}else{
|
||||
$ws->emit('toBet',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_bet_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToBet');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use app\models\process\NumberTab;
|
||||
use app\models\user\User;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToSeatService
|
||||
* Class ToSeatService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class ToLeaveSeatService
|
||||
{
|
||||
/**
|
||||
* TODO 处理toSeat
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toLeaveSeat(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$numberTabId = isset($event['number_tab_id']) && intval($event['number_tab_id']) > 0 ? intval($event['number_tab_id']) : 0;
|
||||
$userId = isset($event['user_id']) && intval($event['user_id']) > 0 ? intval($event['user_id']) : 0;
|
||||
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
|
||||
|
||||
/** 验证是否和当前铺同一铺 */
|
||||
if ($numberTabInfo['id'] != $numberTabId){
|
||||
$ws->emit('toLeaveSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_leave_seat_fail_1']);
|
||||
SocketSession::resetRepeat($fd,'user','isToLeaveSeat');
|
||||
return;
|
||||
}
|
||||
|
||||
$userInfo = User::get(['id' => $userId, 'status' => 1, 'is_delete' => 0]);
|
||||
/** 验证会员有效 */
|
||||
if (!$userInfo || $userInfo['bet_type'] != 2){
|
||||
$ws->emit('toLeaveSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_leave_seat_fail_2']);
|
||||
SocketSession::resetRepeat($fd,'user','isToLeaveSeat');
|
||||
return;
|
||||
}
|
||||
|
||||
/** 验证本局是否下注 */
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
if($prevBetInfo){
|
||||
$ws->emit('toLeaveSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_leave_seat_fail_3']);
|
||||
SocketSession::resetRepeat($fd,'user','isToLeaveSeat');
|
||||
return;
|
||||
}
|
||||
|
||||
$res = Bet::toLeaveSeat($userInfo,$numberTabInfo);
|
||||
if ($res){
|
||||
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
|
||||
$table_seat_info = json_decode($numberTabInfo['seat_json'],true);
|
||||
$leaveMsg = ['user_id' => $userInfo['id'], 'manager_id' => $userInfo['manager_id']];
|
||||
$ws->to(SocketSession::HOUSE_NAME)->emit('toLeaveSeat',['status' => true, 'table_id' => $tableInfo['id'],'leaveMsg' => $leaveMsg, 'table_seat_info' => $table_seat_info[$userInfo['manager_id']], 'msg' => 'to_leave_seat_success']);
|
||||
}else{
|
||||
$ws->emit('toLeaveSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_leave_seat_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToLeaveSeat');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use app\models\process\NumberTab;
|
||||
use app\models\user\User;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToRobService
|
||||
* Class ToRobService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class ToRobService
|
||||
{
|
||||
/**
|
||||
* TODO 处理toRob
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toTob(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$numberTabId = isset($event['number_tab_id']) && intval($event['number_tab_id']) > 0 ? intval($event['number_tab_id']) : 0;
|
||||
$userId = isset($event['user_id']) && intval($event['user_id']) > 0 ? intval($event['user_id']) : 0;
|
||||
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
|
||||
/** 验证是否和当前铺同一铺 */
|
||||
if ($numberTabInfo['id'] != $numberTabId){
|
||||
$ws->emit('toRob',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_rob_fail_4']);
|
||||
SocketSession::resetRepeat($fd,'user','isToRob');
|
||||
return;
|
||||
}
|
||||
/** 验证是否抢庄时间 */
|
||||
if ($numberTabInfo['rob_status'] != 1 || time() > $numberTabInfo['rob_start_time'] + $tableInfo['rob_time']){
|
||||
$ws->emit('toRob',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_rob_fail_3']);
|
||||
SocketSession::resetRepeat($fd,'user','isToRob');
|
||||
return;
|
||||
}
|
||||
$userInfo = User::get(['id' => $userId, 'status' => 1, 'is_delete' => 0]);
|
||||
/** 验证会员有效 */
|
||||
if (!$userInfo){
|
||||
$ws->emit('toRob',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_rob_fail_2']);
|
||||
SocketSession::resetRepeat($fd,'user','isToRob');
|
||||
return;
|
||||
}
|
||||
/** 十万会员不能抢庄 */
|
||||
if($userInfo['is_sw'] == 1){
|
||||
$ws->emit('toRob',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_rob_fail_5']);
|
||||
SocketSession::resetRepeat($fd,'user','isToRob');
|
||||
return;
|
||||
}
|
||||
/** 会员金额必须大于桌子抢庄金额 */
|
||||
if($userInfo['money'] < $tableInfo['limit_banker_amount']){
|
||||
$ws->emit('toRob',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_rob_fail_1']);
|
||||
SocketSession::resetRepeat($fd,'user','isToRob');
|
||||
return;
|
||||
}
|
||||
/** 验证当前局是否有人已经抢庄 */
|
||||
if($numberTabInfo['rob_banker_id'] > 0){
|
||||
$ws->emit('toRob',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_rob_fail_6']);
|
||||
SocketSession::resetRepeat($fd,'user','isToRob');
|
||||
return;
|
||||
}
|
||||
$res = Bet::toRob($userInfo,$numberTabInfo);
|
||||
if ($res){
|
||||
$RobMsg = ['rob_banker_id' => $userInfo['id'], 'rob_banker_username' => $userInfo['username']];
|
||||
$ws->to(SocketSession::HOUSE_NAME)->emit('toRob',['status' => true, 'table_id' => $tableInfo['id'], 'RobMsg' => $RobMsg, 'msg' => '抢庄成功']);
|
||||
}else{
|
||||
$ws->emit('toRob',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_rob_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToRob');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
namespace app\services\bet;
|
||||
|
||||
use app\models\bet\Bet;
|
||||
use app\models\process\NumberTab;
|
||||
use app\models\user\User;
|
||||
use freedom\utils\SocketSession;
|
||||
|
||||
/**
|
||||
* TODO ToSeatService
|
||||
* Class ToSeatService
|
||||
* @package app\services\bet
|
||||
*/
|
||||
class ToSeatService
|
||||
{
|
||||
/**
|
||||
* TODO 处理toSeat
|
||||
* @param array $event
|
||||
* @param array $tableInfo
|
||||
* @return void
|
||||
*/
|
||||
public static function toSeat(array $event, array $tableInfo){
|
||||
$ws = app('\think\swoole\WebSocket');
|
||||
$fd = $ws->getSender();
|
||||
$numberTabId = isset($event['number_tab_id']) && intval($event['number_tab_id']) > 0 ? intval($event['number_tab_id']) : 0;
|
||||
$userId = isset($event['user_id']) && intval($event['user_id']) > 0 ? intval($event['user_id']) : 0;
|
||||
$seatNum = isset($event['seat_num']) && intval($event['seat_num']) > 0 ? intval($event['seat_num']) : 0;
|
||||
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
|
||||
|
||||
/** 验证是否和当前铺同一 */
|
||||
if ($numberTabInfo['id'] != $numberTabId){
|
||||
$ws->emit('toSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_seat_fail_1']);
|
||||
SocketSession::resetRepeat($fd,'user','isToSeat');
|
||||
return;
|
||||
}
|
||||
|
||||
$userInfo = User::get(['id' => $userId, 'status' => 1, 'is_delete' => 0]);
|
||||
/** 验证会员有效 */
|
||||
if (!$userInfo || $userInfo['bet_type'] != 2){
|
||||
$ws->emit('toSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_seat_fail_2']);
|
||||
SocketSession::resetRepeat($fd,'user','isToSeat');
|
||||
return;
|
||||
}
|
||||
/** 验证座位号参数 */
|
||||
$table_seat_num = $tableInfo['seat_num'] >= 4 ? $tableInfo['seat_num'] + 1 : $tableInfo['seat_num'];
|
||||
if($seatNum < 1 || $seatNum > $table_seat_num){
|
||||
$ws->emit('toSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_seat_fail_3']);
|
||||
SocketSession::resetRepeat($fd,'user','isToSeat');
|
||||
return;
|
||||
}
|
||||
|
||||
$seatJson = $numberTabInfo['seat_json'];
|
||||
$seatArr = json_decode($seatJson,true);
|
||||
/** 验证座位是否有玩家 */
|
||||
if(isset($seatArr[$userInfo['manager_id']])){
|
||||
if($seatArr[$userInfo['manager_id']][$seatNum] && $seatArr[$userInfo['manager_id']][$seatNum] != $userId){
|
||||
$ws->emit('toSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_seat_fail_4']);
|
||||
SocketSession::resetRepeat($fd,'user','isToSeat');
|
||||
return;
|
||||
}
|
||||
}
|
||||
$prevBetInfo = Bet::getPrevBetInfo($userInfo['id'],$numberTabInfo['id']);
|
||||
if($prevBetInfo && $prevBetInfo['seat_num'] != $seatNum){
|
||||
$ws->emit('toSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_seat_fail_5']);
|
||||
SocketSession::resetRepeat($fd,'user','isToSeat');
|
||||
return;
|
||||
}
|
||||
|
||||
$res = Bet::toSeat($userInfo,$numberTabInfo,$tableInfo,$seatNum);
|
||||
if ($res){
|
||||
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
|
||||
$table_seat_info = json_decode($numberTabInfo['seat_json'],true);
|
||||
$SeatMsg = ['user_id' => $userInfo['id'], 'username' => $userInfo['username'],'manager_id' => $userInfo['manager_id'],'seat_num' => $seatNum];
|
||||
$ws->to(SocketSession::HOUSE_NAME)->emit('toSeat',['status' => true, 'table_id' => $tableInfo['id'], 'SeatMsg' => $SeatMsg, 'table_seat_info' => $table_seat_info[$userInfo['manager_id']], 'msg' => 'to_seat_success']);
|
||||
}else{
|
||||
$ws->emit('toSeat',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'to_seat_fail']);
|
||||
}
|
||||
SocketSession::resetRepeat($fd,'user','isToSeat');
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user