1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-07-23 00:16: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; $sourceType = CourseUserModel::SOURCE_MANUAL;
return $this->assignUserCourse($course, $user, $expiryTime, $sourceType); $this->assignUserCourse($course, $user, $expiryTime, $sourceType);
} }
public function getUsers($id) public function getUsers($id)

View File

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

View File

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

View File

@ -23,7 +23,7 @@
<tr> <tr>
<td>{{ client_type(item.client_type) }}</td> <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><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> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>

View File

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

View File

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