TRX пре 1 година
родитељ
комит
9d0262aa18

+ 0 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/scene/ProjectBindSceneParam.java

@@ -20,7 +20,6 @@ import java.util.List;
 public class ProjectBindSceneParam extends ProjectOidParam {
 
     @Schema(description = "场景数据id")
-    @NotEmpty
     private String id;
 
     private List<String> ids = new ArrayList<>();

+ 3 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java

@@ -56,7 +56,6 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StopWatch;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -740,15 +739,15 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         if (ObjectUtils.isEmpty(expenseFlow)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
         }
+        if (expenseFlow.getOrderType() == OrderState.REFUNDED) {
+            return ResultContent.buildFail("已退款,不能重复操作");
+        }
         if (expenseFlow.getOrderType() != OrderState.HAVE_PAID) {
             return ResultContent.buildFail(String.format("未支付成功,不能退款"));
         }
         if (expenseFlow.getSettlementState() == SettlementState.AlreadySettled) {
             return ResultContent.buildFail("订单已结算,不能退款");
         }
-        if (expenseFlow.getOrderType() == OrderState.REFUNDED) {
-            return ResultContent.buildFail("订单已退款");
-        }
         if (expenseFlow.getRefundState() == RefundState.Refunding) {
             return ResultContent.buildFail("退款中,不能重复发起");
         }

+ 34 - 6
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/PayCallService.java

@@ -568,7 +568,39 @@ public class PayCallService extends SuperService {
         refundRecord.setPaymentType(entity.getPaymentType());
 
         if (resultContent.isSuccess()) {
-            entity.setIsRefund(Boolean.FALSE);
+            UnionFrictionlessPayFinishModel model = resultContent.getContent();
+            String refundStatus = "PROCESSING";
+            if (ObjectUtils.isNotEmpty(model)) {
+                refundStatus = model.getRefundStatus();
+            }
+
+            if ("SUCCESS".equals(refundStatus)) {
+                // 成功
+                entity.setIsRefund(Boolean.TRUE);
+                entity.setRefundState(RefundState.Refunded);
+                entity.setRefuseRemark("退款成功");
+                entity.setOrderType(OrderState.REFUNDED);
+
+                refundRecord.setRefuseRemark("退款成功");
+                refundRecord.setRefundState(RefundState.Refunded);
+            } else if ("PROCESSING".equals(refundStatus)) {
+                // 进行中
+                entity.setIsRefund(Boolean.FALSE);
+                entity.setRefundState(RefundState.Refunding);
+                entity.setRefuseRemark("退款中");
+
+                refundRecord.setRefuseRemark("退款中");
+                refundRecord.setRefundState(RefundState.Refunding);
+            } else if ("FAIL".equals(refundStatus)) {
+                // 失败
+                entity.setIsRefund(Boolean.FALSE);
+                entity.setRefundState(RefundState.Fail);
+                entity.setRefuseRemark("退款失败");
+
+                refundRecord.setRefuseRemark("退款失败");
+                refundRecord.setRefundState(RefundState.Fail);
+            }
+
             entity.setRefundRemark(param.getRemark());
             entity.setRefundTime(System.currentTimeMillis());
             // 申请人
@@ -577,17 +609,13 @@ public class PayCallService extends SuperService {
             entity.setRefundUserId(getCurrentUserId());
             // 退款金额
             entity.setRefundAMount(payAmount);
-            // 退款状态
-            entity.setRefundState(RefundState.Refunding);
-            entity.setRefuseRemark("退款中");
             expenseFlowDao.save(entity);
 
             // 保存退款记录
             refundRecord.setRefundUserId(getCurrentUserId());
             refundRecord.setExamineTime(System.currentTimeMillis());
-            refundRecord.setRefuseRemark("退款中");
-            refundRecord.setRefundState(RefundState.Refunding);
             refundRecordService.saveEntity(refundRecord);
+
             return ResultContent.buildSuccess(resultContent.getContent());
         } else {
             // 失败