TRX 1 рік тому
батько
коміт
f25f64efdf

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

@@ -449,7 +449,7 @@ public class PayCallService extends SuperService {
      * @return
      */
     public ResultContent walletRefund(ExpenseFlow entity, ExpenseRefundParam param) {
-        String refundNo = NextNoUtil.getNextPaymentNo(null);
+        String refundNo = NextNoUtil.getNextPaymentNo("RE");
         entity.setRefundNo(refundNo);
         orderNoInfoService.saveInfo(refundNo, OrderNoType.Refund, entity.getPaymentType());
 
@@ -512,7 +512,7 @@ public class PayCallService extends SuperService {
      * @return
      */
     public ResultContent unionFrictionlessPayRefund(ExpenseFlow entity, ExpenseRefundParam param) {
-        String refundNo = NextNoUtil.getNextPaymentNo(null);
+        String refundNo = NextNoUtil.getNextPaymentNo("RE");
         entity.setRefundNo(refundNo);
         String paymentNo = entity.getPaymentNo();
         log.info("支付清单号:{} 退款:{}", paymentNo, refundNo);
@@ -523,6 +523,17 @@ public class PayCallService extends SuperService {
         BigDecimal payAmount = entity.getPayAmount();
         payAmount = payAmount.stripTrailingZeros();
         ResultContent resultContent = chinaumsSenselessPayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), payAmount, paymentNo, refundNo, param.getRemark(), targetOrderId);
+
+        // 退款记录
+        RefundRecord refundRecord = new RefundRecord();
+        refundRecord.setPaymentNo(entity.getPaymentNo());
+        // 申请人
+        refundRecord.setApplicant(getCurrentUserId());
+        refundRecord.setRefundAMount(payAmount);
+        refundRecord.setRefundTime(System.currentTimeMillis());
+        refundRecord.setRefundRemark(param.getRemark());
+        refundRecord.setRefundNo(refundNo);
+
         if (resultContent.isSuccess()) {
             entity.setIsRefund(Boolean.FALSE);
             entity.setRefundRemark(param.getRemark());
@@ -537,8 +548,20 @@ public class PayCallService extends SuperService {
             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 {
+            refundRecord.setRefundUserId(getCurrentUserId());
+            refundRecord.setExamineTime(System.currentTimeMillis());
+            refundRecord.setRefuseRemark(resultContent.getMsg());
+            refundRecord.setRefundState(RefundState.Fail);
+            refundRecordService.saveEntity(refundRecord);
             return ResultContent.buildFail(String.format("退款失败:%s", resultContent.getMsg()));
         }
     }

+ 22 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/RefundRecordService.java

@@ -1,11 +1,13 @@
 package com.zhongshu.card.server.core.service.payment;
 
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.type.RefundState;
 import com.zhongshu.card.server.core.dao.payment.RefundRecordDao;
 import com.zhongshu.card.server.core.domain.payment.RefundRecord;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -29,4 +31,24 @@ public class RefundRecordService extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 保存更新 退款记录状态
+     *
+     * @param refundNo
+     * @param refundState
+     * @return
+     */
+    public ResultContent markState(String refundNo, RefundState refundState) {
+        if (StringUtils.isNotEmpty(refundNo) && refundState != null) {
+            RefundRecord refundRecord = refundRecordDao.findTopByRefundNo(refundNo);
+            if (ObjectUtils.isNotEmpty(refundRecord)) {
+                refundRecord.setRefundState(refundState);
+                refundRecord.setExamineTime(System.currentTimeMillis());
+                refundRecord.setRefuseRemark(refundRecord.getRefundRemark());
+                refundRecordDao.save(refundRecord);
+            }
+        }
+        return ResultContent.buildSuccess();
+    }
+
 }