1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-07-21 23:46:39 +08:00

优化CourseUserTrait等

This commit is contained in:
xiaochong0302 2024-12-06 21:56:49 +08:00
parent 98cc8da285
commit 978b77a184
6 changed files with 45 additions and 22 deletions

View File

@ -40,7 +40,7 @@ class CourseUser extends Service
$sourceType = CourseUserModel::SOURCE_MANUAL;
return $this->assignUserCourse($course, $user, $expiryTime, $sourceType);
$this->assignUserCourse($course, $user, $expiryTime, $sourceType);
}
public function getUsers($id)

View File

@ -45,7 +45,7 @@ class Resource extends Service
$this->recountCourseResources($course);
return $upload;
return $resource;
}
public function updateResource($id)
@ -67,6 +67,8 @@ class Resource extends Service
$upload->update($data);
$resource->update();
return $resource;
}
public function deleteResource($id)
@ -80,6 +82,8 @@ class Resource extends Service
$resource->delete();
$this->recountCourseResources($course);
return $resource;
}
protected function findOrFail($id)

View File

@ -142,7 +142,7 @@ class User extends Service
$this->db->commit();
if ($adminRole > 0) {
$this->updateAdminUserCount($adminRole);
$this->recountRoleUsers($adminRole);
}
$this->rebuildUserCache($user);
@ -225,11 +225,11 @@ class User extends Service
}
if ($oldAdminRole > 0) {
$this->updateAdminUserCount($oldAdminRole);
$this->recountRoleUsers($oldAdminRole);
}
if ($user->admin_role > 0) {
$this->updateAdminUserCount($user->admin_role);
$this->recountRoleUsers($user->admin_role);
}
$this->rebuildUserCache($user);
@ -341,7 +341,7 @@ class User extends Service
$apiAuth->logoutClients($user->id);
}
protected function updateAdminUserCount($roleId)
protected function recountRoleUsers($roleId)
{
$roleRepo = new RoleRepo();

View File

@ -23,7 +23,7 @@
<tr>
<td>{{ client_type(item.client_type) }}</td>
<td><a href="javascript:" class="kg-ip2region" title="查看位置" data-ip="{{ item.client_ip }}">{{ item.client_ip }}</a></td>
<td>{{ date('Y-m-d H:i',item.active_time) }}</td>
<td>{{ date('Y-m-d H:i:s',item.active_time) }}</td>
</tr>
{% endfor %}
</tbody>

View File

@ -10,7 +10,6 @@ namespace App\Services\Logic\Chapter;
use App\Models\Chapter as ChapterModel;
use App\Models\ChapterUser as ChapterUserModel;
use App\Models\Course as CourseModel;
use App\Models\CourseUser as CourseUserModel;
use App\Models\User as UserModel;
use App\Repos\ChapterLike as ChapterLikeRepo;
use App\Services\Logic\ChapterTrait;
@ -94,15 +93,7 @@ class ChapterInfo extends LogicService
if (!$this->ownedCourse) return;
$sourceType = CourseUserModel::SOURCE_FREE;
if ($course->market_price > 0) {
if ($course->vip_price == 0 && $user->vip == 1) {
$sourceType = CourseUserModel::SOURCE_VIP;
} else {
$sourceType = CourseUserModel::SOURCE_TRIAL;
}
}
$sourceType = $this->getFreeSourceType($course, $user);
$courseUser = $this->createCourseUser($course, $user, 0, $sourceType);
@ -199,7 +190,6 @@ class ChapterInfo extends LogicService
$parent->user_count += 1;
$parent->update();
}
}

View File

@ -50,7 +50,7 @@ trait CourseUserTrait
$this->ownedCourse = true;
} elseif ($course->market_price > 0 && $course->vip_price == 0 && $user->vip == 1) {
} elseif ($course->vip_price == 0 && $user->vip == 1) {
$this->ownedCourse = true;
@ -80,19 +80,22 @@ trait CourseUserTrait
protected function assignUserCourse(CourseModel $course, UserModel $user, int $expiryTime, int $sourceType)
{
if ($this->allowFreeAccess($course, $user)) return;
$courseUserRepo = new CourseUserRepo();
$relation = $courseUserRepo->findCourseUser($course->id, $user->id);
if (!$relation) {
$relation = $this->createCourseUser($course, $user, $expiryTime, $sourceType);
$this->createCourseUser($course, $user, $expiryTime, $sourceType);
} else {
switch ($relation->source_type) {
case CourseUserModel::SOURCE_FREE:
case CourseUserModel::SOURCE_TRIAL:
case CourseUserModel::SOURCE_VIP:
$this->createCourseUser($course, $user, $expiryTime, $sourceType);
$this->deleteCourseUser($relation);
break;
@ -113,8 +116,6 @@ trait CourseUserTrait
$this->recountCourseUsers($course);
$this->recountUserCourses($user);
return $relation;
}
protected function createCourseUser(CourseModel $course, UserModel $user, int $expiryTime, int $sourceType)
@ -160,4 +161,32 @@ trait CourseUserTrait
$user->update();
}
protected function allowFreeAccess(CourseModel $course, UserModel $user)
{
$result = false;
if ($course->market_price == 0) {
$result = true;
} elseif ($course->vip_price == 0 && $user->vip == 1) {
$result = true;
}
return $result;
}
protected function getFreeSourceType(CourseModel $course, UserModel $user)
{
$sourceType = CourseUserModel::SOURCE_FREE;
if ($course->market_price > 0) {
if ($course->vip_price == 0 && $user->vip == 1) {
$sourceType = CourseUserModel::SOURCE_VIP;
} else {
$sourceType = CourseUserModel::SOURCE_TRIAL;
}
}
return $sourceType;
}
}