| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 | 
							- <?php
 
- namespace App\Services;
 
- use App\Constants\StepStatus;
 
- use App\Models\Room;
 
- use App\Models\RoomUser;
 
- use App\Models\User;
 
- use App\Models\Wallet;
 
- use Illuminate\Support\Facades\Cache;
 
- class OnLineService
 
- {
 
-     static function join($chatId, $roomId, $messageId)
 
-     {
 
-         $room = Room::where('room_id', $roomId)->first();
 
-         if (!$room) {
 
-             return [[
 
-                 'chat_id' => $chatId,
 
-                 'text' => '❌ 房间不存在,请重新输入!',
 
-                 'reply_to_message_id' => $messageId
 
-             ]];
 
-         }
 
-         if ($room->status !== 1 && $room->status != 2) {
 
-             return [[
 
-                 'chat_id' => $chatId,
 
-                 'text' => '❌ 房间已开始游戏,请重新输入!',
 
-                 'reply_to_message_id' => $messageId
 
-             ]];
 
-         }
 
-         if($room->status == 2 && !$room->midway){
 
-             return [[
 
-                 'chat_id' => $chatId,
 
-                 'text' => '❌ 房间已开始游戏,不允许中途加入!',
 
-                 'reply_to_message_id' => $messageId
 
-             ]];
 
-         }
 
-         $wallet = Wallet::where('member_id', $chatId)->first();
 
-         $zuiDi = $room->base_score * 100;
 
-         if ($wallet->available_balance < $zuiDi) {
 
-             return [[
 
-                 'chat_id' => $chatId,
 
-                 'text' => "❌您选择的是:{$room->base_score}USDT的房间,最低余额:{$zuiDi}USDT\n请重新输入或充值余额!",
 
-                 'reply_to_message_id' => $messageId
 
-             ]];
 
-         }
 
-         if ($room->join_count >= $room->participants) {
 
-             return [[
 
-                 'chat_id' => $chatId,
 
-                 'text' => '❌加入失败,房间人数已满'
 
-             ]];
 
-         }
 
-         $ru = RoomUser::where('member_id', $chatId)
 
-             ->whereIn('status', [0, 1, 2, 3])
 
-             ->first();
 
-         if ($ru) {
 
-             $keyboard = [
 
-                 [
 
-                     ['text' => '进入房间', 'callback_data' => "games@@home{$ru->room_id}"],
 
-                 ],
 
-             ];
 
-             return [[
 
-                 'chat_id' => $chatId,
 
-                 'text' => "您已加入房间,请进入房间继续游戏",
 
-                 'reply_markup' => json_encode(['inline_keyboard' => $keyboard])
 
-             ]];
 
-         }
 
-         $user = User::where('member_id', $chatId)->first();
 
-         $ru = new RoomUser();
 
-         $ru->room_id = $room->room_id;
 
-         $ru->member_id = $chatId;
 
-         $ru->first_name = $user->first_name;
 
-         $ru->status = 0;
 
-         $ru->save();
 
-         $room->join_count += 1;
 
-         $room->save();
 
-         $arr = [];
 
-         $list = RoomUser::where('room_id', $ru->room_id)->where('member_id', '<>', $chatId)->get();
 
-         foreach ($list as $item) {
 
-             $arr[] = [
 
-                 'chat_id' => $item->member_id,
 
-                 'text' => "新用户进入房间",
 
-             ];
 
-             if ($room->join_count == $room->participants) {
 
-                 $arr[] = [
 
-                     'chat_id' => $item->member_id,
 
-                     'text' => "房间已满员,请所有玩家准备",
 
-                 ];
 
-             }
 
-         }
 
-         $data = RoomService::getGameIdMessage($chatId, $room->game_name, null);
 
-         unset($data['message_id']);
 
-         $arr[] = $data;
 
-         Cache::put(get_step_key($chatId), StepStatus::INPUT_GAME_ID);
 
-         return $arr;
 
-     }
 
-     static function joinRoom($chatId, $messageId)
 
-     {
 
-         Cache::put(get_step_key($chatId), StepStatus::INPUT_JOIN_ROOM_ID);
 
-         return [
 
-             'chat_id' => $chatId,
 
-             'message_id' => $messageId,
 
-             'text' => '请发送您要加入的房间号'
 
-         ];
 
-     }
 
-     public function getList($chatId, $messageId = null, $page = 1, $limit = 8)
 
-     {
 
-         Cache::delete("{$chatId}_CREATE_ROOM_MESSAGE_ID");
 
-         $ru = RoomUser::where('member_id', $chatId)
 
-             ->whereIn('status', [0, 1, 2, 3])
 
-             ->first();
 
-         if ($ru) {
 
-             $keyboard = [
 
-                 [
 
-                     ['text' => '进入房间', 'callback_data' => "games@@home{$ru->room_id}"],
 
-                 ],
 
-             ];
 
-             return [
 
-                 'chat_id' => $chatId,
 
-                 'text' => "您已加入房间,请进入房间继续游戏",
 
-                 'message_id' => $messageId,
 
-                 'reply_markup' => json_encode(['inline_keyboard' => $keyboard])
 
-             ];
 
-         }
 
-         $res = Room::where('status', 1)
 
-             ->forPage($page, $limit)->get();
 
-         $count = Room::where('status', 1)->count();
 
- //        if ($count > 0) {
 
-         $keyboard = [];
 
-         foreach ($res as $item) {
 
-             $keyboard[] = [
 
-                 ['text' => "{$item->game_name}  人数:{$item->join_count}/$item->participants  局数:{$item->rounds}局  底分:{$item->base_score}USDT", 'callback_data' => "join@@{$item->room_id}"]
 
-             ];
 
-         }
 
-         $dPage = false;
 
-         if ($page > 1) {
 
-             $dPage = true;
 
-             $keyboard[] = [
 
-                 ['text' => "👆上一页", 'callback_data' => "onlineNextPage@@" . ($page - 1)]
 
-             ];
 
-         }
 
-         $allPage = ceil($count / $limit);
 
-         if ($allPage > $page) {
 
-             $dPage = true;
 
-             if ($page > 1) {
 
-                 $keyboard[count($keyboard) - 1][] = ['text' => "👇下一页", 'callback_data' => "onlineNextPage@@" . ($page + 1)];
 
-             } else {
 
-                 $keyboard[] = [
 
-                     ['text' => "👇下一页", 'callback_data' => "onlineNextPage@@" . ($page + 1)]
 
-                 ];
 
-             }
 
-         }
 
-         if ($dPage) {
 
-             if (count($keyboard[count($keyboard) - 1]) >= 2) {
 
-                 $keyboard[count($keyboard) - 1][] = ['text' => '输入房间号', 'callback_data' => 'join@@room'];
 
-                 $keyboard[count($keyboard) - 1][] = ['text' => "🔙返回", 'callback_data' => "del@@message"];
 
-             } else {
 
-                 $keyboard[] = [
 
-                     ['text' => '输入房间号', 'callback_data' => 'join@@room'],
 
-                     ['text' => "🔙返回", 'callback_data' => "del@@message"],
 
-                 ];
 
-             }
 
-         } else {
 
-             $keyboard[] = [
 
-                 ['text' => '输入房间号', 'callback_data' => 'join@@room'],
 
-                 ['text' => "🔙返回", 'callback_data' => "del@@message"],
 
-             ];
 
-         }
 
-         $data = [
 
-             'chat_id' => $chatId,
 
-             'text' => "👇选择以下在线房间,加入后可参与游戏!",
 
-             'message_id' => $messageId,
 
-             'reply_markup' => json_encode(['inline_keyboard' => $keyboard])
 
-         ];
 
-         return $data;
 
- //        }
 
-     }
 
- }
 
 
  |