‘linchangsheng’ 1 bulan lalu
induk
melakukan
d49da64543

+ 3 - 4
mall-server-api/src/main/java/com/gree/mall/manager/bean/SyncOrderDto.java

@@ -1,9 +1,6 @@
 package com.gree.mall.manager.bean;
 
-import com.gree.mall.manager.plus.entity.PgOrderBase;
-import com.gree.mall.manager.plus.entity.PgOrderOperatorLog;
-import com.gree.mall.manager.plus.entity.PgOrderProduct;
-import com.gree.mall.manager.plus.entity.PgOrderWorker;
+import com.gree.mall.manager.plus.entity.*;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -19,6 +16,8 @@ public class SyncOrderDto   {
     private List<PgOrderWorker> orderWorkers;
     @ApiModelProperty("产品信息")
     private List<PgOrderProduct> orderProducts;
+    @ApiModelProperty("产品工单采集详情")
+    private List<PgOrderProductDetail> pgOrderProductDetails;
 
     @ApiModelProperty("操作明细")
     private List<PgOrderOperatorLog> pgOrderOperatorLogs;

+ 4 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/websit/SettlementOrderLogicVO.java

@@ -83,6 +83,10 @@ public class SettlementOrderLogicVO      {
     @ApiModelProperty(value = "结算状态")
     private SettlementStatusNewEnum status;
 
+    @ApiModelProperty(value = "分账失败原因")
+    private String queryRemark;
+
+
     @ApiModelProperty(value = "分账金额")
     private BigDecimal amount;
 

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/workerorder/SyncOrderController.java

@@ -33,7 +33,7 @@ public class SyncOrderController {
 
     @ApiNotAuth
     @PostMapping("/sync")
-    @ApiOperation("修改预约时间")
+    @ApiOperation("同步工单")
     public ResponseHelper changeAppointmentTime(
             @RequestBody SyncOrderDto syncOrderDto,
             HttpServletRequest request

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

@@ -1477,4 +1477,50 @@ public class WechatLogic {
 
         return null;
     }
+
+
+    public void fenzhangQingKuang(List<SettlementOrder> settlementOrders) throws WxPayException {
+
+        for (SettlementOrder settlementOrder : settlementOrders) {
+            ProfitSharingService profitSharingService = this.getPayJaspWebstiService(settlementOrder.getConfigId(), "B").getProfitSharingService();
+
+            ProfitSharingQueryRequest profitSharingQueryRequest = new ProfitSharingQueryRequest();
+            profitSharingQueryRequest.setOutOrderNo(settlementOrder.getOrderId());
+            profitSharingQueryRequest.setTransactionId(settlementOrder.getTranscationId());
+            try {
+                ProfitSharingQueryResult profitSharingQueryResult = profitSharingService.profitSharingQuery(profitSharingQueryRequest);
+                log.info("【开始分账】request:{}", JSONObject.toJSONString(profitSharingQueryResult));
+
+                for (ProfitSharingQueryResult.Receiver receiver : profitSharingQueryResult.getReceivers()) {
+                    if (receiver.getResult().equals("CLOSED")) {
+                        settlementOrder.setStatus("YC");
+                        settlementOrder.setIsQuery(true);
+                        if (receiver.getFailReason().equals("ACCOUNT_ABNORMAL"))
+                            settlementOrder.setQueryRemark("分账接收账户异常");
+                        if (receiver.getFailReason().equals("NO_RELATION"))
+                            settlementOrder.setQueryRemark("分账关系已解除");
+                        if (receiver.getFailReason().equals("RECEIVER_HIGH_RISK"))
+                            settlementOrder.setQueryRemark("高风险接收方");
+                        if (receiver.getFailReason().equals("RECEIVER_REAL_NAME_NOT_VERIFIED"))
+                            settlementOrder.setQueryRemark("接收方未实名");
+                        if (receiver.getFailReason().equals("NO_AUTH"))
+                            settlementOrder.setQueryRemark("分账权限已解除");
+                        if (receiver.getFailReason().equals("RECEIVER_RECEIPT_LIMIT"))
+                            settlementOrder.setQueryRemark("超出用户月收款限额");
+                        if (receiver.getFailReason().equals("PAYER_ACCOUNT_ABNORMAL"))
+                            settlementOrder.setQueryRemark("分出方账户异常");
+                        if (receiver.getFailReason().equals("INVALID_REQUEST"))
+                            settlementOrder.setQueryRemark("描述参数设置失败");
+
+                        settlementOrder.updateById();
+                    }
+                }
+            }catch (Exception e){
+                log.info("查询分账异常:"+e);
+            }
+
+
+        }
+
+    }
 }

+ 2 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseExcelLogic.java

@@ -1463,6 +1463,8 @@ public class OrderBaseExcelLogic {
 
         pgOrderBaseService.saveBatch(syncOrderDto.getPgOrderBases());
 
+        pgOrderProductDetailService.saveBatch(syncOrderDto.getPgOrderProductDetails());
+
         pgOrderWorkerService.saveBatch(syncOrderDto.getOrderWorkers());
 
         pgOrderProductService.saveBatch(syncOrderDto.getOrderProducts());

+ 24 - 1
mall-server-api/src/main/java/com/gree/mall/manager/schedule/OrderBaseSchedule.java

@@ -1,5 +1,7 @@
 package com.gree.mall.manager.schedule;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.gree.mall.manager.enums.workorder.OrderBaseStatusEnum;
@@ -81,7 +83,7 @@ public class OrderBaseSchedule {
     @Scheduled(cron = "0 0 17 * * ?")
   //  @Scheduled(fixedDelay = 60  * 1000)
     public void fenzhang() throws WxPayException {
-        List<SettlementOrder> settlementOrders = settlementOrderService.lambdaQuery().in(SettlementOrder::getStatus, "WAIT","YC").list();
+        List<SettlementOrder> settlementOrders = settlementOrderService.lambdaQuery().in(SettlementOrder::getStatus, "WAIT").list();
 
         for (SettlementOrder settlementOrder : settlementOrders) {
             wechatLogic.shareSettlementAmountCorn(settlementOrder);
@@ -89,6 +91,27 @@ public class OrderBaseSchedule {
 
     }
 
+    @Transactional
+    @Scheduled(fixedDelay = 60  * 1000)
+    public synchronized void fenzhangQingKuang() throws WxPayException {
+
+        DateTime dateTime = DateUtil.offsetHour(new Date(), -1);
+
+        List<SettlementOrder> settlementOrders = settlementOrderService.lambdaQuery().in(SettlementOrder::getStatus, "OK")
+                .isNull(SettlementOrder::getIsQuery)
+                .le(SettlementOrder::getSettlementTime,dateTime)
+                .last("limit 3000")
+                .list();
+
+        if (CollectionUtil.isEmpty(settlementOrders))
+            return;
+
+        wechatLogic.fenzhangQingKuang(settlementOrders);
+
+
+    }
+
+
 
     /**
      * 每五秒查询辅材支付情况