|
|
@@ -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);
|
|
|
+ }
|
|
|
+}
|