Browse Source

预约资格筛选优化

ouyang 3 years ago
parent
commit
5fcdeb7ae5

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

@@ -14,7 +14,9 @@ import org.springframework.stereotype.Component;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Component
@@ -26,6 +28,8 @@ public class SubscribeTask {
     @Autowired
     private SubscribeRepo subscribeRepo;
 
+    private Map<Long, LocalDateTime> collectionMap = new HashMap<>();
+
     @Scheduled(cron = "0/5 * * * * ?")
     public void subscriberTask() {
         LocalDateTime startTime = LocalDateTime.now();
@@ -52,6 +56,13 @@ public class SubscribeTask {
                 .findAllByEndTimeLessThanEqualAndPublishTimeGreaterThan(startTime, endTime);
         if (!Collections.isEmpty(collectionList)) {
             for (Collection collection : collectionList) {
+                if (collectionMap.containsKey(collection.getId())) {
+                    if (startTime.isAfter(collectionMap.get(collection.getId()))) {
+                        collectionMap.remove(collection.getId());
+                    }
+                    continue;
+                }
+                collectionMap.put(collection.getId(), collection.getPublishTime());
                 List<Subscribe> subscribeList = subscribeRepo.findAllByCollectionId(collection.getId());
                 if (subscribeList.size() < collection.getStock()) {
                     for (Subscribe subscribe : subscribeList) {