2026-03-21 02:55:24 +08:00
< ? php
// +----------------------------------------------------------------------
2026-03-29 11:22:52 +08:00
// | Author: ScottPan Team
2026-03-21 02:55:24 +08:00
// +----------------------------------------------------------------------
2026-03-29 11:22:52 +08:00
2026-03-21 02:55:24 +08:00
namespace app\controller\api\v1\publics ;
use app\Request ;
use app\services\article\ArticleServices ;
use app\services\wechat\WechatNewsCategoryServices ;
use think\annotation\Inject ;
/**
* 文章类
* Class Article
* @ package app\api\controller\publics
*/
class Article
{
/**
* @ var ArticleServices
*/
#[Inject]
protected ArticleServices $services ;
/**
* 文章列表
* @ param WechatNewsCategoryServices $services
* @ param $cid
* @ return \think\Response
* @ throws \think\db\exception\DataNotFoundException
* @ throws \think\db\exception\DbException
* @ throws \think\db\exception\ModelNotFoundException
*/
public function lst ( WechatNewsCategoryServices $services , $cid )
{
[ $page , $limit ] = $this -> services -> getPageValue ();
$where = [ 'cid' => $cid ];
$where [ 'ids' ] = $services -> getNewIds ();
$list = $this -> services -> cidByArticleList ( $where , $page , $limit , " id,title,image_input,visit,likes,from_unixtime(add_time,'%Y-%m-%d %H:%i') as add_time,synopsis,url " );
return app ( 'json' ) -> successful ( $list );
}
/**
* 文章点赞 添加、取消
* @ param Request $request
* @ param $id
* @ return \think\Response
*/
public function userArticleLikes ( Request $request , $id )
{
$where = $request -> getMore ([
[ 'status' , 0 ]
]);
$uid = $request -> uid ();
$info = $this -> services -> userArticleLikes ( $id , $where , $uid );
return app ( 'json' ) -> successful ( $info );
}
/**
* 文章详情
* @ param $id
* @ return mixed
* @ throws \think\db\exception\DataNotFoundException
* @ throws \think\db\exception\ModelNotFoundException
* @ throws \think\exception\DbException
*/
public function details ( Request $request , $id )
{
$uid = $request -> uid ();
$info = $this -> services -> getInfo ( $uid , $id );
return app ( 'json' ) -> successful ( $info );
}
/**
* 获取热门文章
* @ return mixed
* @ throws \think\db\exception\DataNotFoundException
* @ throws \think\db\exception\DbException
* @ throws \think\db\exception\ModelNotFoundException
*/
public function hot ()
{
[ $page , $limit ] = $this -> services -> getPageValue ();
$list = $this -> services -> cidByArticleList ([ 'is_hot' => 1 ], $page , $limit , " id,title,image_input,visit,from_unixtime(add_time,'%Y-%m-%d %H:%i') as add_time,synopsis,url " );
return app ( 'json' ) -> successful ( $list );
}
/**
* 获取最新文章
* @ return mixed
* @ throws \think\db\exception\DataNotFoundException
* @ throws \think\db\exception\DbException
* @ throws \think\db\exception\ModelNotFoundException
*/
public function new ()
{
[ $page , $limit ] = $this -> services -> getPageValue ();
$list = $this -> services -> cidByArticleList ([], $page , $limit , " id,title,image_input,visit,from_unixtime(add_time,'%Y-%m-%d %H:%i') as add_time,synopsis,url " );
return app ( 'json' ) -> successful ( $list );
}
/**
* 获取顶部banner文章
* @ return mixed
* @ throws \think\db\exception\DataNotFoundException
* @ throws \think\db\exception\DbException
* @ throws \think\db\exception\ModelNotFoundException
*/
public function banner ()
{
[ $page , $limit ] = $this -> services -> getPageValue ();
$list = $this -> services -> cidByArticleList ([ 'is_banner' => 1 ], $page , $limit , " id,title,image_input,visit,from_unixtime(add_time,'%Y-%m-%d %H:%i') as add_time,synopsis,url " );
return app ( 'json' ) -> successful ( $list );
}
}