浏览代码

注释部分代码,订单结算修改:区分支付金额来源

skyline 1 年之前
父节点
当前提交
3e49323b04

+ 13 - 0
car-wash-entity/src/main/java/com/kym/entity/miniapp/WashOrder.java

@@ -183,6 +183,19 @@ public class WashOrder extends BaseEntity {
      */
     private Integer payStatus;
 
+    /**
+     * 充值款支付金额(分)
+     */
+    private Integer rechargePayment;
+
+    /**
+     * 赠款支付金额(分)
+     */
+    private Integer grantsPayment;
+
+    /**
+     * 停止原因
+     */
     private String stopReason;
 
     /**

+ 17 - 17
car-wash-miniapp/src/main/java/com/kym/miniapp/jobs/StartChargeDelayJob.java

@@ -60,23 +60,23 @@ public class StartChargeDelayJob implements DelayService<DelayChargeOrder> {
     @Override
     public void init(ContextRefreshedEvent event) {
         // 队列加载所有充电状态为预约中的订单,按照开始时间排序
-        var orderList = chargeOrderService.lambdaQuery()
-                .eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
-                .eq(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_是)
-                .orderByAsc(ChargeOrder::getStartTime)
-                .list();
-        var delayChargeOrderList = orderList.stream().map(o -> new DelayChargeOrder()
-                        .setStartChargeSeq(o.getStartChargeSeq())
-                        .setUserId(o.getUserId())
-                        .setConnectorId(o.getConnectorId())
-                        .setStartTime(o.getStartTime())
-                        .setEndTime(o.getEndTime())
-                        .setChargeStatus(o.getChargeStatus()))
-                .toList();
-        var delayList = delayChargeOrderList.stream().map(delay -> new DelayedItem<>(delay, delay.getStartTime())).toList();
-        START_DELAY_QUEUE.addAll(delayList);
-        // 开启线程处理队列消息
-        processDelayedOrders();
+//        var orderList = chargeOrderService.lambdaQuery()
+//                .eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
+//                .eq(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_是)
+//                .orderByAsc(ChargeOrder::getStartTime)
+//                .list();
+//        var delayChargeOrderList = orderList.stream().map(o -> new DelayChargeOrder()
+//                        .setStartChargeSeq(o.getStartChargeSeq())
+//                        .setUserId(o.getUserId())
+//                        .setConnectorId(o.getConnectorId())
+//                        .setStartTime(o.getStartTime())
+//                        .setEndTime(o.getEndTime())
+//                        .setChargeStatus(o.getChargeStatus()))
+//                .toList();
+//        var delayList = delayChargeOrderList.stream().map(delay -> new DelayedItem<>(delay, delay.getStartTime())).toList();
+//        START_DELAY_QUEUE.addAll(delayList);
+//        // 开启线程处理队列消息
+//        processDelayedOrders();
     }
 
     private void processDelayedOrders() {

+ 19 - 19
car-wash-miniapp/src/main/java/com/kym/miniapp/jobs/StopChargeDelayJob.java

@@ -55,25 +55,25 @@ public class StopChargeDelayJob implements DelayService<DelayChargeOrder> {
     public void init(ContextRefreshedEvent event) {
 
         // 队列加载所有充电状态为预约中且有结束时间的订单,按照结束时间排序
-        var orderList = chargeOrderService.lambdaQuery()
-                .eq(ChargeOrder::getOrderStatus, ChargeOrder.ORDER_STATUS_未知)
-                .in(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中, ChargeOrder.CHARGE_STATUS_启动中, ChargeOrder.CHARGE_STATUS_充电中)
-                .isNotNull(ChargeOrder::getEndTime)
-                .orderByAsc(ChargeOrder::getEndTime)
-                .list();
-
-        var delayChargeOrderList = orderList.stream().map(o -> new DelayChargeOrder()
-                        .setStartChargeSeq(o.getStartChargeSeq())
-                        .setUserId(o.getUserId())
-                        .setConnectorId(o.getConnectorId())
-                        .setStartTime(o.getStartTime())
-                        .setEndTime(o.getEndTime())
-                        .setChargeStatus(o.getChargeStatus()))
-                .toList();
-        var delayList = delayChargeOrderList.stream().map(delay -> new DelayedItem<>(delay, delay.getEndTime())).toList();
-        STOP_DELAY_QUEUE.addAll(delayList);
-
-        processDelayedOrders();
+//        var orderList = chargeOrderService.lambdaQuery()
+//                .eq(ChargeOrder::getOrderStatus, ChargeOrder.ORDER_STATUS_未知)
+//                .in(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中, ChargeOrder.CHARGE_STATUS_启动中, ChargeOrder.CHARGE_STATUS_充电中)
+//                .isNotNull(ChargeOrder::getEndTime)
+//                .orderByAsc(ChargeOrder::getEndTime)
+//                .list();
+//
+//        var delayChargeOrderList = orderList.stream().map(o -> new DelayChargeOrder()
+//                        .setStartChargeSeq(o.getStartChargeSeq())
+//                        .setUserId(o.getUserId())
+//                        .setConnectorId(o.getConnectorId())
+//                        .setStartTime(o.getStartTime())
+//                        .setEndTime(o.getEndTime())
+//                        .setChargeStatus(o.getChargeStatus()))
+//                .toList();
+//        var delayList = delayChargeOrderList.stream().map(delay -> new DelayedItem<>(delay, delay.getEndTime())).toList();
+//        STOP_DELAY_QUEUE.addAll(delayList);
+//
+//        processDelayedOrders();
     }
 
     private void processDelayedOrders() {

+ 22 - 7
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/OrderCloseEventHandler.java

@@ -46,6 +46,25 @@ public class OrderCloseEventHandler implements AwoaraEventHandler<OrderInfoObjec
         // 订单状态、支付状态
         var washOrder = washOrderService.lambdaQuery().eq(WashOrder::getOrderId, orderInfo.getOrder_id()).one();
         if (washOrder != null) {
+            int rechargePayment;
+            int grantsPayment = 0;
+            // 扣款更新余额(优先扣减充值款,不够则扣除赠款),新增资金流水
+            var account = accountService.getAccountByUserId(washOrder.getUserId());
+            if (account.getRechargeBalance() >= orderInfo.getAmount()) {
+                rechargePayment = orderInfo.getAmount();
+                accountService.lambdaUpdate().setSql("balance = balance - {0}, recharge_balance = recharge_balance - {1}",
+                                orderInfo.getAmount(), rechargePayment)
+                        .eq(Account::getUserId, washOrder.getUserId()).update();
+            } else {
+                // 充值款余额不足以支付订单,则扣赠款
+                rechargePayment = account.getRechargeBalance();
+                grantsPayment = orderInfo.getAmount() - account.getRechargeBalance();
+                accountService.lambdaUpdate()
+                        .setSql("balance = balance - {0}, recharge_balance = 0, grants_balance = grants_balance - {1}",
+                                orderInfo.getAmount(), grantsPayment)
+                        .eq(Account::getUserId, washOrder.getUserId()).update();
+            }
+
             washOrder
                     .setCloseType(orderInfo.getClose_type())
                     .setAmount(orderInfo.getAmount())
@@ -53,15 +72,12 @@ public class OrderCloseEventHandler implements AwoaraEventHandler<OrderInfoObjec
                     .setDiscountMoney(orderInfo.getDiscount_money())
                     .setDetail(JSONArray.toJSONString(orderInfo.getDetail()))
                     .setEndTime(LocalDateTime.now())
+                    .setRechargePayment(rechargePayment)
+                    .setGrantsPayment(grantsPayment)
                     .setOrderStatus(WashOrder.ORDER_STATUS_成功)
                     .setPayStatus(WashOrder.PAY_STATUS_已支付);
             washOrderService.updateById(washOrder);
 
-            // 扣款更新余额,新增资金流水 TODO 【存在优惠情况下校验优惠,更新优惠使用情况等】
-            var account = accountService.getAccountByUserId(washOrder.getUserId());
-            accountService.lambdaUpdate().setSql("balance = balance - {0}", orderInfo.getAmount())
-                    .eq(Account::getUserId, washOrder.getUserId()).update();
-
             var walletDetail = new WalletDetail();
             walletDetail.setUserId(washOrder.getUserId());
             walletDetail.setType(WalletDetail.TYPE_消费);
@@ -73,10 +89,9 @@ public class OrderCloseEventHandler implements AwoaraEventHandler<OrderInfoObjec
             walletDetail.setTransactionTime(LocalDateTime.now());
             walletDetail.setStatus(WalletDetail.STATUS_已确认);
             walletDetailService.save(walletDetail);
-        }else {
+        } else {
             log.error("订单不存在,订单号:{}", orderInfo.getOrder_id());
         }
 
-
     }
 }

+ 4 - 4
car-wash-service/src/main/java/com/kym/service/enplus/impl/EnNotifyServiceImpl.java

@@ -73,10 +73,10 @@ public class EnNotifyServiceImpl implements EnNotifyService {
         this.userStationService = userStationService;
     }
 
-    @PostConstruct
-    void init() {
-        KymCache.INSTANCE.putConnectorId2Status(connectorInfoService.list().stream().collect(Collectors.toMap(item -> item.getConnectorId().concat("1"), ConnectorInfo::getStatus)));
-    }
+//    @PostConstruct
+//    void init() {
+//        KymCache.INSTANCE.putConnectorId2Status(connectorInfoService.list().stream().collect(Collectors.toMap(item -> item.getConnectorId().concat("1"), ConnectorInfo::getStatus)));
+//    }
 
     /**
      * EN+ 充电站设备状态变化推送

+ 1 - 1
car-wash-service/src/main/java/com/kym/service/wechat/impl/WxPayServiceImpl.java

@@ -639,7 +639,7 @@ public class WxPayServiceImpl implements WxPayService {
         var headers = new HttpHeaders();
         headers.addHeader("Accept", "application/json");
         headers.addHeader("Content-Type", "application/json");
-        var params = JSONObject.of("callback_url", "https://www.kuaiyuman.cn/api/invoice/notify", "show_fapiao_cell", false);
+        var params = JSONObject.of("callback_url", "https://wash.kuaiyuman.cn/api/invoice/notify", "show_fapiao_cell", false);
         var requestBody = new JsonRequestBody.Builder().body(params.toJSONString()).build();
         var res = wxHttpClient.patch(headers, fapiaoConfig.getDevConfig(), requestBody, JSONObject.class);
         LOGGER.info("微信电子发票开发设置:{}", res.toString());