|
@@ -1569,9 +1569,26 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
|
//写入本地文件,作为备份
|
|
|
this.writeMosaic(param.getNum());
|
|
|
|
|
|
+ //更新数据库
|
|
|
+ this.updateMosaicFlag(param.getNum());
|
|
|
+
|
|
|
return ResultData.ok();
|
|
|
}
|
|
|
|
|
|
+ private void updateMosaicFlag(String num){
|
|
|
+ ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
|
|
|
+
|
|
|
+ String key = String.format(RedisKey.SCENE_MOSAIC_DATA, num);
|
|
|
+ boolean flag = redisUtil.hasKey(key);
|
|
|
+ if(flag){
|
|
|
+ sceneEditInfoExt.setMosaic(Integer.valueOf(CommonStatus.YES.code()));
|
|
|
+ }else{
|
|
|
+ sceneEditInfoExt.setMosaic(Integer.valueOf(CommonStatus.NO.code()));
|
|
|
+ }
|
|
|
+ sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
保证马赛克数据安全性,当redis宕机导致热点数据丢失时,可以从文件中读取,恢复到redis
|
|
@@ -2376,24 +2393,65 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
|
//如果redis数据丢失,从本地文件中同步马赛克数据到redis
|
|
|
this.syncMosaicFromFileToRedis(param.getNum());
|
|
|
|
|
|
- Map<String, String> map = new HashMap<>();
|
|
|
- JSONArray jsonArray = JSON.parseArray(param.getData());
|
|
|
- for (Object o : jsonArray) {
|
|
|
- JSONObject mosaic = (JSONObject) o;
|
|
|
- String panoId = mosaic.getString("panoId");
|
|
|
- if(StrUtil.isEmpty(panoId)){
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_5012);
|
|
|
- }
|
|
|
- map.put(panoId, JSON.toJSONString(mosaic));
|
|
|
- }
|
|
|
- redisUtil.hmset(RedisKey.SCENE_MOSAIC_DATA, map);
|
|
|
+ String key = String.format(RedisKey.SCENE_MOSAIC_DATA, param.getNum());
|
|
|
+ redisUtil.hdel(key, param.getPanoIdList().toArray());
|
|
|
|
|
|
//写入本地文件,作为备份
|
|
|
this.writeMosaic(param.getNum());
|
|
|
|
|
|
+ //更新数据库
|
|
|
+ this.updateMosaicFlag(param.getNum());
|
|
|
+
|
|
|
return ResultData.ok();
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public ResultData getMosaicList(BaseSceneParamVO param) throws Exception {
|
|
|
|
|
|
- return null;
|
|
|
+ //如果redis数据丢失,从本地文件中同步马赛克数据到redis
|
|
|
+ this.syncMosaicFromFileToRedis(param.getNum());
|
|
|
+
|
|
|
+ String key = String.format(RedisKey.SCENE_MOSAIC_DATA, param.getNum());
|
|
|
+ Map<String, String> map = redisUtil.hmget(key);
|
|
|
+ if(CollUtil.isEmpty(map)){
|
|
|
+ ResultData.ok(new String[0]);
|
|
|
+ }
|
|
|
+ return ResultData.ok(
|
|
|
+ map.values().stream()
|
|
|
+ .map(mosaic-> JSON.parseObject(mosaic))
|
|
|
+ .collect(Collectors.toList()));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData addWaterMark(BaseFileParamVO param) throws Exception {
|
|
|
+ ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService
|
|
|
+ .getByScenePlusId(scenePlus.getId());
|
|
|
+ sceneEditInfoExt.setWaterMark(param.getFileName());
|
|
|
+ sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
+ return ResultData.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData deleteWaterMark(BaseFileParamVO param) throws Exception {
|
|
|
+ ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+ sceneUploadService.delete(
|
|
|
+ DeleteFileParamVO.builder()
|
|
|
+ .num(param.getNum())
|
|
|
+ .fileNames(Lists.newArrayList(param.getFileName()))
|
|
|
+ .bizType(FileBizType.WATERMARK.code()).build());
|
|
|
+
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
|
|
|
+ sceneEditInfoExt.setWaterMark("");
|
|
|
+ sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
+
|
|
|
+ return ResultData.ok();
|
|
|
}
|
|
|
}
|