From d21e70cb3c1a6ee9cd4bea3afa51093bac2d4155 Mon Sep 17 00:00:00 2001 From: xiaochong0302 Date: Tue, 22 Sep 2020 16:29:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Builders/HelpList.php | 4 +- app/Caches/ImActiveGroupList.php | 4 +- app/Caches/ImActiveUserList.php | 4 +- app/Caches/ImGroupActiveUserList.php | 4 +- app/Console/Tasks/CleanLogTask.php | 8 +-- app/Console/Tasks/CleanSessionTask.php | 1 - app/Console/Tasks/LiveNotifyTask.php | 2 - app/Console/Tasks/Task.php | 42 +++++++-------- .../Admin/Controllers/SessionController.php | 3 +- app/Http/Admin/Services/Package.php | 4 +- app/Http/Admin/Services/Role.php | 4 +- app/Http/Admin/Services/Session.php | 20 +------ app/Http/Home/Controllers/Controller.php | 29 ++++------ app/Http/Home/Controllers/ErrorController.php | 7 ++- app/Http/Home/Services/Index.php | 4 +- app/Listeners/{Profiler.php => Db.php} | 2 +- app/Listeners/Listener.php | 26 +++------ app/Providers/Database.php | 8 ++- app/Providers/EventsManager.php | 4 +- app/Repos/Teacher.php | 53 ------------------- app/Repos/TeacherLive.php | 46 ++++++++++++++++ app/Services/Auth/Admin.php | 2 +- .../Logic/Teacher/Console/LiveList.php | 38 +++++-------- config/events.php | 2 - public/static/home/css/error.css | 2 +- 25 files changed, 138 insertions(+), 185 deletions(-) rename app/Listeners/{Profiler.php => Db.php} (97%) delete mode 100644 app/Repos/Teacher.php create mode 100644 app/Repos/TeacherLive.php diff --git a/app/Builders/HelpList.php b/app/Builders/HelpList.php index cb9bcfec..3d982cd6 100644 --- a/app/Builders/HelpList.php +++ b/app/Builders/HelpList.php @@ -25,7 +25,9 @@ class HelpList extends Builder $items = $cache->get(CategoryModel::TYPE_HELP); - if (!$items) return []; + if (empty($items)) { + return []; + } $result = []; diff --git a/app/Caches/ImActiveGroupList.php b/app/Caches/ImActiveGroupList.php index 2dd6eb60..42ddd409 100644 --- a/app/Caches/ImActiveGroupList.php +++ b/app/Caches/ImActiveGroupList.php @@ -28,7 +28,9 @@ class ImActiveGroupList extends Cache { $groups = $this->findGroups(); - if (!$groups) return []; + if (empty($groups)) { + return []; + } $result = []; diff --git a/app/Caches/ImActiveUserList.php b/app/Caches/ImActiveUserList.php index b0958fd7..6123afe0 100644 --- a/app/Caches/ImActiveUserList.php +++ b/app/Caches/ImActiveUserList.php @@ -27,7 +27,9 @@ class ImActiveUserList extends Cache { $users = $this->findUsers($id); - if (!$users) return []; + if (empty($users)) { + return []; + } $result = []; diff --git a/app/Caches/ImGroupActiveUserList.php b/app/Caches/ImGroupActiveUserList.php index ce7a3aef..9097dbf9 100644 --- a/app/Caches/ImGroupActiveUserList.php +++ b/app/Caches/ImGroupActiveUserList.php @@ -27,7 +27,9 @@ class ImGroupActiveUserList extends Cache { $users = $this->findUsers($id); - if (!$users) return []; + if (empty($users)) { + return []; + } $result = []; diff --git a/app/Console/Tasks/CleanLogTask.php b/app/Console/Tasks/CleanLogTask.php index 2b242985..b4dd7ee9 100644 --- a/app/Console/Tasks/CleanLogTask.php +++ b/app/Console/Tasks/CleanLogTask.php @@ -11,7 +11,7 @@ class CleanLogTask extends Task $this->cleanConsoleLog(); $this->cleanHttpLog(); $this->cleanSqlLog(); - $this->cleanListenerLog(); + $this->cleanListenLog(); $this->cleanCaptchaLog(); $this->cleanMailLog(); $this->cleanSmsLog(); @@ -57,11 +57,11 @@ class CleanLogTask extends Task } /** - * 清理监听者日志 + * 清理监听日志 */ - protected function cleanListenerLog() + protected function cleanListenLog() { - $this->cleanLog('listener', 7); + $this->cleanLog('listen', 7); } /** diff --git a/app/Console/Tasks/CleanSessionTask.php b/app/Console/Tasks/CleanSessionTask.php index fb27ddef..7adbff5a 100644 --- a/app/Console/Tasks/CleanSessionTask.php +++ b/app/Console/Tasks/CleanSessionTask.php @@ -8,7 +8,6 @@ class CleanSessionTask extends Task public function mainAction() { $config = $this->getConfig(); - $cache = $this->getCache(); $redis = $this->getRedis(); $redis->select($config->path('session.db')); diff --git a/app/Console/Tasks/LiveNotifyTask.php b/app/Console/Tasks/LiveNotifyTask.php index a36c3cf7..ab6e2241 100644 --- a/app/Console/Tasks/LiveNotifyTask.php +++ b/app/Console/Tasks/LiveNotifyTask.php @@ -12,8 +12,6 @@ class LiveNotifyTask extends Task public function mainAction() { - $cache = $this->getCache(); - $redis = $this->getRedis(); $service = new LiveNotifyService(); diff --git a/app/Console/Tasks/Task.php b/app/Console/Tasks/Task.php index 44f9e1d4..6478ed18 100644 --- a/app/Console/Tasks/Task.php +++ b/app/Console/Tasks/Task.php @@ -2,48 +2,46 @@ namespace App\Console\Tasks; -use App\Library\Cache\Backend\Redis as RedisCache; -use App\Library\Logger as AppLogger; -use Phalcon\Config as PhConfig; -use Phalcon\Logger\Adapter\File as PhLogger; +use App\Services\Service as AppService; class Task extends \Phalcon\Cli\Task { - /** - * @return PhConfig - */ public function getConfig() { - return $this->getDI()->getShared('config'); + $appService = new AppService(); + + return $appService->getConfig(); } - /** - * @return RedisCache - */ + public function getCache() { - return $this->getDI()->getShared('cache'); + $appService = new AppService(); + + return $appService->getCache(); } - /** - * @return \Redis - */ public function getRedis() { - return $this->getCache()->getRedis(); + $appService = new AppService(); + + return $appService->getRedis(); } - /** - * @param null $channel - * @return PhLogger - */ public function getLogger($channel = null) { - $logger = new AppLogger(); + $appService = new AppService(); - return $logger->getInstance($channel); + return $appService->getLogger($channel); + } + + public function getSettings($section) + { + $appService = new AppService(); + + return $appService->getLogger($section); } } diff --git a/app/Http/Admin/Controllers/SessionController.php b/app/Http/Admin/Controllers/SessionController.php index 13fb2e66..2885b8d6 100644 --- a/app/Http/Admin/Controllers/SessionController.php +++ b/app/Http/Admin/Controllers/SessionController.php @@ -31,12 +31,11 @@ class SessionController extends \Phalcon\Mvc\Controller $sessionService = new SessionService(); - $captcha = $sessionService->getCaptchaSettings(); + $captcha = $sessionService->getSettings('captcha'); if ($this->request->isPost()) { $this->checkHttpReferer(); - $this->checkCsrfToken(); $sessionService->login(); diff --git a/app/Http/Admin/Services/Package.php b/app/Http/Admin/Services/Package.php index 8e33997b..e288eb88 100644 --- a/app/Http/Admin/Services/Package.php +++ b/app/Http/Admin/Services/Package.php @@ -129,7 +129,9 @@ class Package extends Service public function getGuidingCourses($courseIds) { - if (!$courseIds) return []; + if (empty($courseIds)) { + return []; + } $courseRepo = new CourseRepo(); diff --git a/app/Http/Admin/Services/Role.php b/app/Http/Admin/Services/Role.php index 09c1accc..3cf97cd8 100644 --- a/app/Http/Admin/Services/Role.php +++ b/app/Http/Admin/Services/Role.php @@ -116,7 +116,9 @@ class Role extends Service */ protected function handleRoutes($routes) { - if (!$routes) return []; + if (empty($routes)) { + return []; + } $list = []; diff --git a/app/Http/Admin/Services/Session.php b/app/Http/Admin/Services/Session.php index f0485075..2bff96d1 100644 --- a/app/Http/Admin/Services/Session.php +++ b/app/Http/Admin/Services/Session.php @@ -2,7 +2,6 @@ namespace App\Http\Admin\Services; -use App\Repos\Setting as SettingRepo; use App\Services\Auth\Admin as AdminAuth; use App\Validators\Account as AccountValidator; use App\Validators\Captcha as CaptchaValidator; @@ -34,7 +33,7 @@ class Session extends Service $user = $accountValidator->checkAdminLogin($post['account'], $post['password']); - $captchaSettings = $this->getCaptchaSettings(); + $captchaSettings = $this->getSettings('captcha'); /** * 验证码是一次性的,放到最后检查,减少第三方调用 @@ -54,21 +53,4 @@ class Session extends Service $this->auth->clearAuthInfo(); } - public function getCaptchaSettings() - { - $settingsRepo = new SettingRepo(); - - $items = $settingsRepo->findBySection('captcha'); - - $result = []; - - if ($items->count() > 0) { - foreach ($items as $item) { - $result[$item->item_key] = $item->item_value; - } - } - - return $result; - } - } diff --git a/app/Http/Home/Controllers/Controller.php b/app/Http/Home/Controllers/Controller.php index 0842e37f..78b8e630 100644 --- a/app/Http/Home/Controllers/Controller.php +++ b/app/Http/Home/Controllers/Controller.php @@ -8,9 +8,9 @@ use App\Library\AppInfo as AppInfo; use App\Library\Seo as Seo; use App\Models\User as UserModel; use App\Services\Auth\Home as HomeAuth; +use App\Services\Service as AppService; use App\Traits\Response as ResponseTrait; use App\Traits\Security as SecurityTrait; -use Phalcon\Config; use Phalcon\Mvc\Dispatcher; class Controller extends \Phalcon\Mvc\Controller @@ -54,7 +54,12 @@ class Controller extends \Phalcon\Mvc\Controller $this->siteInfo = $this->getSiteInfo(); $this->authUser = $this->getAuthUser(); - $this->checkSiteStatus(); + if ($this->siteInfo['status'] == 'closed') { + $dispatcher->forward([ + 'controller' => 'error', + 'action' => 'maintain', + ]); + } if ($this->isNotSafeRequest()) { $this->checkHttpReferer(); @@ -111,9 +116,9 @@ class Controller extends \Phalcon\Mvc\Controller protected function getSiteInfo() { - $cache = new SettingCache(); + $appService = new AppService(); - return $cache->get('site'); + return $appService->getSettings('site'); } protected function getAppInfo() @@ -143,23 +148,11 @@ class Controller extends \Phalcon\Mvc\Controller ]; } - /** - * @return Config - */ protected function getConfig() { - return $this->getDI()->get('config'); - } + $appService = new AppService(); - protected function checkSiteStatus() - { - if ($this->siteInfo['status'] == 'closed') { - $this->dispatcher->forward([ - 'controller' => 'error', - 'action' => 'maintain', - 'params' => ['message' => $this->siteInfo['closed_tips']], - ]); - } + return $appService->getConfig(); } } diff --git a/app/Http/Home/Controllers/ErrorController.php b/app/Http/Home/Controllers/ErrorController.php index 62c1386f..a0155342 100644 --- a/app/Http/Home/Controllers/ErrorController.php +++ b/app/Http/Home/Controllers/ErrorController.php @@ -2,6 +2,7 @@ namespace App\Http\Home\Controllers; +use App\Services\Service as AppService; use App\Traits\Response as ResponseTrait; /** @@ -72,11 +73,13 @@ class ErrorController extends \Phalcon\Mvc\Controller */ public function maintainAction() { - $message = $this->dispatcher->getParam('message'); + $appService = new AppService(); + + $siteInfo = $appService->getSettings('site'); $this->response->setStatusCode(503); - $this->view->setVar('message', $message); + $this->view->setVar('message', $siteInfo['closed_tips']); } } diff --git a/app/Http/Home/Services/Index.php b/app/Http/Home/Services/Index.php index 44e8f15c..fc46e91d 100644 --- a/app/Http/Home/Services/Index.php +++ b/app/Http/Home/Services/Index.php @@ -24,7 +24,9 @@ class Index extends Service */ $slides = $cache->get(); - if (!$slides) return []; + if (empty($slides)) { + return []; + } foreach ($slides as $key => $slide) { diff --git a/app/Listeners/Profiler.php b/app/Listeners/Db.php similarity index 97% rename from app/Listeners/Profiler.php rename to app/Listeners/Db.php index 1518702d..06fa82e3 100644 --- a/app/Listeners/Profiler.php +++ b/app/Listeners/Db.php @@ -7,7 +7,7 @@ use Phalcon\Db\Profiler as DbProfiler; use Phalcon\Events\Event as PhEvent; use Phalcon\Logger\Adapter\File as FileLogger; -class Profiler extends Listener +class Db extends Listener { /** diff --git a/app/Listeners/Listener.php b/app/Listeners/Listener.php index ce70358a..9e066d1a 100644 --- a/app/Listeners/Listener.php +++ b/app/Listeners/Listener.php @@ -2,40 +2,26 @@ namespace App\Listeners; -use App\Caches\Setting as SectionConfigCache; -use App\Library\Logger as AppLogger; -use Phalcon\Logger\Adapter\File as FileLogger; +use App\Services\Service as AppService; use Phalcon\Mvc\User\Plugin as UserPlugin; class Listener extends UserPlugin { - /** - * 获取Logger - * - * @param mixed $channel - * @return FileLogger - */ public function getLogger($channel = null) { - $logger = new AppLogger(); + $appService = new AppService(); - $channel = $channel ?: 'listener'; + $channel = $channel ?: 'listen'; - return $logger->getInstance($channel); + return $appService->getLogger($channel); } - /** - * 获取某组配置项 - * - * @param string $section - * @return array - */ public function getSettings($section) { - $cache = new SectionConfigCache(); + $appService = new AppService(); - return $cache->get($section); + return $appService->getSettings($section); } } diff --git a/app/Providers/Database.php b/app/Providers/Database.php index d1a6705a..84fd533e 100644 --- a/app/Providers/Database.php +++ b/app/Providers/Database.php @@ -2,8 +2,10 @@ namespace App\Providers; -use Phalcon\Config; +use App\Listeners\Db as DbListener; +use Phalcon\Config as Config; use Phalcon\Db\Adapter\Pdo\Mysql as MySqlAdapter; +use Phalcon\Events\Manager as EventsManager; class Database extends Provider { @@ -35,7 +37,9 @@ class Database extends Provider $connection = new MySqlAdapter($options); if ($config->get('env') == ENV_DEV) { - $connection->setEventsManager($this->getEventsManager()); + $eventsManager = new EventsManager(); + $eventsManager->attach('db', new DbListener()); + $connection->setEventsManager($eventsManager); } return $connection; diff --git a/app/Providers/EventsManager.php b/app/Providers/EventsManager.php index 9e5201c9..8fa52842 100644 --- a/app/Providers/EventsManager.php +++ b/app/Providers/EventsManager.php @@ -2,7 +2,7 @@ namespace App\Providers; -use Phalcon\Events\Manager as PhalconEventsManager; +use Phalcon\Events\Manager as PhEventsManager; class EventsManager extends Provider { @@ -15,7 +15,7 @@ class EventsManager extends Provider $events = require config_path('events.php'); - $eventsManager = new PhalconEventsManager(); + $eventsManager = new PhEventsManager(); foreach ($events as $eventType => $handler) { $eventsManager->attach($eventType, new $handler()); diff --git a/app/Repos/Teacher.php b/app/Repos/Teacher.php deleted file mode 100644 index 8e68a334..00000000 --- a/app/Repos/Teacher.php +++ /dev/null @@ -1,53 +0,0 @@ -modelsManager->createBuilder() - ->columns(['c.id', 'c.title', 'c.course_id', 'cl.start_time', 'cl.end_time']) - ->addFrom(ChapterModel::class, 'c') - ->join(ChapterLiveModel::class, 'c.id = cl.chapter_id', 'cl') - ->inWhere('cl.course_id', $courseIds) - ->andWhere('cl.start_time > :start_time:', ['start_time' => $startTime]) - ->orderBy('cl.start_time ASC'); - - $pager = new PagerQueryBuilder([ - 'builder' => $builder, - 'page' => $page, - 'limit' => $limit, - ]); - - return $pager->paginate(); - } - - /** - * @param int $userId - * @return ResultsetInterface|Resultset|CourseModel[] - */ - public function findLiveCourses($userId) - { - return $this->modelsManager->createBuilder() - ->columns('c.*') - ->addFrom(CourseModel::class, 'c') - ->join(CourseUserModel::class, 'c.id = cu.course_id', 'cu') - ->where('cu.user_id = :user_id:', ['user_id' => $userId]) - ->andWhere('cu.role_type = :role_type:', ['role_type' => CourseUserModel::ROLE_TEACHER]) - ->andWhere('c.model = :model:', ['model' => CourseModel::MODEL_LIVE]) - ->getQuery()->execute(); - } - -} diff --git a/app/Repos/TeacherLive.php b/app/Repos/TeacherLive.php new file mode 100644 index 00000000..dc68cd16 --- /dev/null +++ b/app/Repos/TeacherLive.php @@ -0,0 +1,46 @@ + 'course.id', + 'course_title' => 'course.title', + 'chapter_id' => 'chapter.id', + 'chapter_title' => 'chapter.title', + 'live_start_time' => 'cl.start_time', + 'live_end_time' => 'cl.end_time', + ]; + + $builder = $this->modelsManager->createBuilder() + ->columns($columns) + ->addFrom(ChapterModel::class, 'chapter') + ->join(ChapterLiveModel::class, 'chapter.id = cl.chapter_id', 'cl') + ->join(CourseModel::class, 'chapter.course_id = course.id', 'course') + ->join(CourseUserModel::class, 'course.id = cu.course_id', 'cu') + ->where('cu.user_id = :user_id:', ['user_id' => $userId]) + ->andWhere('cu.role_type = :role_type:', ['role_type' => CourseUserModel::ROLE_TEACHER]) + ->andWhere('course.model = :model:', ['model' => CourseModel::MODEL_LIVE]) + ->andWhere('cl.start_time > :start_time:', ['start_time' => strtotime('today')]) + ->orderBy('cl.start_time ASC'); + + $pager = new PagerQueryBuilder([ + 'builder' => $builder, + 'page' => $page, + 'limit' => $limit, + ]); + + return $pager->paginate(); + } + +} diff --git a/app/Services/Auth/Admin.php b/app/Services/Auth/Admin.php index 865a2caf..9999441e 100644 --- a/app/Services/Auth/Admin.php +++ b/app/Services/Auth/Admin.php @@ -55,7 +55,7 @@ class Admin extends AuthService { $authUser = $this->getAuthInfo(); - if ($authUser['root']) { + if ($authUser['root'] == 1) { return true; } diff --git a/app/Services/Logic/Teacher/Console/LiveList.php b/app/Services/Logic/Teacher/Console/LiveList.php index 2bd55f7e..ae1a9ce2 100644 --- a/app/Services/Logic/Teacher/Console/LiveList.php +++ b/app/Services/Logic/Teacher/Console/LiveList.php @@ -3,7 +3,7 @@ namespace App\Services\Logic\Teacher\Console; use App\Library\Paginator\Query as PagerQuery; -use App\Repos\Teacher as TeacherRepo; +use App\Repos\TeacherLive as TeacherLiveRepo; use App\Services\Logic\Service; class LiveList extends Service @@ -13,31 +13,14 @@ class LiveList extends Service { $user = $this->getLoginUser(); - $teacherRepo = new TeacherRepo(); - - $courses = $teacherRepo->findLiveCourses($user->id); - - if ($courses->count() == 0) { - return []; - } - - $courseMapping = []; - - foreach ($courses as $course) { - $courseMapping[$course->id] = [ - 'id' => $course->id, - 'title' => $course->title, - ]; - } - - $courseIds = kg_array_column($courses->toArray(), 'id'); + $teacherLiveRepo = new TeacherLiveRepo(); $pagerQuery = new PagerQuery(); $page = $pagerQuery->getPage(); $limit = $pagerQuery->getLimit(); - $pager = $teacherRepo->paginateLiveChapters($courseIds, $page, $limit); + $pager = $teacherLiveRepo->paginate($user->id, $page, $limit); if ($pager->total_items == 0) { return $pager; @@ -47,13 +30,16 @@ class LiveList extends Service foreach ($pager->items as $item) { $items[] = [ - 'course' => $courseMapping[$item->course_id], - 'chapter' => [ - 'id' => $item->id, - 'title' => $item->title, + 'course' => [ + 'id' => $item->course_id, + 'title' => $item->course_title, ], - 'start_time' => $item->start_time, - 'end_time' => $item->end_time, + 'chapter' => [ + 'id' => $item->chapter_id, + 'title' => $item->chapter_title, + ], + 'start_time' => $item->live_start_time, + 'end_time' => $item->live_end_time, ]; } diff --git a/config/events.php b/config/events.php index e1ea86fb..c4628c05 100644 --- a/config/events.php +++ b/config/events.php @@ -1,11 +1,9 @@ Profiler::class, 'pay' => Pay::class, 'userDailyCounter' => UserDailyCounter::class, ]; \ No newline at end of file diff --git a/public/static/home/css/error.css b/public/static/home/css/error.css index a20f9cc8..baddfa21 100644 --- a/public/static/home/css/error.css +++ b/public/static/home/css/error.css @@ -17,7 +17,7 @@ html { .kg-tips .message { margin-top: 20px; - color: #666; + font-size: 18px; } .kg-tips .layui-text {