1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-21 19:22:45 +08:00

精简整理代码

This commit is contained in:
xiaochong0302 2025-01-02 11:29:06 +08:00
parent 4d810eae98
commit e27a203ac8
46 changed files with 204 additions and 420 deletions

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Question as QuestionRepo;
use App\Repos\User as UserRepo;
class AnswerList extends Builder
{
@ -18,7 +17,7 @@ class AnswerList extends Builder
$questions = $this->getQuestions($answers);
foreach ($answers as $key => $answer) {
$answers[$key]['question'] = $questions[$answer['question_id']] ?? new \stdClass();
$answers[$key]['question'] = $questions[$answer['question_id']] ?? null;
}
return $answers;
@ -29,7 +28,7 @@ class AnswerList extends Builder
$users = $this->getUsers($answers);
foreach ($answers as $key => $answer) {
$answers[$key]['owner'] = $users[$answer['owner_id']] ?? new \stdClass();
$answers[$key]['owner'] = $users[$answer['owner_id']] ?? null;
}
return $answers;
@ -56,20 +55,7 @@ class AnswerList extends Builder
{
$ids = kg_array_column($answers, 'owner_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Article as ArticleRepo;
use App\Repos\User as UserRepo;
use Phalcon\Text;
class ArticleFavoriteList extends Builder
@ -19,7 +18,7 @@ class ArticleFavoriteList extends Builder
$articles = $this->getArticles($relations);
foreach ($relations as $key => $value) {
$relations[$key]['article'] = $articles[$value['article_id']] ?? new \stdClass();
$relations[$key]['article'] = $articles[$value['article_id']] ?? null;
}
return $relations;
@ -30,7 +29,7 @@ class ArticleFavoriteList extends Builder
$users = $this->getUsers($relations);
foreach ($relations as $key => $value) {
$relations[$key]['user'] = $users[$value['user_id']] ?? new \stdClass();
$relations[$key]['user'] = $users[$value['user_id']] ?? null;
}
return $relations;
@ -70,20 +69,7 @@ class ArticleFavoriteList extends Builder
{
$ids = kg_array_column($relations, 'user_id');
$userRepo = new UserRepo();
$users = $userRepo->findByIds($ids, ['id', 'name', 'avatar']);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -9,7 +9,6 @@ namespace App\Builders;
use App\Caches\CategoryAllList as CategoryAllListCache;
use App\Models\Category as CategoryModel;
use App\Repos\User as UserRepo;
class ArticleList extends Builder
{
@ -28,7 +27,7 @@ class ArticleList extends Builder
$categories = $this->getCategories();
foreach ($articles as $key => $article) {
$articles[$key]['category'] = $categories[$article['category_id']] ?? new \stdClass();
$articles[$key]['category'] = $categories[$article['category_id']] ?? null;
}
return $articles;
@ -39,7 +38,7 @@ class ArticleList extends Builder
$users = $this->getUsers($articles);
foreach ($articles as $key => $article) {
$articles[$key]['owner'] = $users[$article['owner_id']] ?? new \stdClass();
$articles[$key]['owner'] = $users[$article['owner_id']] ?? null;
}
return $articles;
@ -69,20 +68,7 @@ class ArticleList extends Builder
{
$ids = kg_array_column($articles, 'owner_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -7,6 +7,7 @@
namespace App\Builders;
use App\Repos\User as UserRepo;
use Phalcon\Di\Injectable;
class Builder extends Injectable
@ -17,4 +18,22 @@ class Builder extends Injectable
return kg_array_object($items);
}
protected function getShallowUserByIds(array $ids)
{
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
}
}

View File

@ -7,8 +7,6 @@
namespace App\Builders;
use App\Repos\User as UserRepo;
class CommentList extends Builder
{
@ -17,8 +15,8 @@ class CommentList extends Builder
$users = $this->getUsers($comments);
foreach ($comments as $key => $comment) {
$comments[$key]['owner'] = $users[$comment['owner_id']] ?? new \stdClass();
$comments[$key]['to_user'] = $users[$comment['to_user_id']] ?? new \stdClass();
$comments[$key]['owner'] = $users[$comment['owner_id']] ?? null;
$comments[$key]['to_user'] = $users[$comment['to_user_id']] ?? null;
}
return $comments;
@ -30,20 +28,7 @@ class CommentList extends Builder
$toUserIds = kg_array_column($comments, 'to_user_id');
$ids = array_merge($ownerIds, $toUserIds);
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Course as CourseRepo;
use App\Repos\User as UserRepo;
class ConsultList extends Builder
{
@ -18,7 +17,7 @@ class ConsultList extends Builder
$courses = $this->getCourses($consults);
foreach ($consults as $key => $consult) {
$consults[$key]['course'] = $courses[$consult['course_id']] ?? new \stdClass();
$consults[$key]['course'] = $courses[$consult['course_id']] ?? null;
}
return $consults;
@ -29,8 +28,8 @@ class ConsultList extends Builder
$users = $this->getUsers($consults);
foreach ($consults as $key => $consult) {
$consults[$key]['owner'] = $users[$consult['owner_id']] ?? new \stdClass();
$consults[$key]['replier'] = $users[$consult['replier_id']] ?? new \stdClass();
$consults[$key]['owner'] = $users[$consult['owner_id']] ?? null;
$consults[$key]['replier'] = $users[$consult['replier_id']] ?? null;
}
return $consults;
@ -59,20 +58,7 @@ class ConsultList extends Builder
$replierIds = kg_array_column($consults, 'replier_id');
$ids = array_merge($ownerIds, $replierIds);
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Course as CourseRepo;
use App\Repos\User as UserRepo;
class CourseFavoriteList extends Builder
{
@ -18,7 +17,7 @@ class CourseFavoriteList extends Builder
$courses = $this->getCourses($relations);
foreach ($relations as $key => $value) {
$relations[$key]['course'] = $courses[$value['course_id']] ?? new \stdClass();
$relations[$key]['course'] = $courses[$value['course_id']] ?? null;
}
return $relations;
@ -29,7 +28,7 @@ class CourseFavoriteList extends Builder
$users = $this->getUsers($relations);
foreach ($relations as $key => $value) {
$relations[$key]['user'] = $users[$value['user_id']] ?? new \stdClass();
$relations[$key]['user'] = $users[$value['user_id']] ?? null;
}
return $relations;
@ -70,20 +69,7 @@ class CourseFavoriteList extends Builder
{
$ids = kg_array_column($relations, 'user_id');
$userRepo = new UserRepo();
$users = $userRepo->findByIds($ids, ['id', 'name', 'avatar']);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -9,7 +9,6 @@ namespace App\Builders;
use App\Caches\CategoryAllList as CategoryAllListCache;
use App\Models\Category as CategoryModel;
use App\Repos\User as UserRepo;
class CourseList extends Builder
{
@ -19,7 +18,7 @@ class CourseList extends Builder
$categories = $this->getCategories();
foreach ($courses as $key => $course) {
$courses[$key]['category'] = $categories[$course['category_id']] ?? new \stdClass();
$courses[$key]['category'] = $categories[$course['category_id']] ?? null;
}
return $courses;
@ -30,7 +29,7 @@ class CourseList extends Builder
$teachers = $this->getTeachers($courses);
foreach ($courses as $key => $course) {
$courses[$key]['teacher'] = $teachers[$course['teacher_id']] ?? new \stdClass();
$courses[$key]['teacher'] = $teachers[$course['teacher_id']] ?? null;
}
return $courses;
@ -60,20 +59,7 @@ class CourseList extends Builder
{
$ids = kg_array_column($courses, 'teacher_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -18,7 +18,7 @@ class CourseTopicList extends Builder
$courses = $this->getCourses($relations);
foreach ($relations as $key => $value) {
$relations[$key]['course'] = $courses[$value['course_id']] ?? new \stdClass();
$relations[$key]['course'] = $courses[$value['course_id']] ?? null;
}
return $relations;
@ -29,7 +29,7 @@ class CourseTopicList extends Builder
$topics = $this->getTopics($relations);
foreach ($relations as $key => $value) {
$relations[$key]['topic'] = $topics[$value['topic_id']] ?? new \stdClass();
$relations[$key]['topic'] = $topics[$value['topic_id']] ?? null;
}
return $relations;

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Course as CourseRepo;
use App\Repos\User as UserRepo;
class CourseUserList extends Builder
{
@ -18,7 +17,7 @@ class CourseUserList extends Builder
$courses = $this->getCourses($relations);
foreach ($relations as $key => $value) {
$relations[$key]['course'] = $courses[$value['course_id']] ?? new \stdClass();
$relations[$key]['course'] = $courses[$value['course_id']] ?? null;
}
return $relations;
@ -29,7 +28,7 @@ class CourseUserList extends Builder
$users = $this->getUsers($relations);
foreach ($relations as $key => $value) {
$relations[$key]['user'] = $users[$value['user_id']] ?? new \stdClass();
$relations[$key]['user'] = $users[$value['user_id']] ?? null;
}
return $relations;
@ -74,20 +73,7 @@ class CourseUserList extends Builder
{
$ids = kg_array_column($relations, 'user_id');
$userRepo = new UserRepo();
$users = $userRepo->findByIds($ids, ['id', 'name', 'avatar']);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -18,7 +18,7 @@ class HelpList extends Builder
$categories = $this->getCategories();
foreach ($helps as $key => $help) {
$helps[$key]['category'] = $categories[$help['category_id']] ?? new \stdClass();
$helps[$key]['category'] = $categories[$help['category_id']] ?? null;
}
return $helps;

View File

@ -9,7 +9,6 @@ namespace App\Builders;
use App\Repos\Chapter as ChapterRepo;
use App\Repos\Course as CourseRepo;
use App\Repos\User as UserRepo;
class LearningList extends Builder
{
@ -19,7 +18,7 @@ class LearningList extends Builder
$courses = $this->getCourses($relations);
foreach ($relations as $key => $value) {
$relations[$key]['course'] = $courses[$value['course_id']] ?? new \stdClass();
$relations[$key]['course'] = $courses[$value['course_id']] ?? null;
}
return $relations;
@ -30,7 +29,7 @@ class LearningList extends Builder
$chapters = $this->getChapters($relations);
foreach ($relations as $key => $value) {
$relations[$key]['chapter'] = $chapters[$value['chapter_id']] ?? new \stdClass();
$relations[$key]['chapter'] = $chapters[$value['chapter_id']] ?? null;
}
return $relations;
@ -41,7 +40,7 @@ class LearningList extends Builder
$users = $this->getUsers($relations);
foreach ($relations as $key => $value) {
$relations[$key]['user'] = $users[$value['user_id']] ?? new \stdClass();
$relations[$key]['user'] = $users[$value['user_id']] ?? null;
}
return $relations;
@ -85,17 +84,7 @@ class LearningList extends Builder
{
$ids = kg_array_column($relations, 'user_id');
$userRepo = new UserRepo();
$users = $userRepo->findByIds($ids, ['id', 'name']);
$result = [];
foreach ($users->toArray() as $user) {
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -19,7 +19,7 @@ class LiveList extends Builder
$courses = $this->getCourses($lives);
foreach ($lives as $key => $live) {
$lives[$key]['course'] = $courses[$live['course_id']] ?? new \stdClass();
$lives[$key]['course'] = $courses[$live['course_id']] ?? null;
}
return $lives;
@ -30,7 +30,7 @@ class LiveList extends Builder
$chapters = $this->getChapters($lives);
foreach ($lives as $key => $live) {
$lives[$key]['chapter'] = $chapters[$live['chapter_id']] ?? new \stdClass();
$lives[$key]['chapter'] = $chapters[$live['chapter_id']] ?? null;
}
return $lives;
@ -63,7 +63,7 @@ class LiveList extends Builder
foreach ($courses->toArray() as $course) {
$course['cover'] = $baseUrl . $course['cover'];
$course['teacher'] = $teachers[$course['teacher_id']] ?? new \stdClass();
$course['teacher'] = $teachers[$course['teacher_id']] ?? null;
$result[$course['id']] = [
'id' => $course['id'],
'title' => $course['title'],

View File

@ -7,8 +7,6 @@
namespace App\Builders;
use App\Repos\User as UserRepo;
class NotificationList extends Builder
{
@ -17,8 +15,8 @@ class NotificationList extends Builder
$users = $this->getUsers($notifications);
foreach ($notifications as $key => $notification) {
$notifications[$key]['sender'] = $users[$notification['sender_id']] ?? new \stdClass();
$notifications[$key]['receiver'] = $users[$notification['receiver_id']] ?? new \stdClass();
$notifications[$key]['sender'] = $users[$notification['sender_id']] ?? null;
$notifications[$key]['receiver'] = $users[$notification['receiver_id']] ?? null;
}
return $notifications;
@ -30,20 +28,7 @@ class NotificationList extends Builder
$receiverIds = kg_array_column($notifications, 'receiver_id');
$ids = array_merge($senderIds, $receiverIds);
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -9,7 +9,6 @@ namespace App\Builders;
use App\Models\Course as CourseModel;
use App\Models\Order as OrderModel;
use App\Repos\User as UserRepo;
class OrderList extends Builder
{
@ -30,7 +29,7 @@ class OrderList extends Builder
$users = $this->getUsers($orders);
foreach ($orders as $key => $order) {
$orders[$key]['owner'] = $users[$order['owner_id']] ?? new \stdClass();
$orders[$key]['owner'] = $users[$order['owner_id']] ?? null;
}
return $orders;
@ -175,17 +174,7 @@ class OrderList extends Builder
{
$ids = kg_array_column($orders, 'owner_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$result = [];
foreach ($users->toArray() as $user) {
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Question as QuestionRepo;
use App\Repos\User as UserRepo;
use Phalcon\Text;
class QuestionFavoriteList extends Builder
@ -19,7 +18,7 @@ class QuestionFavoriteList extends Builder
$questions = $this->getQuestions($relations);
foreach ($relations as $key => $value) {
$relations[$key]['question'] = $questions[$value['question_id']] ?? new \stdClass();
$relations[$key]['question'] = $questions[$value['question_id']] ?? null;
}
return $relations;
@ -30,7 +29,7 @@ class QuestionFavoriteList extends Builder
$users = $this->getUsers($relations);
foreach ($relations as $key => $value) {
$relations[$key]['user'] = $users[$value['user_id']] ?? new \stdClass();
$relations[$key]['user'] = $users[$value['user_id']] ?? null;
}
return $relations;
@ -70,20 +69,7 @@ class QuestionFavoriteList extends Builder
{
$ids = kg_array_column($relations, 'user_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -9,7 +9,6 @@ namespace App\Builders;
use App\Caches\CategoryAllList as CategoryAllListCache;
use App\Models\Category as CategoryModel;
use App\Repos\User as UserRepo;
class QuestionList extends Builder
{
@ -28,7 +27,7 @@ class QuestionList extends Builder
$categories = $this->getCategories();
foreach ($questions as $key => $question) {
$questions[$key]['category'] = $categories[$question['category_id']] ?? new \stdClass();
$questions[$key]['category'] = $categories[$question['category_id']] ?? null;
}
return $questions;
@ -39,8 +38,8 @@ class QuestionList extends Builder
$users = $this->getUsers($questions);
foreach ($questions as $key => $question) {
$questions[$key]['owner'] = $users[$question['owner_id']] ?? new \stdClass();
$questions[$key]['last_replier'] = $users[$question['last_replier_id']] ?? new \stdClass();
$questions[$key]['owner'] = $users[$question['owner_id']] ?? null;
$questions[$key]['last_replier'] = $users[$question['last_replier_id']] ?? null;
}
return $questions;
@ -72,20 +71,7 @@ class QuestionList extends Builder
$lastReplierIds = kg_array_column($questions, 'last_replier_id');
$ids = array_merge($ownerIds, $lastReplierIds);
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -9,7 +9,6 @@ namespace App\Builders;
use App\Models\Refund as RefundModel;
use App\Repos\Order as OrderRepo;
use App\Repos\User as UserRepo;
class RefundList extends Builder
{
@ -19,7 +18,7 @@ class RefundList extends Builder
$orders = $this->getOrders($trades);
foreach ($trades as $key => $trade) {
$trades[$key]['order'] = $orders[$trade['order_id']] ?? new \stdClass();
$trades[$key]['order'] = $orders[$trade['order_id']] ?? null;
}
return $trades;
@ -30,7 +29,7 @@ class RefundList extends Builder
$users = $this->getUsers($refunds);
foreach ($refunds as $key => $refund) {
$refunds[$key]['owner'] = $users[$refund['owner_id']] ?? new \stdClass();
$refunds[$key]['owner'] = $users[$refund['owner_id']] ?? null;
}
return $refunds;
@ -75,20 +74,7 @@ class RefundList extends Builder
{
$ids = kg_array_column($refunds, 'owner_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -7,8 +7,6 @@
namespace App\Builders;
use App\Repos\User as UserRepo;
class ReportList extends Builder
{
@ -17,7 +15,7 @@ class ReportList extends Builder
$users = $this->getUsers($reports);
foreach ($reports as $key => $report) {
$reports[$key]['owner'] = $users[$report['owner_id']] ?? new \stdClass();
$reports[$key]['owner'] = $users[$report['owner_id']] ?? null;
}
return $reports;
@ -27,20 +25,7 @@ class ReportList extends Builder
{
$ids = kg_array_column($reports, 'owner_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -17,7 +17,7 @@ class ResourceList extends Builder
$uploads = $this->getUploads($relations);
foreach ($relations as $key => $value) {
$relations[$key]['upload'] = $uploads[$value['upload_id']] ?? new \stdClass();
$relations[$key]['upload'] = $uploads[$value['upload_id']] ?? null;
}
return $relations;

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Course as CourseRepo;
use App\Repos\User as UserRepo;
class ReviewList extends Builder
{
@ -18,7 +17,7 @@ class ReviewList extends Builder
$courses = $this->getCourses($reviews);
foreach ($reviews as $key => $review) {
$reviews[$key]['course'] = $courses[$review['course_id']] ?? new \stdClass();
$reviews[$key]['course'] = $courses[$review['course_id']] ?? null;
}
return $reviews;
@ -29,7 +28,7 @@ class ReviewList extends Builder
$users = $this->getUsers($reviews);
foreach ($reviews as $key => $review) {
$reviews[$key]['owner'] = $users[$review['owner_id']] ?? new \stdClass();
$reviews[$key]['owner'] = $users[$review['owner_id']] ?? null;
}
return $reviews;
@ -56,20 +55,7 @@ class ReviewList extends Builder
{
$ids = kg_array_column($reviews, 'owner_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Tag as TagRepo;
use App\Repos\User as UserRepo;
class TagFollowList extends Builder
{
@ -18,7 +17,7 @@ class TagFollowList extends Builder
$tags = $this->getTags($relations);
foreach ($relations as $key => $value) {
$relations[$key]['tag'] = $tags[$value['tag_id']] ?? new \stdClass();
$relations[$key]['tag'] = $tags[$value['tag_id']] ?? null;
}
return $relations;
@ -29,7 +28,7 @@ class TagFollowList extends Builder
$users = $this->getUsers($relations);
foreach ($relations as $key => $value) {
$relations[$key]['user'] = $users[$value['user_id']] ?? new \stdClass();
$relations[$key]['user'] = $users[$value['user_id']] ?? null;
}
return $relations;
@ -61,20 +60,7 @@ class TagFollowList extends Builder
{
$ids = kg_array_column($relations, 'user_id');
$userRepo = new UserRepo();
$users = $userRepo->findByIds($ids, ['id', 'name', 'avatar']);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -8,7 +8,6 @@
namespace App\Builders;
use App\Repos\Order as OrderRepo;
use App\Repos\User as UserRepo;
class TradeList extends Builder
{
@ -18,7 +17,7 @@ class TradeList extends Builder
$orders = $this->getOrders($trades);
foreach ($trades as $key => $trade) {
$trades[$key]['order'] = $orders[$trade['order_id']] ?? new \stdClass();
$trades[$key]['order'] = $orders[$trade['order_id']] ?? null;
}
return $trades;
@ -29,7 +28,7 @@ class TradeList extends Builder
$users = $this->getUsers($trades);
foreach ($trades as $key => $trade) {
$trades[$key]['owner'] = $users[$trade['owner_id']] ?? new \stdClass();
$trades[$key]['owner'] = $users[$trade['owner_id']] ?? null;
}
return $trades;
@ -56,20 +55,7 @@ class TradeList extends Builder
{
$ids = kg_array_column($trades, 'owner_id');
$userRepo = new UserRepo();
$users = $userRepo->findShallowUserByIds($ids);
$baseUrl = kg_cos_url();
$result = [];
foreach ($users->toArray() as $user) {
$user['avatar'] = $baseUrl . $user['avatar'];
$result[$user['id']] = $user;
}
return $result;
return $this->getShallowUserByIds($ids);
}
}

View File

@ -30,7 +30,7 @@ class UserList extends Builder
$accounts = $this->getAccounts($users);
foreach ($users as $key => $user) {
$users[$key]['account'] = $accounts[$user['id']] ?? new \stdClass();
$users[$key]['account'] = $accounts[$user['id']] ?? null;
}
return $users;

View File

@ -168,14 +168,12 @@ class Course extends Service
}
}
if (!empty($post['category_id'])) {
$category = $validator->checkCategory($post['category_id']);
$data['category_id'] = $category->id;
if (isset($post['category_id'])) {
$data['category_id'] = $validator->checkCategoryId($post['category_id']);
}
if (!empty($post['teacher_id'])) {
$teacher = $validator->checkTeacher($post['teacher_id']);
$data['teacher_id'] = $teacher->id;
if (isset($post['teacher_id'])) {
$data['teacher_id'] = $validator->checkTeacherId($post['teacher_id']);
}
if (isset($post['xm_tag_ids'])) {

View File

@ -49,7 +49,7 @@
name: 'xm_tag_ids',
max: 5,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_tags|json_encode }}

View File

@ -84,7 +84,7 @@
name: 'course_id',
filterable: true,
radio: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_courses|json_encode }}

View File

@ -65,7 +65,7 @@
name: 'xm_tag_ids',
max: 5,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_tags|json_encode }}
@ -77,7 +77,7 @@
max: 10,
autoRow: true,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_courses|json_encode }}

View File

@ -82,7 +82,7 @@
max: 15,
autoRow: true,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_courses|json_encode }}

View File

@ -69,7 +69,7 @@
name: 'xm_course_id',
radio: true,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_courses|json_encode }}

View File

@ -48,7 +48,7 @@
name: 'xm_tag_ids',
max: 5,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_tags|json_encode }}

View File

@ -84,7 +84,7 @@
name: 'course_id',
filterable: true,
radio: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_courses|json_encode }}

View File

@ -75,7 +75,7 @@
name: 'xm_course_id',
radio: true,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_courses|json_encode }}
@ -86,7 +86,7 @@
name: 'xm_page_id',
radio: true,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_pages|json_encode }}

View File

@ -44,7 +44,7 @@
max: 15,
autoRow: true,
filterable: true,
filterMethod: function (val, item, index, prop) {
filterMethod: function (val, item) {
return item.name.toLowerCase().indexOf(val.toLowerCase()) !== -1;
},
data: {{ xm_courses|json_encode }}
@ -55,4 +55,3 @@
</script>
{% endblock %}

View File

@ -33,7 +33,7 @@ class View extends PhView
/**
* 分页数据
*/
if (isset($var->total_items)) {
if (isset($var->items) && is_array($var->items)) {
$var->items = kg_array_object($var->items);
} elseif (is_array($var)) {
$var = kg_array_object($var);

View File

@ -7,12 +7,11 @@
namespace App\Services\Logic\Article;
use App\Caches\Category as CategoryCache;
use App\Models\Article as ArticleModel;
use App\Models\Category as CategoryModel;
use App\Models\User as UserModel;
use App\Repos\ArticleFavorite as ArticleFavoriteRepo;
use App\Repos\ArticleLike as ArticleLikeRepo;
use App\Services\Category as CategoryService;
use App\Services\Logic\ArticleTrait;
use App\Services\Logic\Service as LogicService;
use App\Services\Logic\User\ShallowUserInfo;
@ -39,7 +38,7 @@ class ArticleInfo extends LogicService
protected function handleArticle(ArticleModel $article, UserModel $user)
{
$category = $this->handleCategoryInfo($article->category_id);
$categoryPaths = $this->handleCategoryPaths($article->category_id);
$owner = $this->handleOwnerInfo($article->owner_id);
$me = $this->handleMeInfo($article, $user);
@ -63,27 +62,19 @@ class ArticleInfo extends LogicService
'favorite_count' => $article->favorite_count,
'create_time' => $article->create_time,
'update_time' => $article->update_time,
'category' => $category,
'category_paths' => $categoryPaths,
'owner' => $owner,
'me' => $me,
];
}
protected function handleCategoryInfo($categoryId)
protected function handleCategoryPaths($categoryId)
{
$cache = new CategoryCache();
if ($categoryId == 0) return null;
/**
* @var CategoryModel $category
*/
$category = $cache->get($categoryId);
$service = new CategoryService();
if (!$category) return new \stdClass();
return [
'id' => $category->id,
'name' => $category->name,
];
return $service->getCategoryPaths($categoryId);
}
protected function handleOwnerInfo($userId)

View File

@ -54,7 +54,7 @@ class CommentInfo extends LogicService
protected function handleToUserInfo($userId)
{
if ($userId == 0) return new \stdClass();
if ($userId == 0) return null;
$service = new ShallowUserInfo();

View File

@ -23,6 +23,7 @@ class ConsultCreate extends LogicService
use ClientTrait;
use CourseTrait;
use ConsultDataTrait;
public function handle()
{
@ -34,10 +35,6 @@ class ConsultCreate extends LogicService
$validator->checkDailyConsultLimit($user);
$validator = new UserLimitValidator();
$validator->checkDailyConsultLimit($user);
$course = $this->checkCourse($courseId);
return $this->handleCourseConsult($course, $user);
@ -47,32 +44,20 @@ class ConsultCreate extends LogicService
{
$post = $this->request->getPost();
$data = $this->handlePostData($post);
$validator = new ConsultValidator();
$question = $validator->checkQuestion($post['question']);
$private = 0;
if (isset($post['private'])) {
$private = $validator->checkPrivateStatus($post['private']);
}
$validator->checkIfDuplicated($course->id, $user->id, $question);
$priority = $this->getPriority($course, $user);
$validator->checkIfDuplicated($course->id, $user->id, $data['question']);
$consult = new ConsultModel();
$consult->question = $question;
$consult->private = $private;
$consult->priority = $priority;
$consult->course_id = $course->id;
$consult->owner_id = $user->id;
$consult->client_type = $this->getClientType();
$consult->client_ip = $this->getClientIp();
$consult->published = ConsultModel::PUBLISH_PENDING;
$data['priority'] = $this->getPriority($course, $user);
$data['published'] = ConsultModel::PUBLISH_PENDING;
$data['course_id'] = $course->id;
$data['owner_id'] = $user->id;
$consult->create();
$consult->create($data);
$this->recountCourseConsults($course);
$this->incrUserDailyConsultCount($user);

View File

@ -0,0 +1,38 @@
<?php
/**
* @copyright Copyright (c) 2021 深圳市酷瓜软件有限公司
* @license https://opensource.org/licenses/GPL-2.0
* @link https://www.koogua.com
*/
namespace App\Services\Logic\Consult;
use App\Traits\Client as ClientTrait;
use App\Validators\Consult as ConsultValidator;
trait ConsultDataTrait
{
use ClientTrait;
protected function handlePostData($post)
{
$data = [];
$data['client_type'] = $this->getClientType();
$data['client_ip'] = $this->getClientIp();
$validator = new ConsultValidator();
if (isset($post['question'])) {
$data['question'] = $validator->checkQuestion($post['question']);
}
if (isset($post['private'])) {
$data['private'] = $validator->checkPrivateStatus($post['private']);
}
return $data;
}
}

View File

@ -76,7 +76,7 @@ class ConsultInfo extends LogicService
protected function handleReplierInfo($userId)
{
if ($userId == 0) return new \stdClass();
if ($userId == 0) return null;
$service = new ShallowUserInfo();

View File

@ -15,6 +15,7 @@ class ConsultUpdate extends LogicService
{
use ConsultTrait;
use ConsultDataTrait;
public function handle($id)
{
@ -28,15 +29,7 @@ class ConsultUpdate extends LogicService
$validator->checkEditPriv($consult, $user);
$data = [];
if (isset($post['question'])) {
$data['question'] = $validator->checkQuestion($post['question']);
}
if (isset($post['private'])) {
$data['private'] = $validator->checkPrivateStatus($post['private']);
}
$data = $this->handlePostData($post);
$consult->update($data);

View File

@ -79,7 +79,7 @@ class BasicInfo extends LogicService
protected function handleCategoryPaths($categoryId)
{
if ($categoryId == 0) return new \stdClass();
if ($categoryId == 0) return null;
$service = new CategoryService();
@ -88,7 +88,7 @@ class BasicInfo extends LogicService
protected function handleTeacherInfo($userId)
{
if ($userId == 0) return new \stdClass();
if ($userId == 0) return null;
$service = new ShallowUserInfoService();

View File

@ -7,13 +7,12 @@
namespace App\Services\Logic\Question;
use App\Caches\Category as CategoryCache;
use App\Models\Category as CategoryModel;
use App\Models\Question as QuestionModel;
use App\Models\User as UserModel;
use App\Repos\Question as QuestionRepo;
use App\Repos\QuestionFavorite as QuestionFavoriteRepo;
use App\Repos\QuestionLike as QuestionLikeRepo;
use App\Services\Category as CategoryService;
use App\Services\Logic\QuestionTrait;
use App\Services\Logic\Service as LogicService;
use App\Services\Logic\User\ShallowUserInfo;
@ -41,7 +40,7 @@ class QuestionInfo extends LogicService
protected function handleQuestion(QuestionModel $question, UserModel $user)
{
$lastReplier = $this->handleLastReplierInfo($question->last_replier_id);
$category = $this->handleCategoryInfo($question->category_id);
$categoryPaths = $this->handleCategoryPaths($question->category_id);
$owner = $this->handleOwnerInfo($question->owner_id);
$me = $this->handleMeInfo($question, $user);
@ -67,32 +66,24 @@ class QuestionInfo extends LogicService
'create_time' => $question->create_time,
'update_time' => $question->update_time,
'last_replier' => $lastReplier,
'category' => $category,
'category_paths' => $categoryPaths,
'owner' => $owner,
'me' => $me,
];
}
protected function handleCategoryInfo($categoryId)
protected function handleCategoryPaths($categoryId)
{
$cache = new CategoryCache();
if ($categoryId == 0) return null;
/**
* @var CategoryModel $category
*/
$category = $cache->get($categoryId);
$service = new CategoryService();
if (!$category) return new \stdClass();
return [
'id' => $category->id,
'name' => $category->name,
];
return $service->getCategoryPaths($categoryId);
}
protected function handleLastReplierInfo($userId)
{
if ($userId == 0) return new \stdClass();
if ($userId == 0) return null;
$service = new ShallowUserInfo();

View File

@ -63,8 +63,6 @@ class ReviewInfo extends LogicService
$course = $courseRepo->findById($courseId);
if (!$course) return new \stdClass();
return [
'id' => $course->id,
'title' => $course->title,

View File

@ -66,18 +66,26 @@ class Course extends Validator
}
}
public function checkCategory($id)
public function checkCategoryId($id)
{
$validator = new Category();
return $validator->checkCategory($id);
if ($id > 0) {
$validator = new Category();
$category = $validator->checkCategory($id);
return $category->id;
} else {
return 0;
}
}
public function checkTeacher($id)
public function checkTeacherId($id)
{
$validator = new User();
return $validator->checkUser($id);
if ($id > 0) {
$validator = new User();
$user = $validator->checkTeacher($id);
return $user->id;
} else {
return 0;
}
}
public function checkModel($model)

View File

@ -53,6 +53,19 @@ class User extends Validator
return $user;
}
public function checkTeacher($id)
{
$validator = new User();
$user = $validator->checkUser($id);
if ($user->edu_role != UserModel::EDU_ROLE_TEACHER) {
throw new BadRequestException('user.not_found');
}
return $user;
}
public function checkId($id)
{
$id = intval($id);