mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-29 13:51:37 +08:00
1.优化搜索索引
2.优化服务状态监控 3.优化ChapterUserTrait
This commit is contained in:
parent
4bf963c9ab
commit
56d7ddc7d4
@ -177,13 +177,13 @@ class ServerMonitorTask extends Task
|
||||
|
||||
$searcher = new CourseSearcher();
|
||||
|
||||
$user = $searcher->search('id:1');
|
||||
$course = $searcher->search('id:1');
|
||||
|
||||
$benchmark->stop();
|
||||
|
||||
$elapsedTime = $benchmark->getElapsedTime();
|
||||
|
||||
if (empty($user)) {
|
||||
if (empty($course)) {
|
||||
return "xunsearch搜索失败";
|
||||
}
|
||||
|
||||
@ -242,4 +242,4 @@ class ServerMonitorTask extends Task
|
||||
return $coreCount * $processorCount;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -31,8 +31,9 @@ class ChapterInfo extends LogicService
|
||||
protected $user;
|
||||
|
||||
use CourseTrait;
|
||||
use CourseUserTrait;
|
||||
use ChapterTrait;
|
||||
use CourseUserTrait;
|
||||
use ChapterUserTrait;
|
||||
|
||||
public function handle($id)
|
||||
{
|
||||
|
61
app/Services/Logic/Chapter/ChapterUserTrait.php
Normal file
61
app/Services/Logic/Chapter/ChapterUserTrait.php
Normal file
@ -0,0 +1,61 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2021 深圳市酷瓜软件有限公司
|
||||
* @license https://opensource.org/licenses/GPL-2.0
|
||||
* @link https://www.koogua.com
|
||||
*/
|
||||
|
||||
namespace App\Services\Logic\Chapter;
|
||||
|
||||
use App\Models\Chapter as ChapterModel;
|
||||
use App\Models\ChapterUser as ChapterUserModel;
|
||||
use App\Models\CourseUser as CourseUserModel;
|
||||
use App\Models\User as UserModel;
|
||||
use App\Repos\ChapterUser as ChapterUserRepo;
|
||||
|
||||
trait ChapterUserTrait
|
||||
{
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $ownedChapter = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $joinedChapter = false;
|
||||
|
||||
/**
|
||||
* @var ChapterUserModel|null
|
||||
*/
|
||||
protected $chapterUser;
|
||||
|
||||
public function setChapterUser(ChapterModel $chapter, UserModel $user)
|
||||
{
|
||||
if ($user->id == 0) return;
|
||||
|
||||
$chapterUser = null;
|
||||
|
||||
/**
|
||||
* @var CourseUserModel $courseUser
|
||||
*/
|
||||
$courseUser = $this->courseUser;
|
||||
|
||||
if ($courseUser) {
|
||||
$chapterUserRepo = new ChapterUserRepo();
|
||||
$chapterUser = $chapterUserRepo->findChapterUser($chapter->id, $user->id);
|
||||
}
|
||||
|
||||
$this->chapterUser = $chapterUser;
|
||||
|
||||
if ($chapterUser) {
|
||||
$this->joinedChapter = true;
|
||||
}
|
||||
|
||||
if ($this->ownedCourse || $chapter->free) {
|
||||
$this->ownedChapter = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -7,31 +7,11 @@
|
||||
|
||||
namespace App\Services\Logic;
|
||||
|
||||
use App\Models\Chapter as ChapterModel;
|
||||
use App\Models\ChapterUser as ChapterUserModel;
|
||||
use App\Models\CourseUser as CourseUserModel;
|
||||
use App\Models\User as UserModel;
|
||||
use App\Repos\ChapterUser as ChapterUserRepo;
|
||||
use App\Validators\Chapter as ChapterValidator;
|
||||
|
||||
trait ChapterTrait
|
||||
{
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $ownedChapter = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $joinedChapter = false;
|
||||
|
||||
/**
|
||||
* @var ChapterUserModel|null
|
||||
*/
|
||||
protected $chapterUser;
|
||||
|
||||
public function checkChapterVod($id)
|
||||
{
|
||||
$validator = new ChapterValidator();
|
||||
@ -67,31 +47,4 @@ trait ChapterTrait
|
||||
return $validator->checkChapterCache($id);
|
||||
}
|
||||
|
||||
public function setChapterUser(ChapterModel $chapter, UserModel $user)
|
||||
{
|
||||
if ($user->id == 0) return;
|
||||
|
||||
$chapterUser = null;
|
||||
|
||||
/**
|
||||
* @var CourseUserModel $courseUser
|
||||
*/
|
||||
$courseUser = $this->courseUser;
|
||||
|
||||
if ($courseUser) {
|
||||
$chapterUserRepo = new ChapterUserRepo();
|
||||
$chapterUser = $chapterUserRepo->findChapterUser($chapter->id, $user->id);
|
||||
}
|
||||
|
||||
$this->chapterUser = $chapterUser;
|
||||
|
||||
if ($chapterUser) {
|
||||
$this->joinedChapter = true;
|
||||
}
|
||||
|
||||
if ($this->ownedCourse || $chapter->free) {
|
||||
$this->ownedChapter = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -50,14 +50,14 @@ class ChapterList extends LogicService
|
||||
|
||||
protected function handleLoginUserChapters(array $chapters, CourseModel $course, UserModel $user)
|
||||
{
|
||||
$mapping = $this->getLearningMapping($course->id, $user->id, $this->courseUser->plan_id);
|
||||
$mappings = $this->getLearningMappings($course->id, $user->id, $this->courseUser->plan_id);
|
||||
|
||||
foreach ($chapters as &$chapter) {
|
||||
foreach ($chapter['children'] as &$lesson) {
|
||||
$owned = ($this->ownedCourse || $lesson['free'] == 1) && $lesson['published'] == 1;
|
||||
$lesson['me'] = [
|
||||
'progress' => $mapping[$lesson['id']]['progress'] ?? 0,
|
||||
'duration' => $mapping[$lesson['id']]['duration'] ?? 0,
|
||||
'progress' => $mappings[$lesson['id']]['progress'] ?? 0,
|
||||
'duration' => $mappings[$lesson['id']]['duration'] ?? 0,
|
||||
'owned' => $owned ? 1 : 0,
|
||||
'logged' => 1,
|
||||
];
|
||||
@ -84,7 +84,7 @@ class ChapterList extends LogicService
|
||||
return $chapters;
|
||||
}
|
||||
|
||||
protected function getLearningMapping($courseId, $userId, $planId)
|
||||
protected function getLearningMappings($courseId, $userId, $planId)
|
||||
{
|
||||
$courseRepo = new CourseRepo();
|
||||
|
||||
@ -92,17 +92,17 @@ class ChapterList extends LogicService
|
||||
|
||||
if ($userLearnings->count() == 0) return [];
|
||||
|
||||
$mapping = [];
|
||||
$mappings = [];
|
||||
|
||||
foreach ($userLearnings as $learning) {
|
||||
$mapping[$learning->chapter_id] = [
|
||||
$mappings[$learning->chapter_id] = [
|
||||
'progress' => $learning->progress,
|
||||
'duration' => $learning->duration,
|
||||
'consumed' => $learning->consumed,
|
||||
];
|
||||
}
|
||||
|
||||
return $mapping;
|
||||
return $mappings;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -68,12 +68,6 @@ class Article extends Handler
|
||||
$owner = json_decode($item['owner'], true);
|
||||
$tags = json_decode($item['tags'], true);
|
||||
|
||||
$owner['avatar'] = $owner['avatar'] ?: kg_default_user_avatar_path();
|
||||
|
||||
if (!empty($owner['avatar']) && !Text::startsWith($owner['avatar'], 'http')) {
|
||||
$owner['avatar'] = $baseUrl . $owner['avatar'];
|
||||
}
|
||||
|
||||
if (!empty($item['cover']) && !Text::startsWith($item['cover'], 'http')) {
|
||||
$item['cover'] = $baseUrl . $item['cover'];
|
||||
}
|
||||
|
@ -73,12 +73,6 @@ class Course extends Handler
|
||||
$teacher = json_decode($item['teacher'], true);
|
||||
$tags = json_decode($item['tags'], true);
|
||||
|
||||
$teacher['avatar'] = $teacher['avatar'] ?: kg_default_user_avatar_path();
|
||||
|
||||
if (!empty($teacher['avatar']) && !Text::startsWith($teacher['avatar'], 'http')) {
|
||||
$teacher['avatar'] = $baseUrl . $teacher['avatar'];
|
||||
}
|
||||
|
||||
if (!empty($item['cover']) && !Text::startsWith($item['cover'], 'http')) {
|
||||
$item['cover'] = $baseUrl . $item['cover'];
|
||||
}
|
||||
|
@ -64,33 +64,17 @@ class Question extends Handler
|
||||
|
||||
foreach ($pager->items as $item) {
|
||||
|
||||
$lastAnswer = json_decode($item['last_answer'], true);
|
||||
$acceptAnswer = json_decode($item['accept_answer'], true);
|
||||
$lastReplier = json_decode($item['last_replier'], true);
|
||||
$category = json_decode($item['category'], true);
|
||||
$owner = json_decode($item['owner'], true);
|
||||
$tags = json_decode($item['tags'], true);
|
||||
|
||||
$owner['avatar'] = $owner['avatar'] ?: kg_default_user_avatar_path();
|
||||
|
||||
if (!empty($owner['avatar']) && !Text::startsWith($owner['avatar'], 'http')) {
|
||||
$owner['avatar'] = $baseUrl . $owner['avatar'];
|
||||
}
|
||||
|
||||
if (!empty($item['cover']) && !Text::startsWith($item['cover'], 'http')) {
|
||||
$item['cover'] = $baseUrl . $item['cover'];
|
||||
}
|
||||
|
||||
$lastAnswer = json_decode($item['last_answer'], true);
|
||||
|
||||
if (!empty($lastAnswer['cover']) && !Text::startsWith($lastAnswer['cover'], 'http')) {
|
||||
$lastAnswer['cover'] = $baseUrl . $lastAnswer['cover'];
|
||||
}
|
||||
|
||||
$acceptAnswer = json_decode($item['accept_answer'], true);
|
||||
|
||||
if (!empty($acceptAnswer['cover']) && !Text::startsWith($acceptAnswer['cover'], 'http')) {
|
||||
$acceptAnswer['cover'] = $baseUrl . $acceptAnswer['cover'];
|
||||
}
|
||||
|
||||
$items[] = [
|
||||
'id' => (int)$item['id'],
|
||||
'title' => (string)$item['title'],
|
||||
|
@ -22,8 +22,6 @@ class ProfileInfo extends LogicService
|
||||
|
||||
protected function handleUser(UserModel $user)
|
||||
{
|
||||
$user->avatar = kg_cos_user_avatar_url($user->avatar);
|
||||
|
||||
$user->area = $this->handleArea($user->area);
|
||||
|
||||
return [
|
||||
|
@ -57,6 +57,8 @@ class ArticleDocument extends Injectable
|
||||
$category = $this->handleCategory($article->category_id);
|
||||
}
|
||||
|
||||
$article->cover = ArticleModel::getCoverPath($article->cover);
|
||||
|
||||
return [
|
||||
'id' => $article->id,
|
||||
'title' => $article->title,
|
||||
@ -81,12 +83,9 @@ class ArticleDocument extends Injectable
|
||||
|
||||
$user = $userRepo->findById($id);
|
||||
|
||||
$user->avatar = UserModel::getAvatarPath($user->avatar);
|
||||
|
||||
return kg_json_encode([
|
||||
'id' => $user->id,
|
||||
'name' => $user->name,
|
||||
'avatar' => $user->avatar,
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -102,12 +102,9 @@ class CourseDocument extends Injectable
|
||||
|
||||
$user = $userRepo->findById($id);
|
||||
|
||||
$user->avatar = UserModel::getAvatarPath($user->avatar);
|
||||
|
||||
return kg_json_encode([
|
||||
'id' => $user->id,
|
||||
'name' => $user->name,
|
||||
'avatar' => $user->avatar,
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -76,6 +76,8 @@ class QuestionDocument extends Injectable
|
||||
$acceptAnswer = $this->handleAnswer($question->accept_answer_id);
|
||||
}
|
||||
|
||||
$question->cover = QuestionModel::getCoverPath($question->cover);
|
||||
|
||||
return [
|
||||
'id' => $question->id,
|
||||
'title' => $question->title,
|
||||
@ -108,12 +110,9 @@ class QuestionDocument extends Injectable
|
||||
|
||||
$user = $userRepo->findById($id);
|
||||
|
||||
$user->avatar = UserModel::getAvatarPath($user->avatar);
|
||||
|
||||
return kg_json_encode([
|
||||
'id' => $user->id,
|
||||
'name' => $user->name,
|
||||
'avatar' => $user->avatar,
|
||||
]);
|
||||
}
|
||||
|
||||
@ -138,7 +137,6 @@ class QuestionDocument extends Injectable
|
||||
return kg_json_encode([
|
||||
'id' => $answer->id,
|
||||
'summary' => $answer->summary,
|
||||
'cover' => $answer->cover,
|
||||
]);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user