Browse Source

优化预约充电:预约充电时间早于当前时间,则将预约时间延后10S,解决重复创建订单无法使用优惠问题

skyline 1 year ago
parent
commit
c20aefca2c

+ 5 - 0
miniapp/src/main/java/com/kym/miniapp/jobs/StartChargeDelayJob.java

@@ -18,6 +18,7 @@ import org.springframework.context.event.EventListener;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.concurrent.DelayQueue;
 import java.util.concurrent.ExecutorService;
@@ -153,6 +154,10 @@ public class StartChargeDelayJob implements DelayService<DelayChargeOrder> {
 
     @Override
     public boolean addToDelayQueue(DelayChargeOrder delayChargeOrder) {
+        // 如果预约开始时间小于等于当前时间,则将预约开始时间延后10S
+        if (delayChargeOrder.getStartTime().isBefore(LocalDateTime.now())) {
+            delayChargeOrder.setStartTime(delayChargeOrder.getStartTime().plusSeconds(10));
+        }
         DelayedItem<DelayChargeOrder> orderDelayed = new DelayedItem<>(delayChargeOrder, delayChargeOrder.getStartTime());
         return START_DELAY_QUEUE.add(orderDelayed);
     }