wujiefeng 1 年間 前
コミット
effbee7325

+ 11 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/config/QueueConfig.java

@@ -0,0 +1,11 @@
+package com.zhongshu.card.server.core.config;
+
+import com.github.microservice.components.data.mongo.queue.config.ExecQueueConfig;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+@Configuration
+@Import(ExecQueueConfig.class)
+public class QueueConfig extends ExecQueueConfig{
+
+}

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/ExpenseFlowDao.java

@@ -23,4 +23,5 @@ public interface ExpenseFlowDao extends MongoDao<ExpenseFlow>, ExpenseFlowDaoExt
 
     ExpenseFlow findTopByOrderNoOrderByCreateTimeDesc(String orderNo);
 
+    ExpenseFlow findTopByRefundNo(String refundNo);
 }

+ 52 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/event/ChinaumsRefundEvent.java

@@ -0,0 +1,52 @@
+package com.zhongshu.card.server.core.event;
+
+import com.github.microservice.components.data.mongo.queue.event.ExecQueueEvent;
+import com.github.microservice.net.ResultContent;
+import com.github.microservice.net.ResultState;
+import com.zhongshu.card.client.type.RefundState;
+import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
+import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
+import com.zhongshu.card.server.core.model.pay.UnionFrictionlessPayFinishModel;
+import com.zhongshu.card.server.core.service.pay.ChinaumsSenselessPayService;
+import com.zhongshu.card.server.core.service.payment.ExpenseFlowServiceImpl;
+import com.zhongshu.card.server.core.service.payment.PayCallService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Slf4j
+@Component
+public class ChinaumsRefundEvent implements ExecQueueEvent {
+
+    @Autowired
+    ExpenseFlowDao expenseFlowDao;
+
+    @Autowired
+    ChinaumsSenselessPayService chinaumsSenselessPayService;
+
+    @Autowired
+    PayCallService payCallService;
+
+    @Override
+    public boolean execute(Map<String, Object> o) {
+        String refundOrderNo = (String) o.get("refundOrderNo");
+        ExpenseFlow refundOrder = expenseFlowDao.findTopByRefundNo(refundOrderNo);
+        if (refundOrder == null) {
+            log.info("找不到退款单");
+            return false;
+        }
+        if (refundOrder.getRefundState().equals(RefundState.Refunded)){
+            log.info("当前退款单状态为已退款");
+            return false;
+        }
+        ResultContent<UnionFrictionlessPayFinishModel> refundQuery = chinaumsSenselessPayService.refundQuery(refundOrder.getProjectOid(), refundOrder.getUserId(), refundOrder.getShopOid(), refundOrderNo, true);
+        if (!refundQuery.getState().equals(ResultState.Success)){
+            log.info("查询退款结果失败:{}", refundQuery.getMsg());
+            return false;
+        }
+        ResultContent resultContent = payCallService.unionFrictionlessPayRefundFinish(refundQuery.getContent());
+        return resultContent.getState().equals(ResultState.Success);
+    }
+}

+ 6 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/pay/ChinaumsSenselessPayService.java

@@ -1,5 +1,6 @@
 package com.zhongshu.card.server.core.service.pay;
 
+import com.github.microservice.components.data.mongo.queue.service.ExecQueueService;
 import com.github.microservice.core.util.JsonUtil;
 import com.github.microservice.core.util.bean.BeanUtil;
 import com.github.microservice.net.ResultContent;
@@ -28,6 +29,7 @@ import com.zhongshu.card.server.core.dao.pay.ShareOrderDao;
 import com.zhongshu.card.server.core.domain.pay.ChinaumsSenselessUserSignInfo;
 import com.zhongshu.card.server.core.domain.pay.PayAccount;
 import com.zhongshu.card.server.core.domain.pay.ShareOrder;
+import com.zhongshu.card.server.core.event.ChinaumsRefundEvent;
 import com.zhongshu.card.server.core.model.pay.ChinaumsSenselessSrcReserve;
 import com.zhongshu.card.server.core.model.pay.UnionFrictionlessPayFinishModel;
 import com.zhongshu.card.server.core.service.base.SuperService;
@@ -70,6 +72,9 @@ public class ChinaumsSenselessPayService extends SuperService {
     @Autowired
     ShareOrderDao shareOrderDao;
 
+    @Autowired
+    ExecQueueService execQueueService;
+
 
     /**
      * 银联申请签约
@@ -408,6 +413,7 @@ public class ChinaumsSenselessPayService extends SuperService {
         Map bodyMap = JsonUtil.toObject(JsonUtil.toJson(refundResultContent.getContent()), Map.class);
 
         if (bodyMap.get("respCode").equals("TARGET_PROCESSING")) {
+            String queueId = execQueueService.add(Map.of("refundOrderNo", refundOrderNo), 5, ChinaumsRefundEvent.class);
             return ResultContent.buildContent(refundResultContent.getContent());
         }
         return ResultContent.buildFail(bodyMap.get("respDesc").toString());