This commit is contained in:
jlj 2025-06-11 11:57:13 +08:00
parent 56c0bc930a
commit af85cc7b56

View File

@ -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)