skyline пре 2 година
родитељ
комит
c15e5f0959

+ 3 - 1
service/src/main/java/com/kym/service/queue/DelayService.java → service/src/main/java/com/kym/service/miniapp/DelayService.java

@@ -1,4 +1,6 @@
-package com.kym.service.queue;
+package com.kym.service.miniapp;
+
+import com.kym.service.queue.DelayedItem;
 
 /**
  * @author skyline

+ 12 - 4
service/src/main/java/com/kym/service/queue/DelayServiceImpl.java → service/src/main/java/com/kym/service/miniapp/impl/DelayServiceImpl.java

@@ -1,10 +1,14 @@
-package com.kym.service.queue;
+package com.kym.service.miniapp.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.kym.entity.miniapp.ChargeOrder;
 import com.kym.service.miniapp.ChargeOrderService;
 import com.kym.service.miniapp.ChargeService;
-import jakarta.annotation.PostConstruct;
+import com.kym.service.miniapp.DelayService;
+import com.kym.service.queue.DelayedItem;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
 import java.util.concurrent.DelayQueue;
@@ -18,12 +22,14 @@ import java.util.concurrent.Executors;
  */
 @Service
 @Slf4j
+@DS("db-miniapp")
 public class DelayServiceImpl implements DelayService<ChargeOrder> {
 
     /**
      * 预约订单队列
      */
     private final static DelayQueue<DelayedItem<ChargeOrder>> DELAY_QUEUE = new DelayQueue<>();
+
     private final ChargeOrderService chargeOrderService;
     private final ChargeService chargeService;
     /**
@@ -36,8 +42,10 @@ public class DelayServiceImpl implements DelayService<ChargeOrder> {
         this.chargeService = chargeService;
     }
 
-    @PostConstruct
-    public void init() {
+    @DS("db-miniapp")
+    // 这里不能使用@PostConstruct,在初始化完成后, bean 进入增强阶段, 所以这个阶段的任何AOP都是无效的,https://www.cnblogs.com/eternityz/p/15330069.html
+    @EventListener
+    public void init(ContextRefreshedEvent event) {
         // 队列加载所有充电状态为预约中的订单,按照开始时间排序
         var orderList = chargeOrderService.lambdaQuery()
                 .eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)

+ 2 - 2
service/src/main/java/com/kym/service/queue/DelayedItem.java

@@ -16,12 +16,12 @@ public class DelayedItem<T> implements Delayed {
     /**
      * 业务对象
      */
-    final T data;
+    public final T data;
 
     /**
      * 预约启动时间
      */
-    final LocalDateTime startTime;
+    public final LocalDateTime startTime;
 
     public DelayedItem(T data, LocalDateTime startTime) {
         this.data = data;