Files
ulthon_information/app/index/controller/Post.php
2023-06-28 11:12:30 +08:00

73 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace app\index\controller;
use app\model\Post as ModelPost;
use app\model\PostVisit;
use think\facade\Cache;
use think\facade\Db;
use think\facade\View;
use think\model\Relation;
class Post extends Common
{
/**
* 显示指定的资源.
*
* @param int $id
* @return \think\Response
*/
public function read($uid)
{
//
$cache_key = 'post_' . $uid;
$model_post = Cache::get($cache_key);
if (empty($model_post)) {
$model_post = ModelPost::with([
'comments' => function (Relation $query) {
$query->order('id asc');
},
])->where('uid', $uid)->find();
if (empty($model_post)) {
return $this->error('链接已失效', '/');
}
Cache::set($cache_key, $model_post, 600);
}
$model_post->hits = Db::raw('hits + 1');
$model_post->save();
$this->recordVisit($model_post->id);
$list_last_visit = PostVisit::where('post_id', $model_post->id)
->order('id desc')
->group('ip,uid')
->limit(12)
->cache(60)
->select();
View::assign('post', $model_post);
View::assign('list_last_visit', $list_last_visit);
return View::fetch();
}
public function recordVisit($post_id)
{
$model_visit = new PostVisit();
$model_visit->uid = $this->userinfo['uid'] ?? '';
$model_visit->post_id = $post_id;
$model_visit->avatar = $this->userinfo['avatar'] ?? '';
$model_visit->nickname = $this->userinfo['nickname'] ?? '';
$model_visit->ip = $this->request->ip();
$model_visit->save();
}
}