This commit is contained in:
li
2026-01-28 23:48:20 +08:00
commit b8cd0c9418
1293 changed files with 184011 additions and 0 deletions
+239
View File
@@ -0,0 +1,239 @@
<?php
namespace app\services\connect;
use freedom\utils\CardPosition;
use freedom\utils\CardPositionNn;
use freedom\utils\CardPositionTc;
use freedom\utils\RedisUtil;
/**
* TODO 登录成功卡片获取服务
* Class GetCardService
* @package app\services\connect
*/
class GetCardService
{
/**
* TODO 控制台登录处理
* @param array $tableInfo
* @param array $numberTabInfo
* @return array
*/
public static function getCard(array $tableInfo, array $numberTabInfo): array
{
if ($tableInfo['is_scavenging'] != 1 || $numberTabInfo['bet_status'] != 2) return [];
$showCard = array();
if ($tableInfo['game_id'] == 4){
$cardInfo = RedisUtil::getCard($numberTabInfo['id']);
if (!$cardInfo) return [];
if($cardInfo['card_first'] > 0){
$pushArray = array('card' => $cardInfo['card_first'], 'order_num' => '0');
array_push($showCard,$pushArray);
}
if($cardInfo['player_1_card_1'] > 0){
$pushArray = array('card' => $cardInfo['player_1_card_1'], 'order_num' => '11');
array_push($showCard,$pushArray);
}
if($cardInfo['player_1_card_2'] > 0){
$pushArray = array('card' => $cardInfo['player_1_card_2'], 'order_num' => '12');
array_push($showCard,$pushArray);
}
if($cardInfo['player_1_card_3'] > 0){
$pushArray = array('card' => $cardInfo['player_1_card_3'], 'order_num' => '13');
array_push($showCard,$pushArray);
}
if($cardInfo['player_1_card_4'] > 0){
$pushArray = array('card' => $cardInfo['player_1_card_4'], 'order_num' => '14');
array_push($showCard,$pushArray);
}
if($cardInfo['player_1_card_5'] > 0){
$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'];
$player1Result = CardPositionNn::JudgeCowCow($player1Card);
$pushArray = array('card' => $cardInfo['player_1_card_5'], 'order_num' => '15', 'result' => $player1Result['word']);
array_push($showCard,$pushArray);
}
if($cardInfo['player_2_card_1'] > 0){
$pushArray = array('card' => $cardInfo['player_2_card_1'], 'order_num' => '21');
array_push($showCard,$pushArray);
}
if($cardInfo['player_2_card_2'] > 0){
$pushArray = array('card' => $cardInfo['player_2_card_2'], 'order_num' => '22');
array_push($showCard,$pushArray);
}
if($cardInfo['player_2_card_3'] > 0){
$pushArray = array('card' => $cardInfo['player_2_card_3'], 'order_num' => '23');
array_push($showCard,$pushArray);
}
if($cardInfo['player_2_card_4'] > 0){
$pushArray = array('card' => $cardInfo['player_2_card_4'], 'order_num' => '24');
array_push($showCard,$pushArray);
}
if($cardInfo['player_2_card_5'] > 0){
$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'];
$player2Result = CardPositionNn::JudgeCowCow($player2Card);
$pushArray = array('card' => $cardInfo['player_2_card_5'], 'order_num' => '25', 'result' => $player2Result['word']);
array_push($showCard,$pushArray);
}
if($cardInfo['player_3_card_1'] > 0){
$pushArray = array('card' => $cardInfo['player_3_card_1'], 'order_num' => '31');
array_push($showCard,$pushArray);
}
if($cardInfo['player_3_card_2'] > 0){
$pushArray = array('card' => $cardInfo['player_3_card_2'], 'order_num' => '32');
array_push($showCard,$pushArray);
}
if($cardInfo['player_3_card_3'] > 0){
$pushArray = array('card' => $cardInfo['player_3_card_3'], 'order_num' => '33');
array_push($showCard,$pushArray);
}
if($cardInfo['player_3_card_4'] > 0){
$pushArray = array('card' => $cardInfo['player_3_card_4'], 'order_num' => '34');
array_push($showCard,$pushArray);
}
if($cardInfo['player_3_card_5'] > 0){
$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'];
$player3Result = CardPositionNn::JudgeCowCow($player3Card);
$pushArray = array('card' => $cardInfo['player_3_card_5'], 'order_num' => '35', 'result' => $player3Result['word']);
array_push($showCard,$pushArray);
}
if($cardInfo['banker_card_1'] > 0){
$pushArray = array('card' => $cardInfo['banker_card_1'], 'order_num' => '41');
array_push($showCard,$pushArray);
}
if($cardInfo['banker_card_2'] > 0){
$pushArray = array('card' => $cardInfo['banker_card_2'], 'order_num' => '42');
array_push($showCard,$pushArray);
}
if($cardInfo['banker_card_3'] > 0){
$pushArray = array('card' => $cardInfo['banker_card_3'], 'order_num' => '43');
array_push($showCard,$pushArray);
}
if($cardInfo['banker_card_4'] > 0){
$pushArray = array('card' => $cardInfo['banker_card_4'], 'order_num' => '44');
array_push($showCard,$pushArray);
}
if($cardInfo['banker_card_5'] > 0){
$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'];
$bankerResult = CardPositionNn::JudgeCowCow($bankerCard);
$pushArray = array('card' => $cardInfo['banker_card_5'], 'order_num' => '45', 'result' => $bankerResult['word']);
array_push($showCard,$pushArray);
}
}elseif($tableInfo['game_id'] == 5){
$cardInfo = RedisUtil::getCard($numberTabInfo['id']);
if (!$cardInfo) return [];
if($cardInfo['card_first'] > 0){
$pushArray = array('card' => $cardInfo['card_first'], 'order_num' => '0');
array_push($showCard,$pushArray);
}
if($cardInfo['player_1_card_1'] > 0){
$pushArray = array('card' => $cardInfo['player_1_card_1'], 'order_num' => '11');
array_push($showCard,$pushArray);
}
if($cardInfo['player_1_card_2'] > 0){
$pushArray = array('card' => $cardInfo['player_1_card_2'], 'order_num' => '12');
array_push($showCard,$pushArray);
}
if($cardInfo['player_1_card_3'] > 0){
$player1Card[0] = $cardInfo['player_1_card_1'];
$player1Card[1] = $cardInfo['player_1_card_2'];
$player1Card[2] = $cardInfo['player_1_card_3'];
$player1Result = CardPositionTc::ThredCardCowCow($player1Card);
$pushArray = array('card' => $cardInfo['player_1_card_3'], 'order_num' => '13', 'result' => $player1Result['word']);
array_push($showCard,$pushArray);
}
if($cardInfo['player_2_card_1'] > 0){
$pushArray = array('card' => $cardInfo['player_2_card_1'], 'order_num' => '21');
array_push($showCard,$pushArray);
}
if($cardInfo['player_2_card_2'] > 0){
$pushArray = array('card' => $cardInfo['player_2_card_2'], 'order_num' => '22');
array_push($showCard,$pushArray);
}
if($cardInfo['player_2_card_3'] > 0){
$player2Card[0] = $cardInfo['player_2_card_1'];
$player2Card[1] = $cardInfo['player_2_card_2'];
$player2Card[2] = $cardInfo['player_2_card_3'];
$player2Result = CardPositionTc::ThredCardCowCow($player2Card);
$pushArray = array('card' => $cardInfo['player_2_card_3'], 'order_num' => '23', 'result' => $player2Result['word']);
array_push($showCard,$pushArray);
}
if($cardInfo['player_3_card_1'] > 0){
$pushArray = array('card' => $cardInfo['player_3_card_1'], 'order_num' => '31');
array_push($showCard,$pushArray);
}
if($cardInfo['player_3_card_2'] > 0){
$pushArray = array('card' => $cardInfo['player_3_card_2'], 'order_num' => '32');
array_push($showCard,$pushArray);
}
if($cardInfo['player_3_card_3'] > 0){
$player3Card[0] = $cardInfo['player_3_card_1'];
$player3Card[1] = $cardInfo['player_3_card_2'];
$player3Card[2] = $cardInfo['player_3_card_3'];
$player3Result = CardPositionTc::ThredCardCowCow($player3Card);
$pushArray = array('card' => $cardInfo['player_3_card_3'], 'order_num' => '33', 'result' => $player3Result['word']);
array_push($showCard,$pushArray);
}
if($cardInfo['banker_card_1'] > 0){
$pushArray = array('card' => $cardInfo['banker_card_1'], 'order_num' => '41');
array_push($showCard,$pushArray);
}
if($cardInfo['banker_card_2'] > 0){
$pushArray = array('card' => $cardInfo['banker_card_2'], 'order_num' => '42');
array_push($showCard,$pushArray);
}
if($cardInfo['banker_card_3'] > 0){
$bankerCard[0] = $cardInfo['banker_card_1'];
$bankerCard[1] = $cardInfo['banker_card_2'];
$bankerCard[2] = $cardInfo['banker_card_3'];
$bankerResult = CardPositionTc::ThredCardCowCow($bankerCard);
$pushArray = array('card' => $cardInfo['banker_card_3'], 'order_num' => '43', 'result' => $bankerResult['word']);
array_push($showCard,$pushArray);
}
}else{
$cardInfo = RedisUtil::getCardPosition($numberTabInfo['id']);
foreach ($cardInfo AS $k => $v){
switch ($k){
case 'banker_1':
$showCard[] = ['position' => 21, 'card' => intval($v), 'number' => CardPosition::interchangeCard($v)];
break;
case 'banker_2':
$showCard[] = ['position' => 22, 'card' => intval($v), 'number' => CardPosition::interchangeCard($v)];
break;
case 'banker_3':
$showCard[] = ['position' => 23, 'card' => intval($v), 'number' => CardPosition::interchangeCard($v)];
break;
case 'player_1':
$showCard[] = ['position' => 11, 'card' => intval($v), 'number' => CardPosition::interchangeCard($v)];
break;
case 'player_2':
$showCard[] = ['position' => 12, 'card' => intval($v), 'number' => CardPosition::interchangeCard($v)];
break;
case 'player_3':
$showCard[] = ['position' => 13, 'card' => intval($v), 'number' => CardPosition::interchangeCard($v)];
break;
}
}
}
return $showCard;
}
}
+67
View File
@@ -0,0 +1,67 @@
<?php
namespace app\services\connect;
use app\models\process\Boot;
use app\models\process\NumberTab;
use app\models\process\Sumday;
/**
* TODO 桌子状态服务
* Class InitTableService
* @package app\services\connect
*/
class InitTableService
{
/**
* TODO 控制台登录处理
* @param array $tableInfo
* @return array
*/
public static function initTable(array $tableInfo): array
{
//查询日结
$lastSumday = Sumday::getByTableIdOrderByIdDesc($tableInfo);
if (!$lastSumday) $lastSumday = Sumday::addByTable($tableInfo);
//查询靴
$lastBoot = Boot::getByTableIdOrderByIdDesc($tableInfo);
if (!$lastBoot) $lastBoot = Boot::addBySumday($lastSumday);
//查询铺
$lastNumberTab = NumberTab::getByBootIdOrderByIdDesc($lastBoot);
if (!$lastNumberTab) $lastNumberTab = NumberTab::addByBoot($lastBoot);
return $lastNumberTab;
}
/**
* TODO 桌子状态获取
* @param array $numberTabInfo
* @return array
*/
public static function numberTabStatus(array $numberTabInfo): array{
switch ($numberTabInfo['bet_status']){
case 1:
$return = ['bet_status' => 1, 'bet_msg' => 'bet_status_1'];
break;
case 2:
$return = ['bet_status' => 2, 'bet_msg' => 'bet_status_2'];
break;
default:
$return = ['bet_status' => 0, 'bet_msg' => 'bet_status_0'];
break;
}
switch ($numberTabInfo['rob_status']){
case 1:
$return = array_merge(['rob_status' => 1, 'bet_msg' => 'rob_status_1'],$return);
break;
case 2:
$return = array_merge(['rob_status' => 2, 'bet_msg' => 'rob_status_2'],$return);
break;
default:
$return = array_merge(['rob_status' => 0, 'bet_msg' => 'rob_status_0'],$return);
break;
}
return $return;
}
}
@@ -0,0 +1,44 @@
<?php
namespace app\services\connect;
use app\models\manager\Manager;
use freedom\utils\SocketSession;
use think\Request;
/**
* TODO 经理登录服务
* Class ManagerConnectService
* @package app\services\connect
*/
class ManagerConnectService
{
/**
* TODO 控制台登录处理
* @param Request $event
* @return void
*/
public static function doManagerConnect(Request $event){
$ws = app('\think\swoole\WebSocket');
$userId = intval($event->get('userid'));
$loginToken = trim($event->get('login_token'));
$username = trim($event->get('account'));
if(isset($username) && isset($loginToken) && isset($userId) && $userId > 0){
$userInfo = Manager::get(['id' => $userId, 'status' => 1]);
if($userInfo && $userInfo['login_token'] == $loginToken && $username == $userInfo['username']){
SocketSession::saveSocketSession(['user_id' => $userId, 'username' => $username],'manager');
$tableManager = app('swoole.table.manager');
$managerSession = $tableManager->get((string) $userId);
$ws->setSender(0)->to($managerSession['fd'])->emit('onlineLogin',['status' => true]);
}else{
$ws->emit('onlineLogin',['status' => false,'msg' => 'link_server_fail']);
$ws->close();
}
}else{
$ws->emit('onlineLogin',['status' => false,'msg' => 'link_server_fail']);
$ws->close();
}
}
}
@@ -0,0 +1,48 @@
<?php
namespace app\services\connect;
use app\models\process\NumberTab;
use app\models\table\Table;
use freedom\utils\SocketSession;
use think\Request;
/**
* TODO 扫描登录服务
* Class SpaceConnectService
* @package app\services\connect
*/
class ScanConnectService
{
/**
* TODO 控制台登录处理
* @param Request $event
* @return void
*/
public static function doScanConnect(Request $event){
$ws = app('\think\swoole\WebSocket');
$tableId = intval($event->get('table_id'));
$tableInfo = Table::get($tableId);
$numberTabInfo = NumberTab::getByTableIdOrderByIdDesc($tableInfo);
if (!$numberTabInfo){
$ws->emit('onlineLogin',['status' => false, 'msg' => 'Not NumberTab Data']);
$ws->close();
return;
}
$round = array();
$round['tid'] = $tableId;
$round['boot_id'] = intval($numberTabInfo['boot_id']);
$round['boot_num'] = intval($numberTabInfo['boot_num']);
$round['number_tab_id'] = intval($numberTabInfo['id']);
$round['number_tab_number'] = intval($numberTabInfo['number']);
if ($numberTabInfo['bet_status'] == 2){
$round['is_scan'] = true;
}else{
$round['is_scan'] = false;
}
$ws->join(SocketSession::HOUSE_NAME);
$ws->emit('onlineLogin',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
}
}
@@ -0,0 +1,62 @@
<?php
namespace app\services\connect;
use app\models\table\Table;
use app\models\table\UserController;
use freedom\utils\SocketSession;
use think\Request;
/**
* TODO 控制台登录服务
* Class SpaceConnectService
* @package app\services\connect
*/
class SpaceConnectService
{
/**
* TODO 控制台登录处理
* @param Request $event
* @return void
*/
public static function doSpaceConnect(Request $event){
/*
$redis = Cache::store('redis')->handler();
//设置哈希
$redis->hset('123456','yzm','4566');
//设置过期时间
$redis->expire('123456',60);
*/
$ws = app('\think\swoole\WebSocket');
$tableId = intval($event->get('table_id'));
$tableInfo = Table::get($tableId);
$userId = intval($event->get('userid'));
$loginToken = trim($event->get('login_token'));
$username = trim($event->get('account'));
$userController = UserController::get(['id' => $userId, 'username' => $username, 'login_token' => $loginToken]);
if (!$tableInfo || !$userController){
$ws->emit('onlineLogin',['status' => false, 'msg' => 'not_table_data']);
//$ws->close();
return;
}
$lastNumberTab = InitTableService::initTable($tableInfo);
if($lastNumberTab){
$round = array();
$round['boot_id'] = $lastNumberTab['boot_id'];
$round['boot_num'] = $lastNumberTab['boot_num'];
$round['number_tab_id'] = $lastNumberTab['id'];
$round['number_tab_number'] = $lastNumberTab['number'];
$round['in_checkout'] = $tableInfo['in_checkout'];
$round['number_tab_status'] = InitTableService::numberTabStatus($lastNumberTab);
$round['show_card'] = GetCardService::getCard($tableInfo,$lastNumberTab);
$ws->emit('onlineLogin',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
SocketSession::saveSocketSession(['table_id' => $tableInfo['id'], 'table_name' => $tableInfo['table_name']],'space');
}else{
$ws->emit('onlineLogin',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'link_server_fail']);
//$ws->close();
}
}
}
@@ -0,0 +1,42 @@
<?php
namespace app\services\connect;
use app\models\user\User;
use freedom\utils\SocketSession;
use think\Request;
/**
* TODO 会员登录服务
* Class UserConnectService
* @package app\services\connect
*/
class UserConnectService
{
/**
* TODO 控制台登录处理
* @param Request $event
* @return void
*/
public static function doUserConnect(Request $event){
$ws = app('\think\swoole\WebSocket');
$userId = intval($event->get('userid'));
$loginToken = trim($event->get('login_token'));
$username = trim($event->get('account'));
if(isset($username) && isset($loginToken) && isset($userId) && $userId > 0){
$userInfo = User::get(['id' => $userId, 'status' => 1, 'is_delete' => 0]);
if($userInfo && $userInfo['login_token'] == $loginToken && $username == $userInfo['username']){
SocketSession::saveSocketSession(['user_id' => $userId, 'username' => $username],'user');
$ws->emit('onlineLogin',['status' => true, 'money' => $userInfo['money']]);
}else{
$ws->emit('onlineLogin',['status' => false, 'money' => 0, 'msg' => 'link_server_fail']);
$ws->close();
}
}else{
$ws->emit('onlineLogin',['status' => false, 'money' => 0, 'msg' => 'link_server_fail']);
$ws->close();
}
}
}