diff --git a/config/views.py b/config/views.py index b69a977..5887e84 100644 --- a/config/views.py +++ b/config/views.py @@ -2225,8 +2225,9 @@ class KehuGetDingdanLianjieView(APIView): if lianjie_obj.is_used: dingdan_info.update({ 'youxi_nicheng': dingdan_obj.Nickname or '', - 'zhiding_dashou': dingdan_obj.PlayerID or '', + 'zhiding_dashou': dingdan_obj.AssignedID or dingdan_obj.PlayerID or '', 'beizhu': dingdan_obj.Remark or '', + 'waibu_dingdan_id': dingdan_obj.ExternalOrderID or '', }) # 获取聊天相关标识 @@ -2369,6 +2370,7 @@ class KehuTianxieDingdanView(APIView): youxi_nicheng = data.get('youxi_nicheng', '').strip() zhiding_dashou = data.get('zhiding_dashou', '').strip() # 可选 beizhu = data.get('beizhu', '').strip() # 可选 + waibu_dingdan_id = str(data.get('waibu_dingdan_id') or data.get('waibuDingdanId') or '').strip()[:64] # 4.0 临时关闭指定功能(如需开启,请删除或注释掉下面两行) @@ -2379,7 +2381,7 @@ class KehuTianxieDingdanView(APIView): logger.info( - f"请求参数 - Token: {token[:8]}..., 昵称: {youxi_nicheng[:10]}..., 指定打手: {zhiding_dashou}, 备注长度: {len(beizhu)}") + f"请求参数 - Token: {token[:8]}..., 昵称: {youxi_nicheng[:10]}..., 指定打手: {zhiding_dashou}, 备注长度: {len(beizhu)}, 拼多多ID: {waibu_dingdan_id[:16] if waibu_dingdan_id else ''}") # 5. 验证必填参数 if not token: @@ -2398,6 +2400,14 @@ class KehuTianxieDingdanView(APIView): 'data': None }, status=status.HTTP_400_BAD_REQUEST) + if not waibu_dingdan_id: + logger.warning(f"拼多多订单号为空 - IP: {client_ip}") + return Response({ + 'code': 400, + 'msg': '拼多多订单号不能为空', + 'data': None + }, status=status.HTTP_400_BAD_REQUEST) + # 6. 验证游戏昵称格式 if len(youxi_nicheng) > 50: logger.warning(f"游戏昵称过长 - IP: {client_ip}, 长度: {len(youxi_nicheng)}") @@ -2427,7 +2437,15 @@ class KehuTianxieDingdanView(APIView): 'data': None }, status=status.HTTP_400_BAD_REQUEST) - # 8. 验证备注长度 + # 8. 验证拼多多订单号 + if len(waibu_dingdan_id) > 64: + return Response({ + 'code': 400, + 'msg': '拼多多订单号不能超过64个字符', + 'data': None + }, status=status.HTTP_400_BAD_REQUEST) + + # 9. 验证备注长度 if len(beizhu) > 500: logger.warning(f"备注过长 - IP: {client_ip}, 长度: {len(beizhu)}") return Response({ @@ -2551,6 +2569,7 @@ class KehuTianxieDingdanView(APIView): # 更新订单信息 dingdan_obj.Nickname = youxi_nicheng # 游戏昵称 dingdan_obj.Remark = beizhu if beizhu else '' # 备注 + dingdan_obj.ExternalOrderID = waibu_dingdan_id dingdan_obj.Status = zhuangtai_xin # 新状态:1或7 # 如果是指定打手,设置zhiding_id