浏览代码

保存热点可视接口

dengsixing 3 年之前
父节点
当前提交
932b6603c2

+ 7 - 7
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -222,7 +222,7 @@ public class SceneEditController extends BaseController {
      **/
     @PostMapping(value = "/tagSave")
     public ResultData tagSave(@RequestBody @Validated SaveHotParamVO param) throws Exception {
-        return sceneProService.saveHot(param);
+        return sceneProService.tagSave(param);
     }
 
     /**
@@ -348,18 +348,18 @@ public class SceneEditController extends BaseController {
      * @param param
      * @return com.fdkankan.common.response.ResultData
      **/
-    @PostMapping(value = "/saveLinkPano")
-    public ResultData saveLinkPano(@RequestBody @Validated SaveRoamParamVO param) throws Exception {
-        return sceneProService.saveLinkPano(param);
+    @PostMapping(value = "/saveRoam")
+    public ResultData saveRoam(@RequestBody @Validated SaveRoamParamVO param) throws Exception {
+        return sceneProService.saveRoam(param);
     }
 
     /**
      * 保存热点可见性的数据
      * @return
      */
-    @PostMapping(value = "/saveHotVisible")
-    public ResultData saveHotVisible(@RequestBody SceneEditParamVO param) throws Exception {
-        return sceneProService.saveHotVisible(param);
+    @PostMapping(value = "/saveTagsVisible")
+    public ResultData saveTagsVisible(@RequestBody @Validated SaveTagsVisibleParamVO param) throws Exception {
+        return sceneProService.saveTagsVisible(param);
     }
 
 

+ 2 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoService.java

@@ -26,4 +26,6 @@ public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 
     ResultData saveUpload(SaveUploadParamVO param) throws Exception;
 
+    void upgradeVersionById(Long id);
+
 }

+ 4 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProService.java

@@ -7,6 +7,7 @@ import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProPO;
 import com.fdkankan.scene.vo.SaveHotParamVO;
 import com.fdkankan.scene.vo.SaveRoamParamVO;
+import com.fdkankan.scene.vo.SaveTagsVisibleParamVO;
 import com.fdkankan.scene.vo.SceneEditParamVO;
 import com.fdkankan.scene.vo.SceneParamVO;
 import com.fdkankan.scene.vo.SceneVO;
@@ -83,7 +84,7 @@ public interface ISceneProService extends IService<ScenePro> {
 
     ResultData uploadHotMedia(FileParamVO param, MultipartFile file) throws Exception;
 
-    ResultData saveHot(SaveHotParamVO param) throws Exception;
+    ResultData tagSave(SaveHotParamVO param) throws Exception;
 
     ResultData saveShopHot(SceneEditParamVO base) throws Exception;
 
@@ -93,9 +94,9 @@ public interface ISceneProService extends IService<ScenePro> {
 
     ResultData saveScreencapData(SceneEditParamVO base) throws Exception;
 
-    ResultData saveLinkPano(SaveRoamParamVO param) throws Exception;
+    ResultData saveRoam(SaveRoamParamVO param) throws Exception;
 
-    ResultData saveHotVisible(SceneEditParamVO base) throws Exception;
+    ResultData saveTagsVisible(SaveTagsVisibleParamVO param) throws Exception;
 
     ResultData uploadShareLogo(SceneEditParamVO base, MultipartFile file) throws Exception;
 

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

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
@@ -276,4 +277,11 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         return ResultData.ok();
     }
 
+    @Override
+    public void upgradeVersionById(Long id) {
+        this.update(new LambdaUpdateWrapper<SceneEditInfo>()
+            .setSql("version=version+" + 1)
+            .eq(SceneEditInfo::getId, id));
+    }
+
 }

+ 36 - 48
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java

@@ -2184,7 +2184,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
     @Override
 //    @SystemServiceLog(description = "保存场景热点")
-    public ResultData saveHot(SaveHotParamVO param) throws Exception {
+    public ResultData tagSave(SaveHotParamVO param) throws Exception {
 
         ScenePro scenePro = this.findBySceneNum(param.getNum());
         if (scenePro == null)
@@ -2638,67 +2638,57 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
     @Override
 //    @SystemServiceLog(description = "保存热点可见性的数据")
-    public ResultData saveHotVisible(SceneEditParamVO base) throws Exception {
-        if(StrUtil.isEmpty(base.getData()) || StrUtil.isEmpty(base.getNum())){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
-        }
+    public ResultData saveTagsVisible(SaveTagsVisibleParamVO param) throws Exception {
 
-        ScenePro scenePro = findBySceneNum(base.getNum());
+        ScenePro scenePro = findBySceneNum(param.getNum());
         if (scenePro == null ) {
             return ResultData.error(ErrorCode.FAILURE_CODE_5005);
         }
+        JSONArray visiblePanos = JSONArray.parseArray(param.getData());
 
-        JSONArray visiblePanos = JSONArray.parseArray(base.getData());
-
-        StringBuffer dataBuf = new StringBuffer()
-                .append("data").append(File.separator)
-                .append("data").append(scenePro.getNum())
-                .append(File.separator);
-        StringBuffer imagesBuf = new StringBuffer()
-                .append("images").append(File.separator)
-                .append("images").append(scenePro.getNum())
-                .append(File.separator);
-
-        StringBuffer imagesBuffer = new StringBuffer(ConstantFilePath.SCENE_PATH).append(imagesBuf.toString());
-        StringBuffer dataBuffer = new StringBuffer(ConstantFilePath.SCENE_PATH).append(dataBuf.toString());
+        //从缓存中获取热点数据,如果为空,抛出异常
+        String key = String.format(RedisKey.SCENE_HOT_DATA, param.getNum());
+        Map<String, String> map = redisUtil.hmget(key);
+        List<Entry<String, String>> allTags = map.entrySet().stream().filter(item -> {
+            if (StrUtil.isBlank(item.getValue())) {
+                return false;
+            }
+            return true;
+        }).collect(Collectors.toList());
 
-        File file = new File(dataBuffer.toString() + "hot.json");
-        if (!file.exists()) {
-            throw new BusinessException(ErrorCode.FAILURE_CODE_3018);
+        if (CollUtil.isEmpty(allTags)) {
+            throw new BusinessException(ErrorCode.FAILURE_CODE_7005);
         }
 
-        String str = FileUtils.readFile(dataBuffer.toString() + "hot.json");
-        JSONArray hots = JSONArray.parseArray(str);
-        for (int i = 0; i < hots.size(); ++i) {
-            JSONObject hot = hots.getJSONObject(i);
-            for (int j = 0; j < visiblePanos.size(); ++j) {
-                if (hot.getString("sid").equals(((JSONObject) visiblePanos.get(j)).getString("sid"))) {
-                    hot.put("visiblePanos", ((JSONObject) visiblePanos.get(j)).getJSONArray("value"));
+        allTags.stream().forEach(entry->{
+            JSONObject hot = JSON.parseObject(entry.getValue());
+            visiblePanos.stream().forEach(item->{
+                if (hot.getString("sid").equals(((JSONObject) item).getString("sid"))) {
+                    hot.put("visiblePanos", ((JSONObject) item).getJSONArray("value"));
+                    entry.setValue(hot.toJSONString());
                 }
-            }
-        }
-        String strsceneInfos = FileUtils.readFile(dataBuffer.toString() + "scene.json");
-        JSONObject scenejson = new JSONObject();
-        if(strsceneInfos!=null){
-            scenejson = JSONObject.parseObject(strsceneInfos);
-        }
+            });
+        });
 
-        scenejson.put("version", scenejson.getIntValue("version") + 1);
-        FileUtils.writeFile(dataBuffer.toString() + "scene.json", scenejson.toString());
+        //更新版本号
+        SceneEditInfo editInfo = sceneEditInfoService.getBySceneProId(scenePro.getId());
+        sceneEditInfoService.upgradeVersionById(editInfo.getId());
 
-        SceneProEdit sceneProEdit = sceneProEditService.findByProId(scenePro.getId());
-        sceneProEdit.setVersion(sceneProEdit.getVersion() + 1);
-        sceneProEdit.setUpdateTime(Calendar.getInstance().getTime());
-        sceneProEditService.updateById(sceneProEdit);
+        //放入缓存
+        Map<String, String> finalMap = new HashMap<>();
+        allTags.stream().forEach(entry->{
+            finalMap.put(entry.getKey(), entry.getValue());
+        });
+
+        //从新放入缓存
+        redisUtil.hmset(key, finalMap);
 
-        FileUtils.deleteFile(dataBuffer.toString() + "hot.json");
-        FileUtils.writeFile(dataBuffer.toString() + "hot.json", hots.toString());
         return ResultData.ok();
     }
 
     @Override
 //    @SystemServiceLog(description = "漫游可行")
-    public ResultData saveLinkPano(SaveRoamParamVO param) throws Exception {
+    public ResultData saveRoam(SaveRoamParamVO param) throws Exception {
 
         ScenePro scenePro = this.findBySceneNum(param.getNum());
         if (scenePro == null ) {
@@ -2757,9 +2747,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             editInfo.setSceneProId(scenePro.getId());
             sceneEditInfoService.save(editInfo);
         }else{
-            sceneEditInfoService.update(new LambdaUpdateWrapper<SceneEditInfo>()
-                        .setSql("version=version+" + 1)
-                        .eq(SceneEditInfo::getId, editInfo.getId()));
+            sceneEditInfoService.upgradeVersionById(editInfo.getId());
         }
 
 

+ 23 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SaveTagsVisibleParamVO.java

@@ -0,0 +1,23 @@
+package com.fdkankan.scene.vo;
+
+import javax.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * <p>
+ * 保存热点可视入参
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/2/10
+ **/
+@Data
+public class SaveTagsVisibleParamVO {
+
+    @NotBlank(message = "场景码不能为空")
+    private String num;
+
+    @NotBlank(message = "热点可视数据不能为空")
+    private String data;
+
+}