160 lines
6.0 KiB
PHP
160 lines
6.0 KiB
PHP
<?php
|
|
|
|
namespace app\api\model;
|
|
|
|
use think\DB;
|
|
use think\Model;
|
|
|
|
class RoomMcQueue extends Model
|
|
{
|
|
//用户进入排麦列表
|
|
public function enter_room_mc_queue($uid, $rid, $guard_type)
|
|
{
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_info = db::name('room')->field('rid,tid,room_micro,room_owner_uid,room_admin_uid,room_host_uid')->where($map)->find();
|
|
if (empty($room_info)) {
|
|
return ['code' => 201, 'msg' => '房间信息不存在', 'data' => null];
|
|
}
|
|
if (empty($room_info['room_host_uid'])) {
|
|
return ['code' => 201, 'msg' => '主持麦位暂无用户', 'data' => null];
|
|
}
|
|
$gid = 0;
|
|
//电台厅 麦位必传
|
|
if ($room_info['tid'] == 1) {
|
|
//guard_type //1黄金守护 2白银守护 3青铜守护
|
|
|
|
if ($guard_type == 1) {
|
|
$gid = 1;
|
|
} elseif ($guard_type == 2) {
|
|
$gid = 2;
|
|
} elseif ($guard_type == 3) {
|
|
$gid = 3;
|
|
} else {
|
|
return ['code' => 201, 'msg' => '排队麦位不存在', 'data' => null];
|
|
}
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['guard_rid', '=', $room_info['rid']];
|
|
$map[] = ['guard_uid', '=', $room_info['room_host_uid']];
|
|
$map[] = ['gid', '=', $gid];
|
|
$user_guard_info = db::name('user_guard')->field('gid,over_time')->where($map)->find();
|
|
if (empty($user_guard_info)) {
|
|
return ['code' => 202, 'msg' => '守护身份不存在', 'data' => null];
|
|
}
|
|
if ($user_guard_info['over_time'] < time()) {
|
|
return ['code' => 202, 'msg' => '您的守护已过期', 'data' => null];
|
|
}
|
|
}
|
|
|
|
$this->quit_room_mc_queue($uid); //取消用户所有排麦
|
|
$data = [];
|
|
$data['uid'] = $uid;
|
|
$data['guard_rid'] = $room_info['rid'];
|
|
$data['guard_uid'] = $room_info['room_host_uid'];
|
|
$data['gid'] = $gid;
|
|
$data['status'] = 1;
|
|
$data['add_time'] = time();
|
|
$data['update_time'] = time();
|
|
$reslut = db::name('room_mc_queue')->insert($data);
|
|
if ($reslut) {
|
|
return ['code' => 200, 'msg' => '排麦成功', 'data' => null];
|
|
} else {
|
|
return ['code' => 201, 'msg' => '排麦失败', 'data' => null];
|
|
}
|
|
}
|
|
//取消用户排麦
|
|
public function quit_room_mc_queue($uid)
|
|
{
|
|
//取消用户其他排位
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['status', '=', 1];
|
|
$data = [];
|
|
$data['status'] = 3;
|
|
$data['update_time'] = time();
|
|
db::name('room_mc_queue')->where($map)->update($data);
|
|
return ['code' => 200, 'msg' => '取消排麦成功', 'data' => null];
|
|
}
|
|
//获取是否在排麦队列中
|
|
public function get_user_mc_queue_status($uid, $rid)
|
|
{
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_info = db::name('room')->field('rid,tid,room_micro,room_owner_uid,room_admin_uid,room_host_uid')->where($map)->find();
|
|
if (empty($room_info)) {
|
|
return ['code' => 201, 'msg' => '房间信息不存在', 'data' => null];
|
|
}
|
|
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['guard_rid', '=', $room_info['rid']];
|
|
$map[] = ['guard_uid', '=', $room_info['room_host_uid']];
|
|
$map[] = ['status', '=', 1];
|
|
$info = db::name('room_mc_queue')->where($map)->find();
|
|
if (empty($info)) {
|
|
return ['code' => 200, 'msg' => '已在排麦中', 'data' => ['in_mc_queue' => 1]];
|
|
} else {
|
|
return ['code' => 200, 'msg' => '未在排麦中', 'data' => ['in_mc_queue' => 2]];
|
|
}
|
|
}
|
|
//获取房间排麦列表
|
|
public function get_room_mc_queue_list($uid, $rid, $guard_type)
|
|
{
|
|
$map = [];
|
|
$map['rid'] = $rid;
|
|
$map['is_delete'] = 1;
|
|
$room_info = db::name('room')->field('rid,tid,room_micro,room_owner_uid,room_admin_uid,room_host_uid')->where($map)->find();
|
|
if (empty($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];
|
|
}
|
|
|
|
|
|
|
|
$model = Db::name('room_mc_queue')->alias('a')->join('yy_user b', 'a.uid = b.uid');
|
|
$map = [];
|
|
$map[] = ['a.status', '=', 1];
|
|
$map[] = ['a.guard_rid', '=', $rid];
|
|
|
|
//1黄金守护 2白银守护 3青铜守护
|
|
if ($guard_type == 1) {
|
|
$map[] = ['a.gid', '=', 1];
|
|
} elseif ($guard_type == 2) {
|
|
$map[] = ['a.gid', '=', 2];
|
|
} elseif ($guard_type == 3) {
|
|
$map[] = ['a.gid', '=', 3];
|
|
}
|
|
|
|
$model = $model->where($map);
|
|
$list = $model->field('a.qid,a.gid,b.base64_nick_name,b.uid,b.special_uid,b.sex,b.head_pic')->order('a.qid asc')->select();
|
|
foreach ($list as $k => &$v) {
|
|
$v['head_pic'] = localpath_to_netpath($v['head_pic']);
|
|
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$v['guard_type'] = $v['gid'];
|
|
}
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
|
|
}
|
|
//设置用户上麦
|
|
|
|
public function set_user_up_mcrio($uid, $rid)
|
|
{
|
|
//取消用户其他排位
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['guard_rid', '=', $rid];
|
|
$map[] = ['status', '=', 1];
|
|
$data = [];
|
|
$data['status'] = 2;
|
|
$data['update_time'] = time();
|
|
db::name('room_mc_queue')->where($map)->update($data);
|
|
return ['code' => 201, 'msg' => '上麦成功', 'data' => null];
|
|
}
|
|
}
|