field('id,rid,uid,micro_id')->where($map)->select(); if(!empty($room_date_micro_list)){ foreach ($room_date_micro_list as $k => $v){ Db::startTrans(); try { $update = []; $update['is_delete'] = 2; $update['update_time'] = time(); $reslut = db::name('room_date_micro')->where('id', $v['id'])->update($update); if(!$reslut){ Db::rollback(); } $room_info = db::name('room')->where('rid', $v['rid'])->field('rid, room_micro,cate_id')->find(); // $room_micro_array = explode(',', $room_info['room_micro']); // if($room_micro_array[$v['micro_id']] == $v['uid'] && $room_info['cate_id'] == 19){ // model('api/room')->user_down_micro($v['uid'], $v['rid']); // } $room_micro_info = db::name('room_micro')->where('rid', $v['rid'])->where('uid', $v['uid'])->find(); if($room_micro_info){ if($room_info['cate_id'] == 19){ model('api/room')->user_down_micro($v['uid'], $v['rid']); } } Db::commit(); } catch (\Exception $e) { dump($e); // 回滚事务 Db::rollback(); } } } return true; } //心愿礼物列表 public function get_wish_gift_list($uid, $page, $page_limit){ $page = intval($page); $page_limit = $page_limit < 1000 ? $page_limit : 1000; $map = []; $map[] = ['is_show', '=', 1]; $map[] = ['is_can_buy', '=', 1]; $map[] = ['is_delete', '=', 1]; $map[] = ['gift_price', '>', 0]; $map[] = ['type', '=', 1]; $map[] = ['is_wish', '=', 1]; $gift_list = db::name('gift')->where($map)->field('gid,gift_type,gift_name,gift_price,base_image,play_image,is_public_screen,is_public_server')->order('sort desc,gift_price asc')->select(); foreach ($gift_list as $k => &$v){ $v['play_image'] = localpath_to_netpath($v['play_image']); $v['base_image'] = localpath_to_netpath($v['base_image']); // if(empty($v['gift_label'])){ // $v['gift_label'] = ''; // } } return ['code' => 200, 'msg' => '获取成功', 'data' => $gift_list]; } //麦上用户配置心愿礼物 public function oprate_user_wish_gift($uid, $rid, $micro_id, $gid){ $user_info = db::name('user')->field('uid')->find(); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $room_info = db::name('room')->where('rid', $rid)->find(); if(!$room_info){ return ['code' => 201, 'msg' => '房间信息错误', 'data' => null]; } if($gid != 0){ //该礼物是否存在 $map = []; $map[] = ['gid', '=', $gid]; $map[] = ['is_show', '=', 1]; $map[] = ['is_can_buy', '=', 1]; $map[] = ['is_delete', '=', 1]; $map[] = ['gift_price', '>', 0]; $map[] = ['type', '=', 1]; $gift_info = db::name('gift')->where($map)->find(); if(!$gift_info){ return ['code' => 201, 'msg' => '该心愿礼物不存在', 'data' =>null]; } } $micro_id = (int) $micro_id; // $room_micro_array = explode(',', $room_info['room_micro']); $room_micro_array = db::name('room_micro')->where('rid', $rid)->order('micro_id asc')->column('uid'); if($room_micro_array[$micro_id] != $uid){ return ['code' => 201, 'msg' => '你所在麦位信息错误', 'data' => null]; } $map = []; $map[] = ['uid', '=', $uid]; $map[] = ['rid', '=', $rid]; $map[] = ['micro_id', '=', $micro_id]; $map[] = ['status', '=', 1]; $map[] = ['is_delete', '=', 1]; $user_room_date_micro = db::name('room_date_micro')->where($map)->order('id desc')->find(); if(!$user_room_date_micro){ return ['code' => 201, 'msg' => '你尚未有在该麦位信息', 'data' => null]; } Db::startTrans(); try { //设置心愿礼物 $update = []; $update['wish_gid'] = $gid; if($gid != 0){ $update['wish_gift_name'] = $gift_info['gift_name']; }else{ $update['wish_gift_name'] = ''; } $update['update_time'] = time(); $reslut = db::name('room_date_micro')->where('id', $user_room_date_micro['id'])->update($update); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } Db::commit(); model('room')->push_room_micro_data($rid); return ['code' => 200, 'msg' => '操作成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } } //撩他 public function tease_user_send_gift($uid, $rid, $receive_uid){ $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')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '房间信息错误', 'data' => null]; } //用户是否在麦上 $map = []; $map[] = ['uid', '=', $receive_uid]; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $map[] = ['status', '=', 1]; $room_date_micro_info = db::name('room_date_micro')->where($map)->order('id desc')->find(); if(!$room_date_micro_info){ return ['code' => 201, 'msg' => '该用户暂未在麦上', 'data' => null]; } //是否有设置撩Ta礼物 $config = get_uncache_system_config(); if(empty($config['tease_gift_id'])){ return ['code' => 201, 'msg' => '暂未设置撩TA礼物,请联系管理', 'data' => null]; } $map = []; $map[] = ['gid', '=', $config['tease_gift_id']]; $map[] = ['is_delete', '=', 1]; $gift_info = db::name('gift')->where($map)->find(); if(!$gift_info){ return ['code' => 201, 'msg' => '暂未设置撩TA礼物,请联系管理', 'data' => null]; } //送礼物 $reslut = model('api/Gift')->send_gift($uid, $receive_uid, $rid, $config['tease_gift_id'], 1, 1, 0); if($reslut['code'] == 201){ return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } $sutain_time = 1; //添加记录 $insert = []; $insert['uid'] = $uid; $insert['rid'] = $rid; $insert['receive_uid'] = $receive_uid; $insert['send_gid'] = $config['tease_gift_id']; $insert['sustain_time'] = $sutain_time; $insert['add_time'] = time(); $insert['end_time'] = time() + ($sutain_time * 60); db::name('user_tease_log')->insert($insert); $pust_data = []; $pust_data['code'] = 1014; $pust_data['msg'] = '撩他'; $push_data1 = []; $push_data1['img'] = 'https://mier-1333389464.cos.ap-chengdu.myqcloud.com/pub/pub.gif'; $push_data1['receive_uid'] = $receive_uid; $pust_data['data'] = $push_data1; $push_is_open = model('api/WebSocketPush')->send_to_group($rid, $pust_data); return ['code' => 200, 'msg' => '操作成功', 'data' => null]; } //一键全撩 public function tease_all_send_gift($uid, $rid, $to_uid_list){ $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')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '房间信息错误', 'data' => null]; } $to_uid_array = explode(',',trim($to_uid_list,',')); //用户是否在麦上 $map = []; $map[] = ['uid', 'in', $to_uid_array]; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $map[] = ['status', '=', 1]; $room_date_micro_info = db::name('room_date_micro')->where($map)->order('id desc')->select(); if(!$room_date_micro_info){ return ['code' => 201, 'msg' => '当前无可撩对象', 'data' => null]; } if(count($to_uid_array) != count($room_date_micro_info)){ return ['code' => 201, 'msg' => '当前无可撩对象', 'data' => null]; } //是否有设置撩Ta礼物 $config = get_uncache_system_config(); if(empty($config['tease_gift_id'])){ return ['code' => 201, 'msg' => '暂未设置撩TA礼物,请联系管理', 'data' => null]; } $map = []; $map[] = ['gid', '=', $config['tease_gift_id']]; $map[] = ['is_delete', '=', 1]; $gift_info = db::name('gift')->where($map)->find(); if(!$gift_info){ return ['code' => 201, 'msg' => '暂未设置撩TA礼物,请联系管理', 'data' => null]; } //送礼物 $reslut = model('api/Gift')->send_gift($uid, $to_uid_list, $rid, $config['tease_gift_id'], 1, 1, 0); if($reslut['code'] == 201){ return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } $sutain_time = 1; //添加记录 $insert_data = []; foreach($to_uid_array as $k => $v){ $insert = []; $insert['uid'] = $uid; $insert['rid'] = $rid; $insert['receive_uid'] = $v; $insert['send_gid'] = $config['tease_gift_id']; $insert['sustain_time'] = $sutain_time; $insert['add_time'] = time(); $insert['end_time'] = time() + ($sutain_time * 60); $insert_data[] = $insert; } db::name('user_tease_log')->insertAll($insert_data); $pust_data = []; $pust_data['code'] = 1015; $pust_data['msg'] = '一键全撩'; $push_data1 = []; $push_data1['img'] = 'https://mier-1333389464.cos.ap-chengdu.myqcloud.com/pub/pub.gif'; $push_data1['to_uid_list'] = $to_uid_array; $pust_data['data'] = $push_data1; $push_is_open = model('api/WebSocketPush')->send_to_group($rid, $pust_data); return ['code' => 200, 'msg' => '操作成功', 'data' => null]; } //心愿礼物详情 public function wish_gift_info($uid, $rid, $receive_uid){ $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_micro')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '该房间不存在', 'data' => null]; } $receive_info = db::name('user')->where('uid', $receive_uid)->find(); if(!$receive_uid){ return ['code' => 201, 'msg' => '用户不存在', 'data' => null]; } //用户是否在麦上 $map = []; $map[] = ['uid', '=', $receive_uid]; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $map[] = ['status', '=', 1]; $room_date_micro_info = db::name('room_date_micro')->where($map)->order('id desc')->find(); if(!$room_date_micro_info){ return ['code' => 201, 'msg' => '该用户暂未在麦上', 'data' => null]; } //是否有设置心愿礼物 if(empty($room_date_micro_info['wish_gid'])){ return ['code' => 201, 'msg' => '该用户尚未设置心愿礼物', 'data' => null]; } $gift_info = db::name('Gift')->where('gid', $room_date_micro_info['wish_gid'])->find(); if(!$gift_info){ return ['code' => 201, 'msg' => '该心愿礼物不存在', 'data' => null]; } $data = []; $data['uid'] = $receive_uid; $data['nick_name'] = mb_convert_encoding(base64_decode($receive_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $data['head_pic'] = localpath_to_netpath($receive_info['head_pic']); $data['gift_name'] = $gift_info['gift_name']; $data['base_image'] = localpath_to_netpath($gift_info['base_image']); $data['gift_price'] = $gift_info['gift_price']; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //约TA public function date_user_send_gift($uid, $rid, $receive_uid){ $config = get_uncache_system_config(); $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_micro,room_host_uid')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '该房间不存在', 'data' => null]; } if($room_info['room_host_uid'] == $uid){ return ['code' => 201, 'msg' => '主持不可约TA!', 'data' => null]; } //用户是否在麦上 $map = []; $map[] = ['uid', '=', $receive_uid]; $map[] = ['rid', '=', $rid]; $map[] = ['is_delete', '=', 1]; $map[] = ['status', '=', 1]; $room_date_micro_info = db::name('room_date_micro')->where($map)->order('id desc')->find(); if(!$room_date_micro_info){ return ['code' => 201, 'msg' => '该用户暂未在麦上', 'data' => null]; } //是否有设置心愿礼物 if(empty($room_date_micro_info['wish_gid'])){ return ['code' => 201, 'msg' => '该用户尚未设置心愿礼物', 'data' => null]; } $now_time = time(); Db::startTrans(); try { //添加记录 $insert = []; $insert['uid'] = $uid; $insert['rid'] = $rid; $insert['receive_uid'] = $receive_uid; $insert['wish_gid'] = $room_date_micro_info['wish_gid']; $insert['add_time'] = time(); $reslut = db::name('user_blind_date_log')->insert($insert); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } //该用户下麦 $receive_micro = db::name('room_micro')->where('uid', $receive_uid)->where('rid', $rid)->find(); if($receive_micro){ $reslut = db::name('room_micro')->where('id', $receive_micro['id'])->update(['uid' => 0, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } //清除麦位魅力值 $map = []; $map[] = ['uid', '=', $receive_uid]; // $map[] = ['rid', '=', $rid]; $data = []; $data['charm_value'] = 0; $data['update_time'] = time(); $info = db::name('room_user_cc')->where($map)->find(); if($info){ $reslut = db::name('room_user_cc')->where($map)->update($data); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } } } $uid_micro = db::name('room_micro')->where('uid', $uid)->where('rid', $rid)->find(); if($uid_micro){ $reslut = db::name('room_micro')->where('id', $uid_micro['id'])->update(['uid' => 0, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } //清除麦位魅力值 $map = []; $map[] = ['uid', '=', $uid]; // $map[] = ['rid', '=', $rid]; $data = []; $data['charm_value'] = 0; $data['update_time'] = time(); $info = db::name('room_user_cc')->where($map)->find(); if($info){ $reslut = db::name('room_user_cc')->where($map)->update($data); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } } } $prid = 0; //是否有空闲的私密小屋 $map = []; $map[] = ['is_use', '=', 2]; $room_privacy = db::name('room_privacy')->where($map)->find(); if(!empty($room_privacy)){ $update = []; $update['rid'] = $rid; $update['uid_data'] = $uid.','.$receive_uid; $update['is_use'] = 1; $update['update_time'] = $now_time; $update['end_time'] = $now_time + $config['privacy_room_time']; $reslut = db::name('room_privacy')->where('prid', $room_privacy['prid'])->update($update); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } $prid = $room_privacy['prid']; }else{ $reslut = model('api/DatingRoom')->create_privacy_room(); if($reslut['code'] != 200){ Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } $prid = $reslut['data']; $update = []; $update['rid'] = $rid; $update['uid_data'] = $uid.','.$receive_uid; $update['is_use'] = 1; $update['update_time'] = $now_time; $update['end_time'] = $now_time + $config['privacy_room_time']; $reslut = db::name('room_privacy')->where('prid', $prid)->update($update); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } } if(empty($prid)){ Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } //送礼物 $reslut = model('api/Gift')->send_gift($uid, $receive_uid, $rid, $room_date_micro_info['wish_gid'], 1, 1, 0); if($reslut['code'] == 201){ Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } Db::commit(); if(!empty($uid)){ $push_send_user_data = []; $push_send_user_data['rid'] = $rid; $push_send_user_data['prid'] = $prid; $push_send_user_data['agora_token'] = model('api/Agora')->agora_token_info($uid, $prid); $push_send_user_data['agora_app_id'] = $config['agora_app_id']; $push_data = []; $push_data['code'] = 351; $push_data['msg'] = "推送进入私密小屋"; $push_data['data'] = $push_send_user_data; model('api/WebSocketPush')->send_to_one($uid, $push_data); } if(!empty($receive_uid)){ $push_send_receive_data = []; $push_send_receive_data['rid'] = $rid; $push_send_receive_data['prid'] = $prid; $push_send_receive_data['agora_token'] = model('api/Agora')->agora_token_info($receive_uid, $prid); $push_send_receive_data['agora_app_id'] = $config['agora_app_id']; $push_data = []; $push_data['code'] = 351; $push_data['msg'] = "推送进入私密小屋"; $push_data['data'] = $push_send_receive_data; model('api/WebSocketPush')->send_to_one($receive_uid, $push_data); } return ['code' => 200, 'msg' => '操作成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } } }