浏览代码

满溢强制结束订单修改

zjl 1 年之前
父节点
当前提交
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.exceptions import ServiceException, ClientServiceTimeOutException, ClientServiceSerialException
 from apps.web.core.networking import MessageSender
 from apps.web.core.networking import MessageSender
 from apps.web.device.models import Device, DeviceType
 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.models import Card, ServiceProgress, ConsumeRecord
 from apps.web.user.utils import get_consume_order
 from apps.web.user.utils import get_consume_order
+from apps.web.user.utils2 import ConsumeOrderStateEngine, generate_card_payment, generate_net_payment
 
 
 cardKey = 'FR4e1OFCnDdrYA7u'
 cardKey = 'FR4e1OFCnDdrYA7u'
 
 
@@ -871,3 +874,52 @@ class POLICYBox(PolicyBase):
             return False, "当前端口处于充电状态, 请确认是否为您选择的充电端口哦!"
             return False, "当前端口处于充电状态, 请确认是否为您选择的充电端口哦!"
 
 
         return True, ""
         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()