1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-07-15 21:02:20 +08:00

整理代码

This commit is contained in:
xiaochong0302 2020-05-19 20:26:36 +08:00
parent d37e92d139
commit d696e40988
20 changed files with 187 additions and 34 deletions

View File

@ -48,7 +48,6 @@ class CourseRecommendedList extends Cache
'cover' => $course->cover, 'cover' => $course->cover,
'market_price' => $course->market_price, 'market_price' => $course->market_price,
'vip_price' => $course->vip_price, 'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'user_count' => $course->user_count, 'user_count' => $course->user_count,

View File

@ -49,7 +49,6 @@ class CourseRelatedList extends Cache
'cover' => $course->cover, 'cover' => $course->cover,
'market_price' => $course->market_price, 'market_price' => $course->market_price,
'vip_price' => $course->vip_price, 'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'user_count' => $course->user_count, 'user_count' => $course->user_count,

View File

@ -62,7 +62,6 @@ class IndexFreeCourseList extends Cache
'cover' => $course->cover, 'cover' => $course->cover,
'market_price' => $course->market_price, 'market_price' => $course->market_price,
'vip_price' => $course->vip_price, 'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'user_count' => $course->user_count, 'user_count' => $course->user_count,

View File

@ -106,7 +106,6 @@ class IndexLiveList extends Cache
'cover' => $course->cover, 'cover' => $course->cover,
'market_price' => $course->market_price, 'market_price' => $course->market_price,
'vip_price' => $course->vip_price, 'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'user_count' => $course->user_count, 'user_count' => $course->user_count,

View File

@ -62,7 +62,6 @@ class IndexNewCourseList extends Cache
'cover' => $course->cover, 'cover' => $course->cover,
'market_price' => $course->market_price, 'market_price' => $course->market_price,
'vip_price' => $course->vip_price, 'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'user_count' => $course->user_count, 'user_count' => $course->user_count,

View File

@ -62,7 +62,6 @@ class IndexVipCourseList extends Cache
'cover' => $course->cover, 'cover' => $course->cover,
'market_price' => $course->market_price, 'market_price' => $course->market_price,
'vip_price' => $course->vip_price, 'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'user_count' => $course->user_count, 'user_count' => $course->user_count,

View File

@ -48,7 +48,6 @@ class PackageCourseList extends Cache
'cover' => $course->cover, 'cover' => $course->cover,
'market_price' => $course->market_price, 'market_price' => $course->market_price,
'vip_price' => $course->vip_price, 'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'user_count' => $course->user_count, 'user_count' => $course->user_count,

View File

@ -48,7 +48,6 @@ class TopicCourseList extends Cache
'cover' => $course->cover, 'cover' => $course->cover,
'market_price' => $course->market_price, 'market_price' => $course->market_price,
'vip_price' => $course->vip_price, 'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'user_count' => $course->user_count, 'user_count' => $course->user_count,

View File

@ -1,4 +1,4 @@
{% set course_id = request.getQuery('course_id', 'int', '') %} {% set course_id = request.get('course_id', 'int', '') %}
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.student.list'}) }}"> <form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.student.list'}) }}">

View File

@ -34,6 +34,7 @@ class CourseController extends Controller
$topCategories = $courseQueryService->handleTopCategories(); $topCategories = $courseQueryService->handleTopCategories();
$subCategories = $courseQueryService->handleSubCategories(); $subCategories = $courseQueryService->handleSubCategories();
$models = $courseQueryService->handleModels(); $models = $courseQueryService->handleModels();
$levels = $courseQueryService->handleLevels(); $levels = $courseQueryService->handleLevels();
$sorts = $courseQueryService->handleSorts(); $sorts = $courseQueryService->handleSorts();

View File

@ -2,7 +2,10 @@
namespace App\Http\Web\Controllers; namespace App\Http\Web\Controllers;
use App\Services\Frontend\Search\CourseSearch; use App\Services\Frontend\Search\CourseHotQuery as CourseHotQueryService;
use App\Services\Frontend\Search\CourseList as CourseListService;
use App\Services\Frontend\Search\CourseRelatedQuery as CourseRelatedQueryService;
use App\Traits\Response as ResponseTrait;
/** /**
* @RoutePrefix("/search") * @RoutePrefix("/search")
@ -10,14 +13,56 @@ use App\Services\Frontend\Search\CourseSearch;
class SearchController extends Controller class SearchController extends Controller
{ {
use ResponseTrait;
/** /**
* @Get("/", name="web.search.show") * @Get("/", name="web.search.show")
*/ */
public function showAction() public function showAction()
{ {
$service = new CourseSearch(); $query = $this->request->get('query', ['trim']);
dd($service->handle());
exit; $service = new CourseHotQueryService();
$hotQueries = $service->handle();
$service = new CourseRelatedQueryService();
$relatedQueries = $service->handle($query);
$service = new CourseListService();
$pager = $service->handle();
$this->view->setVar('hot_queries', $hotQueries);
$this->view->setVar('related_queries', $relatedQueries);
$this->view->setVar('pager', $pager);
}
/**
* @Get("/queries/hot", name="web.search.hot_queries")
*/
public function hotQueriesAction()
{
$service = new CourseHotQueryService();
$queries = $service->handle();
return $this->jsonSuccess(['queries' => $queries]);
}
/**
* @Get("/queries/related", name="web.search.related_queries")
*/
public function relatedQueriesAction()
{
$query = $this->request->get('query', ['trim']);
$service = new CourseRelatedQueryService();
$queries = $service->handle($query);
return $this->jsonSuccess(['queries' => $queries]);
} }
} }

View File

@ -32,7 +32,7 @@ class CourseQuery extends Service
$defaultItem = [ $defaultItem = [
'id' => 0, 'id' => 0,
'name' => '全部', 'name' => '全部',
'href' => $baseUrl . $this->buildQueryParams($params), 'url' => $baseUrl . $this->buildQueryParams($params),
]; ];
$result = []; $result = [];
@ -48,7 +48,7 @@ class CourseQuery extends Service
$result[] = [ $result[] = [
'id' => $category['id'], 'id' => $category['id'],
'name' => $category['name'], 'name' => $category['name'],
'href' => $baseUrl . $this->buildQueryParams($params), 'url' => $baseUrl . $this->buildQueryParams($params),
]; ];
} }
@ -80,7 +80,7 @@ class CourseQuery extends Service
$defaultItem = [ $defaultItem = [
'id' => 0, 'id' => 0,
'name' => '全部', 'name' => '全部',
'href' => $baseUrl . $this->buildQueryParams($params), 'url' => $baseUrl . $this->buildQueryParams($params),
]; ];
$result = []; $result = [];
@ -92,7 +92,7 @@ class CourseQuery extends Service
$result[] = [ $result[] = [
'id' => $category['id'], 'id' => $category['id'],
'name' => $category['name'], 'name' => $category['name'],
'href' => $baseUrl . $this->buildQueryParams($params), 'url' => $baseUrl . $this->buildQueryParams($params),
]; ];
} }
@ -110,7 +110,7 @@ class CourseQuery extends Service
$defaultItem = [ $defaultItem = [
'id' => 0, 'id' => 0,
'name' => '全部', 'name' => '全部',
'href' => $this->baseUrl . $this->buildQueryParams($params), 'url' => $this->baseUrl . $this->buildQueryParams($params),
]; ];
$result = []; $result = [];
@ -124,7 +124,7 @@ class CourseQuery extends Service
$result[] = [ $result[] = [
'id' => $key, 'id' => $key,
'name' => $value, 'name' => $value,
'href' => $this->baseUrl . $this->buildQueryParams($params), 'url' => $this->baseUrl . $this->buildQueryParams($params),
]; ];
} }
@ -142,7 +142,7 @@ class CourseQuery extends Service
$defaultItem = [ $defaultItem = [
'id' => 0, 'id' => 0,
'name' => '全部', 'name' => '全部',
'href' => $this->baseUrl . $this->buildQueryParams($params), 'url' => $this->baseUrl . $this->buildQueryParams($params),
]; ];
$result = []; $result = [];
@ -152,11 +152,11 @@ class CourseQuery extends Service
$levels = CourseModel::levelTypes(); $levels = CourseModel::levelTypes();
foreach ($levels as $key => $value) { foreach ($levels as $key => $value) {
$params['sc'] = $key; $params['level'] = $key;
$result[] = [ $result[] = [
'id' => $key, 'id' => $key,
'name' => $value, 'name' => $value,
'href' => $this->baseUrl . $this->buildQueryParams($params), 'url' => $this->baseUrl . $this->buildQueryParams($params),
]; ];
} }
@ -176,7 +176,7 @@ class CourseQuery extends Service
$result[] = [ $result[] = [
'id' => $key, 'id' => $key,
'name' => $value, 'name' => $value,
'href' => $this->baseUrl . $this->buildQueryParams($params), 'url' => $this->baseUrl . $this->buildQueryParams($params),
]; ];
} }

View File

@ -1 +1,62 @@
{% extends 'templates/base.volt' %} {% extends 'templates/base.volt' %}
{% block content %}
<div class="course-filter">
<div class="group">
<div class="title">方向</div>
<div class="content">
{% for category in top_categories %}
{% set class = request.get('tc') == category.id ? 'layui-badge active' : 'layui-badge' %}
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
{% endfor %}
</div>
</div>
<div class="group">
<div class="title">分类</div>
<div class="content">
{% for category in sub_categories %}
{% set class = request.get('sc') == category.id ? 'layui-badge active' : 'layui-badge' %}
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
{% endfor %}
</div>
</div>
<div class="group">
<div class="title">类型</div>
<div class="content">
{% for model in models %}
{% set class = request.get('model') == model.id ? 'layui-badge active' : 'layui-badge' %}
<a class="{{ class }}" href="{{ model.url }}">{{ model.name }}</a>
{% endfor %}
</div>
</div>
<div class="group">
<div class="title">难度</div>
<div class="content">
{% for level in levels %}
{% set class = request.get('level') == level.id ? 'layui-badge active' : 'layui-badge' %}
<a class="{{ class }}" href="{{ level.url }}">{{ level.name }}</a>
{% endfor %}
</div>
</div>
</div>
<div class="course-sort">
</div>
<div class="course-list">
{% for item in pager.items %}
<div class="course-card">
<div class="cover"></div>
<div class="title">{{ item['title'] }}</div>
<div class="info"></div>
</div>
{% endfor %}
</div>
<div class="pager">
{{ partial('partials/pager') }}
</div>
{% endblock %}

View File

@ -6,12 +6,14 @@
<div class="layui-tab layui-tab-brief"> <div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title"> <ul class="layui-tab-title">
{% for category in courses %} {% for category in courses %}
<li {% if loop.first %}class="layui-this"{% endif %}>{{ category.name }}</li> {% set class = loop.first ? 'layui-this' : 'none' %}
<li class="{{ class }}">{{ category.name }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
<div class="layui-tab-content"> <div class="layui-tab-content">
{% for category in courses %} {% for category in courses %}
<div class="layui-tab-item {% if loop.first %}layui-show{% endif %}"> {% set class = loop.first ? 'layui-tab-item layui-show' : 'layui-tab-item' %}
<div class="{{ class }}">
{% for course in category.courses %} {% for course in category.courses %}
<div class="course-card"> <div class="course-card">
<div class="cover"></div> <div class="cover"></div>

View File

@ -109,6 +109,7 @@ class XunSearch extends PaginatorAdapter
$pager->next = $page < $totalPages ? $page + 1 : $page; $pager->next = $page < $totalPages ? $page + 1 : $page;
$pager->last = $totalPages; $pager->last = $totalPages;
$pager->total_items = $totalCount; $pager->total_items = $totalCount;
$pager->total_pages = $totalPages;
$pager->items = $items; $pager->items = $items;
$pager->first = $this->buildPageUrl($pager->first); $pager->first = $this->buildPageUrl($pager->first);

View File

@ -117,7 +117,6 @@ class OrderConfirm extends FrontendService
'cover' => $course->cover, 'cover' => $course->cover,
'model' => $course->model, 'model' => $course->model,
'level' => $course->level, 'level' => $course->level,
'rating' => $course->rating,
'study_expiry' => $course->study_expiry, 'study_expiry' => $course->study_expiry,
'refund_expiry' => $course->refund_expiry, 'refund_expiry' => $course->refund_expiry,
'market_price' => $course->market_price, 'market_price' => $course->market_price,

View File

@ -0,0 +1,18 @@
<?php
namespace App\Services\Frontend\Search;
use App\Services\Frontend\Service as FrontendService;
use App\Services\Search\CourseSearcher as CourseSearcherService;
class CourseHotQuery extends FrontendService
{
public function handle($limit = 10, $type = 'total')
{
$searcher = new CourseSearcherService();
return $searcher->getHotQuery($limit, $type);
}
}

View File

@ -7,12 +7,11 @@ use App\Library\Paginator\Query as PagerQuery;
use App\Services\Frontend\Service as FrontendService; use App\Services\Frontend\Service as FrontendService;
use App\Services\Search\CourseSearcher as CourseSearcherService; use App\Services\Search\CourseSearcher as CourseSearcherService;
class CourseSearch extends FrontendService class CourseList extends FrontendService
{ {
public function handle() public function handle()
{ {
$pagerQuery = new PagerQuery(); $pagerQuery = new PagerQuery();
$params = $pagerQuery->getParams(); $params = $pagerQuery->getParams();
@ -44,16 +43,18 @@ class CourseSearch extends FrontendService
foreach ($pager->items as $course) { foreach ($pager->items as $course) {
$items[] = [ $items[] = [
'id' => $course['id'], 'id' => (int)$course['id'],
'title' => $course['title'], 'title' => $course['title'],
'cover' => $course['cover'], 'cover' => $course['cover'],
'summary' => $course['summary'],
'market_price' => (float)$course['market_price'], 'market_price' => (float)$course['market_price'],
'vip_price' => (float)$course['vip_price'], 'vip_price' => (float)$course['vip_price'],
'rating' => (float)$course['rating'],
'model' => $course['model'], 'model' => $course['model'],
'level' => $course['level'], 'level' => $course['level'],
'user_count' => $course['user_count'], 'user_count' => (int)$course['user_count'],
'lesson_count' => $course['lesson_count'], 'lesson_count' => (int)$course['lesson_count'],
'teacher' => json_decode($course['teacher']),
'category' => json_decode($course['category']),
]; ];
} }

View File

@ -0,0 +1,18 @@
<?php
namespace App\Services\Frontend\Search;
use App\Services\Frontend\Service as FrontendService;
use App\Services\Search\CourseSearcher as CourseSearcherService;
class CourseRelatedQuery extends FrontendService
{
public function handle($query, $limit = 10)
{
$searcher = new CourseSearcherService();
return $searcher->getRelatedQuery($query, $limit);
}
}

View File

@ -63,7 +63,7 @@ class CourseSearcher extends Component
foreach ($docs as $doc) { foreach ($docs as $doc) {
$item = []; $item = [];
foreach ($fields as $field) { foreach ($fields as $field) {
if (in_array($field, ['title', 'summary'])) { if (in_array($field, $this->getHighlightFields())) {
$item[$field] = $search->highlight($doc->{$field}); $item[$field] = $search->highlight($doc->{$field});
} else { } else {
$item[$field] = $doc->{$field}; $item[$field] = $doc->{$field};
@ -95,4 +95,19 @@ class CourseSearcher extends Component
return $search->getRelatedQuery($query, $limit); return $search->getRelatedQuery($query, $limit);
} }
/**
* @param int $limit
* @param string $type [total => 总量, lastnum => 上周, currnum => 本周]
* @return array
* @throws \XSException
*/
public function getHotQuery($limit = 10, $type = 'total')
{
$search = $this->xs->getSearch();
$hotQuery = $search->getHotQuery($limit, $type);
return array_keys($hotQuery);
}
} }