From e233ee4beab1ae69b6aed2c68a0d476e469a071d Mon Sep 17 00:00:00 2001 From: XingQue Date: Sat, 20 Jun 2026 02:00:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BD=9A=E6=AC=BE/=E8=80=83=E6=A0=B8?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=9B=9E=E8=B0=83=20Czjilu=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=90=8D=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- a_long_dianjing/settings.py | 1 + users/views.py | 52 ++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/a_long_dianjing/settings.py b/a_long_dianjing/settings.py index 655edd0..8b2501d 100644 --- a/a_long_dianjing/settings.py +++ b/a_long_dianjing/settings.py @@ -238,6 +238,7 @@ IP_WHITELIST = [ ] # 黑名单(blacklist 模式下生效)— 支持单 IP 和 CIDR 网段 IP_BLACKLIST = [] + # 免过滤路径(任何模式下都放行,如管理后台、健康检查) IP_FILTER_EXEMPT_PATHS = [] diff --git a/users/views.py b/users/views.py index d1f2da4..2dde352 100644 --- a/users/views.py +++ b/users/views.py @@ -11872,20 +11872,20 @@ class FaKuanHuitiaoView(View): # 4. 查询订单 try: order = Czjilu.query.get(dingdan_id=out_trade_no) - logger.info(f"找到订单: {order.OrderID}, 状态: {order.Status}, 金额: {order.Amount}") + logger.info(f"找到订单: {order.dingdan_id}, 状态: {order.zhuangtai}, 金额: {order.jine}") except Czjilu.DoesNotExist: logger.error(f"订单不存在: {out_trade_no}") return self.wechat_response('FAIL', '订单不存在') # 5. 检查订单状态是否为未支付(9) - if order.Status != 9: - logger.warning(f"订单状态不是未支付: {order.OrderID}, 当前状态: {order.Status}") + if order.zhuangtai != 9: + logger.warning(f"订单状态不是未支付: {order.dingdan_id}, 当前状态: {order.zhuangtai}") # 已处理过的订单直接返回成功,避免微信重复回调 return self.wechat_response('SUCCESS', 'OK') # 6. 验证金额(微信返回的是分,需要转换) wechat_amount_yuan = total_fee / 100 # 转换为元 - order_amount_yuan = float(order.Amount) # 订单金额(元) + order_amount_yuan = float(order.jine) # 订单金额(元) # 允许1分钱的误差(浮点数比较) if abs(wechat_amount_yuan - order_amount_yuan) > 0.01: @@ -11893,16 +11893,16 @@ class FaKuanHuitiaoView(View): return self.wechat_response('FAIL', '金额不一致') # 7. 更新订单状态为已支付(3) - order.Status = 3 + order.zhuangtai = 3 order.save(update_fields=['zhuangtai']) - logger.info(f"订单状态更新成功: {order.OrderID} -> 3") + logger.info(f"订单状态更新成功: {order.dingdan_id} -> 3") # 8. 更新罚单状态为已缴纳(2) try: # 根据订单中的用户ID和金额匹配待缴纳的罚单 fadan = Penalty.query.filter( PenalizedUserID=order.yonghuid, - FineAmount=order.Amount, + FineAmount=order.jine, Status__in=[1, 3] ).first() if fadan: @@ -11923,7 +11923,7 @@ class FaKuanHuitiaoView(View): try: # 获取订单金额(确保是Decimal类型) - jine_decimal = Decimal(str(order.Amount)) if not isinstance(order.Amount, Decimal) else order.Amount + jine_decimal = Decimal(str(order.jine)) if not isinstance(order.jine, Decimal) else order.jine update_daily_income(jine_decimal) @@ -11946,7 +11946,7 @@ class FaKuanHuitiaoView(View): szjilu.save() - logger.info(f"收支记录更新成功: 订单{order.OrderID}, 金额{jine_decimal}元") + logger.info(f"收支记录更新成功: 订单{order.dingdan_id}, 金额{jine_decimal}元") except Exception as e: # 收支记录更新失败不影响主流程,只记录日志 @@ -12023,7 +12023,7 @@ class FaKuanPayPollView(APIView): return Response({'code': 400, 'message': '订单ID不能为空'}) order = Czjilu.query.get(dingdan_id=dingdanid, yonghuid=request.user.UserUID) - if order.Status == 3: + if order.zhuangtai == 3: return Response({'code': 200, 'message': '支付成功'}) else: return Response({'code': 400, 'message': '订单尚未支付'}) @@ -12046,7 +12046,7 @@ class FaKuanPayFailView(APIView): return Response({'code': 400, 'message': '订单ID不能为空'}) order = Czjilu.query.get(dingdan_id=dingdanid, yonghuid=request.user.UserUID) - if order.Status == 9: # 未支付 + if order.zhuangtai == 9: # 未支付 order.delete() logger.info(f"用户{request.user.UserUID}删除未支付订单: {dingdanid}") return Response({'code': 200, 'message': '订单已删除'}) @@ -12430,29 +12430,29 @@ class KaohePayCallbackView(View): # 查找订单 try: order = Czjilu.query.get(dingdan_id=out_trade_no, leixing=5) - logger.info(f"找到订单: {out_trade_no}, 当前状态: {order.Status}") + logger.info(f"找到订单: {out_trade_no}, 当前状态: {order.zhuangtai}") except Czjilu.DoesNotExist: logger.error(f"考核订单不存在: {out_trade_no}") return self.wechat_response('FAIL', '订单不存在') - if order.Status != 9: - logger.warning(f"订单状态非未支付: {order.Status}, 订单号: {out_trade_no}") + if order.zhuangtai != 9: + logger.warning(f"订单状态非未支付: {order.zhuangtai}, 订单号: {out_trade_no}") # 已支付的订单直接返回成功,避免微信重复回调 - if order.Status == 3: + if order.zhuangtai == 3: logger.info(f"订单已支付,直接返回成功: {out_trade_no}") return self.wechat_response('SUCCESS', 'OK') return self.wechat_response('FAIL', '订单状态异常') # 验证金额 wechat_yuan = total_fee / 100 - if abs(wechat_yuan - float(order.Amount)) > 0.01: - logger.error(f"金额不一致: 订单金额={order.Amount}, 回调金额={wechat_yuan}, 订单号: {out_trade_no}") + if abs(wechat_yuan - float(order.jine)) > 0.01: + logger.error(f"金额不一致: 订单金额={order.jine}, 回调金额={wechat_yuan}, 订单号: {out_trade_no}") return self.wechat_response('FAIL', '金额不一致') logger.info(f"金额验证通过: {wechat_yuan}元") # 更新订单状态为已支付 - order.Status = 3 - order.save() + order.zhuangtai = 3 + order.save(update_fields=['zhuangtai']) logger.info(f"订单状态更新为已支付: {out_trade_no}") # 从临时表获取业务参数并创建审核记录 @@ -12469,8 +12469,8 @@ class KaohePayCallbackView(View): else: logger.error(f"创建审核记录失败: {msg}, 订单号: {out_trade_no}") # 订单已支付但记录创建失败,需要标记订单异常,人工介入 - order.Status = 10 # 10表示支付成功但业务处理失败 - order.save() + order.zhuangtai = 10 # 10表示支付成功但业务处理失败 + order.save(update_fields=['zhuangtai']) logger.error(f"订单状态标记为异常(10): {out_trade_no}") except KaohePayTemp.DoesNotExist: @@ -12487,13 +12487,13 @@ class KaohePayCallbackView(View): except Exception as e: logger.error(f"处理临时表或创建审核记录异常: {str(e)}", exc_info=True) # 标记订单异常 - order.Status = 10 - order.save() + order.zhuangtai = 10 + order.save(update_fields=['zhuangtai']) logger.error(f"订单状态标记为异常(10): {out_trade_no}") # 更新收支记录 try: - jine_decimal = Decimal(str(order.Amount)) + jine_decimal = Decimal(str(order.jine)) update_daily_income(jine_decimal) logger.info(f"更新每日收入成功: {jine_decimal}元") @@ -12578,7 +12578,7 @@ class KaohePayPollView(APIView): return Response({'code': 400, 'message': '订单ID不能为空'}) try: order = Czjilu.query.get(dingdan_id=dingdanid, yonghuid=request.user.UserUID, leixing=5) - if order.Status == 3: + if order.zhuangtai == 3: return Response({'code': 200, 'message': '支付成功'}) return Response({'code': 400, 'message': '订单尚未支付'}) except Czjilu.DoesNotExist: @@ -12595,7 +12595,7 @@ class KaohePayFailView(APIView): return Response({'code': 400, 'message': '订单ID不能为空'}) try: order = Czjilu.query.get(dingdan_id=dingdanid, yonghuid=request.user.UserUID, leixing=5) - if order.Status == 9: + if order.zhuangtai == 9: order.delete() return Response({'code': 200, 'message': '订单已删除'}) return Response({'code': 400, 'message': '订单状态无法删除'})