diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c14648b..051cbc23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ### [v1.5.1](https://gitee.com/koogua/course-tencent-cloud/releases/v1.5.1)(2022-03-17) +- 推荐课程等列表补充属性 +- 修正后台评价列表中的搜索链接 +- 修正后台点播设置视频码率后500错误问题 +- 修正多码率远程播放地址部分为空播放问题 +- 修正更新套餐课程缓存传参数据类型问题 +- 修正第三方登录解除绑定失败问题 +- 使用ServiceTrait归纳获取服务代码 +- 优化anonymous隐藏部分字符函数 +- 去除js_vars中关于IM客服的配置 - 增加验证码开关 ### [v1.5.0](https://gitee.com/koogua/course-tencent-cloud/releases/v1.5.0)(2022-02-17) diff --git a/app/Caches/CourseRecommendedList.php b/app/Caches/CourseRecommendedList.php index 23d35b4d..fb6c5d17 100644 --- a/app/Caches/CourseRecommendedList.php +++ b/app/Caches/CourseRecommendedList.php @@ -57,12 +57,15 @@ class CourseRecommendedList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/CourseRelatedList.php b/app/Caches/CourseRelatedList.php index 00220871..46274fc1 100644 --- a/app/Caches/CourseRelatedList.php +++ b/app/Caches/CourseRelatedList.php @@ -58,12 +58,15 @@ class CourseRelatedList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/IndexFeaturedCourseList.php b/app/Caches/IndexFeaturedCourseList.php index db32e861..54b44f4d 100644 --- a/app/Caches/IndexFeaturedCourseList.php +++ b/app/Caches/IndexFeaturedCourseList.php @@ -76,12 +76,15 @@ class IndexFeaturedCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/IndexFreeCourseList.php b/app/Caches/IndexFreeCourseList.php index 23e1c41e..d96847c0 100644 --- a/app/Caches/IndexFreeCourseList.php +++ b/app/Caches/IndexFreeCourseList.php @@ -76,12 +76,15 @@ class IndexFreeCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/IndexNewCourseList.php b/app/Caches/IndexNewCourseList.php index 33bb9b32..27d83172 100644 --- a/app/Caches/IndexNewCourseList.php +++ b/app/Caches/IndexNewCourseList.php @@ -76,12 +76,15 @@ class IndexNewCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/IndexSimpleFeaturedCourseList.php b/app/Caches/IndexSimpleFeaturedCourseList.php index 32801d99..1ea87812 100644 --- a/app/Caches/IndexSimpleFeaturedCourseList.php +++ b/app/Caches/IndexSimpleFeaturedCourseList.php @@ -53,12 +53,15 @@ class IndexSimpleFeaturedCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/IndexSimpleFreeCourseList.php b/app/Caches/IndexSimpleFreeCourseList.php index 9a71dbb7..065c6066 100644 --- a/app/Caches/IndexSimpleFreeCourseList.php +++ b/app/Caches/IndexSimpleFreeCourseList.php @@ -53,12 +53,15 @@ class IndexSimpleFreeCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/IndexSimpleNewCourseList.php b/app/Caches/IndexSimpleNewCourseList.php index a498fac7..b6e0b6b9 100644 --- a/app/Caches/IndexSimpleNewCourseList.php +++ b/app/Caches/IndexSimpleNewCourseList.php @@ -53,12 +53,15 @@ class IndexSimpleNewCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/IndexSimpleVipCourseList.php b/app/Caches/IndexSimpleVipCourseList.php index 7162d431..bb073985 100644 --- a/app/Caches/IndexSimpleVipCourseList.php +++ b/app/Caches/IndexSimpleVipCourseList.php @@ -53,12 +53,15 @@ class IndexSimpleVipCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/IndexVipCourseList.php b/app/Caches/IndexVipCourseList.php index 4d8d78a6..db09222a 100644 --- a/app/Caches/IndexVipCourseList.php +++ b/app/Caches/IndexVipCourseList.php @@ -76,12 +76,15 @@ class IndexVipCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Caches/PackageCourseList.php b/app/Caches/PackageCourseList.php index 0a4965ef..2843cd71 100644 --- a/app/Caches/PackageCourseList.php +++ b/app/Caches/PackageCourseList.php @@ -58,13 +58,15 @@ class PackageCourseList extends Cache 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, - 'origin_price' => $course->origin_price, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, 'model' => $course->model, 'level' => $course->level, + 'rating' => round($course->rating, 1), + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, + 'review_count' => $course->review_count, + 'favorite_count' => $course->favorite_count, ]; } diff --git a/app/Console/Tasks/Task.php b/app/Console/Tasks/Task.php index b6f74790..a4cf06fd 100644 --- a/app/Console/Tasks/Task.php +++ b/app/Console/Tasks/Task.php @@ -7,46 +7,9 @@ namespace App\Console\Tasks; -use App\Services\Service as AppService; - +use App\Traits\Service as ServiceTrait; class Task extends \Phalcon\Cli\Task { - - public function getConfig() - { - $appService = new AppService(); - - return $appService->getConfig(); - } - - - public function getCache() - { - $appService = new AppService(); - - return $appService->getCache(); - } - - public function getRedis() - { - $appService = new AppService(); - - return $appService->getRedis(); - } - - public function getLogger($channel = 'console') - { - $appService = new AppService(); - - return $appService->getLogger($channel); - } - - public function getSettings($section) - { - $appService = new AppService(); - - return $appService->getSettings($section); - } - + use ServiceTrait; } diff --git a/app/Http/Admin/Services/Package.php b/app/Http/Admin/Services/Package.php index adf44462..f42e040e 100644 --- a/app/Http/Admin/Services/Package.php +++ b/app/Http/Admin/Services/Package.php @@ -106,7 +106,7 @@ class Package extends Service $package->create($data); - $this->rebuildPackageCache($package); + $this->rebuildPackageCache($package->id); return $package; } @@ -151,9 +151,9 @@ class Package extends Service $package->update($data); - $this->handlePackagedCourses($package); - $this->updatePackageCourseCount($package); - $this->rebuildPackageCache($package); + $this->handlePackagedCourses($package->id); + $this->updatePackageCourseCount($package->id); + $this->rebuildPackageCache($package->id); return $package; } @@ -166,8 +166,8 @@ class Package extends Service $package->update(); - $this->handlePackagedCourses($package); - $this->rebuildPackageCache($package); + $this->handlePackagedCourses($package->id); + $this->rebuildPackageCache($package->id); return $package; } @@ -180,8 +180,8 @@ class Package extends Service $package->update(); - $this->handlePackagedCourses($package); - $this->rebuildPackageCache($package); + $this->handlePackagedCourses($package->id); + $this->rebuildPackageCache($package->id); return $package; } @@ -228,25 +228,27 @@ class Package extends Service } } - protected function handlePackagedCourses(PackageModel $package) + protected function handlePackagedCourses($packageId) { $packageRepo = new PackageRepo(); - $courses = $packageRepo->findCourses($package->id); + $courses = $packageRepo->findCourses($packageId); if ($courses->count() == 0) return; foreach ($courses as $course) { - $this->rebuildCoursePackageCache($course); - $this->recountCoursePackages($course); + $this->rebuildCoursePackageCache($course->id); + $this->recountCoursePackages($course->id); } } - protected function updatePackageCourseCount(PackageModel $package) + protected function updatePackageCourseCount($packageId) { $packageRepo = new PackageRepo(); - $courseCount = $packageRepo->countCourses($package->id); + $package = $packageRepo->findById($packageId); + + $courseCount = $packageRepo->countCourses($packageId); $package->course_count = $courseCount; @@ -266,29 +268,31 @@ class Package extends Service $course->update(); } - protected function rebuildPackageCache(PackageModel $package) + protected function rebuildPackageCache($packageId) { $cache = new PackageCache(); - $cache->rebuild($package->id); + $cache->rebuild($packageId); $cache = new PackageCourseListCache(); - $cache->rebuild($package->id); + $cache->rebuild($packageId); } - protected function rebuildCoursePackageCache(CourseModel $course) + protected function rebuildCoursePackageCache($courseId) { $cache = new CoursePackageListCache(); - $cache->rebuild($course->id); + $cache->rebuild($courseId); } - protected function recountCoursePackages(CourseModel $course) + protected function recountCoursePackages($courseId) { $courseRepo = new CourseRepo(); - $course->package_count = $courseRepo->countPackages($course->id); + $course = $courseRepo->findById($courseId); + + $course->package_count = $courseRepo->countPackages($courseId); $course->update(); } diff --git a/app/Http/Admin/Views/moderation/reviews.volt b/app/Http/Admin/Views/moderation/reviews.volt index 256ed838..f3cc40c3 100644 --- a/app/Http/Admin/Views/moderation/reviews.volt +++ b/app/Http/Admin/Views/moderation/reviews.volt @@ -2,7 +2,7 @@ {% block content %} - {% set search_url = url({'for':'admin.consult.search'}) %} + {% set search_url = url({'for':'admin.review.search'}) %}
- 原始价格 - {{ '¥%0.2f'|format(course.origin_price) }} 优惠价格 {{ '¥%0.2f'|format(course.market_price) }} 会员价格 diff --git a/app/Http/Home/Views/partials/js_vars.volt b/app/Http/Home/Views/partials/js_vars.volt index 14bd81cd..40d2146b 100644 --- a/app/Http/Home/Views/partials/js_vars.volt +++ b/app/Http/Home/Views/partials/js_vars.volt @@ -29,9 +29,6 @@ tool_video_enabled: '{{ im_info.main.tool_video_enabled }}', msg_max_length: '{{ im_info.main.msg_max_length }}', }, - cs: { - enabled: '{{ im_info.cs.enabled }}' - }, ws: { connect_url: '{{ im_info.ws.connect_url }}', ping_interval: '{{ im_info.ws.ping_interval }}' diff --git a/app/Library/Helper.php b/app/Library/Helper.php index 3288ff70..7dcefc4b 100644 --- a/app/Library/Helper.php +++ b/app/Library/Helper.php @@ -499,8 +499,8 @@ function kg_anonymous($str) $start = 3; $end = $length - 4; } else { - $start = 1; - $end = $length - 2; + $start = ceil($length / 4); + $end = $length - $start - 1; } $list = []; diff --git a/app/Repos/Connect.php b/app/Repos/Connect.php index 7e6f7f82..4d580743 100644 --- a/app/Repos/Connect.php +++ b/app/Repos/Connect.php @@ -25,14 +25,18 @@ class Connect extends Repository $query->where('1 = 1'); - if (isset($where['user_id'])) { + if (!empty($where['user_id'])) { $query->andWhere('user_id = :user_id:', ['user_id' => $where['user_id']]); } - if (isset($where['provider'])) { + if (!empty($where['provider'])) { $query->andWhere('provider = :provider:', ['provider' => $where['provider']]); } + if (isset($where['deleted'])) { + $query->andWhere('deleted = :deleted:', ['deleted' => $where['deleted']]); + } + $query->orderBy('id DESC'); return $query->execute(); diff --git a/app/Services/ChapterVod.php b/app/Services/ChapterVod.php index 8f11bc3b..6b2e174e 100644 --- a/app/Services/ChapterVod.php +++ b/app/Services/ChapterVod.php @@ -23,12 +23,19 @@ class ChapterVod extends Service * 腾讯云点播优先 */ if ($vod->file_id) { - $result = $this->getCosPlayUrls($chapterId); + $playUrls = $this->getCosPlayUrls($chapterId); } else { - $result = $this->getRemotePlayUrls($chapterId); + $playUrls = $this->getRemotePlayUrls($chapterId); } - return $result; + /** + *过滤播放地址为空的条目 + */ + foreach ($playUrls as $key => $value) { + if (empty($value['url'])) unset($playUrls[$key]); + } + + return $playUrls; } public function getCosPlayUrls($chapterId) diff --git a/app/Services/Logic/Course/BasicInfo.php b/app/Services/Logic/Course/BasicInfo.php index 28eaaf44..12ab308b 100644 --- a/app/Services/Logic/Course/BasicInfo.php +++ b/app/Services/Logic/Course/BasicInfo.php @@ -46,9 +46,9 @@ class BasicInfo extends LogicService 'summary' => $course->summary, 'details' => $details, 'keywords' => $course->keywords, - 'origin_price' => $course->origin_price, - 'market_price' => $course->market_price, - 'vip_price' => $course->vip_price, + 'origin_price' => (float)$course->origin_price, + 'market_price' => (float)$course->market_price, + 'vip_price' => (float)$course->vip_price, 'study_expiry' => $course->study_expiry, 'refund_expiry' => $course->refund_expiry, 'teachers' => $teachers, diff --git a/app/Services/Logic/Course/CourseList.php b/app/Services/Logic/Course/CourseList.php index f3f62db1..ef4eb900 100644 --- a/app/Services/Logic/Course/CourseList.php +++ b/app/Services/Logic/Course/CourseList.php @@ -82,11 +82,11 @@ class CourseList extends LogicService 'id' => $course['id'], 'title' => $course['title'], 'cover' => $course['cover'], - 'market_price' => (float)$course['market_price'], - 'vip_price' => (float)$course['vip_price'], - 'rating' => round($course['rating'], 1), 'model' => $course['model'], 'level' => $course['level'], + 'rating' => round($course['rating'], 1), + 'market_price' => (float)$course['market_price'], + 'vip_price' => (float)$course['vip_price'], 'user_count' => $course['user_count'], 'lesson_count' => $course['lesson_count'], 'review_count' => $course['review_count'], diff --git a/app/Services/Logic/Course/PackageList.php b/app/Services/Logic/Course/PackageList.php index aa8f29b5..876e5c67 100644 --- a/app/Services/Logic/Course/PackageList.php +++ b/app/Services/Logic/Course/PackageList.php @@ -43,7 +43,7 @@ class PackageList extends LogicService if ($courses) { foreach ($courses as $course) { - $package['origin_price'] += $course['origin_price']; + $package['origin_price'] += $course['market_price']; } $package['courses'] = $this->sortCourses($courses, $firstCourseId); } diff --git a/app/Services/Logic/Order/OrderConfirm.php b/app/Services/Logic/Order/OrderConfirm.php index 0543a971..f4e466e9 100644 --- a/app/Services/Logic/Order/OrderConfirm.php +++ b/app/Services/Logic/Order/OrderConfirm.php @@ -38,7 +38,7 @@ class OrderConfirm extends LogicService $result['item_info']['course'] = $this->handleCourseInfo($course); - $result['total_amount'] = $course->origin_price; + $result['total_amount'] = $course->market_price; $result['pay_amount'] = $user->vip ? $course->vip_price : $course->market_price; $result['discount_amount'] = $result['total_amount'] - $result['pay_amount']; @@ -51,7 +51,7 @@ class OrderConfirm extends LogicService $result['total_amount'] = 0; foreach ($result['item_info']['package']['courses'] as $course) { - $result['total_amount'] += $course['origin_price']; + $result['total_amount'] += $course['market_price']; } $result['pay_amount'] = $user->vip ? $package->vip_price : $package->market_price; diff --git a/app/Services/Logic/User/Console/ConnectDelete.php b/app/Services/Logic/User/Console/ConnectDelete.php index b2a4acc6..945cfba9 100644 --- a/app/Services/Logic/User/Console/ConnectDelete.php +++ b/app/Services/Logic/User/Console/ConnectDelete.php @@ -23,7 +23,9 @@ class ConnectDelete extends LogicService $validator->checkOwner($user->id, $connect->user_id); - $connect->delete(); + $connect->deleted = 1; + + $connect->update(); } } diff --git a/app/Services/Logic/User/UserInfo.php b/app/Services/Logic/User/UserInfo.php index 73d514ea..44c3fefc 100644 --- a/app/Services/Logic/User/UserInfo.php +++ b/app/Services/Logic/User/UserInfo.php @@ -48,6 +48,8 @@ class UserInfo extends LogicService 'comment_count' => $user->comment_count, 'friend_count' => $imUser->friend_count, 'group_count' => $imUser->group_count, + 'vip_expiry_time' => $user->vip_expiry_time, + 'lock_expiry_time' => $user->lock_expiry_time, 'active_time' => $user->active_time, 'create_time' => $user->create_time, 'update_time' => $user->update_time, diff --git a/app/Services/Service.php b/app/Services/Service.php index 2d9797c3..a1a43116 100644 --- a/app/Services/Service.php +++ b/app/Services/Service.php @@ -7,69 +7,12 @@ namespace App\Services; -use App\Caches\Setting as SettingCache; -use App\Library\Cache\Backend\Redis as RedisCache; -use App\Library\Logger as AppLogger; use App\Traits\Auth as AuthTrait; -use Phalcon\Config as PhConfig; -use Phalcon\Logger\Adapter\File as PhLogger; +use App\Traits\Service as ServiceTrait; use Phalcon\Mvc\User\Component; class Service extends Component { - use AuthTrait; - - /** - * @return PhConfig - */ - public function getConfig() - { - return $this->getDI()->getShared('config'); - } - - /** - * @return RedisCache - */ - public function getCache() - { - return $this->getDI()->getShared('cache'); - } - - /** - * @return \Redis - */ - public function getRedis() - { - return $this->getCache()->getRedis(); - } - - /** - * 获取Logger - * - * @param string $channel - * @return PhLogger - */ - public function getLogger($channel = null) - { - $logger = new AppLogger(); - - $channel = $channel ?: 'common'; - - return $logger->getInstance($channel); - } - - /** - * 获取某组配置项 - * - * @param string $section - * @return array - */ - public function getSettings($section) - { - $cache = new SettingCache(); - - return $cache->get($section); - } - + use ServiceTrait; } diff --git a/app/Traits/Service.php b/app/Traits/Service.php new file mode 100644 index 00000000..8ce0bf6d --- /dev/null +++ b/app/Traits/Service.php @@ -0,0 +1,72 @@ +getShared('config'); + } + + /** + * @return RedisCache + */ + public function getCache() + { + return Di::getDefault()->getShared('cache'); + } + + /** + * @return \Redis + */ + public function getRedis() + { + return $this->getCache()->getRedis(); + } + + /** + * 获取Logger + * + * @param string $channel + * @return PhLogger + */ + public function getLogger($channel = null) + { + $logger = new AppLogger(); + + $channel = $channel ?: 'common'; + + return $logger->getInstance($channel); + } + + /** + * 获取某组配置项 + * + * @param string $section + * @return array + */ + public function getSettings($section) + { + $cache = new SettingCache(); + + return $cache->get($section); + } + +} \ No newline at end of file diff --git a/public/static/home/css/common.css b/public/static/home/css/common.css index 90493a22..8c93a398 100644 --- a/public/static/home/css/common.css +++ b/public/static/home/css/common.css @@ -1505,6 +1505,7 @@ } .cart-course-card .price { + margin-right: 5px; color: red; }