114 lines
4.1 KiB
PHP
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];
|
|
}
|
|
|
|
}
|