120 lines
3.1 KiB
PHP
120 lines
3.1 KiB
PHP
|
<?php
|
||
|
|
||
|
|
||
|
namespace app\common\model;
|
||
|
|
||
|
|
||
|
use app\common\basics\Models;
|
||
|
use app\common\enum\FootprintEnum;
|
||
|
use Exception;
|
||
|
|
||
|
/**
|
||
|
* 足迹记录模型
|
||
|
* Class FootprintRecord
|
||
|
* @package app\common\model
|
||
|
*/
|
||
|
class FootprintRecord extends Models
|
||
|
{
|
||
|
/**
|
||
|
* Notes: 关联用户模型
|
||
|
* @author 张无忌(2020/12/17 11:51)
|
||
|
*/
|
||
|
public function user()
|
||
|
{
|
||
|
return $this->hasOne('app\common\model\user\User', 'id', 'user_id')
|
||
|
->field(['id', 'nickname', 'avatar']);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @Notes: 获取器-转换时间
|
||
|
* @Author: 张无忌
|
||
|
* @param $value
|
||
|
* @param $data
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getTimeAttr($value, $data)
|
||
|
{
|
||
|
unset($value);
|
||
|
// 足迹记录时间
|
||
|
$create_time = strtotime($data['create_time']);
|
||
|
// 一小时前时间戳
|
||
|
$an_hour_ago = strtotime("-1 hour");
|
||
|
|
||
|
// 小于1小时内显示xx分钟, 否则显示多少个小时
|
||
|
if ($create_time > $an_hour_ago) {
|
||
|
$minute = intval((time() - $create_time) / 60);
|
||
|
|
||
|
return $minute <= 1 ? '刚刚' : strval($minute).'分钟前';
|
||
|
} else {
|
||
|
return '1小时前';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Notes: 获取30分钟内容的足迹
|
||
|
* @param $data
|
||
|
* @return array|bool
|
||
|
* @author 张无忌(2020/12/16 18:17)
|
||
|
*/
|
||
|
public static function getFootPrintOneHourInner($data)
|
||
|
{
|
||
|
try {
|
||
|
// 一小时前时间戳
|
||
|
$an_hour_ago = strtotime("-1 hour");
|
||
|
// 30分钟前时间戳
|
||
|
$half_an_hour_ago = $an_hour_ago + 1800;
|
||
|
// 当前时间戳
|
||
|
$current_time = time();
|
||
|
|
||
|
$where = [
|
||
|
['create_time', '>', $half_an_hour_ago],
|
||
|
['create_time', '<', $current_time]
|
||
|
];
|
||
|
if ($data['type']) {
|
||
|
$where[] = ['user_id', '=', (int)$data['user_id']];
|
||
|
$where[] = ['type', '=', (int)$data['type']];
|
||
|
}
|
||
|
|
||
|
// 进入商城
|
||
|
if ($data['type'] === FootprintEnum::ENTER_MALL) {
|
||
|
$where[] = ['foreign_id', '=', 0];
|
||
|
}
|
||
|
|
||
|
// 如果是浏览器商品
|
||
|
if ($data['type'] === FootprintEnum::BROWSE_GOODS) {
|
||
|
$where[] = ['foreign_id', '=', (int)$data['foreign_id']];
|
||
|
}
|
||
|
|
||
|
$model = new self;
|
||
|
return $model->field(true)->where($where)->find();
|
||
|
|
||
|
} catch (Exception $e) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @Notes: 增加足迹
|
||
|
* @Author: 张无忌
|
||
|
* @param $data
|
||
|
* @param $tpl
|
||
|
* @return bool
|
||
|
* @throws \think\Exception
|
||
|
*/
|
||
|
public static function add($data, $tpl)
|
||
|
{
|
||
|
try {
|
||
|
self::create([
|
||
|
'type' => $data['type'],
|
||
|
'user_id' => $data['user_id'],
|
||
|
'foreign_id' => empty($data['foreign_id']) ? 0 : $data['foreign_id'],
|
||
|
'template' => $tpl,
|
||
|
'create_time' => time(),
|
||
|
]);
|
||
|
|
||
|
return true;
|
||
|
} catch (\Exception $e) {
|
||
|
throw new \think\Exception($e->getMessage());
|
||
|
}
|
||
|
}
|
||
|
}
|