dengsixing il y a 3 ans
Parent
commit
b069c26e6b

+ 26 - 0
src/main/java/com/fdkankan/repair/bean/UpgradeBean.java

@@ -0,0 +1,26 @@
+package com.fdkankan.repair.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/6/28
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UpgradeBean {
+
+    private Long sceneProId;
+
+    private boolean reUpgrade;
+
+}

+ 3 - 1
src/main/java/com/fdkankan/repair/listener/RabbitMqListener.java

@@ -1,5 +1,7 @@
 package com.fdkankan.repair.listener;
 
+import com.alibaba.fastjson.JSON;
+import com.fdkankan.repair.bean.UpgradeBean;
 import com.fdkankan.repair.service.ISceneUpgradeToV4Service;
 import com.rabbitmq.client.Channel;
 import java.nio.charset.StandardCharsets;
@@ -43,7 +45,7 @@ public class RabbitMqListener {
         String correlationId = (String) correlation;
         String msg = new String(message.getBody(), StandardCharsets.UTF_8);
         log.info("场景升级开始,队列名:{},id:{},消息体:{}", upgradeToV4, correlationId, msg);
-        long sceneProId = Long.parseLong(msg);
+        UpgradeBean upgradeBean = JSON.parseObject(msg, UpgradeBean.class);
         //迁移数据
         sceneUpgradeToV4Service.upgrade(sceneProId);
         log.info("场景升级结束,队列名:{},id:{}", upgradeToV4, correlationId);

+ 20 - 4
src/main/java/com/fdkankan/repair/schedule/ScheduleJob.java

@@ -1,5 +1,8 @@
 package com.fdkankan.repair.schedule;
 
+import com.fdkankan.redis.constant.RedisKey;
+import com.fdkankan.redis.constant.RedisLockKey;
+import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.repair.service.ISceneRepairLogService;
 import java.util.Calendar;
 import lombok.extern.slf4j.Slf4j;
@@ -12,7 +15,9 @@ import org.springframework.stereotype.Component;
 public class ScheduleJob {
 
     @Autowired
-    ISceneRepairLogService sceneRepairLogService;
+    private ISceneRepairLogService sceneRepairLogService;
+    @Autowired
+    private RedisLockUtil redisLockUtil;
 
 
     /**
@@ -21,9 +26,20 @@ public class ScheduleJob {
     @Scheduled(cron = "0 0/10 * * * ? ")
     public void rollbackSceneUpgradeStatus() {
         log.info("场景升级失败回滚任务开始执行");
-        long timeInMillis = Calendar.getInstance().getTimeInMillis();
-        sceneRepairLogService.rollbackSceneUpgradeStatus();
-        log.info("场景升级失败回滚任务开始执行,耗时:{}", );
+        String lockKey = RedisLockKey.LOCK_SCENE_UPGRADE_FAILED_ROLLBACK;
+        boolean lock = redisLockUtil.lock(lockKey, RedisKey.EXPIRE_TIME_2_HOUR);
+        if(!lock){
+            return;
+        }
+        try {
+            long start = Calendar.getInstance().getTimeInMillis();
+            sceneRepairLogService.rollbackSceneUpgradeStatus();
+            log.info("场景升级失败回滚任务开始执行,耗时:{}", Calendar.getInstance().getTimeInMillis() - start);
+        }catch (Exception e){
+            log.error("场景升级失败回滚任务执行失败", e);
+        }finally {
+            redisLockUtil.unlockLua(lockKey);
+        }
     }
 
 

+ 3 - 1
src/main/java/com/fdkankan/repair/service/ISceneUpgradeToV4Service.java

@@ -1,5 +1,7 @@
 package com.fdkankan.repair.service;
 
+import com.fdkankan.repair.bean.UpgradeBean;
+
 /**
  * <p>
  * TODO
@@ -10,6 +12,6 @@ package com.fdkankan.repair.service;
  **/
 public interface ISceneUpgradeToV4Service {
 
-    void upgrade(long sceneProId) throws Exception;
+    void upgrade(UpgradeBean upgradeBean) throws Exception;
 
 }

+ 8 - 2
src/main/java/com/fdkankan/repair/service/impl/SceneUpgradeToV4Service.java

@@ -25,6 +25,7 @@ import com.fdkankan.repair.bean.RequestSceneProV4;
 import com.fdkankan.repair.bean.SceneEditControlsBean;
 import com.fdkankan.repair.bean.SceneJsonBean;
 import com.fdkankan.repair.bean.SceneUpgradeProgressBean;
+import com.fdkankan.repair.bean.UpgradeBean;
 import com.fdkankan.repair.callback.FdkkMiniReqErrorCallback;
 import com.fdkankan.repair.callback.FdkkMiniReqSuccessCallback;
 import com.fdkankan.repair.constant.ProgressStatus;
@@ -124,8 +125,10 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
     FdkankanMiniClient fdkankanMiniClient;
 
     @Override
-    public void upgrade(long sceneProId)  throws Exception{
+    public void upgrade(UpgradeBean upgradeBean)  throws Exception{
 
+        Long sceneProId = upgradeBean.getSceneProId();
+        boolean reUpgrade = upgradeBean.isReUpgrade();
         ScenePro scenePro = sceneProService.getById(sceneProId);
         //线程开始,正在执行线程数+1
         String num = scenePro.getNum();
@@ -373,8 +376,11 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
                 uploadToOssUtil.copyFiles(imagePath + "logo-main.png", editUsersPath + "loadingLogo-user.png");
                 uploadToOssUtil.copyFiles(imagePath + "logo-main.png", viewUsersPath + "loadingLogo-user.png");
             }
+
+            //由于v3重算会初始化缩略图图,如果是重算后自动升级,不需要同步所列图和websit
             if(StrUtil.isNotEmpty(scenePro.getThumb())
-                && scenePro.getThumb().contains(imagePath)){
+                && scenePro.getThumb().contains(imagePath)
+                && !reUpgrade){
                 String thumbUrl = null;
                 if(scenePro.getThumb().contains("thumbSmallImg.jpg")){
                     uploadToOssUtil.copyFiles(imagePath + "thumbBigImg.jpg", editUsersPath + "thumb-1k.jpg");