# dingdan/cross_platform_tasks.py import logging import requests from django.conf import settings logger = logging.getLogger(__name__) def send_partner_sync_order(partner_order_id, jine, dashou_fencheng, jieshao, beizhu, create_time): """ 异步发送派单通知给对方平台(使用简单线程,非Celery) 注意:此函数应在线程中调用,避免阻塞主请求。 生产环境建议使用Celery,此处提供线程兼容版本。 """ url = f"{settings.PARTNER_BASE_URL}/dingdan/partner_sync_order" payload = { 'token': settings.CROSS_PLATFORM_TOKEN, 'partner_order_id': partner_order_id, 'jine': jine, 'dashou_fencheng': dashou_fencheng, 'jieshao': jieshao, 'beizhu': beizhu, 'create_time': create_time, } try: response = requests.post(url, json=payload, timeout=5) if response.status_code == 200: data = response.json() if data.get('code') == 0: logger.info(f"跨平台派单同步成功: {partner_order_id}") # 可在此处保存对方返回的 local_order_id 到本地订单(如果需要) # local_order_id = data['data'].get('local_order_id') # Dingdan.objects.filter(dingdan_id=partner_order_id).update(partner_order_id=local_order_id) else: logger.error(f"跨平台派单同步业务失败: {data}") else: logger.error(f"跨平台派单同步HTTP失败: {response.status_code}") except Exception as e: logger.error(f"跨平台派单同步异常: {str(e)}", exc_info=True)