wangqifan 4 лет назад
Родитель
Сommit
633f3b5c9a

+ 3 - 0
src/main/java/com/izouma/tcg/domain/orderInfo/OrderInfo.java

@@ -9,6 +9,7 @@ import com.izouma.tcg.domain.card.CardCase;
 import com.izouma.tcg.domain.card.Collection;
 import com.izouma.tcg.domain.customizeStore.Store;
 import com.izouma.tcg.enums.OrderStatus;
+import com.izouma.tcg.enums.PayMethod;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -65,6 +66,8 @@ public class OrderInfo extends BaseEntity {
     private String        cardBoxStr;
     private String        outTradeNo;
     private Long          refundId;
+    @Enumerated(EnumType.STRING)
+    private PayMethod     payMethod;
 
 
     @ApiModelProperty(value = "物流公司代码", name = "logisticsType")

+ 13 - 0
src/main/java/com/izouma/tcg/enums/PayMethod.java

@@ -0,0 +1,13 @@
+package com.izouma.tcg.enums;
+
+public enum PayMethod {
+    WECHAT("微信"),
+    BALANCE("余额"),
+    ALIPAY("支付宝");
+
+    private final String description;
+
+    PayMethod(String description) {
+        this.description = description;
+    }
+}

+ 16 - 1
src/main/java/com/izouma/tcg/service/orderInfo/OrderInfoService.java

@@ -14,6 +14,7 @@ import com.izouma.tcg.dto.PageQuery;
 import com.izouma.tcg.dto.cardCase.OrderBoxDTO;
 import com.izouma.tcg.enums.CaseStatus;
 import com.izouma.tcg.enums.OrderStatus;
+import com.izouma.tcg.enums.PayMethod;
 import com.izouma.tcg.enums.TransactionRecordType;
 import com.izouma.tcg.exception.BusinessException;
 import com.izouma.tcg.repo.MemberInfoRepo;
@@ -29,6 +30,7 @@ import com.izouma.tcg.service.delay.OrderDelayService;
 import com.izouma.tcg.utils.*;
 import lombok.AllArgsConstructor;
 import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.lang.RandomStringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
@@ -207,7 +209,20 @@ public class OrderInfoService {
         if (!orig.getOrderStatus().equals(OrderStatus.CREATED)) {
             throw new BusinessException("订单未在待支付状态,无法支付");
         }
-        orig.setTransactionId(transactionId);
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(transactionId)) {
+            orig.setTransactionId(transactionId);
+            orig.setPayMethod(PayMethod.WECHAT);
+        } else {
+            orig.setTransactionId(RandomStringUtils.randomAlphanumeric(32));
+            orig.setPayMethod(PayMethod.BALANCE);
+            MemberInfo memberInfo = memberInfoRepo.findAllByUserId(orig.getUserId());
+            if (memberInfo.getMoney().compareTo(orig.getTotal()) < 0) {
+                throw new BusinessException("余额不足");
+            }
+            memberInfo.setMoney(memberInfo.getMoney().subtract(orig.getTotal()));
+            memberInfoRepo.save(memberInfo);
+        }
+
         orig.setOrderStatus(OrderStatus.PAYED);
         orig.setPaidTime(LocalDateTime.now());
         orig.setTotal(orig.getTotal());