From ea8f2732fd3c7c0e3144947255ec22ad5ad63c74 Mon Sep 17 00:00:00 2001 From: xiaochong0302 Date: Sat, 30 May 2020 19:51:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E5=89=8D=E7=AB=AF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Web/Controllers/CourseController.php | 98 ++++++------------- app/Http/Web/Controllers/OrderController.php | 4 +- app/Http/Web/Views/course/chapters.volt | 65 ++++++++++++ app/Http/Web/Views/course/chapters_live.volt | 33 ------- app/Http/Web/Views/course/chapters_read.volt | 31 ------ app/Http/Web/Views/course/chapters_vod.volt | 32 ------ app/Http/Web/Views/course/meta.volt | 49 +++++++--- app/Http/Web/Views/course/order.volt | 26 +++++ app/Http/Web/Views/course/packages.volt | 2 +- ...ebar_recommended.volt => recommended.volt} | 6 +- .../{sidebar_related.volt => related.volt} | 4 +- app/Http/Web/Views/course/reviews.volt | 7 +- app/Http/Web/Views/course/show.volt | 94 ++++++++++-------- .../{sidebar_teachers.volt => teachers.volt} | 10 +- .../{sidebar_topics.volt => topics.volt} | 0 app/Http/Web/Views/order/confirm.volt | 54 ++++++++++ app/Services/Frontend/Course/CourseInfo.php | 6 +- app/Services/Frontend/Reward/OptionList.php | 34 +++++++ app/Traits/Auth.php | 4 + public/static/web/css/common.css | 82 ++++++++++++++-- public/static/web/js/common.js | 11 ++- storage/cache/annotations/.gitignore | 2 - 22 files changed, 408 insertions(+), 246 deletions(-) create mode 100644 app/Http/Web/Views/course/chapters.volt delete mode 100644 app/Http/Web/Views/course/chapters_live.volt delete mode 100644 app/Http/Web/Views/course/chapters_read.volt delete mode 100644 app/Http/Web/Views/course/chapters_vod.volt create mode 100644 app/Http/Web/Views/course/order.volt rename app/Http/Web/Views/course/{sidebar_recommended.volt => recommended.volt} (60%) rename app/Http/Web/Views/course/{sidebar_related.volt => related.volt} (69%) rename app/Http/Web/Views/course/{sidebar_teachers.volt => teachers.volt} (52%) rename app/Http/Web/Views/course/{sidebar_topics.volt => topics.volt} (100%) create mode 100644 app/Http/Web/Views/order/confirm.volt create mode 100644 app/Services/Frontend/Reward/OptionList.php delete mode 100644 storage/cache/annotations/.gitignore diff --git a/app/Http/Web/Controllers/CourseController.php b/app/Http/Web/Controllers/CourseController.php index a49a8e00..bc35e100 100644 --- a/app/Http/Web/Controllers/CourseController.php +++ b/app/Http/Web/Controllers/CourseController.php @@ -14,6 +14,7 @@ use App\Services\Frontend\Course\RelatedList as CourseRelatedListService; use App\Services\Frontend\Course\ReviewList as CourseReviewListService; use App\Services\Frontend\Course\TeacherList as CourseTeacherListService; use App\Services\Frontend\Course\TopicList as CourseTopicListService; +use App\Services\Frontend\Reward\OptionList as RewardOptionList; use Phalcon\Mvc\View; /** @@ -61,66 +62,24 @@ class CourseController extends Controller $service = new CourseQueryService(); - $categoryPaths = $service->handleCategoryPaths($course['category_id']); + $course['category_paths'] = $service->handleCategoryPaths($course['category_id']); $service = new CourseChapterListService(); $chapters = $service->handle($id); - $service = new CoursePackageListService(); - - $packages = $service->handle($id); - - $service = new CourseReviewListService(); - - $reviews = $service->handle($id); - - $reviews->items = kg_array_object($reviews->items); - - $service = new CourseConsultListService(); - - $consults = $service->handle($id); - - $consults->items = kg_array_object($consults->items); - $service = new CourseTeacherListService(); $teachers = $service->handle($id); - $service = new CourseTopicListService(); + $service = new RewardOptionList(); - $topics = $service->handle($id); - - $service = new CourseRecommendedListService(); - - $recommendedCourses = $service->handle($id); - - $service = new CourseRelatedListService(); - - $relatedCourses = $service->handle($id); + $rewardOptions = $service->handle(); $this->view->setVar('course', $course); $this->view->setVar('chapters', $chapters); - $this->view->setVar('packages', $packages); - $this->view->setVar('consults', $consults); - $this->view->setVar('reviews', $reviews); $this->view->setVar('teachers', $teachers); - $this->view->setVar('topics', $topics); - $this->view->setVar('recommended_courses', $recommendedCourses); - $this->view->setVar('related_courses', $relatedCourses); - $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]); + $this->view->setVar('reward_options', $rewardOptions); } /** @@ -132,22 +91,23 @@ class CourseController extends Controller $packages = $service->handle($id); - return $this->jsonSuccess(['packages' => $packages]); + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + $this->view->setVar('packages', $packages); } - /** * @Get("/{id:[0-9]+}/consults", name="web.course.consults") */ public function consultsAction($id) { + $target = $this->request->get('target', 'trim', 'tab-consults'); + $service = new CourseConsultListService(); $pager = $service->handle($id); - $pager->target = $this->request->get('target', 'trim', 'tab-consults'); - $pager->items = kg_array_object($pager->items); + $pager->target = $target; $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setVar('pager', $pager); @@ -158,30 +118,19 @@ class CourseController extends Controller */ public function reviewsAction($id) { + $target = $this->request->get('target', 'trim', 'tab-reviews'); + $service = new CourseReviewListService(); $pager = $service->handle($id); - $pager->target = $this->request->get('target', 'trim', 'tab-reviews'); - $pager->items = kg_array_object($pager->items); + $pager->target = $target; $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setVar('pager', $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") */ @@ -191,7 +140,8 @@ class CourseController extends Controller $courses = $service->handle($id); - return $this->jsonSuccess(['courses' => $courses]); + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + $this->view->setVar('courses', $courses); } /** @@ -203,7 +153,8 @@ class CourseController extends Controller $courses = $service->handle($id); - return $this->jsonSuccess(['courses' => $courses]); + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + $this->view->setVar('courses', $courses); } /** @@ -215,7 +166,20 @@ class CourseController extends Controller $topics = $service->handle($id); - return $this->jsonSuccess(['topics' => $topics]); + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + $this->view->setVar('topics', $topics); + } + + /** + * @Get("/{id:[0-9]+}/reward", name="web.course.reward") + */ + public function rewardAction($id) + { + $service = new RewardOptionList(); + + $options = $service->handle(); + + $this->view->setVar('options', $options); } /** diff --git a/app/Http/Web/Controllers/OrderController.php b/app/Http/Web/Controllers/OrderController.php index 0549c921..0cc2d93f 100644 --- a/app/Http/Web/Controllers/OrderController.php +++ b/app/Http/Web/Controllers/OrderController.php @@ -23,9 +23,9 @@ class OrderController extends Controller $service = new OrderConfirmService(); - $info = $service->handle($itemId, $itemType); + $confirm = $service->handle($itemId, $itemType); - $this->view->setVar('info', $info); + $this->view->setVar('confirm', $confirm); } /** diff --git a/app/Http/Web/Views/course/chapters.volt b/app/Http/Web/Views/course/chapters.volt new file mode 100644 index 00000000..b2543859 --- /dev/null +++ b/app/Http/Web/Views/course/chapters.volt @@ -0,0 +1,65 @@ +{%- macro vod_lesson_info(lesson) %} + {% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %} + + + {{ lesson.title }} + {% if lesson.free == 1 %} + 免费 + {% endif %} + {% if lesson.me.duration > 0 %} + + {% endif %} + {{ lesson.attrs.duration|total_duration }} + +{%- endmacro %} + +{%- macro live_lesson_info(lesson) %} + {% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %} + {% set over_flag = lesson.attrs.end_time < time() ? '已结束' : '' %} + + + {{ lesson.title }} + {% if lesson.free == 1 %} + 免费 + {% endif %} + {% if lesson.me.duration > 0 %} + + {% endif %} + {{ date('m月d日',lesson.attrs.start_time) }} {{ date('H:i',lesson.attrs.start_time) }}~{{ date('H:i',lesson.attrs.end_time) }} {{ over_flag }} + +{%- endmacro %} + +{%- macro read_lesson_info(lesson) %} + {% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %} + + + {{ lesson.title|e }} + {% if lesson.free == 1 %} + 免费 + {% endif %} + {% if lesson.me.duration > 0 %} + + {% endif %} + +{%- endmacro %} + +
+ {% for chapter in chapters %} +
+

{{ chapter.title }}

+
+
    + {% for lesson in chapter.children %} + {% if course.model == 'vod' %} +
  • {{ vod_lesson_info(lesson) }}
  • + {% elseif course.model == 'live' %} +
  • {{ live_lesson_info(lesson) }}
  • + {% elseif course.model == 'read' %} +
  • {{ read_lesson_info(lesson) }}
  • + {% endif %} + {% endfor %} +
+
+
+ {% endfor %} +
\ No newline at end of file diff --git a/app/Http/Web/Views/course/chapters_live.volt b/app/Http/Web/Views/course/chapters_live.volt deleted file mode 100644 index b6e619c5..00000000 --- a/app/Http/Web/Views/course/chapters_live.volt +++ /dev/null @@ -1,33 +0,0 @@ -{%- macro live_lesson_info(lesson) %} - - {% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %} - {% set over_flag = lesson.attrs.end_time < time() ? '已结束' : '' %} - - - - {{ lesson.title }} - {% if lesson.free == 1 %} - 免费 - {% endif %} - {% if lesson.me.duration > 0 %} - - {% endif %} - {{ date('m月d日',lesson.attrs.start_time) }} {{ date('H:i',lesson.attrs.start_time) }}~{{ date('H:i',lesson.attrs.end_time) }} {{ over_flag }} - - -{%- endmacro %} - -
- {% for chapter in chapters %} -
-

{{ chapter.title }}

-
-
    - {% for lesson in chapter.children %} -
  • {{ live_lesson_info(lesson) }}
  • - {% endfor %} -
-
-
- {% endfor %} -
\ No newline at end of file diff --git a/app/Http/Web/Views/course/chapters_read.volt b/app/Http/Web/Views/course/chapters_read.volt deleted file mode 100644 index 72640f68..00000000 --- a/app/Http/Web/Views/course/chapters_read.volt +++ /dev/null @@ -1,31 +0,0 @@ -{%- macro read_lesson_info(lesson) %} - - {% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %} - - - - {{ lesson.title|e }} - {% if lesson.free == 1 %} - 免费 - {% endif %} - {% if lesson.me.duration > 0 %} - - {% endif %} - - -{%- endmacro %} - -
- {% for chapter in chapters %} -
-

{{ chapter.title|e }}

-
-
    - {% for lesson in chapter.children %} -
  • {{ read_lesson_info(lesson) }}
  • - {% endfor %} -
-
-
- {% endfor %} -
\ No newline at end of file diff --git a/app/Http/Web/Views/course/chapters_vod.volt b/app/Http/Web/Views/course/chapters_vod.volt deleted file mode 100644 index 1191f4e9..00000000 --- a/app/Http/Web/Views/course/chapters_vod.volt +++ /dev/null @@ -1,32 +0,0 @@ -{%- macro vod_lesson_info(lesson) %} - - {% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %} - - - - {{ lesson.title }} - {% if lesson.free == 1 %} - 免费 - {% endif %} - {% if lesson.me.duration > 0 %} - - {% endif %} - {{ lesson.attrs.duration|total_duration }} - - -{%- endmacro %} - -
- {% for chapter in chapters %} -
-

{{ chapter.title }}

-
-
    - {% for lesson in chapter.children %} -
  • {{ vod_lesson_info(lesson) }}
  • - {% endfor %} -
-
-
- {% endfor %} -
\ No newline at end of file diff --git a/app/Http/Web/Views/course/meta.volt b/app/Http/Web/Views/course/meta.volt index 204cce3e..1f0c6171 100644 --- a/app/Http/Web/Views/course/meta.volt +++ b/app/Http/Web/Views/course/meta.volt @@ -1,20 +1,43 @@
- {{ course.summary|e }} + {{ course.title|e }}
-

课程时长:{{ course.attrs.duration|total_duration }}

-

- 学习期限:{{ course.study_expiry }}个月 - 退款期限:{{ course.refund_expiry }}天 + {% if course.model == 'vod' %} +

课程时长 {{ course.attrs.duration|total_duration }}

+ {% elseif course.model == 'live' %} +

直播时间 {{ course.attrs.start_date }} ~ {{ course.attrs.end_date }}

+ {% endif %} + {% if course.market_price > 0 %} +

+ 学习期限 {{ course.study_expiry }}个月 + 退款期限 {{ course.refund_expiry }}天 +

+ {% endif %} +

+ {% if course.market_price > 0 %} + 市场价格 ¥{{ course.market_price }} + {% else %} + 市场价格 免费 + {% endif %} + {% if course.vip_price > 0 %} + 会员价格 ¥{{ course.vip_price }} + {% else %} + 会员价格 免费 + {% endif %}

-

- 市场价格:¥{{ course.market_price }} - 会员价格:¥{{ course.vip_price }} -

-

- {{ course.user_count }}次学习 - {{ course.review_count }}次评价 - {{ course.favorite_count }}次收藏 +

+ 难度 {{ level_info(course.level) }} + 课时 {{ course.lesson_count }} + 学员 {{ course.user_count }} + 收藏 {{ course.favorite_count }} + 评分 {{ course.rating }}

+
\ No newline at end of file diff --git a/app/Http/Web/Views/course/order.volt b/app/Http/Web/Views/course/order.volt new file mode 100644 index 00000000..62e9f62b --- /dev/null +++ b/app/Http/Web/Views/course/order.volt @@ -0,0 +1,26 @@ +{% if course.me.owned == 0 and course.market_price > 0 %} + +{% endif %} + +{% if course.market_price == 0 %} +
+
赞赏支持
+
+ +
+
+{% endif %} \ No newline at end of file diff --git a/app/Http/Web/Views/course/packages.volt b/app/Http/Web/Views/course/packages.volt index 69453e37..320df573 100644 --- a/app/Http/Web/Views/course/packages.volt +++ b/app/Http/Web/Views/course/packages.volt @@ -13,7 +13,7 @@ 会员价 ¥{{ package.vip_price }}
- 立即购买 + 立即购买
diff --git a/app/Http/Web/Views/course/sidebar_recommended.volt b/app/Http/Web/Views/course/recommended.volt similarity index 60% rename from app/Http/Web/Views/course/sidebar_recommended.volt rename to app/Http/Web/Views/course/recommended.volt index 6504d0af..fd2289cb 100644 --- a/app/Http/Web/Views/course/sidebar_recommended.volt +++ b/app/Http/Web/Views/course/recommended.volt @@ -1,7 +1,9 @@ -
+{{ partial('partials/macro_course') }} + +
推荐课程
- {% for course in recommended_courses %} + {% for course in courses %} {{ sidebar_course_card(course) }} {% endfor %}
diff --git a/app/Http/Web/Views/course/sidebar_related.volt b/app/Http/Web/Views/course/related.volt similarity index 69% rename from app/Http/Web/Views/course/sidebar_related.volt rename to app/Http/Web/Views/course/related.volt index c9913fa5..0f671774 100644 --- a/app/Http/Web/Views/course/sidebar_related.volt +++ b/app/Http/Web/Views/course/related.volt @@ -1,7 +1,9 @@ +{{ partial('partials/macro_course') }} +
相关课程
- {% for course in related_courses %} + {% for course in courses %} {{ sidebar_course_card(course) }} {% endfor %}
diff --git a/app/Http/Web/Views/course/reviews.volt b/app/Http/Web/Views/course/reviews.volt index 59bd45e8..9d894d28 100644 --- a/app/Http/Web/Views/course/reviews.volt +++ b/app/Http/Web/Views/course/reviews.volt @@ -11,12 +11,13 @@ {% set user_url = url({'for':'web.user.show','id':item.id}) %}
- - {{ item.user.name }} - + {{ item.user.name }}
{{ star_info(item.rating) }}
+
{{ item.content }}