From ef8b93c8d164b8746feeb0b71e2161a674da60cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 11:31:51 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E7=A6=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/RoomPit.php | 12 +- application/api/model/RoomSong.php | 2 +- application/api/model/Sign.php | 6 +- application/api/model/Tencent.php | 200 +++++++++--------- application/cron/controller/FriendEnd.php | 59 ++++++ .../cron/controller/PerformPerSecond.php | 1 + 6 files changed, 172 insertions(+), 108 deletions(-) diff --git a/application/api/model/RoomPit.php b/application/api/model/RoomPit.php index 0bf9060..1899dcb 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); @@ -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); 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..fa30849 100644 --- a/application/api/model/Sign.php +++ b/application/api/model/Sign.php @@ -240,7 +240,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 +410,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() 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/cron/controller/FriendEnd.php b/application/cron/controller/FriendEnd.php index 52e4e8b..bfa3f19 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'=>0]); + //是否在房间内 + $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..54369c6 100644 --- a/application/cron/controller/PerformPerSecond.php +++ b/application/cron/controller/PerformPerSecond.php @@ -46,6 +46,7 @@ class PerformPerSecond echo "系统降身价:\n"; $this->system_downgrade(); echo "\n"; + } From 2586346b73c6387c4141cc5b6f14df1936f11523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 11:51:49 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E7=A6=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 0f76507..72d562c 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -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; @@ -1455,23 +1455,6 @@ 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') @@ -1482,11 +1465,12 @@ class Room extends Model ->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 +1486,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']) { From 27bbd59fb55335bdf4b317b352697b4a8073c952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 11:54:16 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E7=A6=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 72d562c..b705a65 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -1459,7 +1459,7 @@ class Room extends Model $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) From dfa38ac51b77ff9fc2ac991b37ff31a4c4e59ba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 12:02:51 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E7=A6=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 4 ++-- application/cron/controller/FriendEnd.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index b705a65..26ebb8b 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; @@ -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){ diff --git a/application/cron/controller/FriendEnd.php b/application/cron/controller/FriendEnd.php index bfa3f19..d1fa68c 100644 --- a/application/cron/controller/FriendEnd.php +++ b/application/cron/controller/FriendEnd.php @@ -34,7 +34,7 @@ class FriendEnd foreach ($user_list as &$value){ if(time() - $value['updatetime'] >= 183){//2秒刷新一次,加上用户多 三分钟补偿3秒 //断线 - db::name('user')->where('id',$value['user_id'])->update(['is_online'=>0]); + 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){ From c6fc8163a90fbd6cdd6c1582f7cd9e3a018a5694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 12:04:22 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E7=A6=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 26ebb8b..4733071 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -2048,7 +2048,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'] = ''; From 258ba5e5c2170cf4d8843e0a311cccb6db366abd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 12:14:57 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E7=A6=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Cron.php | 2 ++ application/cron/controller/PerformPerSecond.php | 7 +++++++ application/cron/controller/TenSeconds.php | 15 +++++++++------ 3 files changed, 18 insertions(+), 6 deletions(-) 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/cron/controller/PerformPerSecond.php b/application/cron/controller/PerformPerSecond.php index 54369c6..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,9 +45,11 @@ 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"; } From 485da90f425e22bc7d04a7cd67b93dcb28a59e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 12:17:43 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E5=88=87=E5=89=8D=E5=90=8E=E5=8F=B0=20?= =?UTF-8?q?=E5=BA=9F=E5=BC=83=20=20=E6=B2=A1=E7=94=A8=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 4733071..63977ea 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -2911,6 +2911,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]; } From 768d3c9484db6f0cb79cc06b5b2f05eba77d0b2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 14:30:43 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E4=BF=9D=E6=8C=81=E5=BF=83=E8=B7=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Xintiao.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); } From bde8bd5d697b8b0eb98335e17add43d3ef868c55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 15:05:06 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E8=BA=AB=E4=BB=B7=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/User.php | 10 ++++++++++ 1 file changed, 10 insertions(+) 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]; } From 17788c162c2dcd49d7f8682a18032aaf29c71962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 15:19:34 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E6=8A=B1=E9=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/RoomPit.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/application/api/model/RoomPit.php b/application/api/model/RoomPit.php index 1899dcb..d821c47 100644 --- a/application/api/model/RoomPit.php +++ b/application/api/model/RoomPit.php @@ -1000,6 +1000,13 @@ class RoomPit extends Model if(!$accept_user_id){ return ['code' => 0, 'msg' => '请选择用户', 'data' => null]; } + + $where['room_id'] = $room_id; + $where['user_id'] = $accept_user_id; + $accept_user_is_on_pit = db::name('vs_room_pit')->where($where)->find(); + if($accept_user_is_on_pit){ + return ['code' => 0, 'msg' => '该用户已在麦位上', 'data' => null]; + } $room_type = db::name('vs_room')->where(['id' => $room_id])->value('type_id'); if($type == 1){//抱麦 if($room_type == 7 && ($pit_number == 7 || $pit_number == 8)){ From 21d59514558bc62dc5d860d49033c350a2095294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 15:24:46 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E6=8A=B1=E9=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/RoomPit.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/application/api/model/RoomPit.php b/application/api/model/RoomPit.php index d821c47..f3c0a2b 100644 --- a/application/api/model/RoomPit.php +++ b/application/api/model/RoomPit.php @@ -1001,14 +1001,13 @@ class RoomPit extends Model return ['code' => 0, 'msg' => '请选择用户', 'data' => null]; } - $where['room_id'] = $room_id; - $where['user_id'] = $accept_user_id; - $accept_user_is_on_pit = db::name('vs_room_pit')->where($where)->find(); - if($accept_user_is_on_pit){ - 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]; } From c794c8c1f75fd199986321a485c3dbbbb011a38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 15:28:12 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E5=90=8C=E6=84=8F=E4=B8=8A=E9=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/RoomPit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/api/model/RoomPit.php b/application/api/model/RoomPit.php index f3c0a2b..0ef2230 100644 --- a/application/api/model/RoomPit.php +++ b/application/api/model/RoomPit.php @@ -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号麦位是否有人 From 6d98047dc4a99104a00ebbd4e1f0fb0ebf940687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 15:36:17 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E7=AD=BE=E7=BA=A6=E5=BC=80=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Sign.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/application/api/model/Sign.php b/application/api/model/Sign.php index fa30849..de9d8ac 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){ From b99ef24a2ec44e1e20ada326f0c64495b6e98eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 15:43:10 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E7=AD=BE=E7=BA=A6=E6=88=BF=20=E9=80=80?= =?UTF-8?q?=E5=87=BA=E4=B8=8B=E9=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 63977ea..263b094 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -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(); From bbc58d57527b540eaaa5b0b3d08625142e8cbac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 15:59:48 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E5=87=BA=E4=BB=B7=E6=8D=A2=E9=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Sign.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/application/api/model/Sign.php b/application/api/model/Sign.php index de9d8ac..243e0d0 100644 --- a/application/api/model/Sign.php +++ b/application/api/model/Sign.php @@ -481,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 { From 263cbe1bdc24a687ad633a1041629699935cc97a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 16:05:22 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E6=AD=8C=E6=89=8B=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=97=B6=E9=97=B4=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/adminapi/controller/SingerSong.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/application/adminapi/controller/SingerSong.php b/application/adminapi/controller/SingerSong.php index 268c792..f9213c1 100644 --- a/application/adminapi/controller/SingerSong.php +++ b/application/adminapi/controller/SingerSong.php @@ -46,6 +46,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, From 48f0c44fba5ddbd74f0ca6e57231caac377ce857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 16:33:35 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E5=9C=A8=E7=A6=BB=E7=BA=BF=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Login.php | 1 + application/api/model/Room.php | 43 ++++++--------------------------- 2 files changed, 8 insertions(+), 36 deletions(-) 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 263b094..5ce5b10 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -2730,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]; } From a82ef834b48c40f23e5f90e778219c4a455b13fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 2 Dec 2025 16:43:43 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E5=9C=A8=E7=A6=BB=E7=BA=BF=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 5ce5b10..9af7b29 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -2777,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];