瀏覽代碼

更新!

TRX 1 年之前
父節點
當前提交
b1f3b451cb

+ 20 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/type/payment/OrderNoType.java

@@ -0,0 +1,20 @@
+package com.zhongshu.card.client.type.payment;
+
+import lombok.Getter;
+
+/**
+ *
+ */
+public enum OrderNoType {
+    Pay("支付"),
+    Refund("退款"),
+    UnKnow("未知"),
+    ;
+
+    @Getter
+    private String remark;
+
+    OrderNoType(String remark) {
+        this.remark = remark;
+    }
+}

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

@@ -0,0 +1,14 @@
+package com.zhongshu.card.server.core.dao.payment;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.payment.extend.ComplexDaoExtend;
+import com.zhongshu.card.server.core.domain.payment.Complex;
+import com.zhongshu.card.server.core.domain.payment.OrderNoInfo;
+
+import java.util.List;
+
+public interface OrderNoInfoDao extends MongoDao<OrderNoInfo> {
+
+    OrderNoInfo findByPaymentNo(String paymentNo);
+
+}

+ 45 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/OrderNoInfo.java

@@ -0,0 +1,45 @@
+package com.zhongshu.card.server.core.domain.payment;
+
+import com.github.microservice.types.payment.PaymentType;
+import com.zhongshu.card.client.type.payment.OrderNoType;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.checkerframework.common.aliasing.qual.NonLeaked;
+import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.Date;
+
+/**
+ * 订单的类型
+ *
+ * @author TRX
+ * @date 2024/11/15
+ */
+@Data
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+@NonLeaked
+public class OrderNoInfo extends SuperMain {
+
+    @Schema(description = "支付订单号")
+    private String paymentNo;
+
+    @Schema(description = "支付类型")
+    private PaymentType paymentType;
+
+    @Schema(description = "订单类型")
+    private OrderNoType orderNoType;
+
+    @Schema(description = "是否成功")
+    private Boolean isSuccess;
+
+    @Schema(description = "过期时间")
+    @Indexed(expireAfterSeconds = 0)
+    private Date ttl;
+
+}

+ 13 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/oss/NetDiskOssBusService.java

@@ -19,6 +19,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -49,6 +50,17 @@ public class NetDiskOssBusService extends SuperService {
     @Autowired
     private OrganizationDao organizationDao;
 
+    /**
+     * @param param
+     * @param file
+     * @return
+     */
+    public String uploadMinoFile(RemoteGetTokenFileParam param, MultipartFile file) {
+        String url = "";
+
+        return url;
+    }
+
     public ResultContent<com.github.microservice.netdisk.client.model.token.StsToken> getUploadFileToken(RemoteGetTokenFileParam param) {
         com.github.microservice.netdisk.client.model.remote.RemoteFile remoteFile = new RemoteFile();
         UserAccount user = getCurrentUserAccount();
@@ -71,6 +83,7 @@ public class NetDiskOssBusService extends SuperService {
         }
     }
 
+
     public ResultContent<FileStoreModel> uploadFinish(FileItemModel fileItems) {
         FileItemModel[] arr = new FileItemModel[]{fileItems};
         com.github.microservice.netdisk.client.content.ResultContent<List<FileStoreModel>> content = netDiskOssService.uploadFinish(arr);

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

@@ -0,0 +1,54 @@
+package com.zhongshu.card.server.core.service.payment;
+
+import com.github.microservice.net.ResultContent;
+import com.github.microservice.types.payment.PaymentType;
+import com.zhongshu.card.client.type.payment.OrderNoType;
+import com.zhongshu.card.server.core.dao.payment.OrderNoInfoDao;
+import com.zhongshu.card.server.core.domain.payment.OrderNoInfo;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ * @author TRX
+ * @date 2024/11/15
+ */
+@Slf4j
+@Service
+public class OrderNoInfoService extends SuperService {
+
+    @Autowired
+    private OrderNoInfoDao orderNoInfoDao;
+
+    public ResultContent saveInfo(String paymentNo, OrderNoType orderNoType) {
+        return saveInfo(paymentNo, orderNoType, null);
+    }
+
+    public ResultContent saveInfo(String paymentNo, OrderNoType orderNoType, PaymentType paymentType) {
+        OrderNoInfo orderNoInfo = orderNoInfoDao.findByPaymentNo(paymentNo);
+        if (ObjectUtils.isEmpty(orderNoInfo)) {
+            orderNoInfo = new OrderNoInfo();
+        }
+        orderNoInfo.setPaymentNo(paymentNo);
+        if (orderNoType == null) {
+            orderNoType = OrderNoType.UnKnow;
+        }
+        orderNoInfo.setOrderNoType(orderNoType);
+        orderNoInfo.setPaymentType(paymentType);
+        orderNoInfo.setTtl(new Date(System.currentTimeMillis() + 24 * 7 * 60 * 60 * 100L));
+        orderNoInfoDao.save(orderNoInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    public OrderNoType getOrderNoType(String paymentNo) {
+        OrderNoInfo orderNoInfo = orderNoInfoDao.findByPaymentNo(paymentNo);
+        if (ObjectUtils.isEmpty(orderNoInfo)) {
+            return OrderNoType.UnKnow;
+        }
+        return orderNoInfo.getOrderNoType();
+    }
+}

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

@@ -6,18 +6,17 @@ import com.github.microservice.pay.client.ret.ResultState;
 import com.github.microservice.types.OrderState;
 import com.github.microservice.types.payment.PaymentType;
 import com.zhongshu.card.client.model.operLogs.OperationLogsAddParam;
-import com.zhongshu.card.client.model.org.OrganizationMiniModel;
 import com.zhongshu.card.client.model.payment.ExpenseRefundParam;
 import com.zhongshu.card.client.type.LogsLevel;
 import com.zhongshu.card.client.type.MessageType;
 import com.zhongshu.card.client.type.RefundState;
+import com.zhongshu.card.client.type.payment.OrderNoType;
 import com.zhongshu.card.client.type.payment.SettlementState;
 import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.client.utils.PayExceptionToShowUtil;
 import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
 import com.zhongshu.card.server.core.dao.payment.PaymentProcessDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
-import com.zhongshu.card.server.core.domain.paySetting.ProjectMainPaySetting;
 import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
 import com.zhongshu.card.server.core.domain.payment.PaymentProcess;
 import com.zhongshu.card.server.core.domain.schedule.ScheduleTaskConfig;
@@ -81,6 +80,9 @@ public class PayCallService extends SuperService {
     @Autowired
     private CommonService commonService;
 
+    @Autowired
+    private OrderNoInfoService orderNoInfoService;
+
     /**
      * 统一调用支付服务
      *
@@ -105,7 +107,7 @@ public class PayCallService extends SuperService {
             return ResultContent.buildFail(msg);
         }
         log.info("开始支付: {} {}", entity.getPaymentNo(), paymentTypes);
-        int maxTime = 4 * 1000;
+        int maxTime = 2 * 1000;
         boolean b = false;
         for (PaymentType paymentType : paymentTypes) {
             entity = expenseFlowDao.findTopById(entity.getId());
@@ -192,6 +194,8 @@ public class PayCallService extends SuperService {
             paymentProcess.setPayMillis(paymentProcess.getPayEndTime() - paymentProcess.getPayStartTime());
             paymentProcess.setTimeStr(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
             paymentProcessDao.save(paymentProcess);
+
+            orderNoInfoService.saveInfo(entity.getPaymentNo(), OrderNoType.Pay, entity.getPaymentType());
         } else {
             String msg = resultContent.getMsg();
             if (StringUtils.isNotEmpty(msg) && msg.contains("Connection reset")) {
@@ -274,6 +278,7 @@ public class PayCallService extends SuperService {
             logsAddParam.setMessageType(MessageType.Info);
             logsAddParam.setLevel(LogsLevel.Low);
             logsAddParam.setContent(msg);
+            orderNoInfoService.saveInfo(entity.getPaymentNo(), OrderNoType.Pay, entity.getPaymentType());
         } else {
             String msg = resultContent.getMsg();
             if (StringUtils.isNotEmpty(msg) && msg.contains("Connection reset")) {
@@ -421,6 +426,8 @@ public class PayCallService extends SuperService {
     public ResultContent<List<TransactionLogModel>> walletRefund(ExpenseFlow entity, ExpenseRefundParam param) {
         String refundNo = NextNoUtil.getNextPaymentNo(null);
         entity.setRefundNo(refundNo);
+        orderNoInfoService.saveInfo(refundNo, OrderNoType.Refund, entity.getPaymentType());
+
         com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent = balancePayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), refundNo, entity.getPayAmount(), param.getRemark());
         if (resultContent.getState() == ResultState.Success) {
             return ResultContent.buildSuccess(resultContent.getContent());
@@ -438,9 +445,9 @@ public class PayCallService extends SuperService {
         String refundNo = NextNoUtil.getNextPaymentNo(null);
         entity.setRefundNo(refundNo);
         String paymentNo = entity.getPaymentNo();
+        orderNoInfoService.saveInfo(refundNo, OrderNoType.Refund, entity.getPaymentType());
 
-        ResultContent resultContent = chinaumsSenselessPayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(),
-                entity.getPayAmount(), paymentNo, refundNo, param.getRemark());
+        ResultContent resultContent = chinaumsSenselessPayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), entity.getPayAmount(), paymentNo, refundNo, param.getRemark());
         if (resultContent.isSuccess()) {
             return ResultContent.buildSuccess(resultContent.getContent());
         } else {
@@ -448,6 +455,17 @@ public class PayCallService extends SuperService {
         }
     }
 
+    /**
+     * 银联云闪付 退款回调
+     *
+     * @param paymentNo
+     * @return
+     */
+    public ResultContent unionFrictionlessPayRefundFinish(String paymentNo) {
+
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 结算
      *