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); }