|
@@ -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()
|