Просмотр исходного кода

满溢强制结束订单修改

zjl 1 год назад
Родитель
Сommit
411cb94639
1 измененных файлов с 52 добавлено и 0 удалено
  1. 52 0
      apps/web/core/adapter/weifule_policy.py

+ 52 - 0
apps/web/core/adapter/weifule_policy.py

@@ -11,8 +11,11 @@ from apps.web.core.adapter.weifuleCommon import PolicyBase
 from apps.web.core.exceptions import ServiceException, ClientServiceTimeOutException, ClientServiceSerialException
 from apps.web.core.networking import MessageSender
 from apps.web.device.models import Device, DeviceType
+from apps.web.exceptions import UserServerException
+from apps.web.user.constant2 import ConsumeOrderServiceItem
 from apps.web.user.models import Card, ServiceProgress, ConsumeRecord
 from apps.web.user.utils import get_consume_order
+from apps.web.user.utils2 import ConsumeOrderStateEngine, generate_card_payment, generate_net_payment
 
 cardKey = 'FR4e1OFCnDdrYA7u'
 
@@ -871,3 +874,52 @@ class POLICYBox(PolicyBase):
             return False, "当前端口处于充电状态, 请确认是否为您选择的充电端口哦!"
 
         return True, ""
+
+    def force_stop_order(self, order, **kwargs):  # type:(ConsumeRecord, dict) -> None
+        if order.status not in [order.Status.RUNNING]:
+            return
+
+        duration, elec, power = 0, 0, 0
+        reason = u"异常订单,手动关闭"
+        consumeDict = {
+            ConsumeOrderServiceItem.ELEC: elec,
+            ConsumeOrderServiceItem.DURATION: duration,
+            ConsumeOrderServiceItem.MAX_POWER: power,
+            ConsumeOrderServiceItem.REASON: reason,
+            ConsumeOrderServiceItem.END_TIME: datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
+            ConsumeOrderServiceItem.SPEND: RMB(0)
+        }
+        ConsumeOrderStateEngine(order).to_end(consumeDict)
+
+        if order.isPostPaid:
+
+            # 为后付费的订单添加订单的金额
+            order.price = RMB(0)
+            order.save()
+
+            try:
+                if order.isStartNetPay:
+                    # 网络支付的生成
+                    payment = generate_net_payment(order)
+                elif order.isStartCardPay:
+                    # 实体卡 支付的支付
+                    payment = generate_card_payment(order)
+                else:
+                    return
+            except UserServerException:
+                payment = None
+
+            # 尝试一次支付
+            if payment:
+                order.update_payment(payment)
+                order.frozen_payer_balance()
+                order.clear_payer_frozen()
+
+        else:
+            # 后支付 不再退费
+            refundMoney = RMB(0)
+            order.clear_payer_frozen(refundMoney)
+
+        # 尝试变更订单的状态 同时
+        order.reload()
+        ConsumeOrderStateEngine(order).to_finished()