2021与蓝度共同重构项目,服务端
liuhaonan
2022-08-25 1c5825ad257362eb61a6c11b62a158011214d105
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mOrderService.java
@@ -71,18 +71,18 @@
     * @param outTradeNo
     * @return
     */
    public boolean orderRefund(String outTradeNo, Double amt) {
    public boolean orderRefund(String outTradeNo) {
        Long userId = SecurityUtils.getUserId();
        String username = SecurityUtils.getUsername();
        C3mOrder orderByOutTradeNo = c3mOrderMapper.getOrderByOutTradeNo(outTradeNo);
        Double refundAmount = orderByOutTradeNo.getSurplusAmount();
        if (orderByOutTradeNo.getTotalAmount() < refundAmount) {
            throw new BusinessException("退款金额错误,不能大于付款金额");
        }
        if (orderByOutTradeNo == null) {
            throw new BusinessException("未找到订单");
        } else {
            orderByOutTradeNo.setRefundAmount(refundAmount);
            if (orderByOutTradeNo.getTotalAmount() < orderByOutTradeNo.getRefundAmount()) {
                throw new BusinessException("退款金额错误,不能大于付款金额");
            }
            orderByOutTradeNo.setRefundAmount(orderByOutTradeNo.getSurplusAmount());
            return c3mOrderRefund(orderByOutTradeNo, "充电桩退款", userId, username);
        }
@@ -110,12 +110,7 @@
                    C3mOrder.getRefundAmount());
        } else if (C3mOrder.getOrderType().equals(OrderType.WXPAY.getCode())) {
            //  进行微信退款
            b = fastPayService.refund(
                    C3mOrder.getTotalAmount(),
                    C3mOrder.getRefundAmount(),
                    C3mOrder.getOutTradeNo(),
                    C3mOrder.getPoleId()
            );
            b = fastPayService.refund(C3mOrder);
        }
        C3mOrder.setRefundTimestamp(System.currentTimeMillis());
        C3mOrder.setRefundMsg(msg);
@@ -189,7 +184,8 @@
        c3mOrderEntity.setOrderStatus(0);
        c3mOrderEntity.setUserCode(wxCode);
        c3mOrderEntity.setC3Udid(c3m.getMcuUdid());
        c3mOrderEntity.setRefundAmount(totalAmount);
        c3mOrderEntity.setSurplusAmount(totalAmount);
        if (save(c3mOrderEntity)) {
@@ -260,6 +256,7 @@
        }
        //开启充电成功后,更新订单状态为充电中
        userOrder.setChargingStates(0);
        userOrder.setStartChargingTimestamp(System.currentTimeMillis());
        log.error("[-----------------微信支付回调结束-----------------]");
        if (!updateById(userOrder)) {
            return WxPayNotifyResponse.fail("更新数据已失效");
@@ -387,4 +384,36 @@
        }
    }
    /**
     * 充电桩故障情况下,结果故障前正在进行中的订单
     *
     * @param dataPackage
     */
    public void stopCharingOrder(String c3Mac, A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage dataPackage) {
        if (c3Mac.isEmpty() || c3Mac == null || dataPackage == null) {
            return;
        }
        //获取正在进行中的订单
        C3mOrder c3mOrder = getOne(Wrappers.lambdaQuery(C3mOrder.class)
                .eq(C3mOrder::getC3Mac, c3Mac).eq(C3mOrder::getChargingStates, 0)
                .eq(C3mOrder::getOrderStatus, OrderStatus.PAYED.getStatus()).last("limit 1"));
        //订单未结束,但是充电桩为空闲状态(即充电桩断电/故障情况)  结束该订单
        if ("1".equals(dataPackage.getStatusBit()) && c3mOrder != null) {
            //设置订单为已完成
            c3mOrder.setOrderStatus(OrderStatus.COMPLETE.getStatus());
            //设置充电状态为已结束
            c3mOrder.setChargingStates(1);
            //设置充电电量
            c3mOrder.setActualChargingCapacity(Double.parseDouble(dataPackage.getChargedCapacity()));
            //设置退款金额
            c3mOrder.setRefundAmount(Double.parseDouble(dataPackage.getRemainingAmount()));
            //设置剩余金额
            c3mOrder.setSurplusAmount(Double.parseDouble(dataPackage.getRemainingAmount()));
            //结束充电(订单)时间
            c3mOrder.setStopChargingTimestamp(System.currentTimeMillis());
            updateById(c3mOrder);
        }
    }
}