‘linchangsheng’ hai 11 meses
pai
achega
e9678919fb

+ 4 - 2
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java

@@ -343,8 +343,7 @@ public class PayOrderLogic {
         workerOrder.setPayStatus(PayStatusEnum.PAID.getKey());
         workerOrder.updateById();
 
-        //插入结算数据
-        this.addSettlementOrder(workerOrder,workerOrderItems);
+
 
         //插入手工结算数据
         if (workerOrder.getManualAmount() != null && workerOrder.getManualAmount().doubleValue() > 0) {
@@ -462,6 +461,9 @@ public class PayOrderLogic {
             workerOrder.updateById();
         }
 
+        //插入结算数据
+        this.addSettlementOrder(workerOrder,workerOrderItems);
+
 
         return true;
     }

+ 40 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java

@@ -635,6 +635,46 @@ public class WechatLogic {
         }
     }
 
+    /**
+     * 电子支付分账-定时
+     * @param settlementOrder
+     * @throws WxPayException
+     */
+    public void shareSettlementAmountCorn(SettlementOrder settlementOrder) throws WxPayException {
+
+        if(settlementOrder == null){
+            return;
+        }
+        if(!StringUtils.equals(settlementOrder.getPayStatus(), PayStatusEnum.PAID.getKey())){
+            throw new RemoteServiceException("未支付订单不可结算");
+        }
+        if(!StringUtils.equals(settlementOrder.getStatus(),"WAIT")){
+            log.error("非待结算状态不可结算,id:{}",settlementOrder.getOrderId());
+            return;
+        }
+        Map<String,BigDecimal> map = new HashMap<>();
+        map.put(settlementOrder.getOpenId(),settlementOrder.getWorkerAmount());
+        Map<String,String> mapPhone = new HashMap<>();
+        mapPhone.put(settlementOrder.getOpenId(),settlementOrder.getWorkerMobile());
+        //开始分账
+        try {
+            profitSettlementSharing(settlementOrder.getOrderId(), settlementOrder.getTranscationId(), map, mapPhone,
+                    settlementOrder.getCompanyWechatId(), "B",settlementOrder.getConfigId());
+
+            settlementOrder.setStatus(SettlementStatusNewEnum.OK.toString());
+            settlementOrder.setSettlementTime(new Date());
+            settlementOrder.updateById();
+
+        } catch (WxPayException e) {
+            log.error("异常结算", e);
+
+            settlementOrder.setStatus(SettlementStatusNewEnum.YC.toString());
+            settlementOrder.setYcRemark(e.getMessage());
+            settlementOrder.updateById();
+        }
+    }
+
+
 
     /**
      * 分账

+ 4 - 2
mall-server-api/src/main/java/com/gree/mall/manager/schedule/OrderBaseSchedule.java

@@ -27,7 +27,7 @@ import java.util.stream.Collectors;
  * @description:TODO
  * @date :2024/4/26 14:12
  */
-@ConditionalOnProperty(name = "schedule.enable", havingValue = "true", matchIfMissing = true)
+//@ConditionalOnProperty(name = "schedule.enable", havingValue = "true", matchIfMissing = true)
 @Component
 @Slf4j
 public class OrderBaseSchedule {
@@ -45,6 +45,7 @@ public class OrderBaseSchedule {
     /**
      * 生成抢单通知
      */
+/*
     @Transactional
     @Scheduled(fixedDelay = 35  * 1000)
     public void task(){
@@ -65,6 +66,7 @@ public class OrderBaseSchedule {
         }
         pgOrderBaseService.lambdaUpdate().set(PgOrderBase::getIsQdNotice,true).in(PgOrderBase::getId,orderBaseIds).update();
     }
+*/
 
 
 
@@ -78,7 +80,7 @@ public class OrderBaseSchedule {
         List<SettlementOrder> settlementOrders = settlementOrderService.lambdaQuery().eq(SettlementOrder::getStatus, "WAIT").list();
 
         for (SettlementOrder settlementOrder : settlementOrders) {
-            wechatLogic.shareSettlementAmount(settlementOrder);
+            wechatLogic.shareSettlementAmountCorn(settlementOrder);
         }
 
     }