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]; } } }