diff --git a/app/Http/Web/Controllers/CourseController.php b/app/Http/Web/Controllers/CourseController.php index 56aea8bd..af4a9eae 100644 --- a/app/Http/Web/Controllers/CourseController.php +++ b/app/Http/Web/Controllers/CourseController.php @@ -94,6 +94,31 @@ class CourseController extends Controller $this->view->setVar('category_paths', $categoryPaths); } + /** + * @Get("/{id:[0-9]+}/chapters", name="web.course.chapters") + */ + public function chaptersAction($id) + { + $service = new CourseChapterListService(); + + $chapters = $service->handle($id); + + return $this->jsonSuccess(['chapters' => $chapters]); + } + + /** + * @Get("/{id:[0-9]+}/packages", name="web.course.packages") + */ + public function packagesAction($id) + { + $service = new CoursePackageListService(); + + $packages = $service->handle($id); + + return $this->jsonSuccess(['packages' => $packages]); + } + + /** * @Get("/{id:[0-9]+}/consults", name="web.course.consults") */ @@ -118,6 +143,54 @@ class CourseController extends Controller return $this->jsonPaginate($pager); } + /** + * @Get("/{id:[0-9]+}/teachers", name="web.course.teachers") + */ + public function teachersAction($id) + { + $service = new CourseTeacherListService(); + + $teachers = $service->handle($id); + + return $this->jsonSuccess(['teachers' => $teachers]); + } + + /** + * @Get("/{id:[0-9]+}/recommended", name="web.course.recommended") + */ + public function recommendedAction($id) + { + $service = new CourseRecommendedListService(); + + $courses = $service->handle($id); + + return $this->jsonSuccess(['courses' => $courses]); + } + + /** + * @Get("/{id:[0-9]+}/related", name="web.course.related") + */ + public function relatedAction($id) + { + $service = new CourseRelatedListService(); + + $courses = $service->handle($id); + + return $this->jsonSuccess(['courses' => $courses]); + } + + /** + * @Get("/{id:[0-9]+}/topics", name="web.course.topics") + */ + public function topicsAction($id) + { + $service = new CourseTopicListService(); + + $topics = $service->handle($id); + + return $this->jsonSuccess(['topics' => $topics]); + } + /** * @Post("/{id:[0-9]+}/favorite", name="web.course.favorite") */ diff --git a/app/Http/Web/Services/CourseQuery.php b/app/Http/Web/Services/CourseQuery.php index e1f816ed..ef547743 100644 --- a/app/Http/Web/Services/CourseQuery.php +++ b/app/Http/Web/Services/CourseQuery.php @@ -31,7 +31,7 @@ class CourseQuery extends Service $baseUrl = $this->url->get(['for' => 'web.course.list']); $defaultItem = [ - 'id' => 0, + 'id' => 'all', 'name' => '全部', 'url' => $baseUrl . $this->buildQueryParams($params), ]; @@ -79,7 +79,7 @@ class CourseQuery extends Service $baseUrl = $this->url->get(['for' => 'web.course.list']); $defaultItem = [ - 'id' => 0, + 'id' => 'all', 'name' => '全部', 'url' => $baseUrl . $this->buildQueryParams($params), ]; @@ -109,7 +109,7 @@ class CourseQuery extends Service } $defaultItem = [ - 'id' => 0, + 'id' => 'all', 'name' => '全部', 'url' => $this->baseUrl . $this->buildQueryParams($params), ]; @@ -141,7 +141,7 @@ class CourseQuery extends Service } $defaultItem = [ - 'id' => 0, + 'id' => 'all', 'name' => '全部', 'url' => $this->baseUrl . $this->buildQueryParams($params), ]; @@ -218,27 +218,27 @@ class CourseQuery extends Service $validator = new \App\Validators\CourseQuery(); - if (!empty($query['tc'])) { + if (isset($query['tc']) && $query['tc'] != 'all') { $validator->checkTopCategory($query['tc']); $params['tc'] = $query['tc']; } - if (!empty($query['sc'])) { + if (isset($query['sc']) && $query['tc'] != 'all') { $validator->checkSubCategory($query['sc']); $params['sc'] = $query['sc']; } - if (!empty($query['model'])) { + if (isset($query['model']) && $query['model'] != 'all') { $validator->checkModel($query['model']); $params['model'] = $query['model']; } - if (!empty($query['level'])) { + if (isset($query['level']) && $query['level'] != 'all') { $validator->checkLevel($query['level']); $params['level'] = $query['level']; } - if (!empty($query['sort'])) { + if (isset($query['sort'])) { $validator->checkSort($query['sort']); $params['sort'] = $query['sort']; } diff --git a/app/Http/Web/Views/course/chapters.volt b/app/Http/Web/Views/course/chapters.volt index e69de29b..31962796 100644 --- a/app/Http/Web/Views/course/chapters.volt +++ b/app/Http/Web/Views/course/chapters.volt @@ -0,0 +1,24 @@ +{%- macro lesson_info(lesson) %} + {% if lesson.attrs.model == 'vod' %} +