88 lines
2.0 KiB
PHP
88 lines
2.0 KiB
PHP
|
<?php
|
|||
|
|
|||
|
namespace app\api\model;
|
|||
|
|
|||
|
use app\common\exception\BaseException;
|
|||
|
use app\common\model\Article as ArticleModel;
|
|||
|
|
|||
|
/**
|
|||
|
* 商品评价模型
|
|||
|
* Class Article
|
|||
|
* @package app\api\model
|
|||
|
*/
|
|||
|
class Article extends ArticleModel
|
|||
|
{
|
|||
|
/**
|
|||
|
* 追加字段
|
|||
|
* @var array
|
|||
|
*/
|
|||
|
protected $append = [
|
|||
|
'show_views',
|
|||
|
'view_time'
|
|||
|
];
|
|||
|
|
|||
|
/**
|
|||
|
* 隐藏字段
|
|||
|
* @var array
|
|||
|
*/
|
|||
|
protected $hidden = [
|
|||
|
'is_delete',
|
|||
|
'wxapp_id',
|
|||
|
'create_time',
|
|||
|
'update_time'
|
|||
|
];
|
|||
|
|
|||
|
/**
|
|||
|
* 文章详情:HTML实体转换回普通字符
|
|||
|
* @param $value
|
|||
|
* @return string
|
|||
|
*/
|
|||
|
public function getArticleContentAttr($value)
|
|||
|
{
|
|||
|
return htmlspecialchars_decode($value);
|
|||
|
}
|
|||
|
|
|||
|
public function getViewTimeAttr($value, $data)
|
|||
|
{
|
|||
|
return date('Y-m-d', $data['create_time']);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 文章详情
|
|||
|
* @param $article_id
|
|||
|
* @return ArticleModel|null
|
|||
|
* @throws BaseException
|
|||
|
* @throws \think\Exception
|
|||
|
* @throws \think\exception\DbException
|
|||
|
*/
|
|||
|
public static function detail($article_id)
|
|||
|
{
|
|||
|
if (!$model = parent::detail($article_id)) {
|
|||
|
throw new BaseException(['msg' => '文章不存在']);
|
|||
|
}
|
|||
|
// 累积阅读数
|
|||
|
$model->setInc('actual_views', 1);
|
|||
|
return $model;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取文章列表
|
|||
|
* @param int $category_id
|
|||
|
* @param int $limit
|
|||
|
* @return \think\Paginator
|
|||
|
* @throws \think\exception\DbException
|
|||
|
*/
|
|||
|
public function getList($category_id = 0, $limit = 15)
|
|||
|
{
|
|||
|
$category_id > 0 && $this->where('category_id', '=', $category_id);
|
|||
|
return $this->field(['article_content'], true)
|
|||
|
->with(['image', 'category'])
|
|||
|
->where('article_status', '=', 1)
|
|||
|
->where('is_delete', '=', 0)
|
|||
|
->order(['article_sort' => 'asc', 'create_time' => 'desc'])
|
|||
|
->paginate($limit, false, [
|
|||
|
'query' => \request()->request()
|
|||
|
]);
|
|||
|
}
|
|||
|
|
|||
|
}
|