From 436f69c272aac3ad1e7029c5a9265d3bd0dc6185 Mon Sep 17 00:00:00 2001 From: long <452591453@qq.com> Date: Thu, 21 May 2026 14:36:02 +0800 Subject: [PATCH] fix: support both exclusive and public resources for logged in users, include flags in quick returns --- .../controller/asset/AssetAppController.php | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/server/app/api/controller/asset/AssetAppController.php b/server/app/api/controller/asset/AssetAppController.php index 2d19c5fc..6dbcd8ea 100644 --- a/server/app/api/controller/asset/AssetAppController.php +++ b/server/app/api/controller/asset/AssetAppController.php @@ -129,12 +129,22 @@ class AssetAppController extends BaseApiController $usedResourceIds = []; if ($user) { - // 登录用户:只看自己的专属资源 - $resourceIds = AssetUserResource::where('user_id', $user->id)->column('resource_id'); - if (empty($resourceIds)) { - return $this->data(['lists' => [], 'count' => 0, 'page_no' => $pageNo, 'page_size' => $pageSize]); - } - $query = $query->whereIn('id', $resourceIds); + // 登录用户:自己的专属资源 + 所有公开资源 + $exclusiveIds = AssetUserResource::where('user_id', $user->id)->column('resource_id'); + $associatedResourceIds = AssetUserResource::column('resource_id'); + + $query = $query->where(function ($q) use ($exclusiveIds, $associatedResourceIds) { + if (!empty($exclusiveIds)) { + $q->whereIn('id', $exclusiveIds); + } + if (!empty($associatedResourceIds)) { + if (!empty($exclusiveIds)) { + $q->whereOr('id', 'not in', $associatedResourceIds); + } else { + $q->whereNotIn('id', $associatedResourceIds); + } + } + }); // 获取该用户的使用记录 $usedResourceIds = \think\facade\Db::name('asset_resource_usage') @@ -148,7 +158,14 @@ class AssetAppController extends BaseApiController } } elseif ($usageStatus === 2) { // 已使用 if (empty($usedResourceIds)) { - return $this->data(['lists' => [], 'count' => 0, 'page_no' => $pageNo, 'page_size' => $pageSize]); + return $this->data([ + 'lists' => [], + 'count' => 0, + 'page_no' => $pageNo, + 'page_size' => $pageSize, + 'is_disabled' => $isDisabled, + 'token_invalid' => $tokenInvalid, + ]); } $query = $query->whereIn('id', $usedResourceIds); }