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)
|
public function countLikes($reviewId)
|
||||||
{
|
{
|
||||||
return ReviewLikeModel::count([
|
return (int)ReviewLikeModel::count([
|
||||||
'conditions' => 'review_id = :review_id: AND deleted = 0',
|
'conditions' => 'review_id = :review_id: AND deleted = 0',
|
||||||
'bind' => ['review_id' => $reviewId],
|
'bind' => ['review_id' => $reviewId],
|
||||||
]);
|
]);
|
||||||
|
@ -14,6 +14,7 @@ use App\Models\CourseUser as CourseUserModel;
|
|||||||
use App\Models\User as UserModel;
|
use App\Models\User as UserModel;
|
||||||
use App\Repos\ChapterLike as ChapterLikeRepo;
|
use App\Repos\ChapterLike as ChapterLikeRepo;
|
||||||
use App\Services\Logic\ChapterTrait;
|
use App\Services\Logic\ChapterTrait;
|
||||||
|
use App\Services\Logic\Course\CourseUserTrait;
|
||||||
use App\Services\Logic\CourseTrait;
|
use App\Services\Logic\CourseTrait;
|
||||||
use App\Services\Logic\Service as LogicService;
|
use App\Services\Logic\Service as LogicService;
|
||||||
|
|
||||||
@ -31,6 +32,7 @@ class ChapterInfo extends LogicService
|
|||||||
protected $user;
|
protected $user;
|
||||||
|
|
||||||
use CourseTrait;
|
use CourseTrait;
|
||||||
|
use CourseUserTrait;
|
||||||
use ChapterTrait;
|
use ChapterTrait;
|
||||||
|
|
||||||
public function handle($id)
|
public function handle($id)
|
||||||
@ -88,8 +90,6 @@ class ChapterInfo extends LogicService
|
|||||||
|
|
||||||
if (!$this->ownedCourse) return;
|
if (!$this->ownedCourse) return;
|
||||||
|
|
||||||
$courseUser = new CourseUserModel();
|
|
||||||
|
|
||||||
$sourceType = CourseUserModel::SOURCE_FREE;
|
$sourceType = CourseUserModel::SOURCE_FREE;
|
||||||
|
|
||||||
if ($course->market_price > 0) {
|
if ($course->market_price > 0) {
|
||||||
@ -100,18 +100,14 @@ class ChapterInfo extends LogicService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$courseUser->course_id = $course->id;
|
$courseUser = $this->createCourseUser($course, $user, 0, $sourceType);
|
||||||
$courseUser->user_id = $user->id;
|
|
||||||
$courseUser->source_type = $sourceType;
|
|
||||||
|
|
||||||
$courseUser->create();
|
|
||||||
|
|
||||||
$this->courseUser = $courseUser;
|
$this->courseUser = $courseUser;
|
||||||
|
|
||||||
$this->joinedCourse = true;
|
$this->joinedCourse = true;
|
||||||
|
|
||||||
$this->incrCourseUserCount($course);
|
$this->recountCourseUsers($course);
|
||||||
$this->incrUserCourseCount($user);
|
$this->recountUserCourses($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function handleChapterUser(ChapterModel $chapter, UserModel $user)
|
protected function handleChapterUser(ChapterModel $chapter, UserModel $user)
|
||||||
@ -188,20 +184,6 @@ class ChapterInfo extends LogicService
|
|||||||
return $me;
|
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)
|
protected function incrChapterUserCount(ChapterModel $chapter)
|
||||||
{
|
{
|
||||||
$chapter->user_count += 1;
|
$chapter->user_count += 1;
|
||||||
|
@ -17,6 +17,7 @@ class CourseInfo extends LogicService
|
|||||||
{
|
{
|
||||||
|
|
||||||
use CourseTrait;
|
use CourseTrait;
|
||||||
|
use CourseUserTrait;
|
||||||
|
|
||||||
public function handle($id)
|
public function handle($id)
|
||||||
{
|
{
|
||||||
|
@ -17,6 +17,67 @@ use App\Repos\User as UserRepo;
|
|||||||
trait CourseUserTrait
|
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)
|
protected function assignUserCourse(CourseModel $course, UserModel $user, int $expiryTime, int $sourceType)
|
||||||
{
|
{
|
||||||
$courseUserRepo = new CourseUserRepo();
|
$courseUserRepo = new CourseUserRepo();
|
||||||
|
@ -7,30 +7,11 @@
|
|||||||
|
|
||||||
namespace App\Services\Logic;
|
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;
|
use App\Validators\Course as CourseValidator;
|
||||||
|
|
||||||
trait CourseTrait
|
trait CourseTrait
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
protected $ownedCourse = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
protected $joinedCourse = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var CourseUserModel|null
|
|
||||||
*/
|
|
||||||
protected $courseUser;
|
|
||||||
|
|
||||||
public function checkCourse($id)
|
public function checkCourse($id)
|
||||||
{
|
{
|
||||||
$validator = new CourseValidator();
|
$validator = new CourseValidator();
|
||||||
@ -45,50 +26,4 @@ trait CourseTrait
|
|||||||
return $validator->checkCourseCache($id);
|
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;
|
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;
|
if ($userLearnings->count() == 0) return 1.00;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user