Files
mier-php/application/api/model/AgoraGame.php
2025-08-11 10:22:05 +08:00

114 lines
4.1 KiB
PHP

<?php
namespace app\api\model;
use think\Db;
use think\Model;
use think\facade\Env;
class AgoraGame extends Model
{
//房间开始游戏
public function room_game_start($uid, $rid, $game_id){
$room_info = db::name('room')->find($rid);
if(!$room_info){
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
}
//是否有权限
// $room_admin_uid_arr = explode(',', $room_info['room_admin_uid']);
// if ($uid != $room_info['room_owner_uid'] && !in_array($uid, $room_admin_uid_arr)) {
// return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
// }
$room_admin_uid_arr = db::name('room_admin')->where('rid', $rid)->where('is_delete', 1)->column('uid');
$room_host_uid_arr = db::name('room_host')->where('rid', $rid)->where('is_delete', 1)->column('uid');
// if ($uid != $room_info['room_owner_uid'] && !in_array($uid, $room_admin_uid_arr) && !in_array($uid, $room_host_uid_arr)) {
if ($uid != $room_info['room_owner_uid'] && !in_array($uid, $room_host_uid_arr)) {
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
}
//修改状态
$update = [];
$update['game_status'] = 1;
$update['game_id'] = $game_id;
$update['update_time'] = time();
$reslut = db::name('room')->where('rid', $rid)->update($update);
if(!$reslut){
return ['code' => 201, 'msg' => '开始失败', 'data' => null];
}
//发送socket
$data = [];
$data['rid'] = $rid;
$data['game_id'] = $game_id;
$data['game_status'] = 1;
$push_data = [];
$push_data['code'] = 330;
$push_data['msg'] = "房间游戏开始";
$push_data['data'] = $data;
model('api/WebSocketPush')->send_to_group($rid, $push_data);
model('Room')->push_room_micro_data($rid); //推送最新房间麦位信息
return ['code' => 200, 'msg' => '游戏开始', 'data' => $data];
}
//房间结束游戏
public function room_game_end($uid, $rid, $game_id){
$room_info = db::name('room')->find($rid);
if(!$room_info){
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
}
//是否有权限
// $room_admin_uid_arr = explode(',', $room_info['room_admin_uid']);
// if ($uid != $room_info['room_owner_uid'] && !in_array($uid, $room_admin_uid_arr)) {
// return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
// }
$room_admin_uid_arr = db::name('room_admin')->where('rid', $rid)->where('is_delete', 1)->column('uid');
$room_host_uid_arr = db::name('room_host')->where('rid', $rid)->where('is_delete', 1)->column('uid');
// if ($uid != $room_info['room_owner_uid'] && !in_array($uid, $room_admin_uid_arr) && !in_array($uid, $room_host_uid_arr)) {
if ($uid != $room_info['room_owner_uid'] && !in_array($uid, $room_host_uid_arr)) {
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
}
//修改状态
$update = [];
$update['game_status'] = 2;
$update['game_id'] = 0;
$update['update_time'] = time();
$reslut = db::name('room')->where('rid', $rid)->update($update);
if(!$reslut){
return ['code' => 201, 'msg' => '结束失败', 'data' => null];
}
//发送socket
$data = [];
$data['rid'] = $rid;
$data['game_id'] = $game_id;
$data['game_status'] = 2;
$push_data = [];
$push_data['code'] = 331;
$push_data['msg'] = "房间游戏结束";
$push_data['data'] = $data;
model('api/WebSocketPush')->send_to_group($rid, $push_data);
model('Room')->push_room_micro_data($rid); //推送最新房间麦位信息
return ['code' => 200, 'msg' => '游戏结束', 'data' => $data];
}
}