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,
'market_price' => $course->market_price,
'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model,
'level' => $course->level,
'user_count' => $course->user_count,

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -48,7 +48,6 @@ class TopicCourseList extends Cache
'cover' => $course->cover,
'market_price' => $course->market_price,
'vip_price' => $course->vip_price,
'rating' => $course->rating,
'model' => $course->model,
'level' => $course->level,
'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'}) }}">

View File

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

View File

@ -2,7 +2,10 @@
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")
@ -10,14 +13,56 @@ use App\Services\Frontend\Search\CourseSearch;
class SearchController extends Controller
{
use ResponseTrait;
/**
* @Get("/", name="web.search.show")
*/
public function showAction()
{
$service = new CourseSearch();
dd($service->handle());
exit;
$query = $this->request->get('query', ['trim']);
$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 = [
'id' => 0,
'name' => '全部',
'href' => $baseUrl . $this->buildQueryParams($params),
'url' => $baseUrl . $this->buildQueryParams($params),
];
$result = [];
@ -48,7 +48,7 @@ class CourseQuery extends Service
$result[] = [
'id' => $category['id'],
'name' => $category['name'],
'href' => $baseUrl . $this->buildQueryParams($params),
'url' => $baseUrl . $this->buildQueryParams($params),
];
}
@ -80,7 +80,7 @@ class CourseQuery extends Service
$defaultItem = [
'id' => 0,
'name' => '全部',
'href' => $baseUrl . $this->buildQueryParams($params),
'url' => $baseUrl . $this->buildQueryParams($params),
];
$result = [];
@ -92,7 +92,7 @@ class CourseQuery extends Service
$result[] = [
'id' => $category['id'],
'name' => $category['name'],
'href' => $baseUrl . $this->buildQueryParams($params),
'url' => $baseUrl . $this->buildQueryParams($params),
];
}
@ -110,7 +110,7 @@ class CourseQuery extends Service
$defaultItem = [
'id' => 0,
'name' => '全部',
'href' => $this->baseUrl . $this->buildQueryParams($params),
'url' => $this->baseUrl . $this->buildQueryParams($params),
];
$result = [];
@ -124,7 +124,7 @@ class CourseQuery extends Service
$result[] = [
'id' => $key,
'name' => $value,
'href' => $this->baseUrl . $this->buildQueryParams($params),
'url' => $this->baseUrl . $this->buildQueryParams($params),
];
}
@ -142,7 +142,7 @@ class CourseQuery extends Service
$defaultItem = [
'id' => 0,
'name' => '全部',
'href' => $this->baseUrl . $this->buildQueryParams($params),
'url' => $this->baseUrl . $this->buildQueryParams($params),
];
$result = [];
@ -152,11 +152,11 @@ class CourseQuery extends Service
$levels = CourseModel::levelTypes();
foreach ($levels as $key => $value) {
$params['sc'] = $key;
$params['level'] = $key;
$result[] = [
'id' => $key,
'name' => $value,
'href' => $this->baseUrl . $this->buildQueryParams($params),
'url' => $this->baseUrl . $this->buildQueryParams($params),
];
}
@ -176,7 +176,7 @@ class CourseQuery extends Service
$result[] = [
'id' => $key,
'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">
<ul class="layui-tab-title">
{% 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 %}
</ul>
<div class="layui-tab-content">
{% 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 %}
<div class="course-card">
<div class="cover"></div>

View File

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

View File

@ -117,7 +117,6 @@ class OrderConfirm extends FrontendService
'cover' => $course->cover,
'model' => $course->model,
'level' => $course->level,
'rating' => $course->rating,
'study_expiry' => $course->study_expiry,
'refund_expiry' => $course->refund_expiry,
'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\Search\CourseSearcher as CourseSearcherService;
class CourseSearch extends FrontendService
class CourseList extends FrontendService
{
public function handle()
{
$pagerQuery = new PagerQuery();
$params = $pagerQuery->getParams();
@ -44,16 +43,18 @@ class CourseSearch extends FrontendService
foreach ($pager->items as $course) {
$items[] = [
'id' => $course['id'],
'id' => (int)$course['id'],
'title' => $course['title'],
'cover' => $course['cover'],
'summary' => $course['summary'],
'market_price' => (float)$course['market_price'],
'vip_price' => (float)$course['vip_price'],
'rating' => (float)$course['rating'],
'model' => $course['model'],
'level' => $course['level'],
'user_count' => $course['user_count'],
'lesson_count' => $course['lesson_count'],
'user_count' => (int)$course['user_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) {
$item = [];
foreach ($fields as $field) {
if (in_array($field, ['title', 'summary'])) {
if (in_array($field, $this->getHighlightFields())) {
$item[$field] = $search->highlight($doc->{$field});
} else {
$item[$field] = $doc->{$field};
@ -95,4 +95,19 @@ class CourseSearcher extends Component
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);
}
}