在离线
This commit is contained in:
@@ -11,15 +11,16 @@ 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()
|
||||
@@ -33,7 +34,4 @@ class Xintiao extends BaseCom
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -25,55 +25,54 @@ 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){
|
||||
//在线
|
||||
$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;
|
||||
}
|
||||
//断线
|
||||
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'] = '掉线!';
|
||||
}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,$room_id,$text);
|
||||
model('api/Chat')->sendMsg(1058,$is_online['room_id'],$text);
|
||||
}
|
||||
}else{
|
||||
$is_online = db::name('user')->where('id',$value['user_id'])->value('is_online');
|
||||
if($is_online == 1){
|
||||
//在线
|
||||
if($is_online['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'] = '重新上线!';
|
||||
}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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user