diff --git a/app/apis/controller/ArticleController.php b/app/apis/controller/ArticleController.php index 8ef3a7c..9296232 100644 --- a/app/apis/controller/ArticleController.php +++ b/app/apis/controller/ArticleController.php @@ -41,7 +41,7 @@ class ArticleController extends BaseController protected function postProcessItem(array $item, string $scene): array { - if ($scene === 'default' || $scene === 'show') { + if ($scene === 'default' || $scene === 'show' || $scene === 'home') { $item['publish_time'] = date('Y-m-d H:i:s', $item['publish_time']); $item['cover_full'] = ''; @@ -71,7 +71,7 @@ class ArticleController extends BaseController { $params = parent::prepareParams($request, $scene); - if ($scene === 'default') { + if ($scene === 'default' || $scene === 'home') { $params['filters'] = []; $params['filters'][] = ['field' => 'status', 'operator' => '=', 'value' => 1]; $params['filters'][] = ['field' => 'locale', 'operator' => '=', 'value' => locale()]; @@ -97,6 +97,17 @@ class ArticleController extends BaseController } } + public function home(Request $request, string $scene = 'home'): Response + { + try { + $result = parent::index($request, $scene); + $result = json_decode($result->rawBody(), true); + return $this->successResponse($result['data']['list']); + } catch (\Throwable $th) { + return $this->errorResponse($th->getMessage()); + } + } + public function detail(Request $request, int $id, string $scene = 'show'): Response { try { diff --git a/app/apis/service/ArticleService.php b/app/apis/service/ArticleService.php index 1273b0a..b2a2b91 100644 --- a/app/apis/service/ArticleService.php +++ b/app/apis/service/ArticleService.php @@ -44,6 +44,23 @@ class ArticleService extends BaseService ] ]; }, + 'home' => function ($params) { + return [ + 'filters' => $params['filters'], + 'fields' => ['id', 'locale', 'title', 'subtitle', 'cover', 'content', 'user_id', 'is_top', 'sort', 'status', 'publish_time', 'created_at', 'updated_at'], + 'relations' => [ + 'creater' => ['id', 'nickname',], + 'comment' => ['id', 'article_id', 'content', 'avatar', 'name',], + ], + 'sorts' => [ + ['field' => 'publish_time', 'direction' => 'desc'], + ], + 'pagination' => [ + 'page' => $params['page'] ?? 1, + 'per_page' => $params['per_page'] ?? 3, + ] + ]; + }, 'show' => function ($params) { return [ 'filters' => [ diff --git a/config/route.php b/config/route.php index a982d35..670e50d 100644 --- a/config/route.php +++ b/config/route.php @@ -58,6 +58,7 @@ Route::group('/apis', function() { //文章列表 Route::any('/article/list', [\app\apis\controller\ArticleController::class, 'index']); Route::any('/article/{id}/detail', [\app\apis\controller\ArticleController::class, 'detail']); + Route::any('/article/home', [\app\apis\controller\ArticleController::class, 'home']); //图片代理 Route::any('/upload/image/proxy', [\app\mzl\modules\upload\controller\UploadController::class, 'proxy']);