Compare commits
No commits in common. "b409fbe4975f2860bdf7b3fe208875dec69ee478" and "caa0fca67896fd9f32e3495a30587356216c1ac3" have entirely different histories.
b409fbe497
...
caa0fca678
@ -59,8 +59,7 @@ class SendCode
|
|||||||
/**
|
/**
|
||||||
* 检测是否在线
|
* 检测是否在线
|
||||||
* https://apifox.com/apidoc/shared-c08671dd-4e9d-44dd-a2a1-ec4b8316a81f
|
* https://apifox.com/apidoc/shared-c08671dd-4e9d-44dd-a2a1-ec4b8316a81f
|
||||||
* 0 在线 1不在线 2token无效 3WS号不存在
|
* 0 在线 1不在线
|
||||||
* code
|
|
||||||
*/
|
*/
|
||||||
public static function get_ws_status($phone)
|
public static function get_ws_status($phone)
|
||||||
{
|
{
|
||||||
@ -76,14 +75,6 @@ class SendCode
|
|||||||
if($responseData['code']==0){
|
if($responseData['code']==0){
|
||||||
return $responseData['status'];
|
return $responseData['status'];
|
||||||
}
|
}
|
||||||
if($responseData['code'] == 1){
|
|
||||||
echo('token无效');
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
if($responseData['code'] == 2){
|
|
||||||
echo('2WS号不存在');
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace app\dao;
|
|
||||||
use app\model\UserPhoneLog;
|
|
||||||
/**
|
|
||||||
* 手机号在线时长日志
|
|
||||||
*/
|
|
||||||
class UserPhoneLogDao{
|
|
||||||
/**
|
|
||||||
* 获取手机号 今天在线时长 单位秒
|
|
||||||
*/
|
|
||||||
public static function getOnlineTimeByPhoneToday($phone){
|
|
||||||
$today = date('Y-m-d');
|
|
||||||
$OnlineTime=UserPhoneLog::where('phone',$phone)->where('created_at', '>=', $today." 00:00:00")->sum('time');
|
|
||||||
return $OnlineTime;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 自动处理time
|
|
||||||
* phone 手机号
|
|
||||||
* status — 是否在线 1: 在线,0: 不在线
|
|
||||||
* currentTimestamp 考虑到运行性能差别 使用传递过来的时间戳
|
|
||||||
*/
|
|
||||||
public static function setOnlineTimeByPhone($phone,$status,$currentTimestamp){
|
|
||||||
//这里因为和api的返回是反的所以需要这样
|
|
||||||
$status=$status==0?1:0;
|
|
||||||
$today = date('Y-m-d');
|
|
||||||
// $UserPhoneLog=UserPhoneLog::where('phone',$phone)->where('created_at', '>=', $today." 00:00:00")->limit(2)->orderByDesc('id')->get();
|
|
||||||
$UserPhoneLog=UserPhoneLog::where('phone',$phone)->where('created_at', '>=', $today." 00:00:00")->orderBy('id', 'desc')->first();
|
|
||||||
if(empty($UserPhoneLog)){
|
|
||||||
echo("kong");
|
|
||||||
$new_UserPhoneLog=new UserPhoneLog();
|
|
||||||
$new_UserPhoneLog->status=$status;
|
|
||||||
$new_UserPhoneLog->phone=$phone;
|
|
||||||
$new_UserPhoneLog->time=0;
|
|
||||||
$new_UserPhoneLog->save();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($UserPhoneLog->status==1&&$status==1){
|
|
||||||
echo("kong1");
|
|
||||||
$new_UserPhoneLog=new UserPhoneLog();
|
|
||||||
$new_UserPhoneLog->status=$status;
|
|
||||||
$new_UserPhoneLog->phone=$phone;
|
|
||||||
$new_UserPhoneLog->time=$currentTimestamp-strtotime($UserPhoneLog->created_at);
|
|
||||||
$new_UserPhoneLog->save();
|
|
||||||
echo($currentTimestamp-strtotime($UserPhoneLog->created_at));
|
|
||||||
}else{
|
|
||||||
echo("kong2");
|
|
||||||
$new_UserPhoneLog=new UserPhoneLog();
|
|
||||||
$new_UserPhoneLog->status=$status;
|
|
||||||
$new_UserPhoneLog->phone=$phone;
|
|
||||||
$new_UserPhoneLog->time=0;
|
|
||||||
$new_UserPhoneLog->save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace app\model;
|
|
||||||
|
|
||||||
use support\Model;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户手机号在线日志
|
|
||||||
* @property int $id 用户记录的唯一标识符
|
|
||||||
* @property int $phone 用户手机号(WS手机号)
|
|
||||||
* @property int $time 用户在线时长(单位:秒)
|
|
||||||
* @property string|null $remark 用户备注信息
|
|
||||||
* @property string $created_at 创建时间
|
|
||||||
* @property string $updated_at 更新时间
|
|
||||||
* @property int $status 是否在线 (1: 在线,0: 不在线)
|
|
||||||
*/
|
|
||||||
class UserPhoneLog extends Model
|
|
||||||
{
|
|
||||||
// 指定表名
|
|
||||||
protected $table = 'user_phone_log';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 主键
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $primaryKey = 'id';
|
|
||||||
}
|
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace process;
|
namespace process;
|
||||||
|
|
||||||
use app\dao\UserPhoneLogDao;
|
|
||||||
use App\Utils\API\SendCode;
|
use App\Utils\API\SendCode;
|
||||||
use app\model\UserPhone;
|
use app\model\UserPhone;
|
||||||
use app\dao\UserRewardDao;
|
use app\dao\UserRewardDao;
|
||||||
@ -46,13 +45,13 @@ class Task2
|
|||||||
// echo date('Y-m-d H:i:s')."\n";
|
// echo date('Y-m-d H:i:s')."\n";
|
||||||
// });
|
// });
|
||||||
// // 每5秒执行一次
|
// // 每5秒执行一次
|
||||||
new Crontab('0 */1 * * * *', function () {
|
new Crontab('* */1 * * * *', function () {
|
||||||
$phones = UserPhone::all();
|
$phones = UserPhone::all();
|
||||||
foreach ($phones as $key => $value) {
|
foreach ($phones as $key => $value) {
|
||||||
$currentTimestamp = time();
|
$currentTimestamp = time();
|
||||||
$status = SendCode::get_ws_status($value->phone);
|
|
||||||
// 如果是挂机状态
|
// 如果是挂机状态
|
||||||
if ($status == 0) {
|
if (SendCode::get_ws_status($value->phone) == 0) {
|
||||||
// 如果在线时长超过 3600 秒
|
// 如果在线时长超过 3600 秒
|
||||||
if ($value->time > 3600) {
|
if ($value->time > 3600) {
|
||||||
$div = intdiv($value->time, 3600);
|
$div = intdiv($value->time, 3600);
|
||||||
@ -73,24 +72,13 @@ class Task2
|
|||||||
|
|
||||||
// 更新状态为在线
|
// 更新状态为在线
|
||||||
$value->status = 1;
|
$value->status = 1;
|
||||||
$value->save();
|
} else {
|
||||||
UserPhoneLogDao::setOnlineTimeByPhone($value->phone, $status, $currentTimestamp);
|
|
||||||
}
|
|
||||||
if ($status == 1) {
|
|
||||||
// 如果不在线,设置状态为 0
|
// 如果不在线,设置状态为 0
|
||||||
$value->status = 0;
|
$value->status = 0;
|
||||||
|
}
|
||||||
$value->last_time = $currentTimestamp;
|
$value->last_time = $currentTimestamp;
|
||||||
|
// 最后保存数据
|
||||||
$value->save();
|
$value->save();
|
||||||
UserPhoneLogDao::setOnlineTimeByPhone($value->phone, $status, $currentTimestamp);
|
|
||||||
}
|
|
||||||
if ($status == 3) {
|
|
||||||
// 如果账户不存在直接删除
|
|
||||||
$value->delete();
|
|
||||||
}
|
|
||||||
// UserPhoneLogDao::setOnlineTimeByPhone($value->phone, $status, $currentTimestamp);
|
|
||||||
// $value->last_time = $currentTimestamp;
|
|
||||||
// // 最后保存数据
|
|
||||||
// $value->save();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user