Browse Source

修复场景下载状态修改问题

xiewj 2 years ago
parent
commit
9fadda103a

+ 1 - 1
pom.xml

@@ -31,7 +31,7 @@
 
     <properties>
         <java.version>1.8</java.version>
-        <hutool-version>5.7.17</hutool-version>
+        <hutool-version>5.8.16</hutool-version>
         <spring.cloud-version>Hoxton.SR8</spring.cloud-version>
         <fdkankan.common-version>2.0.0-SNAPSHOT</fdkankan.common-version>
         <fastjson-version>1.2.83</fastjson-version>

+ 12 - 0
src/main/java/com/fdkankan/scene/SceneApplication.java

@@ -18,6 +18,7 @@ import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Set;
 
 @SpringBootApplication
 @EnableTransactionManagement//开启事务
@@ -26,6 +27,8 @@ import java.util.Collection;
 @Slf4j
 @EnableScheduling
 public class SceneApplication {
+    private static String keyFormat = "touch:scene:download:num:%s";
+
     public static void main(String[] args) throws IOException {
         SpringApplication.run(SceneApplication.class, args);
         log.info("项目启动成功");
@@ -40,6 +43,15 @@ public class SceneApplication {
         }
         RedisUtil redisUtil = SpringUtil.getBean(RedisUtil.class);
         redisUtil.del(RedisKey.SCENE_DOWNLOAD_ING);
+        Set keyFormatSet = redisUtil.keys(String.format(keyFormat, "*"));
+        Set PREFIX_DOWNLOAD_PROGRESS_V4_SET = redisUtil.keys(String.format(RedisKey.PREFIX_DOWNLOAD_PROGRESS_V4, "*"));
+        for (Object o : keyFormatSet) {
+            redisUtil.del(o.toString());
+        }
+        for (Object o : PREFIX_DOWNLOAD_PROGRESS_V4_SET) {
+            redisUtil.del(o.toString());
+        }
+
 //        String nameSpace = SocketIoConstant.SCENE_HANDLER_SPACE.replace("/", "");
 //        Collection<String> keys = cache.keys(nameSpace + "*");
 //        for (String key : keys) {

+ 5 - 0
src/main/java/com/fdkankan/scene/controller/SceneDownloadLogController.java

@@ -3,6 +3,7 @@ package com.fdkankan.scene.controller;
 
 import com.fdkankan.scene.service.ISceneDownloadLogService;
 import com.fdkankan.web.response.ResultData;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/service/scene/downlaod")
+@Slf4j
 public class SceneDownloadLogController {
 
     @Autowired
@@ -27,16 +29,19 @@ public class SceneDownloadLogController {
 
     @GetMapping("/downOfflineScene")
     public ResultData downOfflineScene(@RequestParam("sceneCode")String num){
+        log.info("downOfflineScene");
         return sceneDownloadLogService.downOfflineScene(num);
     }
 
     @GetMapping("/downloadProcess")
     public ResultData downloadProcess (@RequestParam("sceneCode")String num){
+        log.info("downloadProcess");
         return sceneDownloadLogService.downloadProcess(num);
     }
 
     @GetMapping("/downloadUpDateStatus")
     public ResultData downloadUpDateStatus (@RequestParam("sceneCode")String num){
+        log.info("进入downloadUpDateStatus");
         return sceneDownloadLogService.downloadUpDateStatus(num);
     }
 

+ 18 - 3
src/main/java/com/fdkankan/scene/service/impl/SceneDownloadLogServiceImpl.java

@@ -1,11 +1,13 @@
 package com.fdkankan.scene.service.impl;
 
 import cn.hutool.extra.spring.SpringUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.SceneDownloadProgressStatus;
 import com.fdkankan.common.constant.SceneVersionType;
 import com.fdkankan.common.constant.UploadStatus;
 import com.fdkankan.common.exception.BusinessException;
@@ -26,6 +28,7 @@ import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.web.bean.DownLoadProgressBean;
 import com.fdkankan.web.response.ResultData;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -44,6 +47,7 @@ import java.util.Objects;
  * @since 2023-03-06
  */
 @Service
+@Slf4j
 public class SceneDownloadLogServiceImpl extends ServiceImpl<ISceneDownloadLogMapper, SceneDownloadLog> implements ISceneDownloadLogService {
 
     private static String keyFormat = "touch:scene:download:num:%s";
@@ -93,8 +97,12 @@ public class SceneDownloadLogServiceImpl extends ServiceImpl<ISceneDownloadLogMa
                 download = true;
             }
             if(version == sceneDownloadLog.getSceneVersion()){
+                String url=this.publicUrl+":"+serviceConfig.getServerPort()+"/profile" +sceneDownloadLog.getDownloadUrl();
                 result.put("status", 2);
-                result.put("url",this.publicUrl+":"+serviceConfig.getServerPort()+"/profile" +sceneDownloadLog.getDownloadUrl());
+                result.put("url",url);
+                String key=String.format(RedisKey.PREFIX_DOWNLOAD_PROGRESS_V4,num);
+                DownLoadProgressBean progress = new DownLoadProgressBean(sceneDownloadLog.getDownloadUrl(),100, SceneDownloadProgressStatus.DOWNLOAD_SUCCESS.code());
+                redisUtil.set(key, JSONUtil.toJsonStr(progress));
                 return ResultData.ok(result);
             }else{
                 result.put("status", 3);
@@ -127,8 +135,14 @@ public class SceneDownloadLogServiceImpl extends ServiceImpl<ISceneDownloadLogMa
 
     @Override
     public ResultData downloadProcess(String num) {
-        String processStr = redisUtil.get(String.format(RedisKey.PREFIX_DOWNLOAD_PROGRESS_V4,num));
-        DownLoadProgressBean downLoadProgressBean = JSONObject.parseObject(processStr, DownLoadProgressBean.class);
+        String key=String.format(RedisKey.PREFIX_DOWNLOAD_PROGRESS_V4,num);
+        DownLoadProgressBean downLoadProgressBean = new DownLoadProgressBean();
+        if (!redisUtil.hasKey(key)){
+            return ResultData.ok(downLoadProgressBean);
+        }
+        String processStr = redisUtil.get(key);
+        log.info("downloadProcess-processStr-{}",processStr);
+        downLoadProgressBean = JSONObject.parseObject(processStr, DownLoadProgressBean.class);
         if (downLoadProgressBean.getStatus()== 1002){
             //写库
             update(
@@ -145,6 +159,7 @@ public class SceneDownloadLogServiceImpl extends ServiceImpl<ISceneDownloadLogMa
     @Override
     public ResultData downloadUpDateStatus(String num) {
         redisUtil.del(String.format(keyFormat, num));
+        redisUtil.del(String.format(RedisKey.PREFIX_DOWNLOAD_PROGRESS_V4,num));
         return ResultData.ok();
     }
 }

+ 1 - 1
src/main/resources/application-standAloneProd.yml

@@ -78,7 +78,7 @@ logging:
   config: classpath:logback-spring.xml
   fdkk:
     maxHistory: 1
-    level: off
+    level: Info
   path: ${FDMGEA_HOME}/bin/log
 
 main: