865 lines
35 KiB
PHP
865 lines
35 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace app\api\model;
|
||
|
|
|
||
|
|
use think\Db;
|
||
|
|
use think\Model;
|
||
|
|
|
||
|
|
class RoomApplyMicro extends Model
|
||
|
|
{
|
||
|
|
|
||
|
|
//申请上台列表
|
||
|
|
public function apply_room_micro($uid, $rid){
|
||
|
|
$user_info = db::name('user')->field('uid,add_time')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$room_info = db::name('room')->find($rid);
|
||
|
|
if(!$room_info){
|
||
|
|
return ['code' => 201, 'msg' => '该房间不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//新人厅,不是新人无法申请
|
||
|
|
if($room_info['cate_id'] == 26){
|
||
|
|
//该用户是否是新人
|
||
|
|
$is_new_time = $user_info['add_time'] + (60*60*24*7);
|
||
|
|
if(time() > $is_new_time){
|
||
|
|
return ['code' => 201, 'msg' => '您不是新人,无法申请', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//该用户是否已被签约
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['sign_uid', '=', $uid];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$user_contract = db::name('user_sign_contract')->where($map)->find();
|
||
|
|
if($user_contract){
|
||
|
|
return ['code' => 201, 'msg' => '您已签约过,无法再次申请', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if($uid == $room_info['room_host_uid']){
|
||
|
|
return ['code' => 201, 'msg' => '您已在主持麦,无法申请', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//用户是否在麦上
|
||
|
|
$room_micro_list = db::name('room_micro')->where('rid', $rid)->order('micro_id asc')->column('uid');
|
||
|
|
$user_room_micro = db::name('room_micro')->where('rid', $rid)->where('uid', $uid)->find();
|
||
|
|
if(in_array($room_info['cate_id'], [27,28])){
|
||
|
|
if(in_array($user_room_micro['micro_id'], [1,2,3,4,9])){
|
||
|
|
return ['code' => 201, 'msg' => '您已在麦上,请勿再次申请', 'data' => null];
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
if(in_array($uid, $room_micro_list)){
|
||
|
|
return ['code' => 201, 'msg' => '您已在麦上,请勿再次申请', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//是否已申请
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['uid', '=', $uid];
|
||
|
|
$map[] = ['rid', '=', $rid];
|
||
|
|
$map[] = ['status', '=', 2];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$room_micro_aisle = db::name('room_micro_aisle')->where($map)->find();
|
||
|
|
if($room_micro_aisle){
|
||
|
|
return ['code' => 201, 'msg' => '您已提交过该申请', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//是否已达申请上限
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['rid', '=', $rid];
|
||
|
|
$map[] = ['status', '=', 2];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$map[] = ['type', '=', 1];
|
||
|
|
$apply_common_count = db::name('room_micro_aisle')->where($map)->count();
|
||
|
|
if($apply_common_count >= 20){
|
||
|
|
return ['code' => 201, 'msg' => '申请人数已达上限,请稍后', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//
|
||
|
|
Db::startTrans();
|
||
|
|
try {
|
||
|
|
//添加申请
|
||
|
|
$insert = [];
|
||
|
|
$insert['uid'] = $uid;
|
||
|
|
$insert['rid'] = $rid;
|
||
|
|
$insert['type'] = 1;
|
||
|
|
$insert['add_time'] = time();
|
||
|
|
$insert['status'] = 2;
|
||
|
|
$reslut = db::name('room_micro_aisle')->insert($insert);
|
||
|
|
if(!$reslut){
|
||
|
|
return ['code' => 201, 'msg' => '申请失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::commit();
|
||
|
|
$this->update_room_micro_aisle($uid, $rid);
|
||
|
|
|
||
|
|
return ['code' => 200, 'msg' => '申请成功', 'data' => null];
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
// 回滚事务
|
||
|
|
dump($e);
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '申请失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//取消申请
|
||
|
|
public function unapply_room_micro($uid, $rid, $id){
|
||
|
|
$user_info = db::name('user')->field('uid')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$room_info = db::name('room')->find($rid);
|
||
|
|
if(!$room_info){
|
||
|
|
return ['code' => 201, 'msg' => '该房间不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['id', '=', $id];
|
||
|
|
$map[] = ['uid', '=', $uid];
|
||
|
|
$user_room_micro_aisle = db::name('room_micro_aisle')->where($map)->find();
|
||
|
|
if(!$user_room_micro_aisle){
|
||
|
|
return ['code' => 201, 'msg' => '该申请不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if($user_room_micro_aisle['is_delete'] == 2 || $user_room_micro_aisle['status'] != 2){
|
||
|
|
return ['code' => 201, 'msg' => '该申请已被处理', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::startTrans();
|
||
|
|
try {
|
||
|
|
$update = [];
|
||
|
|
$update['user_id'] = $uid;
|
||
|
|
$update['is_delete'] = 2;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_aisle')->where('id', $id)->update($update);
|
||
|
|
if(!$reslut){
|
||
|
|
return ['code' => 201, 'msg' => '取消失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::commit();
|
||
|
|
$this->update_room_micro_aisle($uid, $rid);
|
||
|
|
return ['code' => 200, 'msg' => '取消成功', 'data' => null];
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
// 回滚事务
|
||
|
|
dump($e);
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '取消失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//取消用户通道
|
||
|
|
public function quit_user_room_micro_aisle($uid, $rid){
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['status', '=', 2];
|
||
|
|
$map[] = ['uid', '=', $uid];
|
||
|
|
$map[] = ['rid', '=', $rid];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$room_micro_aisle = db::name('room_micro_aisle')->where($map)->find();
|
||
|
|
if($room_micro_aisle){
|
||
|
|
$update = [];
|
||
|
|
$update['user_id'] = $uid;
|
||
|
|
$update['is_delete'] = 2;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
db::name('room_micro_aisle')->where('id', $room_micro_aisle['id'])->update($update);
|
||
|
|
}
|
||
|
|
$this->update_room_micro_aisle($uid, $rid);
|
||
|
|
return ['code' => 200, 'msg' => '取消成功', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//更新通道信息
|
||
|
|
public function update_room_micro_aisle($uid, $rid){
|
||
|
|
$room_info = db::name('room')->field('rid')->find($rid);
|
||
|
|
if(!$room_info){
|
||
|
|
return ['code' => 201, 'msg' => '该房间不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$push_data = [];
|
||
|
|
$push_data['code'] = 361;
|
||
|
|
$push_data['msg'] = "更新通道信息";
|
||
|
|
$data = $this->get_room_micro_list($uid, $rid);
|
||
|
|
$push_data['data'] = $data['data'];
|
||
|
|
// dump($push_data);exit;
|
||
|
|
model('api/WebSocketPush')->send_to_group($rid, $push_data);
|
||
|
|
}
|
||
|
|
|
||
|
|
//等待上台列表
|
||
|
|
public function get_room_micro_list($uid, $rid){
|
||
|
|
$user_info = db::name('user')->field('uid')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$room_info = db::name('room')->field('rid,help_micro_gid')->find($rid);
|
||
|
|
if(!$room_info){
|
||
|
|
return ['code' => 201, 'msg' => '该房间不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$gid = 0;
|
||
|
|
$gift_name = '';
|
||
|
|
$base_image = '';
|
||
|
|
if(!empty($room_info['help_micro_gid'])){
|
||
|
|
$gift_info = db::name('gift')->find($room_info['help_micro_gid']);
|
||
|
|
$gid = $room_info['help_micro_gid'];
|
||
|
|
$gift_name = $gift_info['gift_name'];
|
||
|
|
$base_image = localpath_to_netpath($gift_info['base_image']);
|
||
|
|
}
|
||
|
|
|
||
|
|
$data = [];
|
||
|
|
$data['priority_aisle'] = [];
|
||
|
|
$data['priority_count'] = 0;
|
||
|
|
$data['priority_total_count'] = 20;
|
||
|
|
$data['common_aisle'] = [];
|
||
|
|
$data['common_count'] = 0;
|
||
|
|
$data['common_total_count'] = 20;
|
||
|
|
$data['gid'] = $gid;
|
||
|
|
$data['gift_name'] = $gift_name;
|
||
|
|
$data['base_image'] = $base_image;
|
||
|
|
|
||
|
|
//普通通道列表
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['a.rid', '=', $rid];
|
||
|
|
$map[] = ['a.type', '=', 1];
|
||
|
|
$map[] = ['a.is_delete', '=', 1];
|
||
|
|
$map[] = ['a.status', '=', 2];
|
||
|
|
$common_aisle = db::name('room_micro_aisle')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.id,a.uid,a.rid,a.type,a.rank_value,b.nick_name,b.base64_nick_name,b.head_pic')->where($map)->order('a.id asc')->select();
|
||
|
|
foreach ($common_aisle as $k => &$v){
|
||
|
|
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
|
||
|
|
$v['head_pic'] = localpath_to_netpath($v['head_pic']);
|
||
|
|
}
|
||
|
|
if(!empty($common_aisle)){
|
||
|
|
$data['common_aisle'] = $common_aisle;
|
||
|
|
$data['common_count'] = count($common_aisle);
|
||
|
|
}
|
||
|
|
|
||
|
|
//优先通道列表
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['a.rid', '=', $rid];
|
||
|
|
$map[] = ['a.type', '=', 2];
|
||
|
|
$map[] = ['a.is_delete', '=', 1];
|
||
|
|
$map[] = ['a.status', '=', 2];
|
||
|
|
$priority_aisle = db::name('room_micro_aisle')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.id,a.uid,a.rid,a.type,a.rank_value,b.nick_name,b.base64_nick_name,b.head_pic')->where($map)->order('a.rank_value desc')->select();
|
||
|
|
foreach ($priority_aisle as $a => &$b){
|
||
|
|
$b['nick_name'] = mb_convert_encoding(base64_decode($b['base64_nick_name']), 'UTF-8', 'UTF-8');
|
||
|
|
$b['head_pic'] = localpath_to_netpath($b['head_pic']);
|
||
|
|
}
|
||
|
|
if(!empty($priority_aisle)){
|
||
|
|
$data['priority_aisle'] = $priority_aisle;
|
||
|
|
$data['priority_count'] = count($priority_aisle);
|
||
|
|
}
|
||
|
|
|
||
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
|
||
|
|
}
|
||
|
|
|
||
|
|
//清空上台列表
|
||
|
|
public function clears_room_micro_list($uid, $rid){
|
||
|
|
$user_info = db::name('user')->field('uid')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$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']);
|
||
|
|
$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)->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_admin_uid_arr)) {
|
||
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::startTrans();
|
||
|
|
try {
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['rid', '=', $rid];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$map[] = ['status', '=', 2];
|
||
|
|
$map[] = ['type', 'in', [1,2]];
|
||
|
|
$room_micro_aisle_list = db::name('room_micro_aisle')->where($map)->find();
|
||
|
|
if(empty($room_micro_aisle_list)){
|
||
|
|
return ['code' => 201, 'msg' => '当前尚未有申请上台用户', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$update = [];
|
||
|
|
$update['user_id'] = $uid;
|
||
|
|
$update['is_delete'] = 2;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_aisle')->where($map)->update($update);
|
||
|
|
if(!$reslut){
|
||
|
|
return ['code' => 201, 'msg' => '清空失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::commit();
|
||
|
|
$this->update_room_micro_aisle($uid, $rid);
|
||
|
|
return ['code' => 200, 'msg' => '清空成功', 'data' => null];
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
// 回滚事务
|
||
|
|
dump($e);
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '清空失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//同意、拒绝上台
|
||
|
|
public function operate_user_micro($uid, $rid, $id, $type, $seat, $time){
|
||
|
|
$user_info = db::name('user')->field('uid')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$room_info = db::name('room')->find($rid);
|
||
|
|
if(!$room_info){
|
||
|
|
return ['code' => 201, 'msg' => '该房间不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['id', '=', $id];
|
||
|
|
$user_room_micro_aisle = db::name('room_micro_aisle')->where($map)->find();
|
||
|
|
if(!$user_room_micro_aisle){
|
||
|
|
return ['code' => 201, 'msg' => '该申请不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$receive_user_info = db::name('user')->where('uid', $user_room_micro_aisle['uid'])->field('uid, sex')->find();
|
||
|
|
|
||
|
|
|
||
|
|
if(!in_array($type, [1,2])){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
// $room_admin_uid_arr = explode(',', $room_info['room_admin_uid']);
|
||
|
|
$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)->column('uid');
|
||
|
|
if ($uid != $room_info['room_owner_uid'] && !in_array($uid, $room_admin_uid_arr) && !in_array($uid, $room_host_uid_arr)) {
|
||
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//用户是否在麦上
|
||
|
|
// $room_micro_list = db::name('room_micro')->where('rid', $rid)->order('micro_id asc')->column('uid');
|
||
|
|
// if(in_array($user_room_micro_aisle['uid'], $room_micro_list)){
|
||
|
|
// return ['code' => 201, 'msg' => '该用户已在麦上', 'data' => null];
|
||
|
|
// }
|
||
|
|
if($room_info['room_host_uid'] == $user_room_micro_aisle['uid']){
|
||
|
|
return ['code' => 201, 'msg' => '该用户已在主持麦上', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$user_room_micro_info = db::name('room_micro')->where('rid', $rid)->where('uid', $user_room_micro_aisle['uid'])->find();
|
||
|
|
if($user_room_micro_info){
|
||
|
|
if(!in_array($room_info['cate_id'], [27,28])){
|
||
|
|
return ['code' => 201, 'msg' => '该用户已在麦上', 'data' => null];
|
||
|
|
}else{
|
||
|
|
if(!in_array($user_room_micro_info['micro_id'],[5,6,7,8])){
|
||
|
|
return ['code' => 201, 'msg' => '该用户已在麦上', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if($room_info['cate_id'] == 29 && $type == 1){
|
||
|
|
$room_dating_log = db::name('room_dating_log')->where('rid', $rid)->where('is_delete', 1)->find();
|
||
|
|
if($room_dating_log){
|
||
|
|
return ['code' => 201, 'msg' => '当前心动连线已开始无法同意上麦', 'data' => null];
|
||
|
|
}
|
||
|
|
$is_path = db::name('room_privacy')->whereRaw('FIND_IN_SET('.$user_room_micro_aisle['uid'].',uid_data)')->field('prid')->find();
|
||
|
|
if(!empty($is_path)){
|
||
|
|
return ['code' => 201, 'msg' => '该用户正在私密小屋,无法同意上麦', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if($room_info['cate_id'] == 27 && $type == 1){
|
||
|
|
$activity_info = db::name('room_song_log')->where('rid', $rid)->where('is_delete', 1)->find();
|
||
|
|
if(!empty($activity_info)){
|
||
|
|
$uid_array = explode(',', trim($activity_info['uid_array'], ','));
|
||
|
|
if(in_array($user_room_micro_aisle['uid'], $uid_array)){
|
||
|
|
return ['code' => 201, 'msg' => '活动进行中,无法同意上麦', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// if(in_array($room_info['cate_id'],[36,37]) && $type == 1){
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
// }
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
// $time = strtotime(date("Y-m-d"));
|
||
|
|
Db::startTrans();
|
||
|
|
try {
|
||
|
|
if($type == 1){//同意
|
||
|
|
$room_micro_data = db::name('room_micro')->where('rid', $rid)->order('micro_id asc')->column('uid');
|
||
|
|
// dump($room_micro_data);
|
||
|
|
$update = [];
|
||
|
|
$update['user_id'] = $uid;
|
||
|
|
$update['status'] = 1;
|
||
|
|
$update['is_delete'] = 2;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_aisle')->where('id', $id)->update($update);
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$micro_id = 0;
|
||
|
|
//上麦,变更麦位
|
||
|
|
|
||
|
|
|
||
|
|
$user_micro_id = $this->user_room_micro_id($room_info['cate_id'], $room_micro_data, $seat,$receive_user_info['sex']);
|
||
|
|
if($user_micro_id['code'] == 201){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => $user_micro_id['msg'], 'data' => null];
|
||
|
|
}
|
||
|
|
$micro_id = $user_micro_id['data'] - 1;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
if($room_info['cate_id'] == 19 && ($micro_id != 6)){
|
||
|
|
if($time < 1){
|
||
|
|
return ['code' => 201, 'msg' => '上麦时间不能小于一分钟', 'data' => null];
|
||
|
|
}
|
||
|
|
//清除之前在麦状态
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['uid', '=', $receive_user_info['uid']];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$update = [];
|
||
|
|
$update['is_delete'] = 2;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$info = db::name('room_date_micro')->where($map)->find();
|
||
|
|
if($info){
|
||
|
|
$reslut = db::name('room_date_micro')->where($map)->update($update);
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//添加在麦时间记录
|
||
|
|
$insert = [];
|
||
|
|
$insert['user_id'] = $uid;
|
||
|
|
$insert['uid'] = $receive_user_info['uid'];
|
||
|
|
$insert['rid'] = $rid;
|
||
|
|
$insert['micro_id'] = $micro_id;
|
||
|
|
$insert['sustain_time'] = $time;
|
||
|
|
$insert['add_time'] = time();
|
||
|
|
$insert['end_time'] = time() + ($time * 60);
|
||
|
|
$reslut = db::name('room_date_micro')->insert($insert);
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
$reslut = model('room')->user_up_micro($receive_user_info['uid'], $rid, $micro_id, 2);
|
||
|
|
if($reslut['code'] != 200){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if($room_info['cate_id'] == 28){
|
||
|
|
//清除之前拍卖信息
|
||
|
|
$infos = db::name('room_auction_log')->where('rid', $rid)->where('is_delete', 1)->find();
|
||
|
|
if(!empty($infos)){
|
||
|
|
db::name('room_auction_log')->where('rid', $rid)->where('is_delete', 1)->update(['is_delete' => 2, 'update_time' => time()]);
|
||
|
|
}
|
||
|
|
//用户上拍卖麦位添加拍卖信息
|
||
|
|
// $paimai_long_time = get_uncache_system_config('paimai_long_time');
|
||
|
|
$insert = [];
|
||
|
|
$insert['rid'] = $rid;
|
||
|
|
$insert['uid'] = $receive_user_info['uid'];
|
||
|
|
$insert['add_time'] = time();
|
||
|
|
// $insert['paimai_long_time'] = $paimai_long_time;
|
||
|
|
$reslut = db::name('room_auction_log')->insert($insert);
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}else if($type == 2){//拒绝
|
||
|
|
$update = [];
|
||
|
|
$update['user_id'] = $uid;
|
||
|
|
$update['status'] = 3;
|
||
|
|
$update['is_delete'] = 2;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_aisle')->where('id', $id)->update($update);
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::commit();
|
||
|
|
$this->update_room_micro_aisle($uid, $rid);
|
||
|
|
return ['code' => 200, 'msg' => '操作成功', 'data' => null];
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
// 回滚事务
|
||
|
|
dump($e);
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//获取用户可上麦位ID
|
||
|
|
public function user_room_micro_id($catd_id, $room_micro_data, $seat,$sex=0){
|
||
|
|
|
||
|
|
if ($catd_id == 26) {//新人
|
||
|
|
$max_micro_num = 1;
|
||
|
|
} elseif ($catd_id == 27) {//K歌
|
||
|
|
$max_micro_num = 8;
|
||
|
|
} elseif ($catd_id == 28) {//拍卖
|
||
|
|
$max_micro_num = 1;
|
||
|
|
} elseif ($catd_id == 29) {//交友
|
||
|
|
$max_micro_num = 6;
|
||
|
|
}elseif (in_array($catd_id,[36,37])) {//交友
|
||
|
|
$max_micro_num = 8;
|
||
|
|
} else {//常规房间
|
||
|
|
$max_micro_num = 8;
|
||
|
|
}
|
||
|
|
|
||
|
|
$micro_id = 0;
|
||
|
|
if($catd_id == 29 && !empty($seat)){
|
||
|
|
if($seat == 1){//左边
|
||
|
|
if($room_micro_data[0] == 0){
|
||
|
|
$micro_id = 1;
|
||
|
|
}else if($room_micro_data[2] == 0){
|
||
|
|
$micro_id = 3;
|
||
|
|
}else if($room_micro_data[4] == 0){
|
||
|
|
$micro_id = 5;
|
||
|
|
}
|
||
|
|
}else if($seat == 2){//右边
|
||
|
|
if($room_micro_data[1] == 0){
|
||
|
|
$micro_id = 2;
|
||
|
|
}else if($room_micro_data[3] == 0){
|
||
|
|
$micro_id = 4;
|
||
|
|
}else if($room_micro_data[5] == 0){
|
||
|
|
$micro_id = 6;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}elseif($catd_id==36){ //男生
|
||
|
|
if($sex==1){
|
||
|
|
if($room_micro_data[6] == 0){
|
||
|
|
$micro_id = 7;
|
||
|
|
}else if($room_micro_data[7] == 0){
|
||
|
|
$micro_id = 8;
|
||
|
|
}
|
||
|
|
}elseif($sex==2 || $sex==0){
|
||
|
|
if($room_micro_data[0] == 0){
|
||
|
|
$micro_id = 1;
|
||
|
|
}else if($room_micro_data[1] == 0){
|
||
|
|
$micro_id = 2;
|
||
|
|
}else if($room_micro_data[2] == 0){
|
||
|
|
$micro_id = 3;
|
||
|
|
}else if($room_micro_data[3] == 0){
|
||
|
|
$micro_id = 4;
|
||
|
|
}else if($room_micro_data[4] == 0){
|
||
|
|
$micro_id = 5;
|
||
|
|
}else if($room_micro_data[5] == 0){
|
||
|
|
$micro_id = 6;
|
||
|
|
}else if($room_micro_data[7] == 0){
|
||
|
|
$micro_id = 8;
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
if($room_micro_data[7] == 0){
|
||
|
|
$micro_id = 8;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}elseif($catd_id==37){ //女生
|
||
|
|
if($sex==1){
|
||
|
|
if($room_micro_data[0] == 0){
|
||
|
|
$micro_id = 1;
|
||
|
|
}else if($room_micro_data[1] == 0){
|
||
|
|
$micro_id = 2;
|
||
|
|
}else if($room_micro_data[2] == 0){
|
||
|
|
$micro_id = 3;
|
||
|
|
}else if($room_micro_data[3] == 0){
|
||
|
|
$micro_id = 4;
|
||
|
|
}else if($room_micro_data[4] == 0){
|
||
|
|
$micro_id = 5;
|
||
|
|
}else if($room_micro_data[5] == 0){
|
||
|
|
$micro_id = 6;
|
||
|
|
}else if($room_micro_data[7] == 0){
|
||
|
|
$micro_id = 8;
|
||
|
|
}
|
||
|
|
}elseif($sex==2 || $sex==0){
|
||
|
|
if($room_micro_data[6] == 0){
|
||
|
|
$micro_id = 7;
|
||
|
|
}else if($room_micro_data[7] == 0){
|
||
|
|
$micro_id = 8;
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
if($room_micro_data[7] == 0){
|
||
|
|
$micro_id = 8;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
for ($i = 0; $i <= ($max_micro_num - 1); $i++){
|
||
|
|
if($room_micro_data[$i] == 0){
|
||
|
|
$micro_id = $i + 1;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if($micro_id == 0){
|
||
|
|
return ['code' => 201, 'msg' => '当前没有空麦位', 'data' => null];
|
||
|
|
}else{
|
||
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $micro_id];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//送礼物更新通道状态
|
||
|
|
public function send_gift_micro_aisle_update($uid, $rid, $change_value, $user_id = 0){
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['uid', '=', $uid];
|
||
|
|
$map[] = ['rid', '=', $rid];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$map[] = ['status', '=', 2];
|
||
|
|
$user_room_micro_aisle = db::name('room_micro_aisle')->where($map)->find();
|
||
|
|
if($user_room_micro_aisle){
|
||
|
|
Db::startTrans();
|
||
|
|
try {
|
||
|
|
$update = [];
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_aisle')->where('id', $user_room_micro_aisle['id'])->inc('rank_value', $change_value)->update($update);
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '失败1', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//更新通道排名
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['rid', '=', $rid];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$map[] = ['status', '=', 2];
|
||
|
|
$map[] = ['rank_value', '>', 0];
|
||
|
|
$room_priority_aisle_array = db::name('room_micro_aisle')->where($map)->order('rank_value desc')->limit(20)->column('id');
|
||
|
|
if(!empty($room_priority_aisle_array)){
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['id', 'in', $room_priority_aisle_array];
|
||
|
|
$map[] = ['type', '=', 1];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$map[] = ['status', '=', 2];
|
||
|
|
$info = db::name('room_micro_aisle')->where($map)->select();
|
||
|
|
if(!empty($info)){
|
||
|
|
$update = [];
|
||
|
|
$update['type'] = 2;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_aisle')->where($map)->update($update);
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '失败2', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['id', 'not in', $room_priority_aisle_array];
|
||
|
|
$map[] = ['type', '=', 2];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$map[] = ['status', '=', 2];
|
||
|
|
$infos = db::name('room_micro_aisle')->where($map)->select();
|
||
|
|
if(!empty($infos)){
|
||
|
|
$update = [];
|
||
|
|
$update['type'] = 1;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_aisle')->where($map)->update($update);
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '失败3', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if(!empty($user_id)){
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['uid', '=', $user_id];
|
||
|
|
$map[] = ['pid', '=', $user_room_micro_aisle['id']];
|
||
|
|
$help_dating_micro_info = db::name('room_micro_help_log')->where($map)->find();
|
||
|
|
if($help_dating_micro_info){
|
||
|
|
$update = [];
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_help_log')->where('id', $help_dating_micro_info['id'])->inc('rank_value', $change_value)->update($update);
|
||
|
|
}else{
|
||
|
|
$insert = [];
|
||
|
|
$insert['uid'] = $user_id;
|
||
|
|
$insert['pid'] = $user_room_micro_aisle['id'];
|
||
|
|
$insert['rank_value'] = $change_value;
|
||
|
|
$insert['add_time'] = time();
|
||
|
|
$reslut = db::name('room_micro_help_log')->insert($insert);
|
||
|
|
}
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '失败4', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
Db::commit();
|
||
|
|
$this->update_room_micro_aisle($uid, $rid);
|
||
|
|
return ['code' => 200, 'msg' => '成功', 'data' => null];
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
dump($e);
|
||
|
|
// 回滚事务
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '失败', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return ['code' => 200, 'msg' => '成功', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//助力礼物列表
|
||
|
|
public function get_help_gift_list($uid, $page = 1, $page_limit = 20){
|
||
|
|
$config = get_uncache_system_config();
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['type', 'in', [1,2]];
|
||
|
|
$map[] = ['is_show', '=', 1];
|
||
|
|
if(!empty($config['cp_gift_id'])){
|
||
|
|
$map[] = ['gid', 'neq', $config['cp_gift_id']];
|
||
|
|
}
|
||
|
|
$map[] = ['is_can_buy', '=', 1];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$gift_list = db::name('gift')->where($map)->field('gid, gift_name, base_image, gift_price')->order('gift_price asc')->page($page, $page_limit)->select();
|
||
|
|
foreach($gift_list as $k => &$v){
|
||
|
|
$v['base_image'] = localpath_to_netpath($v['base_image']);
|
||
|
|
}
|
||
|
|
|
||
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $gift_list];
|
||
|
|
}
|
||
|
|
|
||
|
|
//设置房间助力礼物
|
||
|
|
public function operate_room_help_gift($uid, $rid, $gid){
|
||
|
|
$user_info = db::name('user')->field('uid')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$room_info = db::name('room')->field('rid,room_owner_uid, room_admin_uid, help_micro_gid')->find($rid);
|
||
|
|
if(!$room_info){
|
||
|
|
return ['code' => 201, 'msg' => '房间信息不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// $room_admin_uid_arr = explode(',', $room_info['room_admin_uid']);
|
||
|
|
$room_admin_uid_arr = db::name('room_admin')->where('rid', $rid)->where('is_delete', 1)->column('uid');
|
||
|
|
if ($uid != $room_info['room_owner_uid'] && !in_array($uid, $room_admin_uid_arr)) {
|
||
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['type', 'in', [1,2]];
|
||
|
|
$map[] = ['is_show', '=', 1];
|
||
|
|
$map[] = ['is_can_buy', '=', 1];
|
||
|
|
$map[] = ['is_delete', '=', 1];
|
||
|
|
$map[] = ['gid', '=', $gid];
|
||
|
|
$gift_info = db::name('gift')->where($map)->find();
|
||
|
|
if(!$gift_info){
|
||
|
|
return ['code' => 201, 'msg' => '该礼物不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$update = [];
|
||
|
|
$update['help_micro_gid'] = $gid;
|
||
|
|
$update['update_time'] = time();
|
||
|
|
$reslut = db::name('room')->where('rid', $rid)->update($update);
|
||
|
|
if($reslut){
|
||
|
|
$this->update_room_micro_aisle($uid, $rid);
|
||
|
|
return ['code' => 200, 'msg' => '设置成功', 'data' => null];
|
||
|
|
}else{
|
||
|
|
return ['code' => 201, 'msg' => '设置失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//助力送礼
|
||
|
|
public function send_gift_user_micro_help($uid, $rid, $help_uid, $gid, $num){
|
||
|
|
$user_info = db::name('user')->field('uid')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$room_info = db::name('room')->field('rid, room_host_uid,help_micro_gid')->find($rid);
|
||
|
|
if(!$room_info){
|
||
|
|
return ['code' => 201, 'msg' => '房间信息不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if(empty($room_info['room_host_uid'])){
|
||
|
|
return ['code' => 201, 'msg' => '当前尚无主持,无法助力', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if(empty($room_info['help_micro_gid'])){
|
||
|
|
return ['code' => 201, 'msg' => '当前房间尚未设置助力礼物', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if(empty($gid)){
|
||
|
|
return ['code' => 201, 'msg' => '该礼物不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if($gid != $room_info['help_micro_gid']){
|
||
|
|
return ['code' => 201, 'msg' => '赠送礼物与助力礼物不匹配', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if($num < 1){
|
||
|
|
return ['code' => 201, 'msg' => '助力礼物数量不能小于1', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$help_user_info = db::name('user')->field('uid')->find($help_uid);
|
||
|
|
if(!$help_user_info){
|
||
|
|
return ['code' => 201, 'msg' => '助力用户不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$gift_info = db::name('gift')->find($gid);
|
||
|
|
if(!$gift_info){
|
||
|
|
return ['code' => 201, 'msg' => '该礼物不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$total_gift_price = $gift_info['gift_price'] * $num;
|
||
|
|
|
||
|
|
Db::startTrans();
|
||
|
|
try {
|
||
|
|
|
||
|
|
$reslut = model('gift')->send_gift($uid, $room_info['room_host_uid'], $rid, $gid, $num, 1, 0);
|
||
|
|
if($reslut['code'] == 201){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$reslut = $this->send_gift_micro_aisle_update($help_uid, $rid, $total_gift_price, $uid);
|
||
|
|
if($reslut['code'] == 201){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::commit();
|
||
|
|
return ['code' => 200, 'msg' => '成功', 'data' => null];
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
dump($e);
|
||
|
|
// 回滚事务
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '失败', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
}
|