dengsixing il y a 2 semaines
Parent
commit
381f306db4

+ 105 - 1
src/main/java/com/fdkankan/contro/mq/listener/UploadSceneListener.java

@@ -1,9 +1,12 @@
 package com.fdkankan.contro.mq.listener;
 
 import cn.hutool.core.codec.Base64;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.CharsetUtil;
+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.update.LambdaUpdateWrapper;
 import com.fdkankan.common.constant.ErrorCode;
@@ -12,6 +15,7 @@ import com.fdkankan.common.constant.SceneStatus;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.CmdUtils;
 import com.fdkankan.contro.bean.SceneJsonBean;
+import com.fdkankan.contro.bean.TagBean;
 import com.fdkankan.contro.constant.UploadSceneSourceType;
 import com.fdkankan.contro.constant.ZipConstant;
 import com.fdkankan.contro.entity.*;
@@ -37,7 +41,8 @@ import org.springframework.stereotype.Component;
 import javax.annotation.Resource;
 import java.io.File;
 import java.nio.charset.StandardCharsets;
-import java.util.Date;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Component
@@ -231,6 +236,105 @@ public class UploadSceneListener {
         sceneEditControls.setEditInfoId(sceneEditInfo.getId());
         sceneEditControls.setCreateTime(null);
         sceneEditControlsService.save(sceneEditControls);
+
+        //马赛克
+        String mosaicStr = fYunFileService.getFileContent(String.format(UploadFilePath.USER_VIEW_PATH,num) + "mosaic.json");
+        JSONArray mosaicArr = JSON.parseArray(mosaicStr);
+        if(CollUtil.isNotEmpty(mosaicArr)){
+            Map<String, String> map = mosaicArr.stream().collect(Collectors.toMap(v->((JSONObject)v).getString("sid"), v->JSON.toJSONString(v)));
+            if(CollUtil.isNotEmpty(map)){
+                redisUtil.hmset(String.format(RedisKey.SCENE_MOSAIC_DATA, num), map);
+            }
+        }
+
+        //热点
+        String hotJsonStr = fYunFileService.getFileContent(String.format(UploadFilePath.USER_VIEW_PATH, num) + "hot.json");
+        JSONArray hotJsonArr = JSON.parseArray(hotJsonStr);
+        if(CollUtil.isNotEmpty(hotJsonArr)){
+            Map<String, String> allTagsMap = hotJsonArr.stream().collect(Collectors.toMap(v->((JSONObject)v).getString("sid"), v->JSON.toJSONString(v)));
+            if(CollUtil.isNotEmpty(allTagsMap)){
+                redisUtil.hmset(String.format(RedisKey.SCENE_HOT_DATA, num), allTagsMap);
+
+                //热点图标
+                List<JSONObject> tags = allTagsMap.entrySet().stream().map(entry -> JSON.parseObject(entry.getValue())).collect(Collectors.toList());
+                Set<String> icons = tags.stream()
+                        .filter(v-> StrUtil.isNotEmpty(v.getString("icon")) && !v.getString("icon").contains("svg"))
+                        .map(v-> v.getString("icon"))
+                        .collect(Collectors.toSet());
+                if(!icons.isEmpty()){
+                    redisUtil.sSet(String.format(RedisKey.SCENE_HOT_ICONS, num), icons);
+                }
+            }
+        }
+
+        //场景关联
+        String linkStr = fYunFileService.getFileContent(String.format(UploadFilePath.USER_VIEW_PATH,num) + "links.json");
+        JSONArray LinkArr = JSON.parseArray(linkStr);
+        if(CollUtil.isNotEmpty(LinkArr)){
+            Map<String, String> map = LinkArr.stream().collect(Collectors.toMap(v->((JSONObject)v).getString("sid"), v->JSON.toJSONString(v)));
+            if(CollUtil.isNotEmpty(map)){
+                redisUtil.hmset(String.format(RedisKey.SCENE_LINKPAN_DATA, num), map);
+            }
+
+            //{"createTime":1768997242023,"type":"enter","url":"enter-style-InWWW972225.jpg","sid":"InWWW972225"}
+        }
+
+        //滤镜
+        String fileContent = fYunFileService.getFileContent(String.format(UploadFilePath.USER_VIEW_PATH, num) + "filter.json");
+        List<JSONObject> collect = JSON.parseObject(fileContent, ArrayList.class);
+        if(CollUtil.isNotEmpty(collect)){
+            List<String> list = collect.stream().map(v->JSON.toJSONString(v)).collect(Collectors.toList());
+            if(!list.isEmpty()){
+                redisUtil.lLeftPushAll(String.format(RedisKey.SCENE_filter_DATA, num), list);
+            }
+        }
+
+        //指示牌
+        String billboardsStr = fYunFileService.getFileContent(String.format(UploadFilePath.USER_VIEW_PATH, num) + "billboards.json");
+        JSONArray billboards = JSON.parseArray(billboardsStr);
+        if(CollUtil.isNotEmpty(billboards)){
+            Map<String, String> allTagsMap = billboards.stream().collect(Collectors.toMap(v->((JSONObject)v).getString("sid"), v->JSON.toJSONString(v)));
+            if(!allTagsMap.isEmpty()){
+                redisUtil.hmset(String.format(RedisKey.SCENE_BILLBOARDS, num), allTagsMap);
+            }
+            List<JSONObject> billboardList = allTagsMap.values().stream().map(str -> JSON.parseObject(str)).collect(Collectors.toList());
+
+            //指示牌图标
+            List<String> sytlelist = billboardList.stream()
+                    .filter(v->StrUtil.isNotEmpty(v.getString("icon")) && !v.getString("icon").contains("style-"))
+                    .map(v-> {
+                        String url = v.getString("icon");
+                        String sid = FileUtil.getPrefix(url);
+                        JSONObject iconObj = new JSONObject();
+                        iconObj.put("url", url);
+                        iconObj.put("sid", sid);
+                        iconObj.put("createTime", Calendar.getInstance().getTimeInMillis());
+                        return iconObj.toJSONString();
+                    }).collect(Collectors.toList());
+            if(CollUtil.isNotEmpty(sytlelist)){
+                redisUtil.sSet(String.format(RedisKey.SCENE_BILLBOARDS_STYLES, num), new HashSet<>(sytlelist));
+            }
+        }
+
+        //模型裁剪
+        String cutModelStr = fYunFileService.getFileContent(String.format(UploadFilePath.USER_VIEW_PATH, num) + "cutModel.json");
+        if(StrUtil.isNotEmpty(cutModelStr)){
+            JSONArray cutModels = JSON.parseArray(cutModelStr);
+            Map<String, String> map = cutModels.stream().collect(Collectors.toMap(v->((JSONObject)v).getString("sid"), v->JSON.toJSONString(v)));
+            if(!map.isEmpty()){
+                redisUtil.hmset(String.format(RedisKey.SCENE_CUT_MODEL, num), map);
+            }
+        }
+
+        //空间绘制
+        String sceneDrawFileContent = fYunFileService.getFileContent(String.format(UploadFilePath.USER_VIEW_PATH, num) + "sceneDraw.json");
+        if(StrUtil.isNotEmpty(sceneDrawFileContent)){
+            JSONArray objects = JSON.parseArray(sceneDrawFileContent);
+            Map<String, String> map = objects.stream().collect(Collectors.toMap(v->((JSONObject)v).getString("sid"), v->JSON.toJSONString(v)));
+            if(!map.isEmpty()){
+                redisUtil.hmset(String.format(RedisKey.SCENE_DRAW, num), map);
+            }
+        }
     }
 
 }