From 6cb3dff949b0e9e764f516a1ce8caceb078b1494 Mon Sep 17 00:00:00 2001 From: XingQue Date: Thu, 23 Jul 2026 04:06:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=80=81=E6=9D=BF=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=9F=A5=E8=AF=A2=E6=89=93=E6=89=8B=E8=A1=A8?= =?UTF-8?q?=E7=8E=B0=E5=AD=97=E6=AE=B5=E9=94=99=E8=AF=AF=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=8E=A5=E5=8D=95=E5=90=8E=E6=95=B4=E9=A1=B5500?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dingdanxiangqing2 误用 OrderID 过滤 DashouBiaoxian(应为 dingdan_id),有人接单即服务器内部错误,打手信息无法返回。同步修正结算写入 fanche_cishu 与评分整数累加。不影响其它俱乐部业务分支。 Co-authored-by: Cursor --- orders/views/boss_orders.py | 55 +++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/orders/views/boss_orders.py b/orders/views/boss_orders.py index dd28d95..acce73e 100644 --- a/orders/views/boss_orders.py +++ b/orders/views/boss_orders.py @@ -593,17 +593,22 @@ class DingdanXiangqingView2(APIView): dashou_touxiang = dashou_user.Avatar or '' try: dashou_nicheng = dashou_user.DashouProfile.nicheng or '' - except UserDashou.DoesNotExist: + except Exception: + # 无打手扩展档案时仍返回打手 UID / 头像 pass - biaoxian = DashouBiaoxian.query.filter( - OrderID=dingdan_id, - dashou_id=jiedan_dashou_id - ).first() - if biaoxian: - if biaoxian.jiedan_time: - jiedan_time = biaoxian.jiedan_time.strftime('%Y-%m-%d %H:%M:%S') - if biaoxian.tijiao_time: - tijiao_time = biaoxian.tijiao_time.strftime('%Y-%m-%d %H:%M:%S') + # DashouBiaoxian 外键字段是 dingdan(列 dingdan_id),勿用 OrderID(会 FieldError → 整单详情 500) + try: + biaoxian = DashouBiaoxian.query.filter( + dingdan_id=dingdan_id, + dashou_id=jiedan_dashou_id + ).first() + if biaoxian: + if biaoxian.jiedan_time: + jiedan_time = biaoxian.jiedan_time.strftime('%Y-%m-%d %H:%M:%S') + if biaoxian.tijiao_time: + tijiao_time = biaoxian.tijiao_time.strftime('%Y-%m-%d %H:%M:%S') + except Exception as e: + logger.warning(f"读取打手表现失败 dingdan={dingdan_id}: {e}") # 老板自己的评价(如果已经结算过,可能已有评价) laoban_pingjia = pingtai_ext.BossReview or '' @@ -611,14 +616,17 @@ class DingdanXiangqingView2(APIView): fuwu_taidu = None fanche_cishu = None if jiedan_dashou_id and zhuangtai in [3, 4, 5, 6]: # 已完成或退款相关状态才可能有评价 - biaoxian = DashouBiaoxian.query.filter( - OrderID=dingdan_id, - dashou_id=jiedan_dashou_id - ).first() - if biaoxian: - shangxian_sudu = biaoxian.shangxian_sudu - fuwu_taidu = biaoxian.fuwu_taidu - fanche_cishu = biaoxian.fanche_cishu + try: + biaoxian = DashouBiaoxian.query.filter( + dingdan_id=dingdan_id, + dashou_id=jiedan_dashou_id + ).first() + if biaoxian: + shangxian_sudu = biaoxian.shangxian_sudu + fuwu_taidu = biaoxian.fuwu_taidu + fanche_cishu = biaoxian.fanche_cishu + except Exception as e: + logger.warning(f"读取结算评价失败 dingdan={dingdan_id}: {e}") data = { 'zhuangtai': zhuangtai, @@ -716,13 +724,13 @@ class JiedanView2(APIView): pingfen_records = PlayerRating.query.filter(PlayerID=jiedan_dashou_id) if pingfen_records.exists(): pf = pingfen_records.first() - pf.TotalScore += Decimal(str(fuwu_taidu)) - pf.RatingCount += 1 + pf.TotalScore = int(pf.TotalScore or 0) + int(fuwu_taidu) + pf.RatingCount = int(pf.RatingCount or 0) + 1 pf.save() else: PlayerRating.query.create( PlayerID=jiedan_dashou_id, - TotalScore=Decimal(str(fuwu_taidu)), + TotalScore=int(fuwu_taidu), RatingCount=1 ) @@ -800,16 +808,15 @@ class JiedanView2(APIView): except Exception as e: logger.error(f"商品/店铺统计失败: {e}") - # 14. 🆕 写入打手表现表(结算评价) + # 14. 写入打手表现表(结算评价);字段名须与 record_dashou_biaoxian 一致 if jiedan_dashou_id: record_dashou_biaoxian( dingdan_id=dingdan_id, dashou_id=jiedan_dashou_id, xingwei=3, # 3=结算 - fanche_RatingCount=fanche_cishu, + fanche_cishu=fanche_cishu, shangxian_sudu=shangxian_sudu, fuwu_taidu=fuwu_taidu - # bankuai 暂不传入,后续可从订单商品关联 ) # 15. 返回成功