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());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |