wangqifan 3 ani în urmă
părinte
comite
688e889374

+ 18 - 15
src/main/java/com/izouma/nineth/dto/auction/AuctionRecordDTO.java

@@ -1,8 +1,8 @@
 package com.izouma.nineth.dto.auction;
 
 import com.izouma.nineth.domain.FileObject;
-import com.izouma.nineth.enums.AuctionRecordType;
-import com.izouma.nineth.enums.AuctionStatus;
+import com.izouma.nineth.enums.*;
+import com.izouma.nineth.service.AuctionOrderService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -20,25 +20,28 @@ import java.util.List;
 @NoArgsConstructor
 public class AuctionRecordDTO {
     @ApiModelProperty("用户ID")
-    private Long              userId;
+    private Long               userId;
     @ApiModelProperty("创作者")
-    private String            minter;
+    private String             minter;
     @ApiModelProperty("拍卖活动ID")
-    private Long              auctionId;
+    private Long               auctionId;
     @ApiModelProperty("拍卖活动")
-    private String            name;
+    private String             name;
     @ApiModelProperty("拍卖活动图片")
-    private List<FileObject>  auctionPic;
+    private List<FileObject>   auctionPic;
     @Enumerated(EnumType.STRING)
     @ApiModelProperty("类型")
-    private AuctionRecordType type;
+    private AuctionRecordType  type;
     @ApiModelProperty("是否竞得")
-    private boolean           purchased;
+    private boolean            purchased;
     @ApiModelProperty("出价")
-    private BigDecimal        bidderPrice;
-    private AuctionStatus     auctionStatus;
-    private Long              orderId;
-    private LocalDateTime     endTime;
-    private LocalDateTime     createdTime;
-    private BigDecimal        deposit;
+    private BigDecimal         bidderPrice;
+    private AuctionStatus      auctionStatus;
+    private Long               orderId;
+    private LocalDateTime      endTime;
+    private LocalDateTime      createdTime;
+    private BigDecimal         deposit;
+    private AuctionType        auctionType;
+    private AuctionOrderStatus orderStatus;
+    private AuctionOrderStatus depositStatus;
 }

+ 3 - 0
src/main/java/com/izouma/nineth/repo/AuctionActivityRepo.java

@@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.util.List;
 
 public interface AuctionActivityRepo extends JpaRepository<AuctionActivity, Long>, JpaSpecificationExecutor<AuctionActivity> {
     @Query("update AuctionActivity t set t.del = true where t.id = ?1")
@@ -38,4 +39,6 @@ public interface AuctionActivityRepo extends JpaRepository<AuctionActivity, Long
     @Modifying
     @Query("update AuctionActivity c set  c.status = ?2 where  c.id = ?1")
     void scheduleOffShelf(Long id, AuctionStatus status);
+
+    List<AuctionActivity> findAllByStatus(AuctionStatus auctionStatus);
 }

+ 2 - 0
src/main/java/com/izouma/nineth/repo/AuctionOrderRepo.java

@@ -28,4 +28,6 @@ public interface AuctionOrderRepo extends JpaRepository<AuctionOrder, Long>, Jpa
     List<AuctionOrder> findByStatusAndCreatedAtBeforeAndDelFalse(AuctionOrderStatus status, LocalDateTime createdAt);
 
     AuctionOrder findFirstByAuctionRecordIdOrderByCreatedAt(Long recordId);
+
+    AuctionOrder findFirstByAuctionIdAndPaymentTypeAndStatusNotIn(Long auctionId, AuctionPaymentType type, Collection<AuctionOrderStatus> status);
 }

+ 10 - 0
src/main/java/com/izouma/nineth/service/AuctionOrderService.java

@@ -15,6 +15,7 @@ import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.data.redis.core.BoundValueOperations;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -341,4 +342,13 @@ public class AuctionOrderService {
         redisTemplate.delete(RedisKeys.AUCTION_ORDER_LOCK + orderId);
     }
 
+    @Scheduled(cron = "0 0/30 * * * ?")
+    public void passOverTimeAuction() {
+        List<AuctionActivity> purchased = auctionActivityRepo.findAllByStatus(AuctionStatus.PURCHASED);
+        if (purchased != null) {
+            purchased.forEach(act->{
+
+            });
+        }
+    }
 }

+ 11 - 0
src/main/java/com/izouma/nineth/service/AuctionRecordService.java

@@ -4,6 +4,7 @@ import com.izouma.nineth.config.RedisKeys;
 import com.izouma.nineth.domain.*;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.dto.auction.AuctionRecordDTO;
+import com.izouma.nineth.enums.AuctionOrderStatus;
 import com.izouma.nineth.enums.AuctionPaymentType;
 import com.izouma.nineth.enums.AuctionRecordType;
 import com.izouma.nineth.enums.AuctionStatus;
@@ -24,7 +25,9 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 @Service
 @AllArgsConstructor
@@ -61,6 +64,7 @@ public class AuctionRecordService {
             auctionRecordDTO.setType(record.getType());
             auctionRecordDTO.setPurchased(record.isPurchased());
             auctionRecordDTO.setAuctionStatus(auctionActivity.getStatus());
+            auctionRecordDTO.setAuctionType(auctionActivity.getAuctionType());
 //            if (auctionActivity.getStatus().equals(AuctionStatus.PURCHASED) || auctionActivity.getStatus()
 //                    .equals(AuctionStatus.FINISH)) {
 //                if (auctionActivity.getRecordId() != null) {
@@ -73,8 +77,15 @@ public class AuctionRecordService {
                 AuctionOrder auctionOrder = auctionOrderRepo.findFirstByAuctionRecordIdOrderByCreatedAt(record.getId());
                 if (auctionOrder != null) {
                     auctionRecordDTO.setOrderId(auctionOrder.getId());
+                    auctionRecordDTO.setOrderStatus(auctionOrder.getStatus());
                 }
             }
+            Set<AuctionOrderStatus> auctionOrderStatuses = new HashSet<>();
+            auctionOrderStatuses.add(AuctionOrderStatus.NOT_PAID);
+            auctionOrderStatuses.add(AuctionOrderStatus.CANCELLED);
+            AuctionOrder depositOrder = auctionOrderRepo.findFirstByAuctionIdAndPaymentTypeAndStatusNotIn(record
+                    .getAuctionId(), AuctionPaymentType.DEPOSIT, auctionOrderStatuses);
+            auctionRecordDTO.setDepositStatus(depositOrder.getStatus());
             auctionRecordDTOS.add(auctionRecordDTO);
         });
         return new PageImpl<>(auctionRecordDTOS, records.getPageable(), records.getTotalElements());