xiongzhu 3 лет назад
Родитель
Сommit
547980be6e

+ 2 - 0
src/main/java/com/izouma/nineth/domain/ErrorOrder.java

@@ -21,4 +21,6 @@ public class ErrorOrder extends BaseEntity {
     private String transactionId;
 
     private PayMethod payMethod;
+
+    private String type;
 }

+ 24 - 9
src/main/java/com/izouma/nineth/service/GiftOrderService.java

@@ -17,8 +17,8 @@ import com.izouma.nineth.config.AlipayProperties;
 import com.izouma.nineth.config.GeneralProperties;
 import com.izouma.nineth.config.WxPayProperties;
 import com.izouma.nineth.domain.Asset;
+import com.izouma.nineth.domain.ErrorOrder;
 import com.izouma.nineth.domain.GiftOrder;
-import com.izouma.nineth.domain.Order;
 import com.izouma.nineth.domain.User;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.enums.AssetStatus;
@@ -26,11 +26,13 @@ import com.izouma.nineth.enums.OrderStatus;
 import com.izouma.nineth.enums.PayMethod;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.AssetRepo;
+import com.izouma.nineth.repo.ErrorOrderRepo;
 import com.izouma.nineth.repo.GiftOrderRepo;
 import com.izouma.nineth.repo.UserRepo;
 import com.izouma.nineth.utils.JpaUtils;
 import com.izouma.nineth.utils.SnowflakeIdWorker;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.EncoderException;
 import org.apache.commons.codec.net.URLCodec;
 import org.apache.commons.lang3.StringUtils;
@@ -52,6 +54,7 @@ import java.util.Map;
 
 @Service
 @AllArgsConstructor
+@Slf4j
 public class GiftOrderService {
 
     private AssetRepo         assetRepo;
@@ -66,6 +69,7 @@ public class GiftOrderService {
     private AssetService      assetService;
     private AdapayProperties  adapayProperties;
     private GeneralProperties generalProperties;
+    private    ErrorOrderRepo    errorOrderRepo;
 
     @Transactional
     public GiftOrder gift(Long userId, Long assetId, Long toUserId) {
@@ -106,16 +110,27 @@ public class GiftOrderService {
     @Transactional
     public void giftNotify(Long orderId, PayMethod payMethod, String transactionId) {
         GiftOrder giftOrder = giftOrderRepo.findById(orderId).orElseThrow(new BusinessException("订单不存在"));
-        Asset asset = assetRepo.findById(giftOrder.getAssetId()).orElseThrow(new BusinessException("资产不存在"));
-        User newOwner = userRepo.findById(giftOrder.getToUserId()).orElseThrow(new BusinessException("用户不存在"));
+        log.error("转赠回调  orderId={} transactionId={}", orderId, transactionId);
+        if (giftOrder.getStatus() == OrderStatus.NOT_PAID) {
+            Asset asset = assetRepo.findById(giftOrder.getAssetId()).orElseThrow(new BusinessException("资产不存在"));
+            User newOwner = userRepo.findById(giftOrder.getToUserId()).orElseThrow(new BusinessException("用户不存在"));
 
-        giftOrder.setPayMethod(payMethod);
-        giftOrder.setStatus(OrderStatus.FINISH);
-        giftOrder.setTransactionId(transactionId);
-        giftOrder.setPayTime(LocalDateTime.now());
-        giftOrder.setPayMethod(PayMethod.ALIPAY);
+            giftOrder.setPayMethod(payMethod);
+            giftOrder.setStatus(OrderStatus.FINISH);
+            giftOrder.setTransactionId(transactionId);
+            giftOrder.setPayTime(LocalDateTime.now());
+            giftOrder.setPayMethod(PayMethod.ALIPAY);
 
-        assetService.transfer(asset, asset.getPrice(), newOwner, "转赠", null);
+            assetService.transfer(asset, asset.getPrice(), newOwner, "转赠", null);
+        } else {
+            log.error("转赠回调出错 状态错误 orderid={} transactionid={} status={}", orderId, transactionId, giftOrder.getStatus());
+            errorOrderRepo.save(ErrorOrder.builder()
+                    .orderId(orderId)
+                    .transactionId(transactionId)
+                    .payMethod(payMethod)
+                    .type("gift")
+                    .build());
+        }
     }
 
     public void payOrderAlipay(Long id, Model model) {