webman/app/dao/UserPhoneLogDao.php

68 lines
2.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\dao;
use app\model\UserPhone;
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)){
$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){
$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{
$new_UserPhoneLog=new UserPhoneLog();
$new_UserPhoneLog->status=$status;
$new_UserPhoneLog->phone=$phone;
$new_UserPhoneLog->time=0;
$new_UserPhoneLog->save();
}
}
/**
* 根据用户id查询 是否有手机号在线时间大于6小时
* 有返回 true 没用返回false
*/
public static function getOnlineTimeByPhoneTodayId($user_id){
$today = date('Y-m-d');
$user_phones=UserPhone::where('user_id',$user_id)->get();
foreach($user_phones as $v){
if(self::getOnlineTimeByPhoneToday($v->phone)>60*60*6){
return true;
}
}
return false;
}
}