优化
This commit is contained in:
parent
56c0bc930a
commit
af85cc7b56
@ -2483,13 +2483,7 @@ def get_private_pool_creators(request, pool_id=None):
|
||||
# 检查pool_id是否提供
|
||||
if not pool_id:
|
||||
pool_id = request.GET.get('pool_id')
|
||||
if not pool_id:
|
||||
return JsonResponse({
|
||||
'code': 400,
|
||||
'message': '缺少必要参数: pool_id',
|
||||
'data': None
|
||||
}, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
|
||||
# 获取分页参数
|
||||
page = int(request.GET.get('page', 1))
|
||||
page_size = int(request.GET.get('page_size', 10))
|
||||
@ -2498,23 +2492,49 @@ def get_private_pool_creators(request, pool_id=None):
|
||||
status = request.GET.get('status', 'active') # 默认只获取活跃状态的达人
|
||||
keyword = request.GET.get('keyword')
|
||||
|
||||
# 查询私有库信息并验证所有权
|
||||
try:
|
||||
private_pool = PrivateCreatorPool.objects.get(
|
||||
id=pool_id,
|
||||
user_id=current_user.id # 确保只能访问当前用户的私有库
|
||||
)
|
||||
except PrivateCreatorPool.DoesNotExist:
|
||||
return JsonResponse({
|
||||
'code': 404,
|
||||
'message': f'找不到ID为 {pool_id} 的私有库或无权限访问',
|
||||
'data': None
|
||||
}, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
# 查询私有库中的达人关联
|
||||
creator_relations = PrivateCreatorRelation.objects.filter(
|
||||
private_pool=private_pool
|
||||
).select_related('creator')
|
||||
pool_info = None
|
||||
creator_relations = None
|
||||
|
||||
if pool_id:
|
||||
# 查询特定私有库信息并验证所有权
|
||||
try:
|
||||
private_pool = PrivateCreatorPool.objects.get(
|
||||
id=pool_id,
|
||||
user_id=current_user.id # 确保只能访问当前用户的私有库
|
||||
)
|
||||
|
||||
# 构造私有库信息
|
||||
pool_info = {
|
||||
"id": private_pool.id,
|
||||
"name": private_pool.name,
|
||||
"description": private_pool.description,
|
||||
"is_default": private_pool.is_default,
|
||||
"user_id": private_pool.user_id,
|
||||
"created_at": private_pool.created_at.strftime('%Y-%m-%d')
|
||||
}
|
||||
|
||||
# 查询私有库中的达人关联
|
||||
creator_relations = PrivateCreatorRelation.objects.filter(
|
||||
private_pool=private_pool
|
||||
).select_related('creator')
|
||||
|
||||
except PrivateCreatorPool.DoesNotExist:
|
||||
return JsonResponse({
|
||||
'code': 404,
|
||||
'message': f'找不到ID为 {pool_id} 的私有库或无权限访问',
|
||||
'data': None
|
||||
}, json_dumps_params={'ensure_ascii': False})
|
||||
else:
|
||||
# 不指定pool_id时,查询用户所有私有库中的达人
|
||||
# 获取当前用户的所有私有库ID
|
||||
user_pool_ids = PrivateCreatorPool.objects.filter(
|
||||
user_id=current_user.id
|
||||
).values_list('id', flat=True)
|
||||
|
||||
# 查询所有私有库中的达人关联
|
||||
creator_relations = PrivateCreatorRelation.objects.filter(
|
||||
private_pool_id__in=user_pool_ids
|
||||
).select_related('creator', 'private_pool')
|
||||
|
||||
# 应用过滤条件
|
||||
if status:
|
||||
@ -2578,7 +2598,8 @@ def get_private_pool_creators(request, pool_id=None):
|
||||
"added_from_public": relation.added_from_public,
|
||||
"added_at": relation.created_at.strftime('%Y-%m-%d'),
|
||||
"is_public_removed": relation.status == 'public_removed', # 添加公有库移除标识
|
||||
"status_note": "该达人已从公有库中移除" if relation.status == 'public_removed' else None # 状态说明
|
||||
"status_note": "该达人已从公有库中移除" if relation.status == 'public_removed' else None, # 状态说明
|
||||
"pool_name": relation.private_pool.name if not pool_id else None # 当查询所有库时,返回所属库名称
|
||||
}
|
||||
creator_list.append(formatted_creator)
|
||||
|
||||
@ -2594,23 +2615,18 @@ def get_private_pool_creators(request, pool_id=None):
|
||||
"has_prev": page > 1
|
||||
}
|
||||
|
||||
# 构造私有库信息
|
||||
pool_info = {
|
||||
"id": private_pool.id,
|
||||
"name": private_pool.name,
|
||||
"description": private_pool.description,
|
||||
"is_default": private_pool.is_default,
|
||||
"user_id": private_pool.user_id,
|
||||
"created_at": private_pool.created_at.strftime('%Y-%m-%d')
|
||||
}
|
||||
|
||||
return JsonResponse({
|
||||
response_data = {
|
||||
'code': 200,
|
||||
'message': '获取成功',
|
||||
'data': creator_list,
|
||||
'pagination': pagination,
|
||||
'pool_info': pool_info
|
||||
}, json_dumps_params={'ensure_ascii': False})
|
||||
'pagination': pagination
|
||||
}
|
||||
|
||||
# 只有在指定了pool_id的情况下才返回pool_info
|
||||
if pool_info:
|
||||
response_data['pool_info'] = pool_info
|
||||
|
||||
return JsonResponse(response_data, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"获取私有库达人列表失败: {e}")
|
||||
@ -3459,7 +3475,8 @@ def filter_private_pool_creators(request):
|
||||
"added_from_public": relation.added_from_public,
|
||||
"added_at": relation.created_at.strftime('%Y-%m-%d'),
|
||||
"is_public_removed": relation.status == 'public_removed', # 添加公有库移除标识
|
||||
"status_note": "该达人已从公有库中移除" if relation.status == 'public_removed' else None # 状态说明
|
||||
"status_note": "该达人已从公有库中移除" if relation.status == 'public_removed' else None, # 状态说明
|
||||
"pool_name": relation.private_pool.name if not pool_id else None # 当查询所有库时,返回所属库名称
|
||||
}
|
||||
creator_list.append(formatted_creator)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user