fix: support both exclusive and public resources for logged in users, include flags in quick returns
This commit is contained in:
@@ -129,12 +129,22 @@ class AssetAppController extends BaseApiController
|
|||||||
$usedResourceIds = [];
|
$usedResourceIds = [];
|
||||||
|
|
||||||
if ($user) {
|
if ($user) {
|
||||||
// 登录用户:只看自己的专属资源
|
// 登录用户:自己的专属资源 + 所有公开资源
|
||||||
$resourceIds = AssetUserResource::where('user_id', $user->id)->column('resource_id');
|
$exclusiveIds = AssetUserResource::where('user_id', $user->id)->column('resource_id');
|
||||||
if (empty($resourceIds)) {
|
$associatedResourceIds = AssetUserResource::column('resource_id');
|
||||||
return $this->data(['lists' => [], 'count' => 0, 'page_no' => $pageNo, 'page_size' => $pageSize]);
|
|
||||||
}
|
$query = $query->where(function ($q) use ($exclusiveIds, $associatedResourceIds) {
|
||||||
$query = $query->whereIn('id', $resourceIds);
|
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')
|
$usedResourceIds = \think\facade\Db::name('asset_resource_usage')
|
||||||
@@ -148,7 +158,14 @@ class AssetAppController extends BaseApiController
|
|||||||
}
|
}
|
||||||
} elseif ($usageStatus === 2) { // 已使用
|
} elseif ($usageStatus === 2) { // 已使用
|
||||||
if (empty($usedResourceIds)) {
|
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);
|
$query = $query->whereIn('id', $usedResourceIds);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user