|
|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|