Ver código fonte

回调

(cherry picked from commit 1e5e2f7fcb8796d32c0c17e1283e6dde8d8ba09b)
xiongzhu 4 anos atrás
pai
commit
a947747f38

+ 14 - 0
src/main/java/com/izouma/nineth/repo/OrderRepo.java

@@ -3,6 +3,7 @@ package com.izouma.nineth.repo;
 import com.izouma.nineth.domain.Order;
 import com.izouma.nineth.enums.CollectionSource;
 import com.izouma.nineth.enums.OrderStatus;
+import com.izouma.nineth.enums.PayMethod;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -65,4 +66,17 @@ public interface OrderRepo extends JpaRepository<Order, Long>, JpaSpecificationE
             "GROUP BY o.user_id " +
             "HAVING count(*) > 20")
     List<Long> checkBlackList(LocalDateTime start, LocalDateTime end);
+
+    @Query("update Order o set o.status = com.izouma.nineth.enums.OrderStatus.FINISH where o.id = ?1")
+    @Transactional
+    @Modifying
+    int finishOrder(Long id);
+
+    @Query("update Order o set o.status = com.izouma.nineth.enums.OrderStatus.PROCESSING, " +
+            "o.payTime = ?2, o.payMethod = ?3, o.transactionId = ?4 where o.id = ?1")
+    @Transactional
+    @Modifying
+    int processingOrder(Long id, LocalDateTime payTime, PayMethod payMethod, String transactionId);
+
+
 }

+ 0 - 5
src/main/java/com/izouma/nineth/service/AssetService.java

@@ -310,7 +310,6 @@ public class AssetService {
         assetRepo.save(asset);
     }
 
-    @Async
     public void transfer(Asset asset, BigDecimal price, User toUser, String reason, Long orderId) {
         Asset newAsset = new Asset();
         BeanUtils.copyProperties(asset, newAsset);
@@ -351,10 +350,6 @@ public class AssetService {
         asset.setOwnerAvatar(toUser.getAvatar());
         assetRepo.save(asset);
 
-        if (orderId != null) {
-            applicationContext.publishEvent(new TransferAssetEvent(this, true, newAsset));
-        }
-
         //vip权限转让
         CollectionPrivilege collectionPrivilege = collectionPrivilegeRepo.findByCollectionId(asset.getCollectionId());
         if (ObjectUtils.isNotEmpty(collectionPrivilege)) {

+ 3 - 22
src/main/java/com/izouma/nineth/service/OrderService.java

@@ -615,28 +615,7 @@ public class OrderService {
                 order.setPayMethod(payMethod);
                 if (order.getType() == CollectionType.BLIND_BOX) {
                     log.info("开始盲盒抽卡 orderId: {}, collectionId: {}", orderId, collection.getId());
-                    BlindBoxItem winItem = null;
-                    try {
-                        winItem = collectionService.draw(collection.getId());
-                    } catch (BusinessException ignored) {
-                    }
-                    if (winItem == null) {
-                        log.info("抽卡失败退款 orderId: {}", orderId);
-                        order.setStatus(OrderStatus.CANCELLED);
-                        order.setCancelTime(LocalDateTime.now());
-
-                        Map<String, Object> refundParams = new HashMap<>();
-                        refundParams.put("refund_amt", order.getTotalPrice().setScale(2, RoundingMode.HALF_UP)
-                                .toPlainString());
-                        refundParams.put("refund_order_no", String.valueOf(snowflakeIdWorker.nextId()));
-                        try {
-                            Map<String, Object> response = Refund.create(transactionId, refundParams);
-                        } catch (BaseAdaPayException e) {
-                            e.printStackTrace();
-                        }
-                        orderRepo.save(order);
-                        throw new BusinessException("抽卡失败, 已退款 " + orderId);
-                    }
+                    BlindBoxItem winItem = collectionService.draw(collection.getId());
                     log.info("抽卡成功 orderId: {}, collectionId: {}, winCollectionId: {}", orderId, collection
                             .getId(), winItem.getCollectionId());
                     order.setWinCollectionId(winItem.getCollectionId());
@@ -661,6 +640,8 @@ public class OrderService {
                         orderRepo.save(order);
                         Asset asset = assetRepo.findById(collection.getAssetId()).orElse(null);
                         assetService.transfer(asset, order.getPrice(), user, "转让", order.getId());
+                        order.setStatus(OrderStatus.FINISH);
+                        orderRepo.save(order);
                         collectionRepo.delete(collection);
                         // 如果展厅有此藏品
                         showCollectionRepo.deleteAllByCollectionId(order.getCollectionId());