From f4cea66408e498ba796154f1c0c0d74f36ff9e39 Mon Sep 17 00:00:00 2001 From: jlj <3042504846@qq.com> Date: Thu, 22 May 2025 12:14:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/daren_detail/views.py | 30 +++++++++++++----- logs/app.log | 64 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 8 deletions(-) diff --git a/apps/daren_detail/views.py b/apps/daren_detail/views.py index e7b96f3..34d9de9 100644 --- a/apps/daren_detail/views.py +++ b/apps/daren_detail/views.py @@ -39,15 +39,17 @@ is_monitoring = False @csrf_exempt @require_http_methods(["POST"]) def filter_creators(request): - """根据过滤条件筛选达人信息(POST版)""" + """根据过滤条件筛选达人信息(POST版,分页参数在URL中)""" try: import json + # 从URL获取分页参数 + page = int(request.GET.get('page', 1)) + page_size = 10 # 固定页面大小为10条数据 + # 解析POST请求体 data = json.loads(request.body) filter_data = data.get('filter', {}) - page = int(data.get('page', 1)) - page_size = int(data.get('page_size', 10)) # 基础查询 query = CreatorProfile.objects.all() @@ -366,7 +368,7 @@ def get_campaigns(request): @csrf_exempt @require_http_methods(["POST"]) def add_to_campaign(request): - """添加达人到营销活动(如有原达人则先删除后添加)""" + """添加达人到营销活动(保留原有达人)""" try: from .models import CreatorProfile, CreatorCampaign from apps.brands.models import Campaign @@ -407,19 +409,26 @@ def add_to_campaign(request): 'data': None }, json_dumps_params={'ensure_ascii': False}) - # 先删除该活动下之前绑定的所有达人 - deleted_count = CreatorCampaign.objects.filter(campaign=campaign).delete()[0] - logger.info(f"已删除活动 {campaign_id} 下的 {deleted_count} 个原有达人关联") + # 获取已存在的达人关联 + existing_creators = set(CreatorCampaign.objects.filter(campaign=campaign).values_list('creator_id', flat=True)) + logger.info(f"活动 {campaign_id} 已有 {len(existing_creators)} 个达人关联") # 添加新达人到活动 added_count = 0 skipped_count = 0 + already_exists_count = 0 added_creators = [] for creator_id in creator_ids: try: # 移除is_active检查 creator = CreatorProfile.objects.get(id=creator_id) + + # 检查是否已存在关联 + if creator.id in existing_creators: + already_exists_count += 1 + logger.info(f"达人 {creator_id} 已经存在于活动 {campaign_id} 中") + continue # 创建新的关联 creator_campaign = CreatorCampaign.objects.create( @@ -445,7 +454,12 @@ def add_to_campaign(request): 'id': str(campaign.id), 'name': campaign.name }, - 'added_creators': added_creators + 'added_creators': added_creators, + 'stats': { + 'added': added_count, + 'skipped': skipped_count, + 'already_exists': already_exists_count + } } }, json_dumps_params={'ensure_ascii': False}) diff --git a/logs/app.log b/logs/app.log index f1137a5..b4e7dc0 100644 --- a/logs/app.log +++ b/logs/app.log @@ -29,3 +29,67 @@ ERROR 2025-05-20 17:40:33,375 offer_status_service ��ȡ̸��״̬ʧ��: ERROR 2025-05-20 17:41:03,425 offer_status_service ��ȡ̸��״̬ʧ��: ���������û�idΪ14����ƷidΪ241a67e0-1c99-44de-a5dd-40622ffa23b6��̸�� ERROR 2025-05-20 17:41:33,477 offer_status_service ��ȡ̸��״̬ʧ��: ���������û�idΪ14����ƷidΪ241a67e0-1c99-44de-a5dd-40622ffa23b6��̸�� ERROR 2025-05-20 17:42:03,529 offer_status_service ��ȡ̸��״̬ʧ��: ���������û�idΪ14����ƷidΪ241a67e0-1c99-44de-a5dd-40622ffa23b6��̸�� +WARNING 2025-05-21 17:26:51,505 consumers 未提供token +ERROR 2025-05-21 17:26:51,506 consumers WebSocket连接未授权,缺少有效token: None +INFO 2025-05-21 17:26:51,509 consumers WebSocket连接已断开: None, 关闭代码: 1006 +WARNING 2025-05-21 17:27:15,503 consumers Token认证失败: 无效或过期的token +ERROR 2025-05-21 17:27:15,504 consumers WebSocket连接未授权,缺少有效token: 61cd850bfe59f44601d952212e31557257e02a08 +INFO 2025-05-21 17:27:15,508 consumers WebSocket连接已断开: None, 关闭代码: 1006 +WARNING 2025-05-21 17:27:42,197 consumers Token认证失败: 无效或过期的token +ERROR 2025-05-21 17:27:42,198 consumers WebSocket连接未授权,缺少有效token: 61cd850bfe59f44601d952212e31557257e02a08 +INFO 2025-05-21 17:27:42,201 consumers WebSocket连接已断开: None, 关闭代码: 1006 +INFO 2025-05-21 17:28:35,839 offer_status_service 发送状态查询请求: URL=http://81.69.223.133:58099/api/operation/negotiations/offer_status/, 参数={'creator_id': '14', 'product_id': '241a67e0-1c99-44de-a5dd-40622ffa23b6'} +ERROR 2025-05-21 17:28:54,885 offer_status_service 获取谈判状态时发生错误: HTTPConnectionPool(host='81.69.223.133', port=58099): Max retries exceeded with url: /api/operation/negotiations/offer_status/ (Caused by ConnectTimeoutError(, 'Connection to 81.69.223.133 timed out. (connect timeout=None)')) +INFO 2025-05-21 17:28:54,894 offer_status_service 发送状态查询请求: URL=http://81.69.223.133:58099/api/operation/negotiations/offer_status/, 参数={'creator_id': '14', 'product_id': '241a67e0-1c99-44de-a5dd-40622ffa23b6'} +INFO 2025-05-21 17:28:54,894 status_polling_service 已启动活动 1 的状态轮询,间隔 30 秒 +INFO 2025-05-21 17:28:54,895 consumers 已启动活动 1 的状态轮询,包含 1 个产品和 1 个达人 +INFO 2025-05-21 17:28:54,895 consumers WebSocket连接已建立: campaign_1 +INFO 2025-05-21 17:29:08,509 consumers WebSocket连接已断开: campaign_1, 关闭代码: None +ERROR 2025-05-21 17:29:15,442 offer_status_service 获取谈判状态时发生错误: HTTPConnectionPool(host='81.69.223.133', port=58099): Max retries exceeded with url: /api/operation/negotiations/offer_status/ (Caused by ConnectTimeoutError(, 'Connection to 81.69.223.133 timed out. (connect timeout=None)')) +INFO 2025-05-21 17:29:31,673 status_polling_service 正在停止活动 1 的状态轮询... +INFO 2025-05-21 17:29:31,673 status_polling_service 活动 1 的轮询线程已成功停止 +INFO 2025-05-21 17:29:31,674 status_polling_service 已停止活动 1 的状态轮询 +INFO 2025-05-21 17:29:40,106 status_polling_service 正在停止所有轮询任务,活动数量: 0 +INFO 2025-05-21 17:29:40,107 status_polling_service 已停止 0/0 个轮询任务 +INFO 2025-05-22 10:45:00,597 views 尝试查找活动,ID: 2 +INFO 2025-05-22 10:45:00,619 views 找到活动: SUNLINK 台灯灯13, Active: True +INFO 2025-05-22 10:45:00,634 views 已删除活动 2 下的 1 个原有达人关联 +INFO 2025-05-22 10:46:08,511 views 尝试查找活动,ID: 2 +INFO 2025-05-22 10:46:08,517 views 找到活动: SUNLINK 台灯灯13, Active: True +INFO 2025-05-22 10:46:08,555 views 已删除活动 2 下的 1 个原有达人关联 +INFO 2025-05-22 11:06:23,943 offer_status_service 发送状态查询请求: URL=http://81.69.223.133:58099/api/operation/negotiations/offer_status/, 参数={'creator_id': '14', 'product_id': '241a67e0-1c99-44de-a5dd-40622ffa23b6'} +INFO 2025-05-22 11:06:23,996 offer_status_service 接收状态查询响应: 状态码=200 +INFO 2025-05-22 11:06:23,997 offer_status_service 状态查询响应内容: {'code': 404, 'message': '不存在与用户id为14和商品id为241a67e0-1c99-44de-a5dd-40622ffa23b6的谈判', 'data': None} +ERROR 2025-05-22 11:06:23,998 offer_status_service 获取谈判状态失败: 不存在与用户id为14和商品id为241a67e0-1c99-44de-a5dd-40622ffa23b6的谈判 +INFO 2025-05-22 11:06:24,019 offer_status_service 发送状态查询请求: URL=http://81.69.223.133:58099/api/operation/negotiations/offer_status/, 参数={'creator_id': '14', 'product_id': '241a67e0-1c99-44de-a5dd-40622ffa23b6'} +INFO 2025-05-22 11:06:24,019 status_polling_service 已启动活动 1 的状态轮询,间隔 30 秒 +INFO 2025-05-22 11:06:24,020 consumers 已启动活动 1 的状态轮询,包含 1 个产品和 1 个达人 +INFO 2025-05-22 11:06:24,021 consumers WebSocket连接已建立: campaign_1 +INFO 2025-05-22 11:06:24,057 offer_status_service 接收状态查询响应: 状态码=200 +INFO 2025-05-22 11:06:24,058 offer_status_service 状态查询响应内容: {'code': 404, 'message': '不存在与用户id为14和商品id为241a67e0-1c99-44de-a5dd-40622ffa23b6的谈判', 'data': None} +ERROR 2025-05-22 11:06:24,059 offer_status_service 获取谈判状态失败: 不存在与用户id为14和商品id为241a67e0-1c99-44de-a5dd-40622ffa23b6的谈判 +INFO 2025-05-22 11:06:54,066 offer_status_service 发送状态查询请求: URL=http://81.69.223.133:58099/api/operation/negotiations/offer_status/, 参数={'creator_id': '14', 'product_id': '241a67e0-1c99-44de-a5dd-40622ffa23b6'} +INFO 2025-05-22 11:06:54,142 offer_status_service 接收状态查询响应: 状态码=200 +INFO 2025-05-22 11:06:54,143 offer_status_service 状态查询响应内容: {'code': 404, 'message': '不存在与用户id为14和商品id为241a67e0-1c99-44de-a5dd-40622ffa23b6的谈判', 'data': None} +ERROR 2025-05-22 11:06:54,143 offer_status_service 获取谈判状态失败: 不存在与用户id为14和商品id为241a67e0-1c99-44de-a5dd-40622ffa23b6的谈判 +INFO 2025-05-22 11:07:16,388 consumers WebSocket连接已断开: campaign_1, 关闭代码: None +INFO 2025-05-22 11:07:24,152 offer_status_service 发送状态查询请求: URL=http://81.69.223.133:58099/api/operation/negotiations/offer_status/, 参数={'creator_id': '14', 'product_id': '241a67e0-1c99-44de-a5dd-40622ffa23b6'} +INFO 2025-05-22 11:07:24,194 offer_status_service 接收状态查询响应: 状态码=200 +INFO 2025-05-22 11:07:24,195 offer_status_service 状态查询响应内容: {'code': 404, 'message': '不存在与用户id为14和商品id为241a67e0-1c99-44de-a5dd-40622ffa23b6的谈判', 'data': None} +ERROR 2025-05-22 11:07:24,195 offer_status_service 获取谈判状态失败: 不存在与用户id为14和商品id为241a67e0-1c99-44de-a5dd-40622ffa23b6的谈判 +INFO 2025-05-22 11:07:53,576 status_polling_service 正在停止所有轮询任务,活动数量: 1 +INFO 2025-05-22 11:07:53,576 status_polling_service 正在停止活动 1 的状态轮询... +INFO 2025-05-22 11:07:53,576 status_polling_service 活动 1 的轮询线程已成功停止 +INFO 2025-05-22 11:07:53,578 status_polling_service 已停止活动 1 的状态轮询 +INFO 2025-05-22 11:07:53,578 status_polling_service 已停止 1/1 个轮询任务 +INFO 2025-05-22 11:26:27,501 views 尝试查找活动,ID: 2 +INFO 2025-05-22 11:26:27,632 views 找到活动: SUNLINK 台灯灯13, Active: True +INFO 2025-05-22 11:26:27,635 views 活动 2 已有 1 个达人关联 +INFO 2025-05-22 11:26:27,640 views 达人 17 已经存在于活动 2 中 +INFO 2025-05-22 11:26:35,449 views 尝试查找活动,ID: 2 +INFO 2025-05-22 11:26:35,454 views 找到活动: SUNLINK 台灯灯13, Active: True +INFO 2025-05-22 11:26:35,457 views 活动 2 已有 1 个达人关联 +INFO 2025-05-22 11:26:35,463 views 达人 17 已经存在于活动 2 中 +INFO 2025-05-22 11:27:08,046 views 尝试查找活动,ID: 2 +INFO 2025-05-22 11:27:08,050 views 找到活动: SUNLINK 台灯灯13, Active: True +INFO 2025-05-22 11:27:08,055 views 活动 2 已有 1 个达人关联