diff --git a/application/api/controller/Xintiao.php b/application/api/controller/Xintiao.php index ccd5dc6..39ce54e 100644 --- a/application/api/controller/Xintiao.php +++ b/application/api/controller/Xintiao.php @@ -10,20 +10,21 @@ use app\common\controller\BaseCom; class Xintiao extends BaseCom { - - public function keep_xintiao() + //房间内保持心跳 + public function keep_room_heartbeat() { + $room_id = input('room_id'); $user_id = $this->uid; - $is_xintiao = db::name('vs_xintiao')->where('user_id' , $user_id)->find(); + $is_xintiao = db::name('vs_room_heartbeat')->where(['user_id' => $user_id, 'room_id' => $room_id])->find(); if($is_xintiao){ - db::name('vs_xintiao')->where('user_id' , $user_id)->update(['updatetime' => time()]); + db::name('vs_room_heartbeat')->where('user_id' , $user_id)->update(['updatetime' => time()]); }else{ - db::name('vs_xintiao')->insert([ + db::name('vs_room_heartbeat')->insert([ 'user_id' => $user_id, 'createtime' => time(), 'updatetime' => time() - ]); + ]); } return V(1, '成功', null); } @@ -33,7 +34,4 @@ class Xintiao extends BaseCom - - - } \ No newline at end of file diff --git a/application/cron/controller/RoomPan.php b/application/cron/controller/RoomPan.php index b635a74..1c39ead 100644 --- a/application/cron/controller/RoomPan.php +++ b/application/cron/controller/RoomPan.php @@ -25,57 +25,56 @@ class RoomPan $this->blind_box_turntable_gift_send();//盲盒转盘礼物补发 echo "盲盒转盘礼物补发结束 \n"; - echo "查询用户在线状态:\n"; - $this->online_status(); + echo "查询用户是否在房间内保持心跳:\n"; + $this->keep_room_heartbeat(); echo "\n"; } - //查询在线状态 - protected function online_status() - { - $user_list = db::name('vs_xintiao')->select(); + + /* + * 查询用户是否在房间内保持心跳 + */ + public function keep_room_heartbeat(){ + $user_list = db::name('vs_room_heartbeat')->select(); if($user_list){ foreach ($user_list as $value){ - if(time() - $value['updatetime'] >= 180){//三分钟没有上线 - $is_online = db::name('user')->where('id',$value['user_id'])->value('is_online'); - if($is_online == 2){ - //在线 - continue; - } - //断线 - 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('api/Chat')->sendMsg(1058,$room_id,$text); - } - }else{ - $is_online = db::name('user')->where('id',$value['user_id'])->value('is_online'); - if($is_online == 1){ - //在线 - continue; + $is_online = db::name('vs_room_visitor') + ->where(['user_id' => $value['user_id'],'room_id' => $value['room_id']]) + ->order('id desc') + ->field('id,is_online,room_id') + ->find(); + if($is_online){//现在 在房间内 + if(time() - $value['updatetime'] >= 180){//三分钟没有心跳 + if($is_online['is_online'] == 2){//之前就是离开 + continue; + }else{//之前就是在线则改为离开 + db::name('vs_room_visitor')->where('id',$is_online['id'])->update(['is_online'=>2]); + $text['text'] = '离开'; + $text['user_id'] = $value['user_id']; + $text['type'] = 2; + model('api/Chat')->sendMsg(1058,$is_online['room_id'],$text); + } }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'] = '重新上线!'; + if($is_online['is_online'] == 1){//之前就是在线 + continue; + }else{//之前就是离开则改为在线 + db::name('vs_room_visitor')->where('id',$is_online['id'])->update(['is_online'=>1]); + $text['text'] = '回到房间'; $text['user_id'] = $value['user_id']; $text['type'] = 1; - model('api/Chat')->sendMsg(1058,$room_id,$text); + model('api/Chat')->sendMsg(1058,$is_online['room_id'],$text); } } + + }else{ + //删掉 + db::name('vs_room_heartbeat')->where('id',$value['id'])->delete(); } } } } - /* * 盲盒转盘礼物推送补发 */