diff --git a/application/adminapi/controller/SingerSong.php b/application/adminapi/controller/SingerSong.php index d49ebb9..effabb4 100644 --- a/application/adminapi/controller/SingerSong.php +++ b/application/adminapi/controller/SingerSong.php @@ -47,6 +47,11 @@ class SingerSong extends adminApi ->where($where) ->page($page, $page_limit) ->select(); + if($list){ + foreach ($list as &$v){ + $v['createtime'] = date('Y-m-d H:i:s', $v['createtime']); + } + } $return_data = [ 'page' =>$page, 'page_limit' => $page_limit, diff --git a/application/api/controller/Cron.php b/application/api/controller/Cron.php index 2315d32..06365a2 100644 --- a/application/api/controller/Cron.php +++ b/application/api/controller/Cron.php @@ -18,6 +18,8 @@ class Cron $cron->index(); } + + //经业务调整 暂时不要了 //每10秒执行 public function TenSeconds() { diff --git a/application/api/controller/Xintiao.php b/application/api/controller/Xintiao.php index 53e36ad..ccd5dc6 100644 --- a/application/api/controller/Xintiao.php +++ b/application/api/controller/Xintiao.php @@ -25,7 +25,7 @@ class Xintiao extends BaseCom 'updatetime' => time() ]); } - return true; + return V(1, '成功', null); } diff --git a/application/api/model/Login.php b/application/api/model/Login.php index 56967a0..2445735 100644 --- a/application/api/model/Login.php +++ b/application/api/model/Login.php @@ -196,6 +196,7 @@ class Login extends Model $save_data['loginip'] = request()->server('HTTP_X_REAL_IP') ?: request()->server('HTTP_X_FORWARDED_FOR') ?: request()->ip(); $save_data['updatetime'] = time(); $save_data['prevtime'] = $user_info['logintime'];//上次登录时间 + $save_data['is_online'] = 1; $reslut = model('User')->update($save_data); if (!$reslut) { diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 0f76507..9af7b29 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -642,7 +642,7 @@ class Room extends Model //麦位信息 $pit_list = db::name('vs_room_pit')->alias('a')->join('user b', 'a.user_id = b.id', 'left') ->where(['a.room_id' => $room['id'],'a.status' => 1]) - ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,b.nickname,b.avatar,b.sex,b.user_code') + ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,b.nickname,b.avatar,b.sex,b.user_code,b.is_online') ->order('a.pit_number asc')->select(); foreach ($pit_list as &$value) { $value['charm'] = 0; @@ -1048,7 +1048,7 @@ class Room extends Model //麦位信息 $pit_list = db::name('vs_room_pit')->alias('a')->join('user b', 'a.user_id = b.id', 'left') ->where(['a.room_id' => $room_id,'a.status' => 1]) - ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,b.nickname,b.avatar,b.sex,b.user_code') + ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,b.nickname,b.avatar,b.sex,b.user_code,b.is_online') ->order('a.pit_number asc')->select(); foreach ($pit_list as &$value) { $value['charm'] = 0; @@ -1108,7 +1108,7 @@ class Room extends Model { //房间正在拍的信息 $auction = db::name('vs_room_auction')->alias('a')->join('user b', 'a.user_id = b.id', 'left') - ->field('a.auction_id,a.user_id,b.nickname,b.avatar,b.sex,b.user_code,a.auction_type,a.relation_id,a.gift_id,a.gift_price,a.time_day,a.duration') + ->field('a.auction_id,a.user_id,b.nickname,b.avatar,b.sex,b.user_code,a.auction_type,a.relation_id,a.gift_id,a.gift_price,a.time_day,a.duration,b.is_online') ->where(['a.room_id' => $room_id,'a.status' => 2])->find(); // var_dump($auction);exit; if($auction){ @@ -1266,11 +1266,20 @@ class Room extends Model if($vs_room_sign){ return ['code' => 0, 'msg' => '在签约麦不能退出', 'data' => null]; } + $room_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->find(); + if ($room_pit['pit_number'] > 0) { + model('api/RoomPit')->DownPit($user_id, $room_id, $room_pit['pit_number']); + } }elseif ($apply_type == 6){ $auction_user_id = Cache::get('auction_user_'.$room_id); if($auction_user_id == $user_id){ return ['code' => 0, 'msg' => '拍卖位麦不能退出', 'data' => null]; } + //在麦位上 移除用户 + $room_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->find(); + if (isset($room_pit)) { + model('api/RoomPit')->DownPit($user_id, $room_id, $room_pit['pit_number']); + } }else{ //在麦位上 移除用户 $room_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->find(); @@ -1455,38 +1464,22 @@ class Room extends Model if ($label_type['code'] != 1) { return ['code' => 0, 'msg' => '房间不存在', 'data' => null]; } - //查询房间里面的用户 - $room_user = db::name('vs_room_visitor')->where(['room_id' => $room_id])->select(); - if($room_user){ - foreach ($room_user as $vv){ - if(($label_type['data']['type_id'] == 1 || $label_type['data']['type_id'] == 8) && $label_type['data']['label_id'] == 1){ - //不做处理 - }else{ - //查询是否有切后台的操作 - $bg_room = db::name('vs_user_in_room_bg')->where(['room_id' => $room_id,'user_id' => $vv['user_id']])->find(); - - if(Db::name('user')->where('id', $vv['user_id'])->value('is_online') == 0 && !$bg_room){ - model('Room')->quit_room($vv['user_id'], $room_id,$vv['user_id'],2); - } - } - - } - } $list = db::name('vs_room_visitor')->alias('a') ->join('user b', 'a.user_id = b.id') ->field('a.user_id,b.nickname,b.avatar') - ->where(['a.room_id' => $room_id,'b.is_online' => 1]) + ->where(['a.room_id' => $room_id]) ->group('a.user_id') ->order('a.id asc') ->page($page, $limit) ->select(); if ($list) { - foreach ($list as &$v) { + foreach ($list as $key => &$v) { //判断用户的隐身状态,隐身用户且不在麦位上不显示 $hinde_status = db::name('user')->where('id', $v['user_id'])->value('hide_status'); $on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $v['user_id']])->value('pit_number'); if ($hinde_status == 1 && !$on_pit) { + unset($list[$key]); // 完全移除该用户 continue; } @@ -1502,6 +1495,9 @@ class Room extends Model $v['role'] = $role['role']; $v['pit_number'] = $role['pit_number']; } + // 重新索引数组以避免键名不连续的问题 + $list = array_values($list); + //根据角色排序 房主>管理员>主持人>普通用户 usort($list, function ($a, $b) { if ($a['role'] == $b['role']) { @@ -2061,7 +2057,7 @@ class Room extends Model //麦位信息 $pit_list = db::name('vs_room_pit')->alias('a')->join('user b', 'a.user_id = b.id', 'left') ->where(['a.room_id' => $room['id'],'a.status' => 1]) - ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,b.nickname,b.avatar,b.sex,b.user_code')->order('a.pit_number asc')->select(); + ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,b.nickname,b.avatar,b.sex,b.user_code,b.is_online')->order('a.pit_number asc')->select(); foreach ($pit_list as &$value) { $value['charm'] = 0; $value['dress'] = ''; @@ -2734,46 +2730,17 @@ class Room extends Model //用户在线状态 public function user_online_status($room_id,$user_id) { - if(!$room_id || !$user_id){ + if(!$user_id){ return ['code' => 0, 'msg' => '参数错误~', 'data' => null]; } $user = explode(',',$user_id); //获取腾讯的在线用户 - $user_id_array = null; - foreach ($user as $v) { - $user_id_array[] = 'u'.$v; - } - - $online_user = []; - $online_users = model('Tencent')->query_user_online_status($user_id_array); - if(isset($online_users['ActionStatus']) && $online_users['ActionStatus'] == 'OK'){ - if($online_users['QueryResult']){ - foreach ($online_users['QueryResult'] as $v){ - if($v['Status'] == "Online"){ - //截取用户ID前面的 u 并获取用户ID - $user_id = substr($v['To_Account'],1); - $online_user[] = $user_id; - } - } - } - }else{ - return ['code' => 0, 'msg' => $online_users, 'data' => null]; - } - - $array = $online_user; - $data = null; - foreach ($user as &$v){ - if(!in_array($v,$array)){ - $data[] = [ - 'user_id' => $v, - 'is_online' => 0, - ]; - }else{ - $data[] = [ - 'user_id' => $v, - 'is_online' => 1, - ]; - } + $data = []; + foreach ($user as $v){ + $data[] = [ + 'user_id' => $v, + 'is_online' => db::name('user')->where('id',$v)->value('is_online'), + ]; } return ['code' => 1, 'msg' => '操作成功', 'data' => $data]; } @@ -2810,20 +2777,21 @@ class Room extends Model //查找数据库用户 $dblist = db::name('vs_room_visitor')->where(['room_id' => $room_id])->field('user_id')->select(); - $num_robit = 0; + $online_number = 0; foreach ($dblist as $v) { //机器人 if(db::name('user')->where(['id' => $v['user_id']])->value('is_robot')){ - $num_robit++; + $online_number++; + }else{ + $is_online = db::name('user')->where(['id' => $v['user_id']])->value('is_online'); + if($is_online){ + $online_number++; + } } } - $room_online_number = model('Tencent')->get_group_online_num($room_id); - if($room_online_number['ActionStatus'] != 'OK'){ - return ['code' => 0, 'msg' => $room_online_number['ErrorInfo'].'-'.$room_online_number['ErrorCode'], 'data' => null]; - } $data = [ - 'online_number' => $room_online_number['OnlineMemberNum'] + $num_robit, + 'online_number' => $online_number, ]; return ['code' => 1, 'msg' => '操作成功', 'data' => $data]; @@ -2924,6 +2892,8 @@ class Room extends Model //用户在房间内切后台保留机制 public function user_in_room_background($user_id,$room_id,$type) { + return ['code' => 1, 'msg' => '操作成功', 'data' => null];//没啥用了 + if(!$room_id){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } diff --git a/application/api/model/RoomPit.php b/application/api/model/RoomPit.php index 0bf9060..0ef2230 100644 --- a/application/api/model/RoomPit.php +++ b/application/api/model/RoomPit.php @@ -57,7 +57,7 @@ class RoomPit extends Model return ['code' => 0, 'msg' => '上麦失败', 'data' => null]; } // $nickname = model('User')->where(['id' => $user_id])->value('nickname'); - $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex,is_online')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($user_id);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($user_id);//魅力图标 $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($user_id,1); @@ -332,7 +332,7 @@ class RoomPit extends Model if(!$exchange || !$exchange1){ return ['code' => 0, 'msg' => '换麦失败', 'data' => null]; } - $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex,is_online')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($user_id);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($user_id);//魅力图标 $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($user_id,1); @@ -391,7 +391,7 @@ class RoomPit extends Model if(!$exchange || !$exchange1){ return ['code' => 0, 'msg' => '换麦失败', 'data' => null]; } - $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex,is_online')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($user_id);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($user_id);//魅力图标 $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($user_id,1); @@ -691,7 +691,7 @@ class RoomPit extends Model continue; } //聊天室推送系统消息 - $FromUserInfo = db::name('user')->where('id',$value)->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo = db::name('user')->where('id',$value)->field('id as user_id,nickname,avatar,sex,is_online')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($value);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($value);//魅力图标 $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($value,1); @@ -736,7 +736,7 @@ class RoomPit extends Model // } Cache::set('auction_user_'.$room_id,$value); //聊天室推送系统消息 - $FromUserInfo = db::name('user')->where('id',$value)->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo = db::name('user')->where('id',$value)->field('id as user_id,nickname,avatar,sex,is_online')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($value);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($value);//魅力图标 $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($value,1); @@ -800,7 +800,7 @@ class RoomPit extends Model $uid = $to_user[0]; //查询是否已经上麦 $on_pit_number = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $uid])->value('pit_number'); - if ($on_pit_number == 1) { + if ($on_pit_number >= 1) { return ['code' => 0, 'msg' => '用户已在麦上', 'data' => null]; } //查询1号麦位是否有人 @@ -813,7 +813,7 @@ class RoomPit extends Model return ['code' => 0, 'msg' => '操作失败', 'data' => null]; } //制造上麦信息 - $FromUserInfo = db::name('user')->where('id',$uid)->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo = db::name('user')->where('id',$uid)->field('id as user_id,nickname,avatar,sex,is_online')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($uid);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($uid);//魅力图标 $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($uid,1); @@ -1000,8 +1000,14 @@ class RoomPit extends Model if(!$accept_user_id){ return ['code' => 0, 'msg' => '请选择用户', 'data' => null]; } + + $room_type = db::name('vs_room')->where(['id' => $room_id])->value('type_id'); if($type == 1){//抱麦 + $accept_user_is_on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $accept_user_id])->find(); + if($accept_user_is_on_pit){ + return ['code' => 0, 'msg' => '该用户已在麦位上', 'data' => null]; + } if($room_type == 7 && ($pit_number == 7 || $pit_number == 8)){ return ['code' => 0, 'msg' => '互娱房 不能上7、8号麦位', 'data' => null]; } diff --git a/application/api/model/RoomSong.php b/application/api/model/RoomSong.php index be8e6f7..3998019 100644 --- a/application/api/model/RoomSong.php +++ b/application/api/model/RoomSong.php @@ -518,7 +518,7 @@ class RoomSong extends Model if(isset($pit_infos)){ return ['code' => 0, 'msg' => '用户已在麦上,请先下麦后再申请', 'data' => null]; } - $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex,is_online')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($user_id);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($user_id);//魅力图标 $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($user_id,1); diff --git a/application/api/model/Sign.php b/application/api/model/Sign.php index c46dafc..243e0d0 100644 --- a/application/api/model/Sign.php +++ b/application/api/model/Sign.php @@ -20,6 +20,11 @@ class Sign extends Model if(!$owner && !$host){ return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; } + //查询签约用户是否在麦位上 + $accept_user_is_on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 1])->find(); + if($accept_user_is_on_pit['user_id'] == 0){ + return ['code' => 0, 'msg' => '签约麦位没有用户', 'data' => null]; + } $is_first_sign = db::name('vs_user_sign')->where('sign_user_id',$sign_user_id)->count(); if($is_first_sign < 1){ @@ -240,7 +245,7 @@ class Sign extends Model } }else{ $result5 = db::name('vs_user_sign')->where(['id' => $is_sign['id']]) - ->update(['end_time' => time(),'type' => 3]); + ->update(['end_time' => time(),'type' => 4]); if(!$result5){ db::rollback(); return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null]; @@ -410,12 +415,12 @@ class Sign extends Model model('api/Chat')->sendMsg(1092,$room_id,$text); }else{ //修改房间信息 - $res1 = db::name('vs_room')->where('id',$room_id)->update([ + db::name('vs_room')->where('id',$room_id)->update([ 'sign_type' => 0, 'updatetime' => time() ]); //修改房间签约信息 - $res2 = db::name('vs_room_sign')->where(['id' => $sign_time]) + db::name('vs_room_sign')->where(['id' => $sign_time]) ->update([ 'sign_type' => 0, 'end_time' => time() @@ -476,12 +481,11 @@ class Sign extends Model if($user_pit_info && $user_pit_info['pit_number']){ //用户已在麦上,换到2号位 //记录原麦位信息 - db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 2]) - ->update(['user_id' => $user_id]); - db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $user_pit_info['pit_number']]) - ->update(['before_pit_number' => $user_pit_info['pit_number'], 'user_id' => 0]); + ->update(['user_id' => 0]); + db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 2]) + ->update(['user_id' => $user_id,'before_pit_number' => $user_pit_info['pit_number']]); //推送换麦消息 $this->sendPitChangeMessage($user_id, $room_id, $user_pit_info['pit_number'], 2); } else { diff --git a/application/api/model/Tencent.php b/application/api/model/Tencent.php index 0d26c39..0cea340 100644 --- a/application/api/model/Tencent.php +++ b/application/api/model/Tencent.php @@ -282,7 +282,11 @@ class Tencent extends Model $reslut = $this->tencent_post_url($postUrl, $curlPost); // $txt = date('Y-m-d H:i:s').'测试'; // error_log($txt, 3, 'a.txt'); - return $reslut; + if($reslut['ActionStatus'] == 'OK'){ + return ['code' => 1, 'msg' => '发送成功', 'data' => $reslut]; + }else{ + return ['code' => 0, 'msg' => $reslut['ErrorCode'], 'data' => $reslut]; + } } @@ -973,106 +977,106 @@ class Tencent extends Model //腾讯IM监控在线状态更新 public function tencent_member_status_change($info){ - $uid = substr($info['To_Account'],1); - $action = $info['Action']; - - if($action == 'Disconnect') { - $is_keep = 1; - $keep = db::name('vs_xintiao')->where('user_id' , $uid)->find(); - if(isset($keep)){ - if(time() - $keep['updatetime'] >= 60){ - $is_keep = 0; - } - } - - //判断保活用户是否安卓用户 - $user_system = db::name('user')->where('id' , $uid)->value('system'); - if($user_system == 'android'){ - Db::name('user')->where('id', $uid)->update(['is_online' => 0, 'updatetime' => time()]); - $quit_room = Db::name('vs_room_visitor')->where('user_id', $uid)->select(); - Log::record("腾讯离线推送,用户安卓所在房间信息".json_encode($quit_room),"infos"); - if($quit_room) { - foreach ($quit_room as &$v){ - if(isset($v['room_id'])){ - $room_type = db::name('vs_room')->where(['id' => $v['room_id']])->field('step,type_id,label_id')->find(); - // Log::record("腾讯离线推送,房间类型".json_encode($room_type),"infos"); - if($room_type['label_id'] == 1 && ($room_type['type_id'] == 1 || $room_type['type_id'] == 8)){ - // Log::record("腾讯离线推送,我是二卡八","infos"); - Db::name('user')->where('id', $uid)->update(['is_online' => 1, 'updatetime' => time()]); - }else{ - if(isset($room_type) && ($room_type['type_id'] == 7 && ($room_type['step'] == 2 ||$room_type['step'] == 3)) || $room_type == 2){ - $text['text'] = '掉线!'; - $text['user_id'] = $uid; - $text['type'] = 2; - model('Chat')->sendMsg(1058,$v['room_id'],$text); - }else { - //查询是否有切后台的操作 - // $bg_room = db::name('vs_user_in_room_bg')->where(['room_id' => $v['room_id'],'user_id' => $v['user_id']])->find(); - // if(!$bg_room){ - // // Log::record("腾讯离线推送,要踢你","infos"); - // model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],2); - // } - Log::record("腾讯离线推送,判断心跳".$is_keep,"infos"); - if($is_keep == 0){ - model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],2); - } - } - } - } - $room_type = null; - } - } - }else{ - Db::name('user')->where('id', $uid)->update(['is_online' => 0, 'updatetime' => time()]); - $quit_room = Db::name('vs_room_visitor')->where('user_id', $uid)->select(); - // Log::record("腾讯离线推送,房间信息".json_encode($quit_room),"infos"); - if($quit_room) { - foreach ($quit_room as &$v){ - if(isset($v['room_id'])){ - $room_type = db::name('vs_room')->where(['id' => $v['room_id']])->field('step,type_id,label_id')->find(); - // Log::record("腾讯离线推送,房间类型".json_encode($room_type),"infos"); - if($room_type['label_id'] == 1 && ($room_type['type_id'] == 1 || $room_type['type_id'] == 8)){ - // Log::record("腾讯离线推送,我是二卡八","infos"); - Db::name('user')->where('id', $uid)->update(['is_online' => 1, 'updatetime' => time()]); - }else{ - if(isset($room_type) && ($room_type['type_id'] == 7 && ($room_type['step'] == 2 ||$room_type['step'] == 3)) || $room_type == 2){ - $text['text'] = '掉线!'; - $text['user_id'] = $uid; - $text['type'] = 2; - model('Chat')->sendMsg(1058,$v['room_id'],$text); - }else { - //查询是否有切后台的操作 - $bg_room = db::name('vs_user_in_room_bg')->where(['room_id' => $v['room_id'],'user_id' => $v['user_id']])->find(); - if(!$bg_room){ - // Log::record("腾讯离线推送,要踢你","infos"); - model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],2); - } - } - } - } - $room_type = null; - } - } - } - - - - } elseif ($action == 'Login') { - Db::name('user')->where('id', $uid)->update(['is_online' => 1, 'updatetime' => time()]); - $room = Db::name('vs_room_visitor')->where('user_id', $uid)->order('id desc')->value('room_id'); - - $text['text'] = '重新上线!'; - $text['user_id'] = $uid; - $text['type'] = 1; - model('Chat')->sendMsg(1058,$room,$text); - }elseif ($action == 'Logout'){ -// Db::name('user')->where('id', $uid)->update(['is_online' => 0, 'updatetime' => time()]); +// $uid = substr($info['To_Account'],1); +// $action = $info['Action']; +// +// if($action == 'Disconnect') { +// $is_keep = 1; +// $keep = db::name('vs_xintiao')->where('user_id' , $uid)->find(); +// if(isset($keep)){ +// if(time() - $keep['updatetime'] >= 60){ +// $is_keep = 0; +// } +// } +// +// //判断保活用户是否安卓用户 +// $user_system = db::name('user')->where('id' , $uid)->value('system'); +// if($user_system == 'android'){ +// Db::name('user')->where('id', $uid)->update(['is_online' => 0, 'updatetime' => time()]); +// $quit_room = Db::name('vs_room_visitor')->where('user_id', $uid)->select(); +// Log::record("腾讯离线推送,用户安卓所在房间信息".json_encode($quit_room),"infos"); +// if($quit_room) { +// foreach ($quit_room as &$v){ +// if(isset($v['room_id'])){ +// $room_type = db::name('vs_room')->where(['id' => $v['room_id']])->field('step,type_id,label_id')->find(); +// // Log::record("腾讯离线推送,房间类型".json_encode($room_type),"infos"); +// if($room_type['label_id'] == 1 && ($room_type['type_id'] == 1 || $room_type['type_id'] == 8)){ +// // Log::record("腾讯离线推送,我是二卡八","infos"); +// Db::name('user')->where('id', $uid)->update(['is_online' => 1, 'updatetime' => time()]); +// }else{ +// if(isset($room_type) && ($room_type['type_id'] == 7 && ($room_type['step'] == 2 ||$room_type['step'] == 3)) || $room_type == 2){ +// $text['text'] = '掉线!'; +// $text['user_id'] = $uid; +// $text['type'] = 2; +// model('Chat')->sendMsg(1058,$v['room_id'],$text); +// }else { +// //查询是否有切后台的操作 +// // $bg_room = db::name('vs_user_in_room_bg')->where(['room_id' => $v['room_id'],'user_id' => $v['user_id']])->find(); +// // if(!$bg_room){ +// // // Log::record("腾讯离线推送,要踢你","infos"); +// // model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],2); +// // } +// Log::record("腾讯离线推送,判断心跳".$is_keep,"infos"); +// if($is_keep == 0){ +// model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],2); +// } +// } +// } +// } +// $room_type = null; +// } +// } +// }else{ +// Db::name('user')->where('id', $uid)->update(['is_online' => 0, 'updatetime' => time()]); +// $quit_room = Db::name('vs_room_visitor')->where('user_id', $uid)->select(); +// // Log::record("腾讯离线推送,房间信息".json_encode($quit_room),"infos"); +// if($quit_room) { +// foreach ($quit_room as &$v){ +// if(isset($v['room_id'])){ +// $room_type = db::name('vs_room')->where(['id' => $v['room_id']])->field('step,type_id,label_id')->find(); +// // Log::record("腾讯离线推送,房间类型".json_encode($room_type),"infos"); +// if($room_type['label_id'] == 1 && ($room_type['type_id'] == 1 || $room_type['type_id'] == 8)){ +// // Log::record("腾讯离线推送,我是二卡八","infos"); +// Db::name('user')->where('id', $uid)->update(['is_online' => 1, 'updatetime' => time()]); +// }else{ +// if(isset($room_type) && ($room_type['type_id'] == 7 && ($room_type['step'] == 2 ||$room_type['step'] == 3)) || $room_type == 2){ +// $text['text'] = '掉线!'; +// $text['user_id'] = $uid; +// $text['type'] = 2; +// model('Chat')->sendMsg(1058,$v['room_id'],$text); +// }else { +// //查询是否有切后台的操作 +// $bg_room = db::name('vs_user_in_room_bg')->where(['room_id' => $v['room_id'],'user_id' => $v['user_id']])->find(); +// if(!$bg_room){ +// // Log::record("腾讯离线推送,要踢你","infos"); +// model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],2); +// } +// } +// } +// } +// $room_type = null; +// } +// } +// } +// +// +// +// } elseif ($action == 'Login') { +// Db::name('user')->where('id', $uid)->update(['is_online' => 1, 'updatetime' => time()]); // $room = Db::name('vs_room_visitor')->where('user_id', $uid)->order('id desc')->value('room_id'); -// $text['text'] = '掉线!'; +// +// $text['text'] = '重新上线!'; // $text['user_id'] = $uid; -// $text['type'] = 2; +// $text['type'] = 1; // model('Chat')->sendMsg(1058,$room,$text); - } +// }elseif ($action == 'Logout'){ +//// Db::name('user')->where('id', $uid)->update(['is_online' => 0, 'updatetime' => time()]); +//// $room = Db::name('vs_room_visitor')->where('user_id', $uid)->order('id desc')->value('room_id'); +//// $text['text'] = '掉线!'; +//// $text['user_id'] = $uid; +//// $text['type'] = 2; +//// model('Chat')->sendMsg(1058,$room,$text); +// } return true; } diff --git a/application/api/model/User.php b/application/api/model/User.php index eca260e..63f64c9 100644 --- a/application/api/model/User.php +++ b/application/api/model/User.php @@ -210,6 +210,11 @@ class User extends Model $user_info['master'] = null; } + //身价配置 + $coin_market_value = explode(',', get_system_config_value('coin_market_value'));; + $user_info['market_value_coin'] = $coin_market_value[0]; + $user_info['market_value_market'] = $coin_market_value[1]; + return ['code' => 1, 'msg' => '获取成功', 'data' => $user_info]; } @@ -436,6 +441,11 @@ class User extends Model }else{ $user_info['master'] = null; } + + //身价配置 + $coin_market_value = explode(',', get_system_config_value('coin_market_value'));; + $user_info['market_value_coin'] = $coin_market_value[0]; + $user_info['market_value_market'] = $coin_market_value[1]; return ['code' => 1, 'msg' => '获取成功', 'data' => $user_info]; } diff --git a/application/cron/controller/FriendEnd.php b/application/cron/controller/FriendEnd.php index 52e4e8b..d1fa68c 100644 --- a/application/cron/controller/FriendEnd.php +++ b/application/cron/controller/FriendEnd.php @@ -2,6 +2,7 @@ namespace app\cron\controller; +use think\Cache; use think\Db; class FriendEnd @@ -18,9 +19,67 @@ class FriendEnd echo "清除私密小屋过期数据开始:\n"; $this->clear_room_end();//清除私密小屋过期数据 echo "清除私密小屋过期数据结束 \n"; + + echo "查询在线状态:\n"; + $this->online_status(); + echo "\n"; } + //查询在线状态 + protected function online_status() + { + $user_list = db::name('vs_xintiao')->select(); + if($user_list){ + foreach ($user_list as &$value){ + if(time() - $value['updatetime'] >= 183){//2秒刷新一次,加上用户多 三分钟补偿3秒 + //断线 + db::name('user')->where('id',$value['user_id'])->update(['is_online'=>2]); + //是否在房间内 + $room_id = db::name('vs_room_visitor')->where('user_id',$value['user_id'])->order('id desc')->value('room_id'); + if($room_id){ + + $text['text'] = '掉线!'; + $text['user_id'] = $value['user_id']; + $text['type'] = 2; + model('Chat')->sendMsg(1058,$room_id,$text); + + //拍卖位,互娱交友过程中1-6号麦位,签约过程中签约麦位不能退出房间 则推送离线 +// $auction_user_id = Cache::get('auction_user_'.$room_id); +// $roomInfoStep = db::name('vs_room')->where(['id' => $room_id])->value('step'); +// $room_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $value['user_id']])->find(); +// $vs_room_sign = db::name('vs_room_sign')->where(['room_id' => $room_id, 'sign_user_id' => $value['user_id'],'sign_type'=>1])->find(); +// if($auction_user_id == $value['user_id'] +// || ($roomInfoStep == 2 && in_array($room_pit['pit_number'],[1,2,3,4,5,6])) +// || $vs_room_sign) +// { +// +// }else{//其他退出房间 +// model('api/Room')->quit_room($value['user_id'],$room_id,$value['user_id']); +// } + } + }else{ + $is_online = db::name('user')->where('id',$value['user_id'])->value('is_online'); + if($is_online == 1){ + //在线 + continue; + }else{ + //在线 + db::name('user')->where('id',$value['user_id'])->update(['is_online'=>1]); + //是否在房间内 + $room_id = db::name('vs_room_visitor')->where('user_id',$value['user_id'])->order('id desc')->value('room_id'); + if($room_id){ + $text['text'] = '重新上线!'; + $text['user_id'] = $value['user_id']; + $text['type'] = 1; + model('Chat')->sendMsg(1058,$room_id,$text); + } + } + } + } + } + } + //清除交友房过期未结束数据 public function clearFriendingEndRoom() { diff --git a/application/cron/controller/PerformPerSecond.php b/application/cron/controller/PerformPerSecond.php index 2250218..3766fc4 100644 --- a/application/cron/controller/PerformPerSecond.php +++ b/application/cron/controller/PerformPerSecond.php @@ -21,18 +21,23 @@ class PerformPerSecond echo "拍卖房结束提醒:\n"; $this->auction_end_notice();//拍卖房结束提醒 echo "\n"; + echo "Pk房连线中倒计时结束操作PK结束:\n"; $this->pk_start_end(); echo "\n"; + echo "Pk房PK进行中倒计时结束操作PK结束:\n"; $this->pk_end(); echo "\n"; + echo "Pk房PK结束惩罚倒计时结束断开操作:\n"; $this->pk_close(); echo "\n"; + echo "pk发起10秒后无应答拒绝:\n"; $this->pk_start_refuse(); echo "\n"; + echo "房间红包清退:\n"; $this->processExpiredRedpackets(); echo "\n"; @@ -40,12 +45,15 @@ class PerformPerSecond echo "提现云账号订单状态查询:\n"; $this->withdraw_order_status(); echo "\n"; + echo "签约房时间结束处理:\n"; $this->sign_room_time_end(); echo "\n"; + echo "系统降身价:\n"; $this->system_downgrade(); echo "\n"; + } diff --git a/application/cron/controller/TenSeconds.php b/application/cron/controller/TenSeconds.php index 03d5e42..8f2995d 100644 --- a/application/cron/controller/TenSeconds.php +++ b/application/cron/controller/TenSeconds.php @@ -15,13 +15,16 @@ class TenSeconds */ function index() { - echo "房间在线人数:\n"; - $this->auction_end_notice();//拍卖房结束提醒 - echo "\n"; + //下面两个经业务调整 暂时不要了 + + +// echo "房间在线人数:\n"; +// $this->auction_end_notice();//拍卖房结束提醒 +// echo "\n"; //清理切后台超过5分钟的用户 - echo "清理切后台超过5分钟的用户\n"; - $this->clear_offline_user(); - echo "\n"; +// echo "清理切后台超过5分钟的用户\n"; +// $this->clear_offline_user(); +// echo "\n"; }