mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-26 04:21:27 +08:00
优化CourseUserTrait
This commit is contained in:
parent
7da5fb0424
commit
02e2c03f8f
@ -137,7 +137,7 @@ class Review extends Repository
|
||||
|
||||
public function countLikes($reviewId)
|
||||
{
|
||||
return ReviewLikeModel::count([
|
||||
return (int)ReviewLikeModel::count([
|
||||
'conditions' => 'review_id = :review_id: AND deleted = 0',
|
||||
'bind' => ['review_id' => $reviewId],
|
||||
]);
|
||||
|
@ -14,6 +14,7 @@ use App\Models\CourseUser as CourseUserModel;
|
||||
use App\Models\User as UserModel;
|
||||
use App\Repos\ChapterLike as ChapterLikeRepo;
|
||||
use App\Services\Logic\ChapterTrait;
|
||||
use App\Services\Logic\Course\CourseUserTrait;
|
||||
use App\Services\Logic\CourseTrait;
|
||||
use App\Services\Logic\Service as LogicService;
|
||||
|
||||
@ -31,6 +32,7 @@ class ChapterInfo extends LogicService
|
||||
protected $user;
|
||||
|
||||
use CourseTrait;
|
||||
use CourseUserTrait;
|
||||
use ChapterTrait;
|
||||
|
||||
public function handle($id)
|
||||
@ -88,8 +90,6 @@ class ChapterInfo extends LogicService
|
||||
|
||||
if (!$this->ownedCourse) return;
|
||||
|
||||
$courseUser = new CourseUserModel();
|
||||
|
||||
$sourceType = CourseUserModel::SOURCE_FREE;
|
||||
|
||||
if ($course->market_price > 0) {
|
||||
@ -100,18 +100,14 @@ class ChapterInfo extends LogicService
|
||||
}
|
||||
}
|
||||
|
||||
$courseUser->course_id = $course->id;
|
||||
$courseUser->user_id = $user->id;
|
||||
$courseUser->source_type = $sourceType;
|
||||
|
||||
$courseUser->create();
|
||||
$courseUser = $this->createCourseUser($course, $user, 0, $sourceType);
|
||||
|
||||
$this->courseUser = $courseUser;
|
||||
|
||||
$this->joinedCourse = true;
|
||||
|
||||
$this->incrCourseUserCount($course);
|
||||
$this->incrUserCourseCount($user);
|
||||
$this->recountCourseUsers($course);
|
||||
$this->recountUserCourses($user);
|
||||
}
|
||||
|
||||
protected function handleChapterUser(ChapterModel $chapter, UserModel $user)
|
||||
@ -188,20 +184,6 @@ class ChapterInfo extends LogicService
|
||||
return $me;
|
||||
}
|
||||
|
||||
protected function incrUserCourseCount(UserModel $user)
|
||||
{
|
||||
$user->course_count += 1;
|
||||
|
||||
$user->update();
|
||||
}
|
||||
|
||||
protected function incrCourseUserCount(CourseModel $course)
|
||||
{
|
||||
$course->user_count += 1;
|
||||
|
||||
$course->update();
|
||||
}
|
||||
|
||||
protected function incrChapterUserCount(ChapterModel $chapter)
|
||||
{
|
||||
$chapter->user_count += 1;
|
||||
|
@ -17,6 +17,7 @@ class CourseInfo extends LogicService
|
||||
{
|
||||
|
||||
use CourseTrait;
|
||||
use CourseUserTrait;
|
||||
|
||||
public function handle($id)
|
||||
{
|
||||
|
@ -17,6 +17,67 @@ use App\Repos\User as UserRepo;
|
||||
trait CourseUserTrait
|
||||
{
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $ownedCourse = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $joinedCourse = false;
|
||||
|
||||
/**
|
||||
* @var CourseUserModel|null
|
||||
*/
|
||||
protected $courseUser;
|
||||
|
||||
public function setCourseUser(CourseModel $course, UserModel $user)
|
||||
{
|
||||
if ($user->id == 0) return;
|
||||
|
||||
$courseUserRepo = new CourseUserRepo();
|
||||
|
||||
$courseUser = $courseUserRepo->findCourseUser($course->id, $user->id);
|
||||
|
||||
$this->courseUser = $courseUser;
|
||||
|
||||
if ($courseUser) {
|
||||
$this->joinedCourse = true;
|
||||
}
|
||||
|
||||
if ($course->market_price == 0) {
|
||||
|
||||
$this->ownedCourse = true;
|
||||
|
||||
} elseif ($course->market_price > 0 && $course->vip_price == 0 && $user->vip == 1) {
|
||||
|
||||
$this->ownedCourse = true;
|
||||
|
||||
} elseif ($courseUser) {
|
||||
|
||||
$sourceTypes = [
|
||||
CourseUserModel::SOURCE_CHARGE,
|
||||
CourseUserModel::SOURCE_MANUAL,
|
||||
CourseUserModel::SOURCE_POINT_REDEEM,
|
||||
CourseUserModel::SOURCE_LUCKY_REDEEM,
|
||||
];
|
||||
|
||||
$case1 = $courseUser->deleted == 0;
|
||||
$case2 = $courseUser->expiry_time > time();
|
||||
$case3 = in_array($courseUser->source_type, $sourceTypes);
|
||||
|
||||
/**
|
||||
* 之前参与过课程,但不再满足条件,视为未参与
|
||||
*/
|
||||
if ($case1 && $case2 && $case3) {
|
||||
$this->ownedCourse = true;
|
||||
} else {
|
||||
$this->joinedCourse = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function assignUserCourse(CourseModel $course, UserModel $user, int $expiryTime, int $sourceType)
|
||||
{
|
||||
$courseUserRepo = new CourseUserRepo();
|
||||
|
@ -7,30 +7,11 @@
|
||||
|
||||
namespace App\Services\Logic;
|
||||
|
||||
use App\Models\Course as CourseModel;
|
||||
use App\Models\CourseUser as CourseUserModel;
|
||||
use App\Models\User as UserModel;
|
||||
use App\Repos\CourseUser as CourseUserRepo;
|
||||
use App\Validators\Course as CourseValidator;
|
||||
|
||||
trait CourseTrait
|
||||
{
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $ownedCourse = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $joinedCourse = false;
|
||||
|
||||
/**
|
||||
* @var CourseUserModel|null
|
||||
*/
|
||||
protected $courseUser;
|
||||
|
||||
public function checkCourse($id)
|
||||
{
|
||||
$validator = new CourseValidator();
|
||||
@ -45,50 +26,4 @@ trait CourseTrait
|
||||
return $validator->checkCourseCache($id);
|
||||
}
|
||||
|
||||
public function setCourseUser(CourseModel $course, UserModel $user)
|
||||
{
|
||||
if ($user->id == 0) return;
|
||||
|
||||
$courseUserRepo = new CourseUserRepo();
|
||||
|
||||
$courseUser = $courseUserRepo->findCourseUser($course->id, $user->id);
|
||||
|
||||
$this->courseUser = $courseUser;
|
||||
|
||||
if ($courseUser) {
|
||||
$this->joinedCourse = true;
|
||||
}
|
||||
|
||||
if ($course->market_price == 0) {
|
||||
|
||||
$this->ownedCourse = true;
|
||||
|
||||
} elseif ($course->market_price > 0 && $course->vip_price == 0 && $user->vip == 1) {
|
||||
|
||||
$this->ownedCourse = true;
|
||||
|
||||
} elseif ($courseUser) {
|
||||
|
||||
$sourceTypes = [
|
||||
CourseUserModel::SOURCE_CHARGE,
|
||||
CourseUserModel::SOURCE_MANUAL,
|
||||
CourseUserModel::SOURCE_POINT_REDEEM,
|
||||
CourseUserModel::SOURCE_LUCKY_REDEEM,
|
||||
];
|
||||
|
||||
$case1 = $courseUser->deleted == 0;
|
||||
$case2 = $courseUser->expiry_time > time();
|
||||
$case3 = in_array($courseUser->source_type, $sourceTypes);
|
||||
|
||||
/**
|
||||
* 之前参与过课程,但不再满足条件,视为未参与
|
||||
*/
|
||||
if ($case1 && $case2 && $case3) {
|
||||
$this->ownedCourse = true;
|
||||
} else {
|
||||
$this->joinedCourse = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ class Refund extends Service
|
||||
|
||||
if (!$courseUser) return 1.00;
|
||||
|
||||
$userLearnings = $courseRepo->findUserLearnings($courseId, $userId);
|
||||
$userLearnings = $courseRepo->findUserLearnings($courseId, $userId, $courseUser->plan_id);
|
||||
|
||||
if ($userLearnings->count() == 0) return 1.00;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user