dengsixing 3 år sedan
förälder
incheckning
d274891680

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

@@ -1027,10 +1027,36 @@ public class SceneEditController extends BaseController {
      */
     @CheckCooperationPermit
     @GetMapping(value = "/mosaics/list")
-    public ResultData getMosaicList(@RequestBody @Validated BaseDataParamVO param) throws Exception{
-        return sceneEditInfoService.addMosaics(param);
+    public ResultData getMosaicList(@RequestBody @Validated BaseSceneParamVO param) throws Exception{
+        return sceneEditInfoService.getMosaicList(param);
+    }
+
+    /**
+     * 保存水印
+     * @param param
+     * @return
+     * @throws Exception
+     */
+    @CheckCooperationPermit
+    @GetMapping(value = "/waterMark/add")
+    public ResultData addWaterMark(@RequestBody @Validated BaseFileParamVO param) throws Exception{
+        return sceneEditInfoService.addWaterMark(param);
     }
 
+    /**
+     * 删除水印
+     * @param param
+     * @return
+     * @throws Exception
+     */
+    @CheckCooperationPermit
+    @GetMapping(value = "/waterMark/delete")
+    public ResultData deleteWaterMark(@RequestBody @Validated BaseFileParamVO param) throws Exception{
+        return sceneEditInfoService.deleteWaterMark(param);
+    }
+
+
+
 
 
 

+ 9 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfoExt.java

@@ -56,10 +56,16 @@ public class SceneEditInfoExt {
     private Integer tours;
 
     /**
-     * mosaics数据
+     * 是否有马赛克
      */
-    @TableField("mosaics")
-    private String mosaics;
+    @TableField("mosaic")
+    private Integer mosaic;
+
+    /**
+     * 水印文件名
+     */
+    @TableField("water_mark")
+    private String waterMark;
 
     /**
      * 是否有场景关联(0-否,1-是)

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

@@ -82,6 +82,12 @@ public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 
     ResultData deleteMosaics(DeleteMosaicParamVO param) throws Exception;
 
+    ResultData getMosaicList(BaseSceneParamVO param) throws Exception;
+
+    ResultData addWaterMark(BaseFileParamVO param) throws Exception;
+
+    ResultData deleteWaterMark(BaseFileParamVO param) throws Exception;
+
 
 
 

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

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