24282 1 рік тому
батько
коміт
0ab96e2725

+ 12 - 3
sd-wln/src/main/java/com/sd/wln/controller/OrderHandleController.java

@@ -1,5 +1,6 @@
 package com.sd.wln.controller;
 
+import com.ruoyi.common.exception.ServiceException;
 import com.sd.wln.entity.ResynchronizationDto;
 import com.sd.wln.service.OrderHandleService;
 import com.sd.wln.service.WlnSkuService;
@@ -48,12 +49,20 @@ public class OrderHandleController {
     }
 
     /**
-     * 批量同步订单
+     * 同步sku
      */
     @PostMapping("/syncSku")
     public void syncSku() {
-        wlnSkuService.syncSkuClassify();
-        wlnSkuService.syncSku();
+        if (WlnSkuService.syncSkuLock.tryLock()) {
+            try {
+                wlnSkuService.syncSkuClassify();
+                wlnSkuService.syncSku();
+            } finally {
+                WlnSkuService.syncSkuLock.unlock();
+            }
+        } else {
+            throw new ServiceException("sku正在同步中,请勿重复操作");
+        }
     }
 
 }

+ 8 - 2
sd-wln/src/main/java/com/sd/wln/scheduled/WlnSyncTask.java

@@ -29,8 +29,14 @@ public class WlnSyncTask {
      */
     @Scheduled(cron = "0 0 1 * * ?")
     public void syncSku() {
-        wlnSkuService.syncSkuClassify();
-        wlnSkuService.syncSku();
+        if (WlnSkuService.syncSkuLock.tryLock()) {
+            try {
+                wlnSkuService.syncSkuClassify();
+                wlnSkuService.syncSku();
+            } finally {
+                WlnSkuService.syncSkuLock.unlock();
+            }
+        }
     }
 
     /**

+ 5 - 0
sd-wln/src/main/java/com/sd/wln/service/WlnSkuService.java

@@ -1,7 +1,12 @@
 package com.sd.wln.service;
 
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
 public interface WlnSkuService {
 
+    Lock syncSkuLock = new ReentrantLock();
+
     /**
      * 同步sku分类
      */