dengsixing 3 år sedan
förälder
incheckning
f53dde4b0c

+ 27 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/StyleBean.java

@@ -0,0 +1,27 @@
+package com.fdkankan.scene.bean;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/3/24
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class StyleBean {
+
+    private Long createTime;
+
+    private JSONObject style;
+
+}

+ 25 - 23
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java

@@ -2,7 +2,6 @@ package com.fdkankan.scene.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.net.multipart.UploadFile;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.ZipUtil;
 import cn.hutool.core.util.ZipUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
@@ -13,9 +12,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.dtflys.forest.exceptions.ForestRuntimeException;
-import com.dtflys.forest.http.ForestRequest;
-import com.dtflys.forest.http.ForestResponse;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.Result;
 import com.fdkankan.common.response.Result;
@@ -25,7 +21,6 @@ import com.fdkankan.common.util.CreateObjUtil;
 import com.fdkankan.common.util.FileMd5Util;
 import com.fdkankan.common.util.FileMd5Util;
 import com.fdkankan.common.util.FileUtil;
 import com.fdkankan.common.util.FileUtil;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.FileUtils;
-import com.fdkankan.common.util.OkHttpUtils;
 import com.fdkankan.common.util.SceneUtil;
 import com.fdkankan.common.util.SceneUtil;
 import com.fdkankan.fyun.constant.StorageType;
 import com.fdkankan.fyun.constant.StorageType;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
@@ -42,6 +37,7 @@ import com.fdkankan.scene.bean.BoxPhotoBean;
 import com.fdkankan.scene.bean.IconBean;
 import com.fdkankan.scene.bean.IconBean;
 import com.fdkankan.scene.bean.RequestSceneProV4;
 import com.fdkankan.scene.bean.RequestSceneProV4;
 import com.fdkankan.scene.bean.SceneJsonBean;
 import com.fdkankan.scene.bean.SceneJsonBean;
+import com.fdkankan.scene.bean.StyleBean;
 import com.fdkankan.scene.bean.TagBean;
 import com.fdkankan.scene.bean.TagBean;
 import com.fdkankan.scene.callback.FdkkMiniReqErrorCallback;
 import com.fdkankan.scene.callback.FdkkMiniReqErrorCallback;
 import com.fdkankan.scene.callback.FdkkMiniReqSuccessCallback;
 import com.fdkankan.scene.callback.FdkkMiniReqSuccessCallback;
@@ -69,10 +65,8 @@ import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneUploadService;
 import com.fdkankan.scene.service.ISceneUploadService;
 import com.fdkankan.scene.vo.*;
 import com.fdkankan.scene.vo.*;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
 import com.google.errorprone.annotations.Var;
 import com.google.errorprone.annotations.Var;
 import java.io.File;
 import java.io.File;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
@@ -85,6 +79,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.Set;
 import java.util.UUID;
 import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -97,7 +92,6 @@ import java.io.IOException;
 import java.util.Calendar;
 import java.util.Calendar;
 import java.util.Objects;
 import java.util.Objects;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 /**
 /**
@@ -333,6 +327,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         uploadToOssUtil.upload(linkPanArr.toString().getBytes(), linkScenePath);
         uploadToOssUtil.upload(linkPanArr.toString().getBytes(), linkScenePath);
 
 
         //拷贝编辑目录到发布目录
         //拷贝编辑目录到发布目录
+        uploadToOssUtil.deleteFile(imgViewPath + "panorama");
         uploadToOssUtil.copyFiles(imgEditPath + "panorama",imgViewPath + "panorama");
         uploadToOssUtil.copyFiles(imgEditPath + "panorama",imgViewPath + "panorama");
 
 
     }
     }
@@ -1976,34 +1971,38 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
                 styles.add(JSON.parseObject(style));
                 styles.add(JSON.parseObject(style));
             });
             });
         }
         }
+
+        //图标按写入时间排序
+        styles = this.sortStyles(styles);
+
         result.put("styles", styles);
         result.put("styles", styles);
 
 
         return ResultData.ok(result);
         return ResultData.ok(result);
     }
     }
 
 
-    private List<String> sortStyles(List<JSONObject> tags, Set<String> styles){
+    private List<JSONObject> sortStyles(List<JSONObject> styles){
+
+        if(CollUtil.isEmpty(styles)){
+            return null;
+        }
 
 
         //统计使用频次
         //统计使用频次
-        List<IconBean> iconBeans = Lists.newArrayList();
-        for (String icon : styles) {
-            int count = 0;
-            for (JSONObject tag : tags) {
-                String sid = tag.getString("icon");
-                if(StrUtil.isEmpty(sid) || !icon.equals(sid)){
-                    continue;
-                }
-                ++count;
-            }
-            iconBeans.add(IconBean.builder().icon(icon).count(count).build());
+        List<StyleBean> styleBeans = Lists.newArrayList();
+        for (JSONObject style : styles) {
+            Long createTime = style.getLong("createTime");
+            style.remove("createTime");
+            styleBeans.add(
+                StyleBean.builder().style(style)
+                .createTime(createTime).build());
         }
         }
 
 
         //排序
         //排序
-        List<String> iconList = iconBeans.stream().sorted(Comparator.comparing(IconBean::getCount).reversed())
+        List<JSONObject> styleList = styleBeans.stream().sorted(Comparator.comparing(StyleBean::getCreateTime).reversed())
             .map(item -> {
             .map(item -> {
-                return item.getIcon();
+                return item.getStyle();
             }).collect(Collectors.toList());
             }).collect(Collectors.toList());
 
 
-        return iconList;
+        return styleList;
     }
     }
 
 
     private void setLinkScenesAndUpgradeVersion(Long scenePlusId, String num){
     private void setLinkScenesAndUpgradeVersion(Long scenePlusId, String num){
@@ -2091,9 +2090,12 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
             return;
             return;
         }
         }
 
 
+        long time = Calendar.getInstance().getTimeInMillis();
         Map<String, String> styleMap = new HashMap<>();
         Map<String, String> styleMap = new HashMap<>();
+        AtomicInteger index = new AtomicInteger();
         styles.stream().forEach(style->{
         styles.stream().forEach(style->{
             String id = style.getString("sid");
             String id = style.getString("sid");
+            style.put("createTime", time + index.getAndIncrement());
             styleMap.put(id, style.toJSONString());
             styleMap.put(id, style.toJSONString());
         });
         });
 
 

+ 24 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneUpgradeToV4Service.java

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.service.impl;
 package com.fdkankan.scene.service.impl;
 
 
+import cn.hutool.core.exceptions.ExceptionUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -37,6 +38,7 @@ import com.fdkankan.scene.service.ISceneRepairLogService;
 import com.fdkankan.scene.service.ISceneUpgradeToV4Service;
 import com.fdkankan.scene.service.ISceneUpgradeToV4Service;
 import com.fdkankan.scene.vo.SceneInfoVO;
 import com.fdkankan.scene.vo.SceneInfoVO;
 import com.fdkankan.scene.vo.UpgradeToV4ParamVO;
 import com.fdkankan.scene.vo.UpgradeToV4ParamVO;
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Objects;
@@ -104,11 +106,14 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
             return ResultData.error(ErrorCode.FAILURE_CODE_7019);
             return ResultData.error(ErrorCode.FAILURE_CODE_7019);
         }
         }
 
 
+        //查询升级日志,如果已经升级成功,不允许重复升级
+        SceneRepairLog sceneRepairLog = null;
         try {
         try {
-            //查询升级日志,如果已经升级成功,不允许重复升级
-            SceneRepairLog sceneRepairLog = sceneRepairLogService.getOne(
+            sceneRepairLog = sceneRepairLogService.getOne(
                 new LambdaQueryWrapper<SceneRepairLog>()
                 new LambdaQueryWrapper<SceneRepairLog>()
-                    .eq(SceneRepairLog::getNum, sceneProV3.getNum()));
+                    .eq(SceneRepairLog::getNum, sceneProV3.getNum())
+                    .orderByDesc(SceneRepairLog::getId)
+                    .last("limit 1"));
             if(Objects.nonNull(sceneRepairLog)){
             if(Objects.nonNull(sceneRepairLog)){
                 if(sceneRepairLog.getState() == 0){
                 if(sceneRepairLog.getState() == 0){
                     redisLockUtil.unlockLua(lockKey);
                     redisLockUtil.unlockLua(lockKey);
@@ -122,6 +127,9 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
                 }
                 }
             }
             }
 
 
+            //写入升级日志
+            this.upgradeLog(null, sceneProV3.getNum(), 0, null);
+
             //写入sceneProV3
             //写入sceneProV3
             sceneProV3Service.saveOrUpdate(sceneProV3);
             sceneProV3Service.saveOrUpdate(sceneProV3);
 
 
@@ -165,12 +173,25 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
 
 
         }catch (Exception e){
         }catch (Exception e){
             log.error("场景升级失败", e);
             log.error("场景升级失败", e);
+            this.upgradeLog(sceneRepairLog, sceneProV3.getNum(), 2, ExceptionUtil.stacktraceToString(e, 3000));
             return ResultData.error(ErrorCode.FAILURE_CODE_7021);
             return ResultData.error(ErrorCode.FAILURE_CODE_7021);
         }
         }
 
 
         return ResultData.ok();
         return ResultData.ok();
     }
     }
 
 
+    private void upgradeLog(SceneRepairLog sceneRepairLog, String num, int status, String reason){
+        //写入升级日志
+        if(Objects.isNull(sceneRepairLog)){
+            sceneRepairLog = new SceneRepairLog();
+            sceneRepairLog.setNum(num);
+        }
+        sceneRepairLog.setState(status);
+        sceneRepairLog.setReason(reason);
+        sceneRepairLog.setCreateTime(Calendar.getInstance().getTime());
+        sceneRepairLogService.saveOrUpdate(sceneRepairLog);
+    }
+
     @Override
     @Override
     public ResultData getUpgradeToV4Progress(String num) {
     public ResultData getUpgradeToV4Progress(String num) {