561 lines
22 KiB
PHP
561 lines
22 KiB
PHP
<?php
|
||
|
||
namespace app\api\model;
|
||
|
||
|
||
use think\Db;
|
||
use think\Model;
|
||
use think\facade\Env;
|
||
|
||
class PubRoom extends Model
|
||
{
|
||
|
||
//麦位到期更新
|
||
public function close_room_date_micro(){
|
||
$now_time = time();
|
||
$map = [];
|
||
$map[] = ['is_delete', '=', 1];
|
||
$map[] = ['status', '=', 1];
|
||
$map[] = ['end_time', '<', $now_time];
|
||
$room_date_micro_list = db::name('room_date_micro')->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];
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|