105 lines
3.8 KiB
PHP
105 lines
3.8 KiB
PHP
<?php
|
||
|
||
namespace app\cron\controller;
|
||
|
||
use think\Cache;
|
||
use think\Db;
|
||
|
||
class FriendEnd
|
||
{
|
||
/*
|
||
* 运行函数
|
||
*/
|
||
function index()
|
||
{
|
||
echo "清除交友房过期未结束数据开始:\n";
|
||
$this->clearFriendingEndRoom();//清除交友房过期未结束数据
|
||
echo "清除结束 \n";
|
||
|
||
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秒
|
||
$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('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;
|
||
}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()
|
||
{
|
||
//清除交友房过期数据
|
||
$room_list = db::name('vs_room')->where(['type_id'=>7])->whereIn('step', [2,3])
|
||
->field(['id','step'])->select();
|
||
if(!empty($room_list)){
|
||
foreach ($room_list as $room) {
|
||
//查询交友信息
|
||
$friending_info = db::name('vs_user_friending')->where('room_id', $room['id'])->where('status', 1)->order('id', 'desc')->find();
|
||
if($friending_info){
|
||
//判断结束时间是否到期
|
||
if($friending_info['end_time'] <= time() || $room['step'] == 3){
|
||
model('Friend')->end_friend(0,$room['id'],$friending_info['id'],1);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
//清除私密小屋过期数据
|
||
public function clear_room_end()
|
||
{
|
||
$room_list = db::name('vs_room_cp_movie')->where(['status' => 1,'type'=>1,'time_day' =>['<',time()]])->select();
|
||
if(!empty($room_list)){
|
||
foreach ($room_list as $room) {
|
||
model('Friend')->outRoom(0,$room['room_id']);
|
||
}
|
||
}
|
||
}
|
||
} |