diff --git a/app/Caches/UserDailyCounter.php b/app/Caches/UserDailyCounter.php index 513c63fa..fd9627fc 100644 --- a/app/Caches/UserDailyCounter.php +++ b/app/Caches/UserDailyCounter.php @@ -5,7 +5,7 @@ namespace App\Caches; class UserDailyCounter extends Counter { - protected $lifetime = 86400; + protected $lifetime = 1 * 86400; public function getLifetime() { diff --git a/app/Console/Tasks/CleanAuthTokenTask.php b/app/Console/Tasks/CleanTokenTask.php similarity index 97% rename from app/Console/Tasks/CleanAuthTokenTask.php rename to app/Console/Tasks/CleanTokenTask.php index d982c998..b5bf806d 100644 --- a/app/Console/Tasks/CleanAuthTokenTask.php +++ b/app/Console/Tasks/CleanTokenTask.php @@ -8,7 +8,7 @@ use Phalcon\Cli\Task; use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\ResultsetInterface; -class CleanAuthTokenTask extends Task +class CleanTokenTask extends Task { public function mainAction() diff --git a/app/Console/Tasks/ManageCourseIndexTask.php b/app/Console/Tasks/CourseIndexTask.php similarity index 89% rename from app/Console/Tasks/ManageCourseIndexTask.php rename to app/Console/Tasks/CourseIndexTask.php index 36f049c6..1f82439f 100644 --- a/app/Console/Tasks/ManageCourseIndexTask.php +++ b/app/Console/Tasks/CourseIndexTask.php @@ -9,13 +9,13 @@ use Phalcon\Cli\Task; use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\ResultsetInterface; -class ManageCourseIndexTask extends Task +class CourseIndexTask extends Task { /** * 搜索测试 * - * @command: php console.php manage_course_index search {query} + * @command: php console.php course_index search {query} * @param array $params * @throws \XSException */ @@ -35,7 +35,7 @@ class ManageCourseIndexTask extends Task /** * 清空索引 * - * @command: php console.php manage_course_index clean + * @command: php console.php course_index clean */ public function cleanAction() { @@ -45,7 +45,7 @@ class ManageCourseIndexTask extends Task /** * 重建索引 * - * @command: php console.php manage_course_index rebuild + * @command: php console.php course_index rebuild */ public function rebuildAction() { @@ -103,7 +103,7 @@ class ManageCourseIndexTask extends Task * 搜索课程 * * @param string $query - * @return array $result + * @return array * @throws \XSException */ protected function searchCourses($query) diff --git a/app/Console/Tasks/LearningTask.php b/app/Console/Tasks/LearningTask.php index 15b99460..0079b2a8 100644 --- a/app/Console/Tasks/LearningTask.php +++ b/app/Console/Tasks/LearningTask.php @@ -10,7 +10,7 @@ use App\Repos\ChapterUser as ChapterUserRepo; use App\Repos\Course as CourseRepo; use App\Repos\CourseUser as CourseUserRepo; use App\Repos\Learning as LearningRepo; -use App\Services\LearningSyncer; +use App\Services\Syncer\Learning as LearningSyncer; use Phalcon\Cli\Task; class LearningTask extends Task diff --git a/app/Console/Tasks/SyncChapterCounterTask.php b/app/Console/Tasks/SyncChapterCounterTask.php index b3dcabd2..cd32fff6 100644 --- a/app/Console/Tasks/SyncChapterCounterTask.php +++ b/app/Console/Tasks/SyncChapterCounterTask.php @@ -5,7 +5,7 @@ namespace App\Console\Tasks; use App\Caches\ChapterCounter as ChapterCounterCache; use App\Library\Cache\Backend\Redis as RedisCache; use App\Repos\Chapter as ChapterRepo; -use App\Services\ChapterCounterSyncer; +use App\Services\Syncer\ChapterCounter as ChapterCounterSyncer; class SyncChapterCounterTask extends Task { diff --git a/app/Console/Tasks/SyncCommentCounterTask.php b/app/Console/Tasks/SyncCommentCounterTask.php index 762d91fa..dedc4b52 100644 --- a/app/Console/Tasks/SyncCommentCounterTask.php +++ b/app/Console/Tasks/SyncCommentCounterTask.php @@ -5,7 +5,7 @@ namespace App\Console\Tasks; use App\Caches\CommentCounter as CommentCounterCache; use App\Library\Cache\Backend\Redis as RedisCache; use App\Repos\Comment as CommentRepo; -use App\Services\CommentCounterSyncer; +use App\Services\Syncer\CommentCounter as CommentCounterSyncer; class SyncCommentCounterTask extends Task { diff --git a/app/Console/Tasks/SyncConsultCounterTask.php b/app/Console/Tasks/SyncConsultCounterTask.php index e19a6ada..1f9caf6f 100644 --- a/app/Console/Tasks/SyncConsultCounterTask.php +++ b/app/Console/Tasks/SyncConsultCounterTask.php @@ -5,7 +5,7 @@ namespace App\Console\Tasks; use App\Caches\ConsultCounter as ConsultCounterCache; use App\Library\Cache\Backend\Redis as RedisCache; use App\Repos\Consult as ConsultRepo; -use App\Services\ConsultCounterSyncer; +use App\Services\Syncer\ConsultCounter as ConsultCounterSyncer; class SyncConsultCounterTask extends Task { diff --git a/app/Console/Tasks/syncCourseCounterTask.php b/app/Console/Tasks/SyncCourseCounterTask.php similarity index 94% rename from app/Console/Tasks/syncCourseCounterTask.php rename to app/Console/Tasks/SyncCourseCounterTask.php index be8609ff..4ddc1a5b 100644 --- a/app/Console/Tasks/syncCourseCounterTask.php +++ b/app/Console/Tasks/SyncCourseCounterTask.php @@ -5,9 +5,9 @@ namespace App\Console\Tasks; use App\Caches\CourseCounter as CourseCounterCache; use App\Library\Cache\Backend\Redis as RedisCache; use App\Repos\Course as CourseRepo; -use App\Services\CourseCounterSyncer; +use App\Services\Syncer\CourseCounter as CourseCounterSyncer; -class syncCourseCounterTask extends Task +class SyncCourseCounterTask extends Task { /** diff --git a/app/Console/Tasks/SyncCourseIndexTask.php b/app/Console/Tasks/SyncCourseIndexTask.php index 85dc1771..dd17c9bf 100644 --- a/app/Console/Tasks/SyncCourseIndexTask.php +++ b/app/Console/Tasks/SyncCourseIndexTask.php @@ -6,7 +6,7 @@ use App\Library\Cache\Backend\Redis as RedisCache; use App\Repos\Course as CourseRepo; use App\Searchers\CourseDocument; use App\Searchers\CourseSearch; -use App\Services\CourseIndexSyncer; +use App\Services\Syncer\CourseIndex as CourseIndexSyncer; class SyncCourseIndexTask extends Task { diff --git a/app/Console/Tasks/SyncReviewCounterTask.php b/app/Console/Tasks/SyncReviewCounterTask.php index f371fbdd..1196d1f6 100644 --- a/app/Console/Tasks/SyncReviewCounterTask.php +++ b/app/Console/Tasks/SyncReviewCounterTask.php @@ -5,7 +5,7 @@ namespace App\Console\Tasks; use App\Caches\ReviewCounter as ReviewCounterCache; use App\Library\Cache\Backend\Redis as RedisCache; use App\Repos\Review as ReviewRepo; -use App\Services\ReviewCounterSyncer; +use App\Services\Syncer\ReviewCounter as ReviewCounterSyncer; class SyncReviewCounterTask extends Task { diff --git a/app/Http/Admin/Services/AuthMenu.php b/app/Http/Admin/Services/AuthMenu.php index 17b739d0..68f7194d 100644 --- a/app/Http/Admin/Services/AuthMenu.php +++ b/app/Http/Admin/Services/AuthMenu.php @@ -30,7 +30,7 @@ class AuthMenu extends Component if ($this->authUser->id || in_array($node['id'], $this->owned1stLevelIds)) { $menus[] = [ 'id' => $node['id'], - 'label' => $node['label'], + 'title' => $node['title'], ]; } } @@ -43,17 +43,17 @@ class AuthMenu extends Component $menus = []; foreach ($this->authNodes as $key => $level) { - foreach ($level['child'] as $key2 => $level2) { - foreach ($level2['child'] as $key3 => $level3) { + foreach ($level['children'] as $key2 => $level2) { + foreach ($level2['children'] as $key3 => $level3) { $hasRight = $this->authUser->root || in_array($level3['id'], $this->owned3rdLevelIds); if ($level3['type'] == 'menu' && $hasRight) { $menus[$key]['id'] = $level['id']; - $menus[$key]['label'] = $level['label']; - $menus[$key]['child'][$key2]['id'] = $level2['id']; - $menus[$key]['child'][$key2]['label'] = $level2['label']; - $menus[$key]['child'][$key2]['child'][$key3] = [ + $menus[$key]['title'] = $level['title']; + $menus[$key]['children'][$key2]['id'] = $level2['id']; + $menus[$key]['children'][$key2]['title'] = $level2['title']; + $menus[$key]['children'][$key2]['children'][$key3] = [ 'id' => $level3['id'], - 'label' => $level3['label'], + 'title' => $level3['title'], 'url' => $this->url->get(['for' => $level3['route']]), ]; } @@ -93,8 +93,8 @@ class AuthMenu extends Component $mapping = []; foreach ($this->authNodes as $level) { - foreach ($level['child'] as $level2) { - foreach ($level2['child'] as $level3) { + foreach ($level['children'] as $level2) { + foreach ($level2['children'] as $level3) { if ($level3['type'] == 'menu') { $mapping[$level3['route']] = $level3['id']; } diff --git a/app/Http/Admin/Services/AuthNode.php b/app/Http/Admin/Services/AuthNode.php index f543cc7d..46bf4b56 100644 --- a/app/Http/Admin/Services/AuthNode.php +++ b/app/Http/Admin/Services/AuthNode.php @@ -22,40 +22,40 @@ class AuthNode extends Service { return [ 'id' => '1', - 'label' => '内容管理', - 'child' => [ + 'title' => '内容管理', + 'children' => [ [ 'id' => '1-1', - 'label' => '课程管理', + 'title' => '课程管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '1-1-1', - 'label' => '课程列表', + 'title' => '课程列表', 'type' => 'menu', 'route' => 'admin.course.list', ], [ 'id' => '1-1-2', - 'label' => '搜索课程', + 'title' => '搜索课程', 'type' => 'menu', 'route' => 'admin.course.search', ], [ 'id' => '1-1-3', - 'label' => '添加课程', + 'title' => '添加课程', 'type' => 'menu', 'route' => 'admin.course.add', ], [ 'id' => '1-1-4', - 'label' => '编辑课程', + 'title' => '编辑课程', 'type' => 'button', 'route' => 'admin.course.edit', ], [ 'id' => '1-1-5', - 'label' => '删除课程', + 'title' => '删除课程', 'type' => 'button', 'route' => 'admin.course.edit', ], @@ -63,30 +63,30 @@ class AuthNode extends Service ], [ 'id' => '1-2', - 'label' => '分类管理', + 'title' => '分类管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '1-2-1', - 'label' => '分类列表', + 'title' => '分类列表', 'type' => 'menu', 'route' => 'admin.category.list', ], [ 'id' => '1-2-2', - 'label' => '添加分类', + 'title' => '添加分类', 'type' => 'menu', 'route' => 'admin.category.add', ], [ 'id' => '1-2-3', - 'label' => '编辑分类', + 'title' => '编辑分类', 'type' => 'button', 'route' => 'admin.category.edit', ], [ 'id' => '1-2-4', - 'label' => '删除分类', + 'title' => '删除分类', 'type' => 'button', 'route' => 'admin.category.delete', ], @@ -94,30 +94,30 @@ class AuthNode extends Service ], [ 'id' => '1-3', - 'label' => '套餐管理', + 'title' => '套餐管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '1-3-1', - 'label' => '套餐列表', + 'title' => '套餐列表', 'type' => 'menu', 'route' => 'admin.package.list', ], [ 'id' => '1-3-2', - 'label' => '添加套餐', + 'title' => '添加套餐', 'type' => 'menu', 'route' => 'admin.package.add', ], [ 'id' => '1-3-3', - 'label' => '编辑套餐', + 'title' => '编辑套餐', 'type' => 'button', 'route' => 'admin.package.edit', ], [ 'id' => '1-3-4', - 'label' => '删除套餐', + 'title' => '删除套餐', 'type' => 'button', 'route' => 'admin.package.delete', ], @@ -125,30 +125,30 @@ class AuthNode extends Service ], [ 'id' => '1-4', - 'label' => '话题管理', + 'title' => '话题管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '1-4-1', - 'label' => '话题列表', + 'title' => '话题列表', 'type' => 'menu', 'route' => 'admin.topic.list', ], [ 'id' => '1-4-2', - 'label' => '添加话题', + 'title' => '添加话题', 'type' => 'menu', 'route' => 'admin.topic.add', ], [ 'id' => '1-4-3', - 'label' => '编辑话题', + 'title' => '编辑话题', 'type' => 'button', 'route' => 'admin.topic.edit', ], [ 'id' => '1-4-4', - 'label' => '删除话题', + 'title' => '删除话题', 'type' => 'button', 'route' => 'admin.topic.delete', ], @@ -156,30 +156,30 @@ class AuthNode extends Service ], [ 'id' => '1-5', - 'label' => '单页管理', + 'title' => '单页管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '1-5-1', - 'label' => '单页列表', + 'title' => '单页列表', 'type' => 'menu', 'route' => 'admin.page.list', ], [ 'id' => '1-5-2', - 'label' => '添加单页', + 'title' => '添加单页', 'type' => 'menu', 'route' => 'admin.page.add', ], [ 'id' => '1-5-3', - 'label' => '编辑单页', + 'title' => '编辑单页', 'type' => 'button', 'route' => 'admin.page.edit', ], [ 'id' => '1-5-4', - 'label' => '删除单页', + 'title' => '删除单页', 'type' => 'button', 'route' => 'admin.page.delete', ], @@ -187,30 +187,30 @@ class AuthNode extends Service ], [ 'id' => '1-6', - 'label' => '帮助管理', + 'title' => '帮助管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '1-6-1', - 'label' => '帮助列表', + 'title' => '帮助列表', 'type' => 'menu', 'route' => 'admin.help.list', ], [ 'id' => '1-6-2', - 'label' => '添加帮助', + 'title' => '添加帮助', 'type' => 'menu', 'route' => 'admin.help.add', ], [ 'id' => '1-6-3', - 'label' => '编辑帮助', + 'title' => '编辑帮助', 'type' => 'button', 'route' => 'admin.help.edit', ], [ 'id' => '1-6-4', - 'label' => '删除帮助', + 'title' => '删除帮助', 'type' => 'button', 'route' => 'admin.help.delete', ], @@ -224,34 +224,34 @@ class AuthNode extends Service { return [ 'id' => '2', - 'label' => '运营管理', - 'child' => [ + 'title' => '运营管理', + 'children' => [ [ 'id' => '2-1', - 'label' => '学员管理', + 'title' => '学员管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '2-1-1', - 'label' => '学员列表', + 'title' => '学员列表', 'type' => 'menu', 'route' => 'admin.student.list', ], [ 'id' => '2-1-2', - 'label' => '搜索学员', + 'title' => '搜索学员', 'type' => 'menu', 'route' => 'admin.student.search', ], [ 'id' => '2-1-3', - 'label' => '添加学员', + 'title' => '添加学员', 'type' => 'menu', 'route' => 'admin.student.add', ], [ 'id' => '2-1-4', - 'label' => '编辑学员', + 'title' => '编辑学员', 'type' => 'button', 'route' => 'admin.student.edit', ], @@ -259,30 +259,30 @@ class AuthNode extends Service ], [ 'id' => '2-2', - 'label' => '咨询管理', + 'title' => '咨询管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '2-2-1', - 'label' => '咨询列表', + 'title' => '咨询列表', 'type' => 'menu', 'route' => 'admin.consult.list', ], [ 'id' => '2-2-2', - 'label' => '搜索咨询', + 'title' => '搜索咨询', 'type' => 'menu', 'route' => 'admin.consult.search', ], [ 'id' => '2-2-3', - 'label' => '编辑咨询', + 'title' => '编辑咨询', 'type' => 'button', 'route' => 'admin.consult.edit', ], [ 'id' => '2-2-4', - 'label' => '删除咨询', + 'title' => '删除咨询', 'type' => 'button', 'route' => 'admin.consult.delete', ], @@ -290,30 +290,30 @@ class AuthNode extends Service ], [ 'id' => '2-3', - 'label' => '评价管理', + 'title' => '评价管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '2-3-1', - 'label' => '评价列表', + 'title' => '评价列表', 'type' => 'menu', 'route' => 'admin.review.list', ], [ 'id' => '2-3-2', - 'label' => '搜索评价', + 'title' => '搜索评价', 'type' => 'menu', 'route' => 'admin.review.search', ], [ 'id' => '2-3-3', - 'label' => '编辑评价', + 'title' => '编辑评价', 'type' => 'button', 'route' => 'admin.review.edit', ], [ 'id' => '2-3-4', - 'label' => '删除评价', + 'title' => '删除评价', 'type' => 'button', 'route' => 'admin.review.delete', ], @@ -321,30 +321,30 @@ class AuthNode extends Service ], [ 'id' => '2-4', - 'label' => '评论管理', + 'title' => '评论管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '2-4-1', - 'label' => '评论列表', + 'title' => '评论列表', 'type' => 'menu', 'route' => 'admin.comment.list', ], [ 'id' => '2-4-2', - 'label' => '搜索评论', + 'title' => '搜索评论', 'type' => 'menu', 'route' => 'admin.comment.search', ], [ 'id' => '2-4-3', - 'label' => '编辑评论', + 'title' => '编辑评论', 'type' => 'button', 'route' => 'admin.comment.edit', ], [ 'id' => '2-4-4', - 'label' => '删除评论', + 'title' => '删除评论', 'type' => 'button', 'route' => 'admin.comment.delete', ], @@ -352,30 +352,30 @@ class AuthNode extends Service ], [ 'id' => '2-5', - 'label' => '轮播管理', + 'title' => '轮播管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '2-5-1', - 'label' => '轮播列表', + 'title' => '轮播列表', 'type' => 'menu', 'route' => 'admin.slide.list', ], [ 'id' => '2-5-2', - 'label' => '添加轮播', + 'title' => '添加轮播', 'type' => 'menu', 'route' => 'admin.slide.add', ], [ 'id' => '2-5-3', - 'label' => '编辑轮播', + 'title' => '编辑轮播', 'type' => 'button', 'route' => 'admin.slide.edit', ], [ 'id' => '2-5-4', - 'label' => '删除轮播', + 'title' => '删除轮播', 'type' => 'button', 'route' => 'admin.slide.delete', ], @@ -383,30 +383,30 @@ class AuthNode extends Service ], [ 'id' => '2-6', - 'label' => '导航管理', + 'title' => '导航管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '2-6-1', - 'label' => '导航列表', + 'title' => '导航列表', 'type' => 'menu', 'route' => 'admin.nav.list', ], [ 'id' => '2-6-2', - 'label' => '添加导航', + 'title' => '添加导航', 'type' => 'menu', 'route' => 'admin.nav.add', ], [ 'id' => '2-6-3', - 'label' => '编辑导航', + 'title' => '编辑导航', 'type' => 'button', 'route' => 'admin.nav.edit', ], [ 'id' => '2-6-4', - 'label' => '删除导航', + 'title' => '删除导航', 'type' => 'button', 'route' => 'admin.nav.delete', ], @@ -420,34 +420,34 @@ class AuthNode extends Service { return [ 'id' => '3', - 'label' => '财务管理', - 'child' => [ + 'title' => '财务管理', + 'children' => [ [ 'id' => '3-1', - 'label' => '订单管理', + 'title' => '订单管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '3-1-1', - 'label' => '订单列表', + 'title' => '订单列表', 'type' => 'menu', 'route' => 'admin.order.list', ], [ 'id' => '3-1-2', - 'label' => '搜索订单', + 'title' => '搜索订单', 'type' => 'menu', 'route' => 'admin.order.search', ], [ 'id' => '3-1-3', - 'label' => '订单详情', + 'title' => '订单详情', 'type' => 'button', 'route' => 'admin.order.show', ], [ 'id' => '3-1-4', - 'label' => '关闭订单', + 'title' => '关闭订单', 'type' => 'button', 'route' => 'admin.order.close', ], @@ -455,30 +455,30 @@ class AuthNode extends Service ], [ 'id' => '3-2', - 'label' => '交易管理', + 'title' => '交易管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '3-2-1', - 'label' => '交易记录', + 'title' => '交易记录', 'type' => 'menu', 'route' => 'admin.trade.list', ], [ 'id' => '3-2-2', - 'label' => '搜索交易', + 'title' => '搜索交易', 'type' => 'menu', 'route' => 'admin.trade.search', ], [ 'id' => '3-2-3', - 'label' => '关闭交易', + 'title' => '关闭交易', 'type' => 'button', 'route' => 'admin.trade.close', ], [ 'id' => '3-2-4', - 'label' => '交易退款', + 'title' => '交易退款', 'type' => 'button', 'route' => 'admin.trade.refund', ], @@ -486,30 +486,30 @@ class AuthNode extends Service ], [ 'id' => '3-3', - 'label' => '退款管理', + 'title' => '退款管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '3-3-1', - 'label' => '退款列表', + 'title' => '退款列表', 'type' => 'menu', 'route' => 'admin.refund.list', ], [ 'id' => '3-3-2', - 'label' => '搜索退款', + 'title' => '搜索退款', 'type' => 'menu', 'route' => 'admin.refund.search', ], [ 'id' => '3-3-3', - 'label' => '退款详情', + 'title' => '退款详情', 'type' => 'button', 'route' => 'admin.refund.show', ], [ 'id' => '3-3-4', - 'label' => '审核退款', + 'title' => '审核退款', 'type' => 'button', 'route' => 'admin.refund.review', ], @@ -523,34 +523,34 @@ class AuthNode extends Service { return [ 'id' => '4', - 'label' => '用户管理', - 'child' => [ + 'title' => '用户管理', + 'children' => [ [ 'id' => '4-1', - 'label' => '用户管理', + 'title' => '用户管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '4-1-1', - 'label' => '用户列表', + 'title' => '用户列表', 'type' => 'menu', 'route' => 'admin.user.list', ], [ 'id' => '4-1-2', - 'label' => '搜索用户', + 'title' => '搜索用户', 'type' => 'menu', 'route' => 'admin.user.search', ], [ 'id' => '4-1-3', - 'label' => '添加用户', + 'title' => '添加用户', 'type' => 'menu', 'route' => 'admin.user.add', ], [ 'id' => '4-1-4', - 'label' => '编辑用户', + 'title' => '编辑用户', 'type' => 'button', 'route' => 'admin.user.edit', ] @@ -558,30 +558,30 @@ class AuthNode extends Service ], [ 'id' => '4-2', - 'label' => '角色管理', + 'title' => '角色管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '4-2-1', - 'label' => '角色列表', + 'title' => '角色列表', 'type' => 'menu', 'route' => 'admin.role.list', ], [ 'id' => '4-2-2', - 'label' => '添加角色', + 'title' => '添加角色', 'type' => 'menu', 'route' => 'admin.role.add', ], [ 'id' => '4-2-3', - 'label' => '编辑角色', + 'title' => '编辑角色', 'type' => 'button', 'route' => 'admin.role.edit', ], [ 'id' => '4-2-4', - 'label' => '删除角色', + 'title' => '删除角色', 'type' => 'button', 'route' => 'admin.role.delete', ] @@ -589,24 +589,24 @@ class AuthNode extends Service ], [ 'id' => '4-3', - 'label' => '操作记录', + 'title' => '操作记录', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '4-3-1', - 'label' => '记录列表', + 'title' => '记录列表', 'type' => 'menu', 'route' => 'admin.audit.list', ], [ 'id' => '4-3-2', - 'label' => '搜索记录', + 'title' => '搜索记录', 'type' => 'menu', 'route' => 'admin.audit.search', ], [ 'id' => '4-3-3', - 'label' => '浏览记录', + 'title' => '浏览记录', 'type' => 'button', 'route' => 'admin.audit.show', ], @@ -620,70 +620,70 @@ class AuthNode extends Service { return [ 'id' => '5', - 'label' => '系统配置', - 'child' => [ + 'title' => '系统配置', + 'children' => [ [ 'id' => '5-1', - 'label' => '配置管理', + 'title' => '配置管理', 'type' => 'menu', - 'child' => [ + 'children' => [ [ 'id' => '5-1-1', - 'label' => '网站设置', + 'title' => '网站设置', 'type' => 'menu', 'route' => 'admin.setting.site', ], [ 'id' => '5-1-2', - 'label' => '密钥设置', + 'title' => '密钥设置', 'type' => 'menu', 'route' => 'admin.setting.secret', ], [ 'id' => '5-1-3', - 'label' => '存储设置', + 'title' => '存储设置', 'type' => 'menu', 'route' => 'admin.setting.storage', ], [ 'id' => '5-1-4', - 'label' => '点播设置', + 'title' => '点播设置', 'type' => 'menu', 'route' => 'admin.setting.vod', ], [ 'id' => '5-1-5', - 'label' => '直播设置', + 'title' => '直播设置', 'type' => 'menu', 'route' => 'admin.setting.live', ], [ 'id' => '5-1-6', - 'label' => '短信设置', + 'title' => '短信设置', 'type' => 'menu', 'route' => 'admin.setting.smser', ], [ 'id' => '5-1-7', - 'label' => '邮件设置', + 'title' => '邮件设置', 'type' => 'menu', 'route' => 'admin.setting.mailer', ], [ 'id' => '5-1-8', - 'label' => '验证码设置', + 'title' => '验证码设置', 'type' => 'menu', 'route' => 'admin.setting.captcha', ], [ 'id' => '5-1-9', - 'label' => '支付设置', + 'title' => '支付设置', 'type' => 'menu', 'route' => 'admin.setting.pay', ], [ 'id' => '5-1-10', - 'label' => '会员设置', + 'title' => '会员设置', 'type' => 'menu', 'route' => 'admin.setting.vip', ] diff --git a/app/Http/Admin/Services/Course.php b/app/Http/Admin/Services/Course.php index 53d19ab9..39b96dce 100644 --- a/app/Http/Admin/Services/Course.php +++ b/app/Http/Admin/Services/Course.php @@ -21,7 +21,6 @@ use App\Repos\CourseUser as CourseUserRepo; use App\Repos\User as UserRepo; use App\Services\Syncer\CourseIndex as CourseIndexSyncer; use App\Validators\Course as CourseValidator; -use Yansongda\Supports\Collection; class Course extends Service { @@ -183,16 +182,12 @@ class Course extends Service public function getStudyExpiryOptions() { - $options = CourseModel::studyExpiryOptions(); - - return new Collection($options); + return CourseModel::studyExpiryOptions(); } public function getRefundExpiryOptions() { - $options = CourseModel::refundExpiryOptions(); - - return new Collection($options); + return CourseModel::refundExpiryOptions(); } public function getXmCategories($id) @@ -385,6 +380,13 @@ class Course extends Service } } + $teacherId = $newTeacherIds[0] ?? 0; + + if ($teacherId) { + $course->teacher_id = $teacherId; + $course->update(); + } + $cache = new CourseTeacherListCache(); $cache->rebuild(); diff --git a/app/Http/Admin/Services/Index.php b/app/Http/Admin/Services/Index.php index c8e18709..882fbbd2 100644 --- a/app/Http/Admin/Services/Index.php +++ b/app/Http/Admin/Services/Index.php @@ -9,18 +9,14 @@ class Index extends Service { $authMenu = new AuthMenu(); - $topMenus = $authMenu->getTopMenus(); - - return kg_array_object($topMenus); + return $authMenu->getTopMenus(); } public function getLeftMenus() { $authMenu = new AuthMenu(); - $leftMenus = $authMenu->getLeftMenus(); - - return kg_array_object($leftMenus); + return $authMenu->getLeftMenus(); } } diff --git a/app/Http/Admin/Views/audit/list.volt b/app/Http/Admin/Views/audit/list.volt index 72c2802a..2edd9f05 100644 --- a/app/Http/Admin/Views/audit/list.volt +++ b/app/Http/Admin/Views/audit/list.volt @@ -37,12 +37,12 @@ {{ item.user_id }} {{ item.user_name }} - {{ item.user_ip }} + {{ item.user_ip }} {{ item.req_route }} {{ item.req_path }} {{ date('Y-m-d H:i:s',item.create_time) }} - + {% endfor %} @@ -60,8 +60,7 @@ var layer = layui.layer; $('.kg-view').on('click', function () { - var auditId = $(this).attr('audit-id'); - var url = '/admin/audit/' + auditId + '/show'; + var url = $(this).attr('data-url'); layer.open({ type: 2, title: '请求内容', diff --git a/app/Http/Admin/Views/category/list.volt b/app/Http/Admin/Views/category/list.volt index 88b2d030..5a0f06c3 100644 --- a/app/Http/Admin/Views/category/list.volt +++ b/app/Http/Admin/Views/category/list.volt @@ -52,17 +52,17 @@ {{ item.level }} {{ item.child_count }} {{ item.course_count }} - - + +
@@ -70,59 +70,4 @@ {% endfor %} - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/Http/Admin/Views/chapter/lessons.volt b/app/Http/Admin/Views/chapter/lessons.volt index 1bc31e18..b906f230 100644 --- a/app/Http/Admin/Views/chapter/lessons.volt +++ b/app/Http/Admin/Views/chapter/lessons.volt @@ -35,30 +35,13 @@ var layer = layui.layer; var form = layui.form; - $('input[name=priority]').on('change', function () { - var priority = $(this).val(); - var chapterId = $(this).attr('chapter-id'); - $.ajax({ - type: 'POST', - url: '/admin/chapter/' + chapterId + '/update', - data: {priority: priority}, - success: function (res) { - layer.msg(res.msg, {icon: 1}); - }, - error: function (xhr) { - var json = JSON.parse(xhr.responseText); - layer.msg(json.msg, {icon: 2}); - } - }); - }); - - form.on('switch(switch-free)', function (data) { - var chapterId = $(this).attr('chapter-id'); + form.on('switch(free)', function (data) { var checked = $(this).is(':checked'); var free = checked ? 1 : 0; + var url = $(this).attr('data-url'); $.ajax({ type: 'POST', - url: '/admin/chapter/' + chapterId + '/update', + url: url, data: {free: free}, success: function (res) { layer.msg(res.msg, {icon: 1}); @@ -72,26 +55,6 @@ }); }); - form.on('switch(switch-published)', function (data) { - var chapterId = $(this).attr('chapter-id'); - var checked = $(this).is(':checked'); - var published = checked ? 1 : 0; - $.ajax({ - type: 'POST', - url: '/admin/chapter/' + chapterId + '/update', - data: {published: published}, - success: function (res) { - layer.msg(res.msg, {icon: 1}); - }, - error: function (xhr) { - var json = JSON.parse(xhr.responseText); - layer.msg(json.msg, {icon: 2}); - data.elem.checked = !checked; - form.render(); - } - }); - }); - }); \ No newline at end of file diff --git a/app/Http/Admin/Views/chapter/lessons_live.volt b/app/Http/Admin/Views/chapter/lessons_live.volt index b6a1f90c..8cb9a35b 100644 --- a/app/Http/Admin/Views/chapter/lessons_live.volt +++ b/app/Http/Admin/Views/chapter/lessons_live.volt @@ -1,3 +1,12 @@ +{%- macro live_time_info(attrs) %} + {% if attrs['start_time'] > 0 %} +

开始:{{ date('Y-m-d H:i', attrs['start_time']) }}

+

结束:{{ date('Y-m-d H:i', attrs['end_time']) }}

+ {% else %} + N/A + {% endif %} +{%- endmacro %} + @@ -27,24 +36,16 @@ {{ item.title }} - - - - + + + + diff --git a/app/Http/Admin/Views/chapter/lessons_read.volt b/app/Http/Admin/Views/chapter/lessons_read.volt index 9692ab57..1ee05934 100644 --- a/app/Http/Admin/Views/chapter/lessons_read.volt +++ b/app/Http/Admin/Views/chapter/lessons_read.volt @@ -28,15 +28,15 @@ - - - + + + diff --git a/app/Http/Admin/Views/chapter/lessons_vod.volt b/app/Http/Admin/Views/chapter/lessons_vod.volt index 721544fa..16ef3794 100644 --- a/app/Http/Admin/Views/chapter/lessons_vod.volt +++ b/app/Http/Admin/Views/chapter/lessons_vod.volt @@ -45,17 +45,15 @@ - - - + + + diff --git a/app/Http/Admin/Views/comment/list.volt b/app/Http/Admin/Views/comment/list.volt index 329e2d42..93c34971 100644 --- a/app/Http/Admin/Views/comment/list.volt +++ b/app/Http/Admin/Views/comment/list.volt @@ -50,9 +50,7 @@

编号:{{ item.user.id }}

- +
- {% if item.attrs['start_time'] > 0 %} -

开始:{{ date('Y-m-d H:i',item.attrs['start_time']) }}

-

结束:{{ date('Y-m-d H:i',item.attrs['end_time']) }}

- {% else %} - N/A - {% endif %} -
{{ live_time_info(item.attrs) }}
{{ item.attrs['word_count'] }}
{{ file_status(item.attrs['file_status']) }} {{ item.attrs['duration']|play_duration }}
{{ date('Y-m-d H:i',item.create_time) }}
@@ -74,41 +70,4 @@
-{{ partial('partials/pager') }} - - \ No newline at end of file +{{ partial('partials/pager') }} \ No newline at end of file diff --git a/app/Http/Admin/Views/consult/list.volt b/app/Http/Admin/Views/consult/list.volt index 2c9a19a2..bc7ee0bc 100644 --- a/app/Http/Admin/Views/consult/list.volt +++ b/app/Http/Admin/Views/consult/list.volt @@ -47,9 +47,7 @@

编号:{{ item.user.id }}

{{ date('Y-m-d H:i',item.create_time) }} - +
@@ -71,41 +67,4 @@ -{{ partial('partials/pager') }} - - \ No newline at end of file +{{ partial('partials/pager') }} \ No newline at end of file diff --git a/app/Http/Admin/Views/course/chapters.volt b/app/Http/Admin/Views/course/chapters.volt index 85e2825d..c5e34ab6 100644 --- a/app/Http/Admin/Views/course/chapters.volt +++ b/app/Http/Admin/Views/course/chapters.volt @@ -42,48 +42,17 @@ {{ item.lesson_count }} - +
{% endfor %} - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/Http/Admin/Views/course/list.volt b/app/Http/Admin/Views/course/list.volt index 59a03619..94cbc3e6 100644 --- a/app/Http/Admin/Views/course/list.volt +++ b/app/Http/Admin/Views/course/list.volt @@ -70,17 +70,16 @@

市场:¥{{ item.market_price }}

会员:¥{{ item.vip_price }}

- +
@@ -45,14 +45,14 @@
- {% for key,level in left_menus %} + {% for key,level in left_menus|array_object %}
-
- -
- - -
-
-
diff --git a/app/Http/Admin/Views/topic/list.volt b/app/Http/Admin/Views/topic/list.volt index 4bdbe644..de844789 100644 --- a/app/Http/Admin/Views/topic/list.volt +++ b/app/Http/Admin/Views/topic/list.volt @@ -40,13 +40,13 @@ {{ item.course_count }} {{ date('Y-m-d H:i',item.create_time) }} {{ date('Y-m-d H:i',item.update_time) }} - +
@@ -55,41 +55,4 @@ -{{ partial('partials/pager') }} - - \ No newline at end of file +{{ partial('partials/pager') }} \ No newline at end of file diff --git a/app/Models/Course.php b/app/Models/Course.php index cf038cdb..de407a6a 100644 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -3,9 +3,9 @@ namespace App\Models; use App\Caches\MaxCourseId as MaxCourseIdCache; -use App\Services\CourseIndexSyncer; use Phalcon\Mvc\Model\Behavior\SoftDelete; use Phalcon\Text; +use Yansongda\Supports\Collection; class Course extends Model { @@ -95,6 +95,13 @@ class Course extends Model */ public $category_id; + /** + * 主教师编号 + * + * @var int + */ + public $teacher_id; + /** * 市场价格 * @@ -319,43 +326,43 @@ class Course extends Model public static function modelTypes() { - return [ + return new Collection([ self::MODEL_VOD => '点播', self::MODEL_LIVE => '直播', self::MODEL_READ => '图文', - ]; + ]); } public static function levelTypes() { - return [ + return new Collection([ self::LEVEL_ENTRY => '入门', self::LEVEL_JUNIOR => '初级', self::LEVEL_MEDIUM => '中级', self::LEVEL_SENIOR => '高级', - ]; + ]); } public static function studyExpiryOptions() { - return [ + return new Collection([ 1 => '1个月', 3 => '3个月', 6 => '6个月', 12 => '12个月', 36 => '36个月', - ]; + ]); } public static function refundExpiryOptions() { - return [ + return new Collection([ 7 => '7天', 14 => '14天', 30 => '30天', 90 => '90天', 180 => '180天', - ]; + ]); } } diff --git a/app/Models/Nav.php b/app/Models/Nav.php index dbe9bd6c..ce4858e9 100644 --- a/app/Models/Nav.php +++ b/app/Models/Nav.php @@ -3,6 +3,7 @@ namespace App\Models; use Phalcon\Mvc\Model\Behavior\SoftDelete; +use Yansongda\Supports\Collection; class Nav extends Model { @@ -146,18 +147,18 @@ class Nav extends Model public static function positionTypes() { - return [ + return new Collection([ self::POSITION_TOP => '顶部', self::POSITION_BOTTOM => '底部', - ]; + ]); } public static function targetTypes() { - return [ + return new Collection([ self::TARGET_BLANK => '新窗口', self::TARGET_SELF => '原窗口', - ]; + ]); } } diff --git a/app/Models/Order.php b/app/Models/Order.php index 504e268c..0064d3fb 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -3,6 +3,7 @@ namespace App\Models; use Phalcon\Mvc\Model\Behavior\SoftDelete; +use Yansongda\Supports\Collection; class Order extends Model { @@ -179,32 +180,32 @@ class Order extends Model public static function itemTypes() { - return [ + return new Collection([ self::ITEM_COURSE => '课程', self::ITEM_PACKAGE => '套餐', self::ITEM_REWARD => '赞赏', self::ITEM_VIP => '会员', self::ITEM_TEST => '测试', - ]; + ]); } public static function sourceTypes() { - return [ + return new Collection([ self::SOURCE_DESKTOP => 'desktop', self::SOURCE_ANDROID => 'android', self::SOURCE_IOS => 'ios', - ]; + ]); } public static function statusTypes() { - return [ + return new Collection([ self::STATUS_PENDING => '待支付', self::STATUS_FINISHED => '已完成', self::STATUS_CLOSED => '已关闭', self::STATUS_REFUNDED => '已退款', - ]; + ]); } } diff --git a/app/Models/Refund.php b/app/Models/Refund.php index 2a728912..36ab7c75 100644 --- a/app/Models/Refund.php +++ b/app/Models/Refund.php @@ -3,6 +3,7 @@ namespace App\Models; use Phalcon\Mvc\Model\Behavior\SoftDelete; +use Yansongda\Supports\Collection; class Refund extends Model { @@ -144,14 +145,14 @@ class Refund extends Model public static function statusTypes() { - return [ + return new Collection([ self::STATUS_PENDING => '待处理', self::STATUS_CANCELED => '已取消', self::STATUS_APPROVED => '已审核', self::STATUS_REFUSED => '已拒绝', self::STATUS_FINISHED => '已完成', self::STATUS_FAILED => '已失败', - ]; + ]); } } diff --git a/app/Models/Role.php b/app/Models/Role.php index e85e89fa..b3b59135 100644 --- a/app/Models/Role.php +++ b/app/Models/Role.php @@ -3,6 +3,7 @@ namespace App\Models; use Phalcon\Mvc\Model\Behavior\SoftDelete; +use Yansongda\Supports\Collection; class Role extends Model { @@ -128,20 +129,20 @@ class Role extends Model public static function types() { - return [ + return new Collection([ self::TYPE_SYSTEM => '内置', self::TYPE_CUSTOM => '自定', - ]; + ]); } public static function sysRoleTypes() { - return [ + return new Collection([ self::ROLE_ROOT => '管理人员', self::ROLE_OPERATOR => '运营人员', self::ROLE_EDITOR => '编辑人员', self::ROLE_FINANCE => '财务人员', - ]; + ]); } } diff --git a/app/Models/Slide.php b/app/Models/Slide.php index 4f46fc20..62fb4f16 100644 --- a/app/Models/Slide.php +++ b/app/Models/Slide.php @@ -4,6 +4,7 @@ namespace App\Models; use Phalcon\Mvc\Model\Behavior\SoftDelete; use Phalcon\Text; +use Yansongda\Supports\Collection; class Slide extends Model { @@ -145,11 +146,11 @@ class Slide extends Model public static function targetTypes() { - return [ + return new Collection([ self::TARGET_COURSE => '课程', self::TARGET_PAGE => '单页', self::TARGET_LINK => '链接', - ]; + ]); } } diff --git a/app/Models/Trade.php b/app/Models/Trade.php index 531bd406..ebf54fe3 100644 --- a/app/Models/Trade.php +++ b/app/Models/Trade.php @@ -3,6 +3,7 @@ namespace App\Models; use Phalcon\Mvc\Model\Behavior\SoftDelete; +use Yansongda\Supports\Collection; class Trade extends Model { @@ -141,20 +142,20 @@ class Trade extends Model public static function channelTypes() { - return [ + return new Collection([ self::CHANNEL_ALIPAY => '支付宝', self::CHANNEL_WXPAY => '微信', - ]; + ]); } public static function statusTypes() { - return [ + return new Collection([ self::STATUS_PENDING => '待支付', self::STATUS_FINISHED => '已完成', self::STATUS_CLOSED => '已关闭', self::STATUS_REFUNDED => '已退款', - ]; + ]); } } diff --git a/app/Models/User.php b/app/Models/User.php index 1b83e22b..20390338 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -5,6 +5,7 @@ namespace App\Models; use App\Caches\MaxUserId as MaxUserIdCache; use Phalcon\Mvc\Model\Behavior\SoftDelete; use Phalcon\Text; +use Yansongda\Supports\Collection; class User extends Model { @@ -208,19 +209,19 @@ class User extends Model public static function genderTypes() { - return [ + return new Collection([ self::GENDER_MALE => '男', self::GENDER_FEMALE => '女', self::GENDER_NONE => '保密', - ]; + ]); } public static function eduRoleTypes() { - return [ + return new Collection([ self::EDU_ROLE_STUDENT => '学员', self::EDU_ROLE_TEACHER => '讲师', - ]; + ]); } } diff --git a/app/Searchers/CourseDocument.php b/app/Searchers/CourseDocument.php index 6ffc9530..40e9a4a2 100644 --- a/app/Searchers/CourseDocument.php +++ b/app/Searchers/CourseDocument.php @@ -2,7 +2,9 @@ namespace App\Searchers; +use App\Models\Category as CategoryModel; use App\Models\Course as CourseModel; +use App\Models\User as UserModel; use Phalcon\Mvc\User\Component; class CourseDocument extends Component @@ -37,12 +39,34 @@ class CourseDocument extends Component $course->attrs = kg_json_encode($course->attrs); } + $teacher = ''; + + if ($course->teacher_id > 0) { + $record = UserModel::findFirst($course->teacher_id); + $teacher = kg_json_encode([ + 'id' => $record->id, + 'name' => $record->name, + ]); + } + + $category = ''; + + if ($course->category_id > 0) { + $record = CategoryModel::findFirst($course->category_id); + $category = kg_json_encode([ + 'id' => $record->id, + 'name' => $record->name, + ]); + } + return [ 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, 'summary' => $course->summary, 'keywords' => $course->keywords, + 'category_id' => $course->category_id, + 'teacher_id' => $course->teacher_id, 'market_price' => $course->market_price, 'vip_price' => $course->vip_price, 'study_expiry' => $course->study_expiry, @@ -52,6 +76,8 @@ class CourseDocument extends Component 'model' => $course->model, 'level' => $course->level, 'attrs' => $course->attrs, + 'category' => $category, + 'teacher' => $teacher, 'user_count' => $course->user_count, 'lesson_count' => $course->lesson_count, 'comment_count' => $course->comment_count, diff --git a/app/Services/Search/CourseDocument.php b/app/Services/Search/CourseDocument.php new file mode 100644 index 00000000..d55eef7f --- /dev/null +++ b/app/Services/Search/CourseDocument.php @@ -0,0 +1,94 @@ +formatDocument($course); + + $doc->setFields($data); + + return $doc; + } + + /** + * 格式化文档 + * + * @param CourseModel $course + * @return array + */ + public function formatDocument(CourseModel $course) + { + if (is_array($course->attrs) || is_object($course->attrs)) { + $course->attrs = kg_json_encode($course->attrs); + } + + $teacher = ''; + + if ($course->teacher_id > 0) { + + $record = UserModel::findFirst($course->teacher_id); + + $teacher = kg_json_encode([ + 'id' => $record->id, + 'name' => $record->name, + ]); + } + + $category = ''; + + if ($course->category_id > 0) { + + $record = CategoryModel::findFirst($course->category_id); + + $category = kg_json_encode([ + 'id' => $record->id, + 'name' => $record->name, + ]); + } + + return [ + 'id' => $course->id, + 'title' => $course->title, + 'cover' => $course->cover, + 'summary' => $course->summary, + 'keywords' => $course->keywords, + 'category_id' => $course->category_id, + 'teacher_id' => $course->teacher_id, + 'market_price' => $course->market_price, + 'vip_price' => $course->vip_price, + 'study_expiry' => $course->study_expiry, + 'refund_expiry' => $course->refund_expiry, + 'rating' => $course->rating, + 'score' => $course->score, + 'model' => $course->model, + 'level' => $course->level, + 'attrs' => $course->attrs, + 'category' => $category, + 'teacher' => $teacher, + 'user_count' => $course->user_count, + 'lesson_count' => $course->lesson_count, + 'comment_count' => $course->comment_count, + 'consult_count' => $course->consult_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, + ]; + } + +} diff --git a/app/Services/Search/CourseHandler.php b/app/Services/Search/CourseHandler.php new file mode 100644 index 00000000..f9322e20 --- /dev/null +++ b/app/Services/Search/CourseHandler.php @@ -0,0 +1,88 @@ +xs = new \XS($fileName); + } + + /** + * 获取XS + * + * @return \XS + */ + public function getXS() + { + return $this->xs; + } + + /** + * 搜索课程 + * + * @param string $query + * @param int $limit + * @param int $offset + * @return array + * @throws \XSException + */ + public function search($query, $limit = 15, $offset = 0) + { + $search = $this->xs->getSearch(); + + $docs = $search->setQuery($query)->setLimit($limit, $offset)->search(); + + $total = $search->getLastCount(); + + $fields = array_keys($this->xs->getAllFields()); + + $items = []; + + foreach ($docs as $doc) { + $item = []; + foreach ($fields as $field) { + if (in_array($field, ['title', 'summary'])) { + $item[$field] = $search->highlight($doc->{$field}); + } else { + $item[$field] = $doc->{$field}; + } + } + $items[] = $item; + } + + return [ + 'total' => $total, + 'items' => $items, + ]; + } + + /** + * 获取相关搜索 + * + * @param string $query + * @param int $limit + * @return array + * @throws \XSException + */ + public function getRelatedQuery($query, $limit = 10) + { + $search = $this->xs->getSearch(); + + $search->setQuery($query); + + return $search->getRelatedQuery($query, $limit); + } + +} diff --git a/config/xs.course.default.ini b/config/xs.course.default.ini index ccc82062..f6610e15 100644 --- a/config/xs.course.default.ini +++ b/config/xs.course.default.ini @@ -20,6 +20,16 @@ type = body type = string index = mixed +[category_id] +type = string +index = self +tokenizer = full + +[teacher_id] +type = string +index = self +tokenizer = full + [market_price] type = string @@ -51,6 +61,12 @@ tokenizer = full [attrs] type = string +[category] +type = string + +[teacher] +type = string + [user_count] type = string diff --git a/public/static/admin/js/common.js b/public/static/admin/js/common.js index 3dbc27c0..f7a47a0b 100644 --- a/public/static/admin/js/common.js +++ b/public/static/admin/js/common.js @@ -48,8 +48,51 @@ layui.use(['jquery', 'form', 'element', 'layer', 'dropdown'], function () { return false; }); + form.on('switch(published)', function (data) { + var checked = $(this).is(':checked'); + var published = checked ? 1 : 0; + var url = $(this).attr('data-url'); + var tips = published === 1 ? '确定要上线?' : '确定要下线?'; + layer.confirm(tips, function () { + $.ajax({ + type: 'POST', + url: url, + data: {published: published}, + success: function (res) { + layer.msg(res.msg, {icon: 1}); + }, + error: function (xhr) { + var json = JSON.parse(xhr.responseText); + layer.msg(json.msg, {icon: 2}); + data.elem.checked = !checked; + form.render(); + } + }); + }, function () { + data.elem.checked = !checked; + form.render(); + }); + }); + + $('.kg-priority-input').on('change', function () { + var priority = $(this).val(); + var url = $(this).attr('data-url'); + $.ajax({ + type: 'POST', + url: url, + data: {priority: priority}, + success: function (res) { + layer.msg(res.msg, {icon: 1}); + }, + error: function (xhr) { + var json = JSON.parse(xhr.responseText); + layer.msg(json.msg, {icon: 2}); + } + }); + }); + $('.kg-delete,.kg-restore').on('click', function () { - var url = $(this).attr('url'); + var url = $(this).attr('data-url'); var tips = $(this).hasClass('kg-delete') ? '确定要删除吗?' : '确定要还原吗?'; layer.confirm(tips, function () { $.ajax({ diff --git a/scheduler.php b/scheduler.php index c9a8ca1c..1a07e522 100644 --- a/scheduler.php +++ b/scheduler.php @@ -64,7 +64,7 @@ $scheduler->php($script, $bin, ['--task' => 'count_course', '--action' => 'main' $scheduler->php($script, $bin, ['--task' => 'live_notice_provider', '--action' => 'main']) ->daily(3, 23); -$scheduler->php($script, $bin, ['--task' => 'clean_auth_token', '--action' => 'main']) +$scheduler->php($script, $bin, ['--task' => 'clean_token', '--action' => 'main']) ->daily(3, 31); $scheduler->run(); \ No newline at end of file