diff --git a/app/Http/Controllers/Api/ProjectChildrenController.php b/app/Http/Controllers/Api/ProjectChildrenController.php index 254615c..388fec8 100644 --- a/app/Http/Controllers/Api/ProjectChildrenController.php +++ b/app/Http/Controllers/Api/ProjectChildrenController.php @@ -13,13 +13,6 @@ class ProjectChildrenController extends Controller { use PaginatorTrait; - public function index(Request $request){ - $query = ProjectArticle::filter($request->all(), ProjectArticleFilter::class)->sort(); - $list = $query->childrens()->show()->sort()->paginate($this->resolvePerPage('per_page', 20)); - - return $this->json(ProjectChildrenResource::collection($list)); - } - public function show(ProjectArticle $children){ request()->merge(['include_content' => true]); return $this->json(ProjectChildrenResource::make($children)); diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 9935886..017633e 100644 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -14,10 +14,17 @@ class ProjectController extends Controller { use PaginatorTrait; - public function index(Request $request){ + public function index(Request $request) + { $query = ProjectCate::filter($request->all(), ProjectCateFilter::class)->sort(); $list = $query->show()->sort()->paginate($this->resolvePerPage('per_page', 20)); return $this->json(ProjectResource::collection($list)); } + + public function show(ProjectCate $projectCate, Request $request) + { + $projectCate->load(['children', 'flows', 'photos', 'advances']); + return $this->json(ProjectResource::make($projectCate)); + } } \ No newline at end of file diff --git a/app/Http/Resources/ProjectAdvanceResource.php b/app/Http/Resources/ProjectAdvanceResource.php new file mode 100644 index 0000000..aebea56 --- /dev/null +++ b/app/Http/Resources/ProjectAdvanceResource.php @@ -0,0 +1,22 @@ + $this->title, + 'cover' => $this->cover, + 'description' => $this->description, + ]; + } +} diff --git a/app/Http/Resources/ProjectFlowResource.php b/app/Http/Resources/ProjectFlowResource.php new file mode 100644 index 0000000..0fd04f0 --- /dev/null +++ b/app/Http/Resources/ProjectFlowResource.php @@ -0,0 +1,21 @@ + $this->title, + 'cover' => $this->cover, + ]; + } +} diff --git a/app/Http/Resources/ProjectPhotoResource.php b/app/Http/Resources/ProjectPhotoResource.php new file mode 100644 index 0000000..6d489b9 --- /dev/null +++ b/app/Http/Resources/ProjectPhotoResource.php @@ -0,0 +1,21 @@ + $this->title, + 'cover' => $this->cover, + ]; + } +} diff --git a/app/Http/Resources/ProjectResource.php b/app/Http/Resources/ProjectResource.php index 7b7df3e..2aa136e 100644 --- a/app/Http/Resources/ProjectResource.php +++ b/app/Http/Resources/ProjectResource.php @@ -17,6 +17,10 @@ class ProjectResource extends JsonResource 'id' => $this->id, 'title' => $this->title, 'cover' => $this->cover, + 'children' => ProjectChildrenResource::collection($this->whenLoaded('children')), + 'flows' => ProjectFlowResource::collection($this->whenLoaded('flows')), + 'photos' => ProjectPhotoResource::collection($this->whenLoaded('photos')), + 'advances' => ProjectAdvanceResource::collection($this->whenLoaded('advances')), ]; } } diff --git a/app/Models/ProjectArticle.php b/app/Models/ProjectArticle.php index acbdc1e..f047079 100644 --- a/app/Models/ProjectArticle.php +++ b/app/Models/ProjectArticle.php @@ -73,11 +73,6 @@ class ProjectArticle extends Model ->orderBy('created_at', 'desc'); } - public function scopeChildrens($q) - { - $q->where('type', self::TYPE_ARTICLE); - } - protected function tags():Attribute { return Attribute::make( diff --git a/app/Models/ProjectCate.php b/app/Models/ProjectCate.php index cc1ec02..e9d5bb1 100644 --- a/app/Models/ProjectCate.php +++ b/app/Models/ProjectCate.php @@ -42,4 +42,25 @@ class ProjectCate extends Model $q->orderBy('sort', 'asc') ->orderBy('created_at', 'desc'); } + + //服务子类 + public function children() + { + return $this->hasMany(ProjectArticle::class, 'cate')->where('type', ProjectArticle::TYPE_ARTICLE)->show()->sort(); + } + //服务流程 + public function flows() + { + return $this->hasMany(ProjectArticle::class, 'cate')->where('type', ProjectArticle::TYPE_FLOW)->show()->sort(); + } + //相关图片 + public function photos() + { + return $this->hasMany(ProjectArticle::class, 'cate')->where('type', ProjectArticle::TYPE_PHOTO)->show()->sort(); + } + //核心优势 + public function advances() + { + return $this->hasMany(ProjectArticle::class, 'cate')->where('type', ProjectArticle::TYPE_ADVANCE)->show()->sort(); + } } diff --git a/routes/api.php b/routes/api.php index 0184a5a..e57de10 100644 --- a/routes/api.php +++ b/routes/api.php @@ -24,9 +24,11 @@ Route::middleware('api')->group(function () { Route::post('captchas', [CaptchaController::class, 'store']); Route::get('captchas/{captcha}', [CaptchaController::class, 'show']); + //广告 Route::get('/ads', [AdController::class, 'index']); + //业务范围 Route::get('/project_cates', [ProjectController::class, 'index']); - Route::get('/project_childrens', [ProjectChildrenController::class, 'index']); - Route::get('/project_childrens/{children}', [ProjectChildrenController::class, 'show']); - + Route::get('/project_cates/{project_cate}', [ProjectController::class, 'show']);//服务详情 + //业务子类详情 + Route::get('/project_children/{child}', [ProjectChildrenController::class, 'show']); }); \ No newline at end of file