Quellcode durchsuchen

发布场景 热点数据文件处理

dengsixing vor 3 Jahren
Ursprung
Commit
728576bb5f

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

@@ -1,8 +1,11 @@
 package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 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.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.*;
@@ -24,8 +27,11 @@ import com.fdkankan.scene.service.ISceneEditControlsService;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.vo.*;
+import com.google.common.collect.Lists;
 import com.google.errorprone.annotations.Var;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -131,37 +137,49 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
             sceneJson.setFloorPlanStatus(CommonStatus.YES.code());
         }
 
-        //标识是否有热点
-        sceneJson.setHots(CommonStatus.NO.code());
-        String hotDataKey = String.format(RedisKey.SCENE_HOT_DATA, param.getNum());
-        Map<String, String> hmget = redisUtil.hmget(hotDataKey);
-        for (String key : hmget.keySet()) {
-            if(StrUtil.isEmpty(hmget.get(key))){
-                continue;
-            }
-            sceneJson.setHots(CommonStatus.YES.code());
-            break;
-        }
+        //处理热点数据,生成hot.json
+        this.publicHotData(sceneNum, sceneJson);
 
         //上传sceneJson文件
-        String sceneJsonPath = String.format(ConstantFilePath.SCENE_VIEW_DATA_DATA_SCENEJSON, sceneNum);
+        String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", sceneNum);
         uploadToOssUtil.upload(JSON.toJSONBytes(sceneJson), sceneJsonPath);
 
+        //sceneJson放入缓存
+        String key = String.format(RedisKey.SCENE_JSON, sceneNum);
+        redisUtil.set(key, JSON.toJSONString(sceneJson));
+
         //删除发布数据中的user目录
-        String publicUserPath = String.format(ConstantFilePath.SCENE_VIEW_DATA_USER, sceneNum);
+        String publicUserPath = String.format(UploadFilePath.USER_VIEW_PATH, sceneNum);
         uploadToOssUtil.deleteFile(publicUserPath);
 
         //复制编辑数据到发布目录
-        String editUserPath = String.format(ConstantFilePath.SCENE_EDIT_DATA_USER, sceneNum);
+        String editUserPath = String.format(UploadFilePath.USER_EDIT_PATH, sceneNum);
         uploadToOssUtil.copyFiles(editUserPath,publicUserPath);
 
-        //sceneJson放入缓存
-        String key = String.format(RedisKey.SCENE_JSON, sceneNum);
-        redisUtil.set(key, JSON.toJSONString(sceneJson));
-
         return ResultData.ok();
     }
 
+    private void publicHotData(String sceneNum, SceneJsonBean sceneJson) throws IOException {
+        sceneJson.setHots(CommonStatus.NO.code());
+        String hotDataKey = String.format(RedisKey.SCENE_HOT_DATA, sceneNum);
+        Map<String, String> hotMap = redisUtil.hmget(hotDataKey);
+        List<String> hotList = Lists.newArrayList();
+        hotMap.entrySet().stream().forEach(entry->{
+            if(StrUtil.isNotEmpty(entry.getValue())){
+                hotList.add(entry.getValue());
+            }
+        });
+        if(CollUtil.isNotEmpty(hotList)){
+            sceneJson.setHots(CommonStatus.YES.code());
+            JSONArray jsonhots = new JSONArray();
+            hotList.stream().forEach(hot->{
+                jsonhots.add(JSONObject.parseObject(hot));
+            });
+            String hotJsonPath = String.format(UploadFilePath.USER_EDIT_PATH, sceneNum) + "hot.json";
+            uploadToOssUtil.upload(jsonhots.toString().getBytes(), hotJsonPath);
+        }
+    }
+
     @Override
     public SceneInfoVO getSceneInfo(@Var SceneInfoParamVO param) {
         SceneInfoReqType sceneInfoReqType = SceneInfoReqType.get(param.getReqType());