1679 lines
76 KiB
PHP
1679 lines
76 KiB
PHP
<?php
|
|
|
|
namespace app\api\model;
|
|
|
|
|
|
use think\Db;
|
|
use think\Model;
|
|
use think\facade\Env;
|
|
|
|
class DatingRoom extends Model
|
|
{
|
|
|
|
/*********************************心动连线***************************************/
|
|
|
|
//开启心动连线
|
|
public function open_heartbeat_line($uid, $rid){
|
|
$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')->find($rid);
|
|
if(!$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];
|
|
// }
|
|
if($uid != $room_info['room_host_uid']){
|
|
return ['code' => 201, 'msg' => '仅限主持麦操作', 'data' => null];
|
|
}
|
|
|
|
//是否已有未结束阶段
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_dating_log = db::name('room_dating_log')->where($map)->find();
|
|
if($room_dating_log){
|
|
return ['code' => 201, 'msg' => '无法重复开启', 'data' => null];
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
// $room_micro_data = explode(',', $room_info['room_micro']);
|
|
$room_micro_data = db::name('room_micro')->where('rid', $rid)->order('micro_id asc')->column('uid');
|
|
$left_micro_num = 0;
|
|
$right_micro_num = 0;
|
|
$micro_uid_data = '';
|
|
foreach($room_micro_data as $a => $b){
|
|
|
|
if(in_array($a, [0,2,4]) && $b > 0){
|
|
$left_micro_num += 1;
|
|
$micro_uid_data .= $b.',';
|
|
}else if(in_array($a, [1,3,5]) && $b > 0){
|
|
$right_micro_num += 1;
|
|
$micro_uid_data .= $b.',';
|
|
}
|
|
}
|
|
|
|
// if($left_micro_num < 1 && $right_micro_num < 1){
|
|
// return ['code' => 201, 'msg' => '双方人数不能为0人', 'data' => null];
|
|
// }
|
|
// if($left_micro_num != $right_micro_num){
|
|
// return ['code' => 201, 'msg' => '双方人数必须一致才能开始', 'data' => null];
|
|
// }
|
|
|
|
if(($left_micro_num + $right_micro_num) < 1){
|
|
return ['code' => 201, 'msg' => '当前交友麦上没有人无法开启', 'data' => null];
|
|
}
|
|
|
|
|
|
$insert = [];
|
|
$insert['rid'] = $rid;
|
|
$insert['participate_uid'] = $micro_uid_data;
|
|
$insert['stage'] = 2;
|
|
$insert['duration'] = $config['heartbeat_line_time'];
|
|
$insert['add_time'] = time();
|
|
$insert['end_time'] = time() + $config['heartbeat_line_time'];
|
|
$reslut = db::name('room_dating_log')->insert($insert);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
Db::commit();
|
|
model('api/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 user_send_gift_heartbeat_line($uid, $receive_uid, $rid, $change_value, $help_uid){
|
|
// $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];
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
$micro_uid_7 = 0;
|
|
$room_micro_datas = [];
|
|
// $room_micro_data = explode(',', $room_info['room_micro']);
|
|
$room_micro_data = db::name('room_micro')->where('rid', $rid)->order('micro_id asc')->column('uid');
|
|
foreach ($room_micro_data as $a => $b){
|
|
if($a < 6){
|
|
$room_micro_datas[] = $b;
|
|
}
|
|
$micro_uid_7 = $room_micro_data[6];
|
|
}
|
|
$is_push = 2;
|
|
//是否有未结束的第二阶段
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['stage', '=', 2];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_dating_log = db::name('room_dating_log')->where($map)->find();
|
|
if($room_dating_log){
|
|
// if(!in_array($uid, $room_micro_datas) && in_array($receive_uid, $room_micro_datas)){//普通用户送麦上,助力
|
|
if(!empty($help_uid)){//助力
|
|
//助力所在的麦位及对应麦位
|
|
$micro_id_1 = db::name('room_micro')->where('rid', $rid)->where('uid', $help_uid)->value('micro_id');
|
|
if($micro_id_1 == 1){
|
|
$help_receive_uid = db::name('room_micro')->where('rid', $rid)->where('micro_id', 2)->value('uid');
|
|
}else if($micro_id_1 == 2){
|
|
$help_receive_uid = db::name('room_micro')->where('rid', $rid)->where('micro_id', 1)->value('uid');
|
|
}else if($micro_id_1 == 3){
|
|
$help_receive_uid = db::name('room_micro')->where('rid', $rid)->where('micro_id', 4)->value('uid');
|
|
}else if($micro_id_1 == 4){
|
|
$help_receive_uid = db::name('room_micro')->where('rid', $rid)->where('micro_id', 3)->value('uid');
|
|
}else if($micro_id_1 == 5){
|
|
$help_receive_uid = db::name('room_micro')->where('rid', $rid)->where('micro_id', 6)->value('uid');
|
|
}else if($micro_id_1 == 6){
|
|
$help_receive_uid = db::name('room_micro')->where('rid', $rid)->where('micro_id', 5)->value('uid');
|
|
}
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['uid|receive_uid', '=', $help_uid];//需更改help_uid
|
|
$map[] = ['uid|receive_uid', '=', $help_receive_uid];
|
|
// $user_room_dating_line = db::name('user_room_dating_line')->where($map)->select();
|
|
$user_room_dating_line = db::name('user_room_dating_line')->where($map)->order('rank_value desc')->find();
|
|
if(!empty($user_room_dating_line)){
|
|
//增加数值
|
|
$update = [];
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('user_room_dating_line')->where('id', $user_room_dating_line['id'])->inc('rank_value', $change_value)->inc('subjoin_value', $change_value)->update($update);
|
|
// $reslut = db::name('user_room_dating_line')->where($map)->inc('rank_value', $change_value)->inc('subjoin_value', $change_value)->update($update);
|
|
|
|
// if(!$reslut){
|
|
// Db::rollback();
|
|
// return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
// }
|
|
|
|
//添加记录
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['line_id', '=', $user_room_dating_line['id']];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['receive_uid', '=', $help_uid];//需更改help_uid
|
|
$user_room_dating_help = db::name('user_room_dating_help')->where($map)->find();
|
|
if($user_room_dating_help){
|
|
$reslut = db::name('user_room_dating_help')->where($map)->inc('subjoin_value', $change_value)->update($update);
|
|
}else{
|
|
$insert = [];
|
|
$insert['pid'] = $room_dating_log['id'];
|
|
$insert['line_id'] = $user_room_dating_line['id'];
|
|
$insert['uid'] = $uid;
|
|
$insert['receive_uid'] = $help_uid;
|
|
$insert['subjoin_value'] = $change_value;
|
|
$insert['add_time'] = time();
|
|
$reslut = db::name('user_room_dating_help')->insert($insert);
|
|
}
|
|
// if(!$reslut){
|
|
// Db::rollback();
|
|
// return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
// }
|
|
$is_push = 1;
|
|
}
|
|
|
|
|
|
|
|
// $map = [];
|
|
// $map[] = ['uid|receive_uid', '=', $help_uid];//需更改help_uid
|
|
// $map[] = ['uid|receive_uid', '=', $help_receive_uid];
|
|
// $map[] = ['r_date', '=', date('Y-m-d')];
|
|
// $dating_mt_wheel = db::name('dating_mt_wheel')->where($map)->find();
|
|
// if(!empty($dating_mt_wheel)){
|
|
// db::name('dating_mt_wheel')->where(['id'=>$dating_mt_wheel['id']])->inc('rank_value', $change_value)->update(['update_time'=>time()]);
|
|
// }
|
|
|
|
// }else if(in_array($uid, $room_micro_datas) && in_array($receive_uid, $room_micro_datas)){//同是麦上用户连线或增加心动值
|
|
}else{//非助力,连线
|
|
if($uid == $room_info['room_host_uid'] || $uid == $micro_uid_7 || $receive_uid == $room_info['room_host_uid'] || $receive_uid == $micro_uid_7){
|
|
//用户为主持麦和嘉宾麦无法参与
|
|
}else{
|
|
//是否有连线
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['uid|receive_uid', '=', $uid];
|
|
$map[] = ['uid|receive_uid', '=', $receive_uid];
|
|
$user_room_dating_line = db::name('user_room_dating_line')->where($map)->find();
|
|
if($user_room_dating_line){
|
|
$update = [];
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('user_room_dating_line')->where('id', $user_room_dating_line['id'])->inc('rank_value', $change_value)->update($update);
|
|
// if(!$reslut){
|
|
// Db::rollback();
|
|
// return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
// }
|
|
|
|
}else{//没有记录连线
|
|
//绑定连线
|
|
$insert = [];
|
|
$insert['pid'] = $room_dating_log['id'];
|
|
$insert['uid'] = $uid;
|
|
$insert['receive_uid'] = $receive_uid;
|
|
$insert['add_time'] = time();
|
|
$insert['rank_value'] = $change_value;
|
|
$reslut = db::name('user_room_dating_line')->insert($insert);
|
|
// if(!$reslut){
|
|
// Db::rollback();
|
|
// return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
// }
|
|
|
|
//uid是否在参与人员中
|
|
$participate_uid_array = trim($room_dating_log['participate_uid'], ',');
|
|
$participate_uid_array = explode(',', $participate_uid_array);
|
|
$participate_uid_data = '';
|
|
if(!in_array($uid, $participate_uid_array)){
|
|
$participate_uid_data = $room_dating_log['participate_uid'].$uid.',';
|
|
}
|
|
//receive_uid是否在参与人员中
|
|
if(!in_array($receive_uid, $participate_uid_array)){
|
|
if(empty($participate_uid_data)){
|
|
$participate_uid_data = $room_dating_log['participate_uid'].$receive_uid.',';
|
|
}else{
|
|
$participate_uid_data = $participate_uid_data.$receive_uid.',';
|
|
}
|
|
}
|
|
|
|
if(!empty($participate_uid_data)){
|
|
$update = [];
|
|
$update['participate_uid'] = $participate_uid_data;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_dating_log')->where('id', $room_dating_log['id'])->update($update);
|
|
// if(!$reslut){
|
|
// Db::rollback();
|
|
// return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
// }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//增加建立关系后的心动连线值
|
|
// $map = [];
|
|
// $map[] = ['uid|receive_uid', '=', $uid];//需更改help_uid
|
|
// $map[] = ['uid|receive_uid', '=', $receive_uid];
|
|
// $map[] = ['r_date', '=', date('Y-m-d')];
|
|
// $dating_mt_wheel = db::name('dating_mt_wheel')->where($map)->find();
|
|
// if(!empty($dating_mt_wheel)){
|
|
// db::name('dating_mt_wheel')->where(['id'=>$dating_mt_wheel['id']])->inc('rank_value', $change_value)->update(['update_time'=>time()]);
|
|
// }
|
|
|
|
|
|
$is_push = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
if($is_push == 1){
|
|
$reslut = $this->update_dating_room_micro($rid);
|
|
if($reslut['code'] == 201){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
}
|
|
|
|
Db::commit();
|
|
return ['code' => 200, 'msg' => '操作成功', 'data' => null];
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
dump($e);
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
}
|
|
|
|
//麦位变更
|
|
public function update_dating_room_micro($rid){
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['stage', '=', 2];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_dating_log = db::name('room_dating_log')->where($map)->find();
|
|
if($room_dating_log){
|
|
$room_micro_uid_array = trim($room_dating_log['participate_uid'], ',');
|
|
$room_micro_uid_array = explode(',', $room_micro_uid_array);
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['uid|receive_uid', 'in', $room_micro_uid_array];
|
|
$user_room_dating_line = db::name('user_room_dating_line')->where($map)->order('rank_value desc,add_time asc')->find();
|
|
|
|
if(!empty($user_room_dating_line)){
|
|
// $room_micro = db::name('room')->where('rid',$rid)->value('room_micro');
|
|
// $room_micro_data = explode(',', $room_micro);
|
|
$room_micro_data_s = db::name('room_micro')->where('rid', $rid)->order('micro_id asc')->field('uid,is_online,micro_id')->select();
|
|
$room_micro_data_u = [];
|
|
foreach ($room_micro_data_s as $val) {
|
|
if($val['uid'] > 0) {
|
|
$room_micro_data_u[$val['uid']] = $val;
|
|
}
|
|
|
|
}
|
|
$room_micro_data = db::name('room_micro')->where('rid', $rid)->order('micro_id asc')->column('uid');
|
|
$room_micro_datas = $room_micro_data;
|
|
//第一的麦位
|
|
$user_sex = db::name('user')->where('uid', $user_room_dating_line['uid'])->value('sex');
|
|
if($user_sex == 1){
|
|
if($room_micro_data[2] != $user_room_dating_line['uid']){
|
|
$room_micro_data[2] = $user_room_dating_line['uid'];
|
|
}
|
|
if($room_micro_data[3] != $user_room_dating_line['receive_uid']){
|
|
$room_micro_data[3] = $user_room_dating_line['receive_uid'];
|
|
}
|
|
}else{
|
|
if($room_micro_data[3] != $user_room_dating_line['uid']){
|
|
$room_micro_data[3] = $user_room_dating_line['uid'];
|
|
}
|
|
if($room_micro_data[2] != $user_room_dating_line['receive_uid']){
|
|
$room_micro_data[2] = $user_room_dating_line['receive_uid'];
|
|
}
|
|
}
|
|
$room_micro_uid_1 = [$user_room_dating_line['uid'], $user_room_dating_line['receive_uid']];
|
|
$room_micro_uid_array_1 = array_diff($room_micro_uid_array, $room_micro_uid_1);
|
|
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['uid|receive_uid', 'in', $room_micro_uid_1];
|
|
$user_room_dating_line_data = db::name('user_room_dating_line')->where($map)->column('id');
|
|
|
|
if(!empty($room_micro_uid_array_1)){
|
|
//第二的麦位连线
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['uid|receive_uid', 'in', $room_micro_uid_array_1];
|
|
$map[] = ['id', 'not in', $user_room_dating_line_data];
|
|
$user_room_dating_line_1 = db::name('user_room_dating_line')->where($map)->order('rank_value desc,add_time asc')->find();
|
|
|
|
if(!empty($user_room_dating_line_1)){
|
|
$user_sex_1 = db::name('user')->where('uid', $user_room_dating_line_1['uid'])->value('sex');
|
|
if($user_sex_1 == 1){
|
|
if($room_micro_data[0] != $user_room_dating_line_1['uid']){
|
|
$room_micro_data[0] = $user_room_dating_line_1['uid'];
|
|
}
|
|
if($room_micro_data[1] != $user_room_dating_line_1['receive_uid']){
|
|
$room_micro_data[1] = $user_room_dating_line_1['receive_uid'];
|
|
}
|
|
}else{
|
|
if($room_micro_data[0] != $user_room_dating_line_1['receive_uid']){
|
|
$room_micro_data[0] = $user_room_dating_line_1['receive_uid'];
|
|
}
|
|
if($room_micro_data[1] != $user_room_dating_line_1['uid']){
|
|
$room_micro_data[1] = $user_room_dating_line_1['uid'];
|
|
}
|
|
}
|
|
|
|
$room_micro_uid_2 = [$user_room_dating_line_1['uid'], $user_room_dating_line_1['receive_uid']];
|
|
$room_micro_uid_array_2 = array_diff($room_micro_uid_array_1, $room_micro_uid_2);
|
|
$room_micro_uid_3 = [$user_room_dating_line['uid'], $user_room_dating_line['receive_uid'],$user_room_dating_line_1['uid'], $user_room_dating_line_1['receive_uid']];
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['uid|receive_uid', 'in', $room_micro_uid_3];
|
|
$user_room_dating_line_data_1 = db::name('user_room_dating_line')->where($map)->column('id');
|
|
|
|
if(!empty($room_micro_uid_array_2)){
|
|
//第三的麦位连线
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['uid|receive_uid', 'in', $room_micro_uid_array_2];
|
|
$map[] = ['id', 'not in', $user_room_dating_line_data_1];
|
|
$user_room_dating_line_2 = db::name('user_room_dating_line')->where($map)->order('rank_value desc,add_time asc')->find();
|
|
if(!empty($user_room_dating_line_2)){
|
|
$user_sex_2 = db::name('user')->where('uid', $user_room_dating_line_2['uid'])->value('sex');
|
|
if($user_sex_2 == 1){
|
|
if($room_micro_data[4] != $user_room_dating_line_2['uid']){
|
|
$room_micro_data[4] = $user_room_dating_line_2['uid'];
|
|
}
|
|
if($room_micro_data[5] != $user_room_dating_line_2['receive_uid']){
|
|
$room_micro_data[5] = $user_room_dating_line_2['receive_uid'];
|
|
}
|
|
}else{
|
|
if($room_micro_data[4] != $user_room_dating_line_2['receive_uid']){
|
|
$room_micro_data[4] = $user_room_dating_line_2['receive_uid'];
|
|
}
|
|
if($room_micro_data[5] != $user_room_dating_line_2['uid']){
|
|
$room_micro_data[5] = $user_room_dating_line_2['uid'];
|
|
}
|
|
}
|
|
}else{
|
|
$room_micro_uid_array_2 = array_values($room_micro_uid_array_2);
|
|
$room_micro_data[4] = 0;
|
|
$room_micro_data[5] = 0;
|
|
foreach ($room_micro_uid_array_2 as $a => $b){
|
|
if($a == 0){
|
|
$room_micro_data[4] = $b;
|
|
}else if($a == 1){
|
|
$room_micro_data[5] = $b;
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
$room_micro_data[4] = 0;
|
|
$room_micro_data[5] = 0;
|
|
}
|
|
}else{
|
|
$room_micro_uid_array_1 = array_values($room_micro_uid_array_1);
|
|
$room_micro_data[0] = 0;
|
|
$room_micro_data[1] = 0;
|
|
$room_micro_data[4] = 0;
|
|
$room_micro_data[5] = 0;
|
|
foreach ($room_micro_uid_array_1 as $a => $b){
|
|
if($a == 0){
|
|
$room_micro_data[0] = $b;
|
|
}else if($a == 1){
|
|
$room_micro_data[1] = $b;
|
|
}else if($a == 2){
|
|
$room_micro_data[4] = $b;
|
|
}else if($a == 3){
|
|
$room_micro_data[5] = $b;
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
$room_micro_data[0] = 0;
|
|
$room_micro_data[1] = 0;
|
|
$room_micro_data[4] = 0;
|
|
$room_micro_data[5] = 0;
|
|
}
|
|
|
|
|
|
if($room_micro_datas != $room_micro_data){
|
|
//改变麦位
|
|
foreach ($room_micro_data as $i => $j){
|
|
$update_data = ['uid' => $j, 'frame_gid' => 0, 'centre_gid' => 0, 'above_gid' => 0, 'below_gid' => 0, 'left_gid'=> 0, 'right_gid' => 0, 'update_time' => time()];
|
|
if(isset($room_micro_data_u[$j])) {
|
|
$update_data['is_online'] = $room_micro_data_u[$j]['is_online'];
|
|
}
|
|
$reslut = db::name('room_micro')->where('rid', $rid)->where('micro_id', ($i+1))->update($update_data);
|
|
// if(!$reslut){
|
|
// return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
// }
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
return ['code' => 200, 'msg' => '成功', 'data' => null];
|
|
}
|
|
|
|
|
|
//增加心动连线时长
|
|
public function add_heartbeat_line_duration($uid, $rid, $duration){
|
|
$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')->find($rid);
|
|
if(!$room_info){
|
|
return ['code' => 201, 'msg' => '该房间不存在', 'data' => null];
|
|
}
|
|
|
|
$duration_time = $duration * 60;
|
|
if($duration < 1){
|
|
return ['code' => 201, 'msg' => '添加时间最低不能小于1分钟', 'data' => null];
|
|
}
|
|
|
|
if($duration > 60){
|
|
return ['code' => 201, 'msg' => '单次添加时间不能大于60分钟', 'data' => null];
|
|
}
|
|
|
|
if(ceil($duration) != $duration){
|
|
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'] && $uid != $room_info['room_host_uid']) {
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
|
}
|
|
|
|
//是否已有未结束阶段
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['stage', '=', 2];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_dating_log = db::name('room_dating_log')->where($map)->find();
|
|
if(!$room_dating_log){
|
|
return ['code' => 201, 'msg' => '当前未有心动连线阶段', 'data' => null];
|
|
}
|
|
if($room_dating_log['end_time'] < time()){
|
|
return ['code' => 201, 'msg' => '当前未有心动连线阶段', 'data' => null];
|
|
}
|
|
|
|
$surplus_time = $room_dating_log['end_time'] - time();
|
|
$total_time = $duration_time + $surplus_time;
|
|
if($total_time > 10800){
|
|
return ['code' => 201, 'msg' => '添加总时长不能大于3小时', 'data' => null];
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
$update = [];
|
|
$update['duration'] = $room_dating_log['duration'] + $duration_time;
|
|
$update['end_time'] = $room_dating_log['end_time'] + $duration_time;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_dating_log')->where('id', $room_dating_log['id'])->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
//添加记录
|
|
$insert = [];
|
|
$insert['user_id'] = $uid;
|
|
$insert['pid'] = $room_dating_log['id'];
|
|
$insert['rid'] = $rid;
|
|
$insert['duration'] = $duration;
|
|
$insert['add_time'] = time();
|
|
$reslut = db::name('room_dating_duration_log')->insert($insert);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
Db::commit();
|
|
model('api/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 end_heartbeat_line($uid, $rid){
|
|
$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')->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'] && $uid != $room_info['room_host_uid']) {
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
|
}
|
|
if(empty($room_info['room_host_uid'])){
|
|
return ['code' => 201, 'msg' => '当前没有主持,无法结束', 'data' => null];
|
|
}
|
|
|
|
//是否已有未结束阶段
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['stage', '=', 2];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_dating_log = db::name('room_dating_log')->where($map)->find();
|
|
if(!$room_dating_log){
|
|
return ['code' => 201, 'msg' => '当前未有心动连线阶段', 'data' => null];
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['rank_value', '>', 99];
|
|
$user_room_dating_line = db::name('user_room_dating_line')->where($map)->order('rank_value desc')->find();
|
|
if(!empty($user_room_dating_line)){
|
|
$update = [];
|
|
$update['stage'] = 3;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_dating_log')->where('id', $room_dating_log['id'])->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
}else{//为空则直接跳回第一阶段
|
|
//结束第三阶段
|
|
$update = [];
|
|
$update['is_delete'] = 2;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_dating_log')->where('id', $room_dating_log['id'])->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
//清空麦位
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['micro_id', 'in', [1,2,3,4,5,6]];
|
|
$update = [];
|
|
$update['uid'] = 0;
|
|
$update['frame_gid'] = 0;
|
|
$update['centre_gid'] = 0;
|
|
$update['above_gid'] = 0;
|
|
$update['below_gid'] = 0;
|
|
$update['left_gid'] = 0;
|
|
$update['right_gid'] = 0;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_micro')->where($map)->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
Db::commit();
|
|
model('api/room')->push_room_micro_data($rid);
|
|
|
|
//推送主持麦绑定关系
|
|
// $where = [];
|
|
// $where[] = ['pid', '=', $room_dating_log['id']];
|
|
// $user_room_dating_line = db::name('user_room_dating_line')->where($where)->order('rank_value desc')->find();
|
|
$push_room_dating_data = [];
|
|
if(!empty($room_info['room_host_uid']) && !empty($user_room_dating_line)){
|
|
$users_info = db::name('user')->where('uid', $user_room_dating_line['uid'])->field('uid,nick_name,base64_nick_name,head_pic,sex')->find();
|
|
$receive_info = db::name('user')->where('uid', $user_room_dating_line['receive_uid'])->field('uid,nick_name,base64_nick_name,head_pic,sex')->find();
|
|
|
|
|
|
$push_room_dating_data['user_info']['uid'] = $user_room_dating_line['uid'];
|
|
$push_room_dating_data['user_info']['nick_name'] = mb_convert_encoding(base64_decode($users_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$push_room_dating_data['user_info']['head_pic'] = localpath_to_netpath($users_info['head_pic']);
|
|
$push_room_dating_data['user_info']['sex'] = $users_info['sex'];
|
|
$push_room_dating_data['receive_info']['uid'] = $user_room_dating_line['receive_uid'];
|
|
$push_room_dating_data['receive_info']['nick_name'] = mb_convert_encoding(base64_decode($receive_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$push_room_dating_data['receive_info']['head_pic'] = localpath_to_netpath($receive_info['head_pic']);
|
|
$push_room_dating_data['receive_info']['sex'] = $receive_info['sex'];
|
|
|
|
$push_data = [];
|
|
$push_data['code'] = 341;
|
|
$push_data['msg'] = "推送主持麦绑定关系";
|
|
$push_data['data'] = $push_room_dating_data;
|
|
model('api/WebSocketPush')->send_to_one($room_info['room_host_uid'], $push_data);
|
|
// dump($res);exit;
|
|
}
|
|
|
|
|
|
return ['code' => 200, 'msg' => '操作成功', 'data' => $push_room_dating_data];
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
dump($e);
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
}
|
|
|
|
//定时任务结束第二阶段
|
|
public function close_room_dating_stage(){
|
|
//查询即将结束的第二阶段
|
|
$now_time = time();
|
|
$map = [];
|
|
$map[] = ['stage', '=', 2];
|
|
$map[] = ['end_time', '<', $now_time];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$list = db::name('room_dating_log')->where($map)->select();
|
|
|
|
foreach ($list as $k => $v){
|
|
Db::startTrans();
|
|
try {
|
|
$room_info = db::name('room')->find($v['rid']);
|
|
$map = [];
|
|
$map[] = ['pid', '=', $v['id']];
|
|
$map[] = ['rank_value', '>', 99];
|
|
$user_room_dating_line = db::name('user_room_dating_line')->where($map)->order('rank_value desc')->find();
|
|
if(!empty($user_room_dating_line)){
|
|
$update = [];
|
|
$update['stage'] = 3;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_dating_log')->where('id', $v['id'])->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
}
|
|
}else{//为空则直接跳回第一阶段
|
|
//结束第三阶段
|
|
$update = [];
|
|
$update['is_delete'] = 2;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_dating_log')->where('id', $v['id'])->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
}
|
|
|
|
//清空麦位
|
|
$map = [];
|
|
$map[] = ['rid', '=', $v['rid']];
|
|
$map[] = ['micro_id', 'in', [1,2,3,4,5,6]];
|
|
$update = [];
|
|
$update['uid'] = 0;
|
|
$update['frame_gid'] = 0;
|
|
$update['centre_gid'] = 0;
|
|
$update['above_gid'] = 0;
|
|
$update['below_gid'] = 0;
|
|
$update['left_gid'] = 0;
|
|
$update['right_gid'] = 0;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_micro')->where($map)->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
}
|
|
|
|
}
|
|
Db::commit();
|
|
model('api/room')->push_room_micro_data($v['rid']);
|
|
|
|
if(!empty($room_info['room_host_uid']) && !empty($user_room_dating_line)){
|
|
$users_info = db::name('user')->where('uid', $user_room_dating_line['uid'])->field('uid,nick_name,base64_nick_name,head_pic,sex')->find();
|
|
$receive_info = db::name('user')->where('uid', $user_room_dating_line['receive_uid'])->field('uid,nick_name,base64_nick_name,head_pic,sex')->find();
|
|
|
|
$push_room_dating_data = [];
|
|
$push_room_dating_data['user_info']['uid'] = $user_room_dating_line['uid'];
|
|
$push_room_dating_data['user_info']['nick_name'] = mb_convert_encoding(base64_decode($users_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$push_room_dating_data['user_info']['head_pic'] = localpath_to_netpath($users_info['head_pic']);
|
|
$push_room_dating_data['user_info']['sex'] = $users_info['sex'];
|
|
$push_room_dating_data['receive_info']['uid'] = $user_room_dating_line['receive_uid'];
|
|
$push_room_dating_data['receive_info']['nick_name'] = mb_convert_encoding(base64_decode($receive_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$push_room_dating_data['receive_info']['head_pic'] = localpath_to_netpath($receive_info['head_pic']);
|
|
$push_room_dating_data['receive_info']['sex'] = $receive_info['sex'];
|
|
|
|
$push_data = [];
|
|
$push_data['code'] = 341;
|
|
$push_data['msg'] = "推送主持麦绑定关系";
|
|
$push_data['data'] = $push_room_dating_data;
|
|
model('api/WebSocketPush')->send_to_one($room_info['room_host_uid'], $push_data);
|
|
|
|
}
|
|
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
dump($e);
|
|
Db::rollback();
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
/********************************牵手良缘**************************************/
|
|
|
|
//关系列表
|
|
public function get_relation_list($type){
|
|
$map = [];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$map[] = ['type', '=', $type];
|
|
$list = db::name('relation')->where($map)->field('id, name, day, color')->select();
|
|
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
|
|
}
|
|
|
|
//绑定用户关系
|
|
public function binding_user_relation($uid, $rid, $user_id, $receive_uid, $relation_id){
|
|
$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')->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'] && $uid != $room_info['room_host_uid']) {
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
|
}
|
|
|
|
$relation_info = db::name('relation')->where('is_delete', 1)->find($relation_id);
|
|
if(!$relation_info){
|
|
return ['code' => 201, 'msg' => '该关系不存在', 'data' => null];
|
|
}
|
|
|
|
//当前是否是第三阶段
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['stage', '=', 3];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_dating_log = db::name('room_dating_log')->where($map)->find();
|
|
if(!$room_dating_log){
|
|
return ['code' => 201, 'msg' => '当前不是牵手良缘阶段', 'data' => null];
|
|
}
|
|
//计算绑定天数
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['rank_value', '>', 0];
|
|
$user_room_dating_line = db::name('user_room_dating_line')->where($map)->order('rank_value desc')->find();
|
|
$day_num = 0;
|
|
//最低进入私密小屋
|
|
$min_enter_privacy_amount = $config['enter_privacy_room_min_amount'];
|
|
$is_enter_privacy_room = 2;
|
|
if($user_room_dating_line) {
|
|
$relation_min_amount = $config['bind_relation_day_amount'];
|
|
$rank_value = $user_room_dating_line['rank_value'];
|
|
if($rank_value > $relation_min_amount) {
|
|
$day_nums = bcdiv($rank_value, 100, 1);
|
|
$day_num = intval($day_nums);
|
|
}
|
|
|
|
if($min_enter_privacy_amount <= $rank_value) {
|
|
$is_enter_privacy_room = 1;
|
|
}
|
|
}
|
|
if($relation_id == 36) {
|
|
$day_num = 0;
|
|
}
|
|
|
|
$now_time = time();
|
|
|
|
Db::startTrans();
|
|
try {
|
|
if($day_num > 0) {
|
|
//是否已有该关系
|
|
$map = [];
|
|
$map[] = ['uid|receive_uid', '=', $user_id];
|
|
$map[] = ['uid|receive_uid', '=', $receive_uid];
|
|
$map[] = ['relation_id', '=', $relation_id];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$user_relation = db::name('user_relation_binding')->where($map)->find();
|
|
if($user_relation){
|
|
$update = [];
|
|
// $update['day'] = $relation_info['day'];
|
|
$end_time = $user_relation['end_time'] + ($day_num * 60 * 60 * 24);
|
|
if($end_time < 2129791740){
|
|
$update['end_time'] = $user_relation['end_time'] + ($day_num * 60 * 60 * 24);
|
|
}
|
|
$update['update_time'] = $now_time;
|
|
$reslut = db::name('user_relation_binding')->where('id', $user_relation['id'])->inc('day', $day_num)->update($update);
|
|
}else{
|
|
$insert = [];
|
|
$insert['uid'] = $user_id;
|
|
$insert['receive_uid'] = $receive_uid;
|
|
$insert['relation_id'] = $relation_id;
|
|
$insert['day'] = $day_num;
|
|
$insert['add_time'] = $now_time;
|
|
$insert['end_time'] = $now_time + ($day_num * 60 * 60 *24);
|
|
$reslut = db::name('user_relation_binding')->insert($insert);
|
|
}
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败7', 'data' => null];
|
|
}
|
|
|
|
//记录
|
|
$insert = [];
|
|
$insert['uid'] = $user_id;
|
|
$insert['receive_uid'] = $receive_uid;
|
|
$insert['relation_id'] = $relation_id;
|
|
$insert['day'] = $relation_info['day'];
|
|
$insert['add_time'] = $now_time;
|
|
$reslut = db::name('user_relation_binding_log')->insert($insert);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败6', 'data' => null];
|
|
}
|
|
|
|
|
|
|
|
$map = [];
|
|
$map[] = ['uid|receive_uid', '=', $user_room_dating_line['uid']];//需更改help_uid
|
|
$map[] = ['uid|receive_uid', '=', $user_room_dating_line['receive_uid']];
|
|
$map[] = ['r_date', '=', date('Y-m-d')];
|
|
$dating_mt_wheel = db::name('dating_mt_wheel')->where($map)->find();
|
|
if(!empty($dating_mt_wheel)){
|
|
db::name('dating_mt_wheel')->where(['id'=>$dating_mt_wheel['id']])->inc('rank_value', $user_room_dating_line['rank_value'])->update(['update_time'=>time()]);
|
|
}else{
|
|
//建立关系以后数据存储
|
|
db::name('dating_mt_wheel')->insert([
|
|
'uid' => $user_room_dating_line['uid'],
|
|
'receive_uid' => $user_room_dating_line['receive_uid'],
|
|
'rank_value' => $user_room_dating_line['rank_value'],
|
|
'r_date' => date('Y-m-d'),
|
|
'add_time' => time(),
|
|
'update_time' => time()
|
|
]);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//结束第三阶段
|
|
$update = [];
|
|
$update['is_delete'] = 2;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_dating_log')->where('id', $room_dating_log['id'])->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败5', 'data' => null];
|
|
}
|
|
|
|
//清空麦位
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['micro_id', 'in', [1,2,3,4,5,6]];
|
|
$update = [];
|
|
$update['uid'] = 0;
|
|
$update['frame_gid'] = 0;
|
|
$update['centre_gid'] = 0;
|
|
$update['above_gid'] = 0;
|
|
$update['below_gid'] = 0;
|
|
$update['left_gid'] = 0;
|
|
$update['right_gid'] = 0;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_micro')->where($map)->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败4', 'data' => null];
|
|
}
|
|
if($is_enter_privacy_room == 1) {
|
|
$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'] = $user_id.','.$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' => '操作失败3', 'data' => null];
|
|
}
|
|
$prid = $room_privacy['prid'];
|
|
}else{
|
|
$reslut = $this->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'] = $user_id.','.$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' => '操作失败1', 'data' => null];
|
|
}
|
|
}
|
|
|
|
if(empty($prid)){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败2', 'data' => null];
|
|
}
|
|
}
|
|
|
|
|
|
Db::commit();
|
|
model('api/room')->push_room_micro_data($rid);
|
|
if($is_enter_privacy_room == 1) {
|
|
if(!empty($user_id)){
|
|
$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($user_id, $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($user_id, $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' => '操作失败8', 'data' => null];
|
|
}
|
|
}
|
|
|
|
//结束牵手良缘阶段【重新推送】
|
|
public function end_push_binding_relation($uid, $rid){
|
|
$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')->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'] && $uid != $room_info['room_host_uid']) {
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
|
}
|
|
if(empty($room_info['room_host_uid'])){
|
|
return ['code' => 201, 'msg' => '当前没有主持,无法结束', 'data' => null];
|
|
}
|
|
|
|
//是否已有未结束阶段
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['stage', '=', 3];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$room_dating_log = db::name('room_dating_log')->where($map)->find();
|
|
if(!$room_dating_log){
|
|
return ['code' => 201, 'msg' => '当前未有牵手良缘阶段', 'data' => null];
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
$map = [];
|
|
$map[] = ['pid', '=', $room_dating_log['id']];
|
|
$map[] = ['rank_value', '>', 0];
|
|
$user_room_dating_line = db::name('user_room_dating_line')->where($map)->order('rank_value desc')->find();
|
|
if(!empty($user_room_dating_line)){
|
|
|
|
}else{
|
|
//结束第三阶段
|
|
$update = [];
|
|
$update['is_delete'] = 2;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_dating_log')->where('id', $room_dating_log['id'])->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
//清空麦位
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['micro_id', 'in', [1,2,3,4,5,6]];
|
|
$update = [];
|
|
$update['uid'] = 0;
|
|
$update['frame_gid'] = 0;
|
|
$update['centre_gid'] = 0;
|
|
$update['above_gid'] = 0;
|
|
$update['below_gid'] = 0;
|
|
$update['left_gid'] = 0;
|
|
$update['right_gid'] = 0;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('room_micro')->where($map)->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
}
|
|
|
|
Db::commit();
|
|
model('api/room')->push_room_micro_data($rid);
|
|
|
|
$push_room_dating_data = [];
|
|
if(!empty($user_room_dating_line)){
|
|
$users_info = db::name('user')->where('uid', $user_room_dating_line['uid'])->field('uid,nick_name,base64_nick_name,head_pic,sex')->find();
|
|
$receive_info = db::name('user')->where('uid', $user_room_dating_line['receive_uid'])->field('uid,nick_name,base64_nick_name,head_pic,sex')->find();
|
|
|
|
$push_room_dating_data['user_info']['uid'] = $user_room_dating_line['uid'];
|
|
$push_room_dating_data['user_info']['nick_name'] = mb_convert_encoding(base64_decode($users_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$push_room_dating_data['user_info']['head_pic'] = localpath_to_netpath($users_info['head_pic']);
|
|
$push_room_dating_data['user_info']['sex'] = $users_info['sex'];
|
|
$push_room_dating_data['receive_info']['uid'] = $user_room_dating_line['receive_uid'];
|
|
$push_room_dating_data['receive_info']['nick_name'] = mb_convert_encoding(base64_decode($receive_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$push_room_dating_data['receive_info']['head_pic'] = localpath_to_netpath($receive_info['head_pic']);
|
|
$push_room_dating_data['receive_info']['sex'] = $receive_info['sex'];
|
|
|
|
$push_data = [];
|
|
$push_data['code'] = 341;
|
|
$push_data['msg'] = "推送主持麦绑定关系";
|
|
$push_data['data'] = $push_room_dating_data;
|
|
model('api/WebSocketPush')->send_to_one($room_info['room_host_uid'], $push_data);
|
|
}
|
|
|
|
|
|
return ['code' => 200, 'msg' => '操作成功', 'data' => $push_room_dating_data];
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
dump($e);
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/************************私密小屋*****************************/
|
|
//真心话大冒险
|
|
public function get_truth_or_dare_list($uid, $prid){
|
|
$room_privacy = db::name('room_privacy')->find($prid);
|
|
if(!$room_privacy){
|
|
return ['code' => 201, 'msg' => '该私密小屋不存在', 'data' => null];
|
|
}
|
|
|
|
$now_time = time();
|
|
if($room_privacy['is_use'] == 2 || $room_privacy['end_time'] < $now_time){
|
|
return ['code' => 201, 'msg' => '该私密小屋已到期', 'data' => null];
|
|
}
|
|
|
|
$user_id_data = explode(',', $room_privacy['uid_data']);
|
|
$user_id = $user_id_data[0];
|
|
$receive_uid = $user_id_data[1];
|
|
if(!in_array($uid, $user_id_data)){
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
|
}
|
|
if($uid == $user_id){
|
|
$push_uid = $receive_uid;
|
|
}else if($uid == $receive_uid){
|
|
$push_uid = $user_id;
|
|
}
|
|
|
|
$map = [];
|
|
$map[] = ['type', '=', 1];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$info = db::name('topic_card')->where($map)->field('id, type, content')->orderRaw('rand()')->find();
|
|
|
|
if(!empty($info)){
|
|
$push_topic_card_info = [];
|
|
$push_topic_card_info['id'] = $info['id'];
|
|
$push_topic_card_info['type'] = $info['type'];
|
|
$push_topic_card_info['content'] = $info['content'];
|
|
|
|
if(!empty($push_uid)){
|
|
$push_data = [];
|
|
$push_data['code'] = 354;
|
|
$push_data['msg'] = "真心话大冒险推送";
|
|
$push_data['data'] = $push_topic_card_info;
|
|
model('api/WebSocketPush')->send_to_one($push_uid, $push_data);
|
|
}
|
|
|
|
}
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
|
|
}
|
|
|
|
//话题卡
|
|
public function get_topic_card_list($uid, $prid){
|
|
$room_privacy = db::name('room_privacy')->find($prid);
|
|
if(!$room_privacy){
|
|
return ['code' => 201, 'msg' => '该私密小屋不存在', 'data' => null];
|
|
}
|
|
|
|
$now_time = time();
|
|
if($room_privacy['is_use'] == 2 || $room_privacy['end_time'] < $now_time){
|
|
return ['code' => 201, 'msg' => '该私密小屋已到期', 'data' => null];
|
|
}
|
|
|
|
$user_id_data = explode(',', $room_privacy['uid_data']);
|
|
$user_id = $user_id_data[0];
|
|
$receive_uid = $user_id_data[1];
|
|
if(!in_array($uid, $user_id_data)){
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
|
}
|
|
if($uid == $user_id){
|
|
$push_uid = $receive_uid;
|
|
}else if($uid == $receive_uid){
|
|
$push_uid = $user_id;
|
|
}
|
|
|
|
$map = [];
|
|
$map[] = ['type', '=', 2];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$info = db::name('topic_card')->where($map)->field('id, type, content')->orderRaw('rand()')->find();
|
|
if(!empty($info)){
|
|
$push_topic_card_info = [];
|
|
$push_topic_card_info['id'] = $info['id'];
|
|
$push_topic_card_info['type'] = $info['type'];
|
|
$push_topic_card_info['content'] = $info['content'];
|
|
|
|
if(!empty($push_uid)){
|
|
$push_data = [];
|
|
$push_data['code'] = 354;
|
|
$push_data['msg'] = "话题卡推送";
|
|
$push_data['data'] = $push_topic_card_info;
|
|
model('api/WebSocketPush')->send_to_one($push_uid, $push_data);
|
|
}
|
|
|
|
}
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
|
|
}
|
|
|
|
//用户关系列表
|
|
public function get_user_relation_list($uid, $user_id, $page, $page_limit){
|
|
$page = intval($page);
|
|
$page_limit = $page_limit < 20 ? $page_limit : 20;
|
|
|
|
if(empty($user_id)){
|
|
$user_id = $uid;
|
|
}
|
|
|
|
$user_info = db::name('user')->find($user_id);
|
|
if(!$user_info){
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
|
}
|
|
|
|
$map = [];
|
|
$map[] = ['a.uid|a.receive_uid', '=', $user_id];
|
|
$map[] = ['a.end_time','>', time()];
|
|
$map[] = ['a.is_delete', '=', 1];
|
|
$list = db::name('user_relation_binding')->alias('a')->join('yy_relation b', 'a.relation_id = b.id')->field('a.id, a.uid, a.receive_uid, a.relation_id, a.end_time, b.name, b.color')->where($map)->order('id desc')->page($page, $page_limit)->select();
|
|
foreach ($list as $k => &$v){
|
|
if($v['uid'] == $user_id){
|
|
$receive_uid = $v['receive_uid'];
|
|
}else if($v['receive_uid'] == $user_id){
|
|
$receive_uid = $v['uid'];
|
|
}
|
|
$receive_info = db::name('user')->field('uid,base64_nick_name,head_pic,sex')->find($receive_uid);
|
|
|
|
$v['uid'] = $receive_uid;
|
|
$v['nick_name'] = mb_convert_encoding(base64_decode($receive_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$v['head_pic'] = localpath_to_netpath($receive_info['head_pic']);
|
|
$v['sex'] = $receive_info['sex'];
|
|
$v['surplus_time'] = ceil(($v['end_time'] - time()) / (60*60*24));
|
|
unset($v['receive_uid']);
|
|
}
|
|
|
|
$data = [];
|
|
$data['list'] = $list;
|
|
$data['count'] = count($list);
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data'=> $data];
|
|
}
|
|
|
|
//生成私密小屋
|
|
public function create_privacy_room(){
|
|
$config = get_uncache_system_config();
|
|
|
|
Db::startTrans();
|
|
try {
|
|
$prid = $this->get_available_prid();
|
|
|
|
$insert = [];
|
|
$insert['prid'] = $prid;
|
|
$insert['add_time'] = time();
|
|
$reslut = db::name('room_privacy')->insert($insert);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败9', 'data' => null];
|
|
}
|
|
|
|
//创建腾讯IM群组
|
|
$reslut = model('Tencent')->create_group($prid);
|
|
|
|
if($reslut['code'] != 200){
|
|
Db::rollback();
|
|
return['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
|
|
}
|
|
|
|
Db::commit();
|
|
|
|
return ['code' => 200, 'msg' => '操作成功', 'data' => $prid];
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
dump($e);
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//过滤私密房间ID
|
|
private function get_available_prid($prid = 0)
|
|
{
|
|
if (empty($prid)) {
|
|
$prid = db::name('room_privacy')->order('prid desc')->value('prid');
|
|
if(empty($prid)){
|
|
$prid = 1000001;
|
|
}
|
|
}
|
|
$prid = $prid + 1;
|
|
$user_info = db::name('room_privacy')->field('prid')->where('prid', $prid)->find();
|
|
if (!empty($user_info)) {
|
|
$this->get_available_prid($user_info['prid']);
|
|
} else {
|
|
return $prid;
|
|
}
|
|
}
|
|
|
|
//私密小屋详情
|
|
public function get_privacy_room_info($uid, $prid){
|
|
$now_time = time();
|
|
$privacy_room = db::name('room_privacy')->find($prid);
|
|
if(!$privacy_room){
|
|
return ['code' => 201, 'msg' => '该私密小屋不存在', 'data' => null];
|
|
}
|
|
|
|
if($privacy_room['is_use'] == 2 || $privacy_room['end_time'] < $now_time){
|
|
return ['code' => 201, 'msg' => '该私密小屋已到期', 'data' => null];
|
|
}
|
|
|
|
$surplus_time = $privacy_room['end_time'] - time();
|
|
$user_id_data = explode(',', $privacy_room['uid_data']);
|
|
$user_id = $user_id_data[0];
|
|
$receive_uid = $user_id_data[1];
|
|
|
|
$users_info = db::name('user')->field('uid,nick_name,base64_nick_name,head_pic')->find($user_id);
|
|
$receive_info = db::name('user')->field('uid, nick_name, base64_nick_name, head_pic')->find($receive_uid);
|
|
|
|
$map = [];
|
|
$map[] = ['a.is_delete', '=', 1];
|
|
$map[] = ['b.is_delete', '=', 1];
|
|
$map[] = ['b.is_show', '=', 1];
|
|
$list = db::name('room_privacy_gift')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->field('a.gid,a.duration,b.gift_name,b.base_image,b.gift_price')->where($map)->order('b.gift_price asc')->select();
|
|
foreach ($list as $k => &$v){
|
|
$v['base_image'] = localpath_to_netpath($v['base_image']);
|
|
}
|
|
|
|
$map = [];
|
|
$map[] = ['type', '=', 1];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$topic_card_info = db::name('topic_card')->where($map)->field('id, type, content')->order('id asc')->find();
|
|
|
|
|
|
$data = [];
|
|
$data['surplus_time'] = $surplus_time;
|
|
$data['user_info']['uid'] = $user_id;
|
|
$data['user_info']['nick_name'] = mb_convert_encoding(base64_decode($users_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$data['user_info']['head_pic'] = localpath_to_netpath($users_info['head_pic']);
|
|
$data['receive_info']['uid'] = $receive_uid;
|
|
$data['receive_info']['nick_name'] = mb_convert_encoding(base64_decode($receive_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$data['receive_info']['head_pic'] = localpath_to_netpath($receive_info['head_pic']);
|
|
$data['gift_list'] = $list;
|
|
$data['topic_card_info'] = $topic_card_info;
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
|
|
}
|
|
|
|
//私密小屋结束
|
|
public function end_room_privacy($uid, $prid){
|
|
$user_info = db::name('user')->field('uid')->find($uid);
|
|
if(!$user_info){
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
|
}
|
|
|
|
$room_privacy = db::name('room_privacy')->find($prid);
|
|
if(!$room_privacy){
|
|
return ['code' => 201, 'msg' => '该私密小屋不存在', 'data' => null];
|
|
}
|
|
|
|
$now_time = time();
|
|
if($room_privacy['is_use'] == 2 || $room_privacy['end_time'] < $now_time){
|
|
return ['code' => 201, 'msg' => '该私密小屋已到期', 'data' => null];
|
|
}
|
|
|
|
$user_id_data = explode(',', $room_privacy['uid_data']);
|
|
$user_id = $user_id_data[0];
|
|
$receive_uid = $user_id_data[1];
|
|
if(!in_array($uid, $user_id_data)){
|
|
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
$update = [];
|
|
$update['rid'] = 0;
|
|
$update['uid_data'] = '';
|
|
$update['is_use'] = 2;
|
|
$update['update_time'] = time();
|
|
$update['end_time'] = 0;
|
|
$reslut = db::name('room_privacy')->where('prid', $prid)->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
Db::commit();
|
|
|
|
$push_room_privacy_data = [];
|
|
$push_room_privacy_data['prid'] = $prid;
|
|
|
|
if(!empty($user_id)){
|
|
$push_data = [];
|
|
$push_data['code'] = 353;
|
|
$push_data['msg'] = "退出私密小屋";
|
|
$push_data['data'] = $push_room_privacy_data;
|
|
model('api/WebSocketPush')->send_to_one($user_id, $push_data);
|
|
}
|
|
|
|
if(!empty($receive_uid)){
|
|
$push_data = [];
|
|
$push_data['code'] = 353;
|
|
$push_data['msg'] = "退出私密小屋";
|
|
$push_data['data'] = $push_room_privacy_data;
|
|
model('api/WebSocketPush')->send_to_one($receive_uid, $push_data);
|
|
}
|
|
|
|
return ['code' => 200, 'msg' => '操作成功', 'data' => $push_room_privacy_data];
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
dump($e);
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
|
|
}
|
|
|
|
}
|
|
|
|
//定时任务关闭到期私密小屋
|
|
public function close_room_privacy_status(){
|
|
//查询即将结束的私密小屋
|
|
$now_time = time();
|
|
$map = [];
|
|
$map[] = ['end_time', '<', $now_time];
|
|
$map[] = ['is_use', '=', 1];
|
|
$list = db::name('room_privacy')->where($map)->select();
|
|
foreach ($list as $k => $v){
|
|
Db::startTrans();
|
|
try {
|
|
$update = [];
|
|
$update['rid'] = 0;
|
|
$update['uid_data'] = '';
|
|
$update['is_use'] = 2;
|
|
$update['update_time'] = time();
|
|
$update['end_time'] = 0;
|
|
$reslut = db::name('room_privacy')->where('prid', $v['prid'])->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
}
|
|
|
|
$user_id_data = explode(',', $v['uid_data']);
|
|
$user_id = $user_id_data[0];
|
|
$receive_uid = $user_id_data[1];
|
|
|
|
Db::commit();
|
|
|
|
$push_room_privacy_data = [];
|
|
$push_room_privacy_data['prid'] = $v['prid'];
|
|
|
|
if(!empty($user_id)){
|
|
$push_data = [];
|
|
$push_data['code'] = 353;
|
|
$push_data['msg'] = "退出私密小屋";
|
|
$push_data['data'] = $push_room_privacy_data;
|
|
model('api/WebSocketPush')->send_to_one($user_id, $push_data);
|
|
}
|
|
|
|
if(!empty($receive_uid)){
|
|
$push_data = [];
|
|
$push_data['code'] = 353;
|
|
$push_data['msg'] = "退出私密小屋";
|
|
$push_data['data'] = $push_room_privacy_data;
|
|
model('api/WebSocketPush')->send_to_one($receive_uid, $push_data);
|
|
}
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
Db::rollback();
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
//清除过期关系
|
|
public function close_user_relation(){
|
|
|
|
$map = [];
|
|
$map[] = ['end_time', '<', time()];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$info = db::name('user_relation_binding')->where($map)->find();
|
|
if(!empty($info)){
|
|
db::name('user_relation_binding')->where($map)->update(['is_delete' => 2, 'update_time' => time()]);
|
|
}
|
|
|
|
echo date('Y-m-d H:i:s').'清除过期关系 执行成功';
|
|
}
|
|
|
|
|
|
|
|
|
|
public function del_user_relation($uid,$user_relation_id=0){
|
|
$user_relation_binding = db::name('user_relation_binding')->where(['id'=>$user_relation_id,"uid|receive_uid"=>$uid])->find();
|
|
if(empty($user_relation_binding)){
|
|
return ['code' => 201, 'msg' => '关系不存在', 'data' => null];
|
|
}
|
|
|
|
$del_user_relation_money = get_uncache_system_config('del_user_relation_money');
|
|
if($del_user_relation_money <= 0){
|
|
return ['code' => 201, 'msg' => '价格有误!', 'data' => null];
|
|
}
|
|
|
|
|
|
$user_zijin = db::name('user')->where(['uid'=>$uid])->field('money')->find();
|
|
if(empty($user_zijin)){
|
|
return ['code' => 201, 'msg' => '参数有误!', 'data' => null];
|
|
}
|
|
|
|
if($user_zijin['money'] < $del_user_relation_money){
|
|
return ['code' => 201, 'msg' => '账户余额不足!', 'data' => null];
|
|
}
|
|
|
|
|
|
try {
|
|
Db::startTrans();
|
|
$reslut = model('admin/User')->change_user_money_by_uid($uid, -$del_user_relation_money, 1, 53, "删除用户关系", $uid, $user_relation_binding['id']);
|
|
if ($reslut['code'] == 201) {
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
|
|
}
|
|
|
|
|
|
//删除用户关系
|
|
db::name('user_relation_binding')->where(['id'=>$user_relation_binding['id']])->update(['is_delete' => 2, 'update_time' => time(),'remarks'=>"{$uid}删除用户关系"]);
|
|
Db::commit();
|
|
return ['code' => 200, 'msg' => '删除成功!', 'data' => null];
|
|
}catch (\Exception $e) {
|
|
// 回滚事务
|
|
Db::rollback();
|
|
return ['code' => 200, 'msg' => '删除失败!', 'data' => null];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//房间挂件礼物信息
|
|
public function get_room_pendant_gift_info($uid, $rid){
|
|
$room_info = db::name('room')->field('rid')->find($rid);
|
|
if(!$room_info){
|
|
return ['code' => 201, 'msg' => '该房间不存在', 'data' => null];
|
|
}
|
|
$data = [];
|
|
$data['user_info']['uid'] = 0;
|
|
$data['user_info']['nick_name'] = '';
|
|
$data['user_info']['head_pic'] = '';
|
|
$data['receive_info']['uid'] = 0;
|
|
$data['receive_info']['nick_name'] = '';
|
|
$data['receive_info']['head_pic'] = '';
|
|
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['end_time', '>', time()];
|
|
$map[] = ['is_show', '=', 1];
|
|
$info = db::name('room_pendant_gift_log')->where($map)->order('id desc')->find();
|
|
if($info){
|
|
$user_info = db::name('user')->field('uid, base64_nick_name, head_pic')->find($info['uid']);
|
|
$receive_info = db::name('user')->field('uid, base64_nick_name, head_pic')->find($info['receive_uid']);
|
|
|
|
$data['user_info']['uid'] = $info['uid'];
|
|
$data['user_info']['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$data['user_info']['head_pic'] = localpath_to_netpath($user_info['head_pic']);
|
|
$data['receive_info']['uid'] = $info['receive_uid'];
|
|
$data['receive_info']['nick_name'] = mb_convert_encoding(base64_decode($receive_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$data['receive_info']['head_pic'] = localpath_to_netpath($receive_info['head_pic']);
|
|
|
|
$gift_info = db::name('gift')->where('gid', $info['gid'])->find();
|
|
$data['pendant_image'] = localpath_to_netpath($gift_info['pendant_image']);
|
|
}
|
|
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
|
|
}
|
|
|
|
|
|
|
|
|
|
public function get_motian_rank($type=1){
|
|
if($type == 1){
|
|
$r_date = date('Y-m-d', strtotime('-1 day'));
|
|
$limit = 5;
|
|
}else{
|
|
$r_date = date('Y-m-d');
|
|
$limit = 20;
|
|
}
|
|
|
|
$list = db::name('dating_mt_wheel')
|
|
->alias('dw')
|
|
->where(['r_date'=>$r_date])
|
|
->join('yy_user u1','u1.uid = dw.uid')
|
|
->join('yy_user u2','u2.uid = dw.receive_uid')
|
|
->field('dw.uid,u1.base64_nick_name as nick_name,u1.head_pic,dw.receive_uid,u2.base64_nick_name as receive_nick_name,u2.head_pic as receive_head_pic,rank_value')
|
|
->order(['rank_value'=>'desc'])
|
|
->limit(0,$limit)
|
|
->select();
|
|
if(!empty($list)){
|
|
foreach ($list as &$v){
|
|
$v['nick_name'] = mb_convert_encoding(base64_decode($v['nick_name']), 'UTF-8', 'UTF-8');
|
|
$v['head_pic'] = localpath_to_netpath($v['head_pic']);
|
|
|
|
$v['receive_nick_name'] = mb_convert_encoding(base64_decode($v['receive_nick_name']), 'UTF-8', 'UTF-8');
|
|
$v['receive_head_pic'] = localpath_to_netpath($v['receive_head_pic']);
|
|
if($v['rank_value'] >= 1000){
|
|
$v['rank_value'] = del_coin_num($v['rank_value']/1000,1).'k';
|
|
}elseif ($v['rank_value'] >= 10000) {
|
|
$v['rank_value'] = del_coin_num($v['rank_value']/10000,1).'w';
|
|
}
|
|
|
|
}
|
|
}
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|