From 1d2f1dd2667437586e5948671722ae34d1edd6c7 Mon Sep 17 00:00:00 2001 From: koogua Date: Sat, 12 Jun 2021 12:34:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?1.=E6=9B=B4=E6=94=B9=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=BB=A7=E6=89=BF=E5=9F=BA=E7=B1=BB=202.=E5=8D=87=E7=BA=A7layu?= =?UTF-8?q?i=E5=88=B02.6.8=203.=E5=8D=87=E7=BA=A7=E8=85=BE=E8=AE=AF?= =?UTF-8?q?=E4=BA=91=E6=92=AD=E6=94=BE=E5=99=A8=204.=E7=82=B9=E6=92=AD?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=96=E9=93=BE=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Builders/Builder.php | 4 +- app/Caches/Cache.php | 4 +- app/Caches/Counter.php | 4 +- app/Console/Tasks/VodEventTask.php | 3 - .../Admin/Controllers/ChapterController.php | 8 +- app/Http/Admin/Module.php | 8 +- app/Http/Admin/Services/AuthMenu.php | 4 +- app/Http/Admin/Services/ChapterContent.php | 89 +++++++- app/Http/Admin/Views/answer/list.volt | 2 +- app/Http/Admin/Views/article/list.volt | 2 +- app/Http/Admin/Views/category/list.volt | 2 +- .../Admin/Views/chapter/edit_lesson_vod.volt | 215 +++++++++++++----- .../Admin/Views/chapter/lessons_live.volt | 2 +- .../Admin/Views/chapter/lessons_offline.volt | 2 +- .../Admin/Views/chapter/lessons_read.volt | 2 +- app/Http/Admin/Views/chapter/lessons_vod.volt | 2 +- app/Http/Admin/Views/consult/list.volt | 2 +- app/Http/Admin/Views/course/chapters.volt | 2 +- app/Http/Admin/Views/course/list.volt | 2 +- app/Http/Admin/Views/flash_sale/list.volt | 2 +- app/Http/Admin/Views/help/list.volt | 2 +- app/Http/Admin/Views/im/group/list.volt | 2 +- app/Http/Admin/Views/nav/list.volt | 2 +- app/Http/Admin/Views/package/list.volt | 2 +- app/Http/Admin/Views/page/list.volt | 2 +- app/Http/Admin/Views/point/gift/list.volt | 2 +- app/Http/Admin/Views/public/live_player.volt | 8 +- app/Http/Admin/Views/public/vod_player.volt | 18 +- app/Http/Admin/Views/question/list.volt | 2 +- app/Http/Admin/Views/review/list.volt | 2 +- app/Http/Admin/Views/role/list.volt | 2 +- app/Http/Admin/Views/setting/site.volt | 28 +-- app/Http/Admin/Views/slide/list.volt | 2 +- app/Http/Admin/Views/student/list.volt | 2 +- app/Http/Admin/Views/tag/list.volt | 2 +- app/Http/Admin/Views/templates/main.volt | 2 +- app/Http/Admin/Views/topic/list.volt | 2 +- app/Http/Admin/Views/user/list.volt | 2 +- app/Http/Api/Module.php | 8 +- app/Http/Home/Module.php | 8 +- app/Http/Home/Views/chapter/live/active.volt | 2 +- app/Http/Home/Views/chapter/vod.volt | 2 +- app/Http/Home/Views/im/chatlog.volt | 12 +- app/Http/Home/Views/user/console/answers.volt | 2 +- .../Home/Views/user/console/articles.volt | 2 +- .../Home/Views/user/console/questions.volt | 2 +- app/Http/Home/Views/user/console/reviews.volt | 2 +- app/Models/Chapter.php | 2 +- app/Models/ChapterVod.php | 19 ++ app/Models/User.php | 46 ++-- app/Providers/Provider.php | 4 +- app/Repos/Repository.php | 4 +- app/Services/ChapterVod.php | 41 +++- app/Services/Search/ArticleDocument.php | 4 +- app/Services/Search/CourseDocument.php | 4 +- app/Services/Search/GroupDocument.php | 4 +- app/Services/Search/QuestionDocument.php | 4 +- app/Services/Search/Searcher.php | 4 +- app/Services/Search/UserDocument.php | 4 +- app/Validators/ChapterVod.php | 31 +++ app/Validators/Validator.php | 4 +- bootstrap/ConsoleErrorHandler.php | 4 +- bootstrap/HttpErrorHandler.php | 4 +- composer.lock | 76 +++---- config/errors.php | 4 +- db/migrations/20210610034658.php | 44 ++++ public/static/admin/js/common.js | 4 +- public/static/home/js/common.js | 6 +- public/static/lib/layui.zip | Bin 0 -> 836419 bytes public/static/lib/layui/css/layui.css | 3 +- public/static/lib/layui/css/layui.mobile.css | 2 - public/static/lib/layui/css/modules/code.css | 3 +- .../css/modules/laydate/default/laydate.css | 3 +- .../layui/css/modules/layer/default/layer.css | 3 +- .../layui/css/modules/layim/mobile/layim.css | 2 - .../lib/layui/css/modules/layim/skin/1.jpg | Bin 18386 -> 0 bytes .../lib/layui/css/modules/layim/skin/5.jpg | Bin 33379 -> 0 bytes .../lib/layui/css/modules/layim/skin/logo.jpg | Bin 3284 -> 0 bytes public/static/lib/layui/extends/dropdown.css | 11 - .../static/lib/layui/extends/kg-dropdown.css | 66 ++++++ .../extends/{dropdown.js => kg-dropdown.js} | 6 +- .../layim/assets}/html/chatlog.html | 46 ++-- .../layim/assets}/html/find.html | 13 +- .../layim/assets}/html/getmsg.json | 27 +-- .../layim/assets}/html/msgbox.html | 35 ++- .../extends/layim/assets/images/default.png | Bin 0 -> 6727 bytes .../layim/assets}/images/face/0.gif | Bin .../layim/assets}/images/face/1.gif | Bin .../layim/assets}/images/face/10.gif | Bin .../layim/assets}/images/face/11.gif | Bin .../layim/assets}/images/face/12.gif | Bin .../layim/assets}/images/face/13.gif | Bin .../layim/assets}/images/face/14.gif | Bin .../layim/assets}/images/face/15.gif | Bin .../layim/assets}/images/face/16.gif | Bin .../layim/assets}/images/face/17.gif | Bin .../layim/assets}/images/face/18.gif | Bin .../layim/assets}/images/face/19.gif | Bin .../layim/assets}/images/face/2.gif | Bin .../layim/assets}/images/face/20.gif | Bin .../layim/assets}/images/face/21.gif | Bin .../layim/assets}/images/face/22.gif | Bin .../layim/assets}/images/face/23.gif | Bin .../layim/assets}/images/face/24.gif | Bin .../layim/assets}/images/face/25.gif | Bin .../layim/assets}/images/face/26.gif | Bin .../layim/assets}/images/face/27.gif | Bin .../layim/assets}/images/face/28.gif | Bin .../layim/assets}/images/face/29.gif | Bin .../layim/assets}/images/face/3.gif | Bin .../layim/assets}/images/face/30.gif | Bin .../layim/assets}/images/face/31.gif | Bin .../layim/assets}/images/face/32.gif | Bin .../layim/assets}/images/face/33.gif | Bin .../layim/assets}/images/face/34.gif | Bin .../layim/assets}/images/face/35.gif | Bin .../layim/assets}/images/face/36.gif | Bin .../layim/assets}/images/face/37.gif | Bin .../layim/assets}/images/face/38.gif | Bin .../layim/assets}/images/face/39.gif | Bin .../layim/assets}/images/face/4.gif | Bin .../layim/assets}/images/face/40.gif | Bin .../layim/assets}/images/face/41.gif | Bin .../layim/assets}/images/face/42.gif | Bin .../layim/assets}/images/face/43.gif | Bin .../layim/assets}/images/face/44.gif | Bin .../layim/assets}/images/face/45.gif | Bin .../layim/assets}/images/face/46.gif | Bin .../layim/assets}/images/face/47.gif | Bin .../layim/assets}/images/face/48.gif | Bin .../layim/assets}/images/face/49.gif | Bin .../layim/assets}/images/face/5.gif | Bin .../layim/assets}/images/face/50.gif | Bin .../layim/assets}/images/face/51.gif | Bin .../layim/assets}/images/face/52.gif | Bin .../layim/assets}/images/face/53.gif | Bin .../layim/assets}/images/face/54.gif | Bin .../layim/assets}/images/face/55.gif | Bin .../layim/assets}/images/face/56.gif | Bin .../layim/assets}/images/face/57.gif | Bin .../layim/assets}/images/face/58.gif | Bin .../layim/assets}/images/face/59.gif | Bin .../layim/assets}/images/face/6.gif | Bin .../layim/assets}/images/face/60.gif | Bin .../layim/assets}/images/face/61.gif | Bin .../layim/assets}/images/face/62.gif | Bin .../layim/assets}/images/face/63.gif | Bin .../layim/assets}/images/face/64.gif | Bin .../layim/assets}/images/face/65.gif | Bin .../layim/assets}/images/face/66.gif | Bin .../layim/assets}/images/face/67.gif | Bin .../layim/assets}/images/face/68.gif | Bin .../layim/assets}/images/face/69.gif | Bin .../layim/assets}/images/face/7.gif | Bin .../layim/assets}/images/face/70.gif | Bin .../layim/assets}/images/face/71.gif | Bin .../layim/assets}/images/face/8.gif | Bin .../layim/assets}/images/face/9.gif | Bin .../layim => extends/layim/assets}/layim.css | 2 +- .../extends/layim/assets/lib/layer-mobile.js | 2 + .../layim/assets/lib/layim-mobile-open.js | 4 + .../extends/layim/assets/lib/layim-mobile.js | 2 + .../layui/extends/layim/assets/lib/zepto.js | 2 + .../lib/layui/extends/layim/assets/mobile.css | 2 + .../lib/layui/extends/layim/assets/skin/1.jpg | Bin 0 -> 19399 bytes .../layim => extends/layim/assets}/skin/2.jpg | Bin .../layim => extends/layim/assets}/skin/3.jpg | Bin .../layim => extends/layim/assets}/skin/4.jpg | Bin .../lib/layui/extends/layim/assets/skin/5.jpg | Bin 0 -> 45901 bytes .../layim/assets}/voice/default.mp3 | Bin .../static/lib/layui/extends/layim/layim.js | 3 + public/static/lib/layui/font/iconfont.svg | 179 ++++++++++----- .../static/lib/layui/lay/modules/carousel.js | 2 - public/static/lib/layui/lay/modules/code.js | 2 - .../lib/layui/lay/modules/colorpicker.js | 2 - .../static/lib/layui/lay/modules/element.js | 2 - public/static/lib/layui/lay/modules/flow.js | 2 - public/static/lib/layui/lay/modules/form.js | 2 - public/static/lib/layui/lay/modules/jquery.js | 5 - .../static/lib/layui/lay/modules/laydate.js | 2 - .../static/lib/layui/lay/modules/layedit.js | 2 - public/static/lib/layui/lay/modules/layer.js | 2 - public/static/lib/layui/lay/modules/layim.js | 3 - .../static/lib/layui/lay/modules/laypage.js | 2 - public/static/lib/layui/lay/modules/laytpl.js | 2 - public/static/lib/layui/lay/modules/mobile.js | 2 - public/static/lib/layui/lay/modules/rate.js | 2 - public/static/lib/layui/lay/modules/slider.js | 2 - public/static/lib/layui/lay/modules/table.js | 2 - .../static/lib/layui/lay/modules/transfer.js | 2 - public/static/lib/layui/lay/modules/tree.js | 2 - public/static/lib/layui/lay/modules/upload.js | 2 - public/static/lib/layui/lay/modules/util.js | 2 - public/static/lib/layui/layui.all.js | 5 - public/static/lib/layui/layui.js | 7 +- public/static/lib/tc-player-2.4.0.js | 4 + 196 files changed, 839 insertions(+), 441 deletions(-) create mode 100644 db/migrations/20210610034658.php create mode 100644 public/static/lib/layui.zip delete mode 100644 public/static/lib/layui/css/layui.mobile.css delete mode 100644 public/static/lib/layui/css/modules/layim/mobile/layim.css delete mode 100644 public/static/lib/layui/css/modules/layim/skin/1.jpg delete mode 100644 public/static/lib/layui/css/modules/layim/skin/5.jpg delete mode 100644 public/static/lib/layui/css/modules/layim/skin/logo.jpg delete mode 100644 public/static/lib/layui/extends/dropdown.css create mode 100644 public/static/lib/layui/extends/kg-dropdown.css rename public/static/lib/layui/extends/{dropdown.js => kg-dropdown.js} (96%) rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/html/chatlog.html (59%) rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/html/find.html (60%) rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/html/getmsg.json (69%) rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/html/msgbox.html (87%) create mode 100644 public/static/lib/layui/extends/layim/assets/images/default.png rename public/static/lib/layui/{ => extends/layim/assets}/images/face/0.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/1.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/10.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/11.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/12.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/13.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/14.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/15.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/16.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/17.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/18.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/19.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/2.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/20.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/21.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/22.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/23.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/24.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/25.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/26.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/27.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/28.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/29.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/3.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/30.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/31.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/32.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/33.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/34.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/35.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/36.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/37.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/38.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/39.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/4.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/40.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/41.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/42.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/43.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/44.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/45.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/46.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/47.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/48.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/49.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/5.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/50.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/51.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/52.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/53.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/54.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/55.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/56.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/57.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/58.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/59.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/6.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/60.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/61.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/62.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/63.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/64.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/65.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/66.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/67.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/68.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/69.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/7.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/70.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/71.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/8.gif (100%) rename public/static/lib/layui/{ => extends/layim/assets}/images/face/9.gif (100%) rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/layim.css (99%) create mode 100644 public/static/lib/layui/extends/layim/assets/lib/layer-mobile.js create mode 100644 public/static/lib/layui/extends/layim/assets/lib/layim-mobile-open.js create mode 100644 public/static/lib/layui/extends/layim/assets/lib/layim-mobile.js create mode 100644 public/static/lib/layui/extends/layim/assets/lib/zepto.js create mode 100644 public/static/lib/layui/extends/layim/assets/mobile.css create mode 100644 public/static/lib/layui/extends/layim/assets/skin/1.jpg rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/skin/2.jpg (100%) rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/skin/3.jpg (100%) rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/skin/4.jpg (100%) create mode 100644 public/static/lib/layui/extends/layim/assets/skin/5.jpg rename public/static/lib/layui/{css/modules/layim => extends/layim/assets}/voice/default.mp3 (100%) create mode 100644 public/static/lib/layui/extends/layim/layim.js delete mode 100644 public/static/lib/layui/lay/modules/carousel.js delete mode 100644 public/static/lib/layui/lay/modules/code.js delete mode 100644 public/static/lib/layui/lay/modules/colorpicker.js delete mode 100644 public/static/lib/layui/lay/modules/element.js delete mode 100644 public/static/lib/layui/lay/modules/flow.js delete mode 100644 public/static/lib/layui/lay/modules/form.js delete mode 100644 public/static/lib/layui/lay/modules/jquery.js delete mode 100644 public/static/lib/layui/lay/modules/laydate.js delete mode 100644 public/static/lib/layui/lay/modules/layedit.js delete mode 100644 public/static/lib/layui/lay/modules/layer.js delete mode 100644 public/static/lib/layui/lay/modules/layim.js delete mode 100644 public/static/lib/layui/lay/modules/laypage.js delete mode 100644 public/static/lib/layui/lay/modules/laytpl.js delete mode 100644 public/static/lib/layui/lay/modules/mobile.js delete mode 100644 public/static/lib/layui/lay/modules/rate.js delete mode 100644 public/static/lib/layui/lay/modules/slider.js delete mode 100644 public/static/lib/layui/lay/modules/table.js delete mode 100644 public/static/lib/layui/lay/modules/transfer.js delete mode 100644 public/static/lib/layui/lay/modules/tree.js delete mode 100644 public/static/lib/layui/lay/modules/upload.js delete mode 100644 public/static/lib/layui/lay/modules/util.js delete mode 100644 public/static/lib/layui/layui.all.js create mode 100644 public/static/lib/tc-player-2.4.0.js diff --git a/app/Builders/Builder.php b/app/Builders/Builder.php index 0872c74c..559ca41e 100644 --- a/app/Builders/Builder.php +++ b/app/Builders/Builder.php @@ -2,9 +2,9 @@ namespace App\Builders; -use Phalcon\Mvc\User\Component; +use Phalcon\Di\Injectable; -class Builder extends Component +class Builder extends Injectable { public function objects(array $items) diff --git a/app/Caches/Cache.php b/app/Caches/Cache.php index f0b2cee4..8653f395 100644 --- a/app/Caches/Cache.php +++ b/app/Caches/Cache.php @@ -3,9 +3,9 @@ namespace App\Caches; use Phalcon\Cache\Backend\Redis as RedisCache; -use Phalcon\Mvc\User\Component; +use Phalcon\Di\Injectable; -abstract class Cache extends Component +abstract class Cache extends Injectable { /** diff --git a/app/Caches/Counter.php b/app/Caches/Counter.php index ad52c178..02b57a5e 100644 --- a/app/Caches/Counter.php +++ b/app/Caches/Counter.php @@ -3,9 +3,9 @@ namespace App\Caches; use App\Library\Cache\Backend\Redis as RedisCache; -use Phalcon\Mvc\User\Component; +use Phalcon\Di\Injectable; -abstract class Counter extends Component +abstract class Counter extends Injectable { /** diff --git a/app/Console/Tasks/VodEventTask.php b/app/Console/Tasks/VodEventTask.php index d752c46a..b1a70e44 100644 --- a/app/Console/Tasks/VodEventTask.php +++ b/app/Console/Tasks/VodEventTask.php @@ -63,7 +63,6 @@ class VodEventTask extends Task * 获取不到时长视为失败 */ if ($duration == 0) { - $attrs['file']['id'] = $fileId; $attrs['file']['status'] = ChapterModel::FS_FAILED; $chapter->update(['attrs' => $attrs]); return; @@ -77,7 +76,6 @@ class VodEventTask extends Task $vodService->createTransVideoTask($fileId); } - $attrs['file']['id'] = $fileId; $attrs['file']['status'] = ChapterModel::FS_TRANSLATING; $attrs['duration'] = (int)$duration; @@ -106,7 +104,6 @@ class VodEventTask extends Task * 获取不到处理结果视为失败 */ if (empty($processResult)) { - $attrs['file']['id'] = $fileId; $attrs['file']['status'] = ChapterModel::FS_FAILED; $chapter->update(['attrs' => $attrs]); return; diff --git a/app/Http/Admin/Controllers/ChapterController.php b/app/Http/Admin/Controllers/ChapterController.php index f1a40e5d..1dbbfc08 100644 --- a/app/Http/Admin/Controllers/ChapterController.php +++ b/app/Http/Admin/Controllers/ChapterController.php @@ -124,9 +124,13 @@ class ChapterController extends Controller switch ($course->model) { case CourseModel::MODEL_VOD: $vod = $contentService->getChapterVod($chapter->id); - $playUrls = $contentService->getPlayUrls($chapter->id); + $cosPlayUrls = $contentService->getCosPlayUrls($chapter->id); + $remotePlayUrls = $contentService->getRemotePlayUrls($chapter->id); + $remoteDuration = $contentService->getRemoteDuration($chapter->id); $this->view->setVar('vod', $vod); - $this->view->setVar('play_urls', $playUrls); + $this->view->setVar('cos_play_urls', $cosPlayUrls); + $this->view->setVar('remote_play_urls', $remotePlayUrls); + $this->view->setVar('remote_duration', $remoteDuration); break; case CourseModel::MODEL_LIVE: $live = $contentService->getChapterLive($chapter->id); diff --git a/app/Http/Admin/Module.php b/app/Http/Admin/Module.php index 8167ea89..7f4bd54c 100644 --- a/app/Http/Admin/Module.php +++ b/app/Http/Admin/Module.php @@ -10,14 +10,14 @@ use Phalcon\Mvc\ModuleDefinitionInterface; class Module implements ModuleDefinitionInterface { - public function registerAutoLoaders(DiInterface $di = null) + public function registerAutoLoaders(DiInterface $dependencyInjector = null) { } - public function registerServices(DiInterface $di) + public function registerServices(DiInterface $dependencyInjector) { - $di->setShared('view', function () { + $dependencyInjector->setShared('view', function () { $view = new MyView(); $view->setViewsDir(__DIR__ . '/Views'); $view->registerEngines([ @@ -26,7 +26,7 @@ class Module implements ModuleDefinitionInterface return $view; }); - $di->setShared('auth', function () { + $dependencyInjector->setShared('auth', function () { return new AdminAuth(); }); } diff --git a/app/Http/Admin/Services/AuthMenu.php b/app/Http/Admin/Services/AuthMenu.php index 89ec4be7..c0d0e004 100644 --- a/app/Http/Admin/Services/AuthMenu.php +++ b/app/Http/Admin/Services/AuthMenu.php @@ -3,9 +3,9 @@ namespace App\Http\Admin\Services; use App\Services\Auth\Admin as AdminAuth; -use Phalcon\Mvc\User\Component; +use Phalcon\Di\Injectable; -class AuthMenu extends Component +class AuthMenu extends Injectable { protected $authInfo; diff --git a/app/Http/Admin/Services/ChapterContent.php b/app/Http/Admin/Services/ChapterContent.php index a4bb6235..42202362 100644 --- a/app/Http/Admin/Services/ChapterContent.php +++ b/app/Http/Admin/Services/ChapterContent.php @@ -47,11 +47,37 @@ class ChapterContent extends Service return $chapterRepo->findChapterOffline($chapterId); } - public function getPlayUrls($chapterId) + public function getCosPlayUrls($chapterId) { $service = new ChapterVodService(); - return $service->getPlayUrls($chapterId); + return $service->getCosPlayUrls($chapterId); + } + + public function getRemotePlayUrls($chapterId) + { + $service = new ChapterVodService(); + + return $service->getRemotePlayUrls($chapterId); + } + + public function getRemoteDuration($chapterId) + { + $chapterRepo = new ChapterRepo(); + + $chapter = $chapterRepo->findById($chapterId); + + $duration = $chapter->attrs['duration'] ?? 0; + + $result = ['hours' => 0, 'minutes' => 0, 'seconds' => 0]; + + if ($duration == 0) return $result; + + $result['hours'] = floor($duration / 3600); + $result['minutes'] = floor(($duration - $result['hours'] * 3600) / 60); + $result['seconds'] = $duration % 60; + + return $result; } public function updateChapterContent($chapterId) @@ -84,6 +110,17 @@ class ChapterContent extends Service { $post = $this->request->getPost(); + if (isset($post['file_id'])) { + $this->updateCosChapterVod($chapter); + } elseif (isset($post['file_remote'])) { + $this->updateRemoteChapterVod($chapter); + } + } + + protected function updateCosChapterVod(ChapterModel $chapter) + { + $post = $this->request->getPost(); + $validator = new ChapterVodValidator(); $fileId = $validator->checkFileId($post['file_id']); @@ -119,6 +156,54 @@ class ChapterContent extends Service $this->updateCourseVodAttrs($vod->course_id); } + protected function updateRemoteChapterVod(ChapterModel $chapter) + { + $post = $this->request->getPost(); + + $validator = new ChapterVodValidator(); + + $hours = $post['file_remote']['duration']['hours'] ?? 0; + $minutes = $post['file_remote']['duration']['minutes'] ?? 0; + $seconds = $post['file_remote']['duration']['seconds'] ?? 0; + + $duration = 3600 * $hours + 60 * $minutes + $seconds; + + $validator->checkDuration($duration); + + $odUrl = $post['file_remote']['od']['url'] ?? ''; + $hdUrl = $post['file_remote']['hd']['url'] ?? ''; + $sdUrl = $post['file_remote']['sd']['url'] ?? ''; + + $fileRemote = []; + + $attrs = $chapter->attrs; + + if (!empty($odUrl)) { + $fileRemote['od']['url'] = $validator->checkFileUrl($odUrl); + $attrs['file']['status'] = ChapterModel::FS_UPLOADED; + $attrs['duration'] = $duration; + } + + if (!empty($hdUrl)) { + $fileRemote['hd']['url'] = $validator->checkFileUrl($hdUrl); + } + + if (!empty($sdUrl)) { + $fileRemote['sd']['url'] = $validator->checkFileUrl($sdUrl); + } + + $chapterRepo = new ChapterRepo(); + + $vod = $chapterRepo->findChapterVod($chapter->id); + $vod->file_remote = $fileRemote; + $vod->update(); + + $chapter->attrs = $attrs; + $chapter->update(); + + $this->updateCourseVodAttrs($vod->course_id); + } + protected function updateChapterLive(ChapterModel $chapter) { $post = $this->request->getPost(); diff --git a/app/Http/Admin/Views/answer/list.volt b/app/Http/Admin/Views/answer/list.volt index 80d3c81c..d25b93b5 100644 --- a/app/Http/Admin/Views/answer/list.volt +++ b/app/Http/Admin/Views/answer/list.volt @@ -40,7 +40,7 @@ {{ item.like_count }} {{ publish_status(item.published) }} -
+