Переглянути джерело

增加查询协作场景逻辑

dsx 2 роки тому
батько
коміт
937777919d

+ 4 - 19
src/main/java/com/fdkankan/openApi/controller/www/SceneController.java

@@ -74,14 +74,7 @@ public class SceneController extends BaseController {
     @RedisLimit(limitCount = 1, period = 1)
     @ValidateApi(method = "scene:getScenePointInfo")
     public ResultData getScenePointInfo(@RequestBody @Validated BaseSceneParamVo param) {
-        ScenePlus scenePlus = scenePlusService.getByNumAndUserId(this.getUserId(), param.getSceneCode());
-        if(ObjectUtils.isEmpty(scenePlus)){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-        }
-        if (scenePlus.getSceneSource() == 4) {
-            return ResultData.ok(sceneService.getPointInfo(param.getSceneCode()));
-        }
-        return ResultData.ok(scenePlusService.getPointInfo(param.getSceneCode()));
+        return sceneService.getScenePointInfo(this.getUserId(), param);
     }
 
     /**
@@ -93,11 +86,7 @@ public class SceneController extends BaseController {
     @RedisLimit(limitCount = 1, period = 1)
     @ValidateApi(method = "scene:getSceneObj")
     public ResultData getSceneObjFiles(@RequestBody @Validated BaseSceneParamVo param) {
-        ScenePlus scenePlus = scenePlusService.getByNumAndUserId(this.getUserId(), param.getSceneCode());
-        if(ObjectUtils.isEmpty(scenePlus)){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-        }
-        return ResultData.ok(scenePlusService.getSceneObjFilePaths(param.getSceneCode()));
+        return sceneService.getSceneObjFiles(this.getUserId(), param);
     }
 
     /**
@@ -108,12 +97,8 @@ public class SceneController extends BaseController {
     @PostMapping("/getScenePanorama")
     @RedisLimit(limitCount = 1, period = 1)
     @ValidateApi(method = "scene:getScenePanorama")
-    public ResultData getScenePanoramicImageFiles(@RequestBody @Validated BaseSceneParamVo param) {
-        ScenePlus scenePlus = scenePlusService.getByNumAndUserId(this.getUserId(), param.getSceneCode());
-        if (ObjectUtils.isEmpty(scenePlus)) {
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-        }
-        return ResultData.ok(scenePlusService.getScenePanoramicImageFiles(param.getSceneCode()));
+    public ResultData getScenePanorama(@RequestBody @Validated BaseSceneParamVo param) {
+        return sceneService.getScenePanorama(this.getUserId(), param);
     }
 
     /**

+ 10 - 0
src/main/java/com/fdkankan/openApi/service/laser/SceneService.java

@@ -2,6 +2,10 @@ package com.fdkankan.openApi.service.laser;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.openApi.entity.laser.SceneEntity;
+import com.fdkankan.openApi.vo.BaseSceneParamVo;
+import com.fdkankan.web.response.ResultData;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * Created by Xiewj on 2021/7/28 0028 9:10
@@ -10,4 +14,10 @@ public interface SceneService extends IService<SceneEntity> {
     SceneEntity findBySceneCode(String sceneCode);
 
     Object getPointInfo(String sceneCode);
+
+    ResultData getScenePointInfo(Long userId, BaseSceneParamVo param);
+
+    ResultData getSceneObjFiles(Long userId, BaseSceneParamVo param);
+
+    ResultData getScenePanorama(Long userId, BaseSceneParamVo param);
 }

+ 50 - 2
src/main/java/com/fdkankan/openApi/service/laser/impl/SceneServiceImpl.java

@@ -3,13 +3,20 @@ package com.fdkankan.openApi.service.laser.impl;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.openApi.entity.laser.ControlPointEntity;
 import com.fdkankan.openApi.entity.laser.FilterEntity;
 import com.fdkankan.openApi.entity.laser.SceneEntity;
+import com.fdkankan.openApi.entity.www.ScenePlus;
 import com.fdkankan.openApi.mapper.laser.SceneMapper;
 import com.fdkankan.openApi.service.laser.ControlPointService;
 import com.fdkankan.openApi.service.laser.FilterService;
 import com.fdkankan.openApi.service.laser.SceneService;
+import com.fdkankan.openApi.service.www.ISceneCooperationService;
+import com.fdkankan.openApi.service.www.IScenePlusService;
+import com.fdkankan.openApi.vo.BaseSceneParamVo;
+import com.fdkankan.web.response.ResultData;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,6 +25,7 @@ import org.springframework.util.ObjectUtils;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -31,12 +39,14 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, SceneEntity> impl
 
     @Autowired
     private SceneService sceneService;
-
     @Autowired
     private FilterService filterService;
-
     @Autowired
     private ControlPointService controlPointService;
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private ISceneCooperationService sceneCooperationService;
 
 
     @Override
@@ -91,5 +101,43 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, SceneEntity> impl
         return pointInfo;
     }
 
+    @Override
+    public ResultData getScenePointInfo(Long userId, BaseSceneParamVo param) {
+        ScenePlus scenePlus = scenePlusService.getByNumAndUserId(userId, param.getSceneCode());
+        if(Objects.isNull(scenePlus)){
+            scenePlus = sceneCooperationService.getCooperaSceneByUserIdAndNum(userId, param.getSceneCode());
+            if(Objects.isNull(scenePlus)){
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            }
+        }
+        if (scenePlus.getSceneSource() == 4) {
+            return ResultData.ok(sceneService.getPointInfo(param.getSceneCode()));
+        }
+        return ResultData.ok(scenePlusService.getPointInfo(param.getSceneCode()));
+    }
+
+    @Override
+    public ResultData getSceneObjFiles(Long userId, BaseSceneParamVo param) {
+        ScenePlus scenePlus = scenePlusService.getByNumAndUserId(userId, param.getSceneCode());
+        if(Objects.isNull(scenePlus)){
+            scenePlus = sceneCooperationService.getCooperaSceneByUserIdAndNum(userId, param.getSceneCode());
+            if(Objects.isNull(scenePlus)){
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            }
+        }
+        return ResultData.ok(scenePlusService.getSceneObjFilePaths(param.getSceneCode()));
+    }
+
+    @Override
+    public ResultData getScenePanorama(Long userId, BaseSceneParamVo param) {
+        ScenePlus scenePlus = scenePlusService.getByNumAndUserId(userId, param.getSceneCode());
+        if (Objects.isNull(scenePlus)) {
+            scenePlus = sceneCooperationService.getCooperaSceneByUserIdAndNum(userId, param.getSceneCode());
+            if(Objects.isNull(scenePlus)){
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            }
+        }
+        return ResultData.ok(scenePlusService.getScenePanoramicImageFiles(param.getSceneCode()));
+    }
 }
 

+ 3 - 0
src/main/java/com/fdkankan/openApi/service/www/ISceneCooperationService.java

@@ -2,6 +2,7 @@ package com.fdkankan.openApi.service.www;
 
 import com.fdkankan.openApi.entity.www.SceneCooperation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.openApi.entity.www.ScenePlus;
 
 import java.util.List;
 
@@ -17,4 +18,6 @@ public interface ISceneCooperationService extends IService<SceneCooperation> {
 
     List<String> getNumByUserIds(List<Long> userIds);
 
+    ScenePlus getCooperaSceneByUserIdAndNum(Long userID, String num);
+
 }

+ 17 - 0
src/main/java/com/fdkankan/openApi/service/www/impl/SceneCooperationServiceImpl.java

@@ -3,13 +3,17 @@ package com.fdkankan.openApi.service.www.impl;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.openApi.entity.www.SceneCooperation;
+import com.fdkankan.openApi.entity.www.ScenePlus;
 import com.fdkankan.openApi.mapper.www.ISceneCooperationMapper;
 import com.fdkankan.openApi.service.www.ISceneCooperationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.openApi.service.www.IScenePlusService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -25,6 +29,9 @@ import java.util.stream.Collectors;
 @Service
 public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMapper, SceneCooperation> implements ISceneCooperationService {
 
+    @Autowired
+    IScenePlusService scenePlusService;
+
     @Override
     public List<String> getNumByUserIds(List<Long> userIds) {
         LambdaQueryWrapper<SceneCooperation> wrapper = new LambdaQueryWrapper<>();
@@ -33,4 +40,14 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
         return new ArrayList<>(collect);
     }
 
+    @Override
+    public ScenePlus getCooperaSceneByUserIdAndNum(Long userID, String num) {
+        SceneCooperation sceneCooperation =
+                this.getOne(new LambdaQueryWrapper<SceneCooperation>()
+                        .eq(SceneCooperation::getUserId, userID).eq(SceneCooperation::getSceneNum, num));
+        if(Objects.isNull(sceneCooperation)){
+            return null;
+        }
+        return scenePlusService.getByNum(num);
+    }
 }

+ 5 - 2
src/main/java/com/fdkankan/openApi/service/www/impl/ScenePlusServiceImpl.java

@@ -422,8 +422,11 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     @Override
     public ResultData getSceneViewUserFile(String sceneCode, Long userId) {
         ScenePlus scenePlus = this.getByNumAndUserId(userId, sceneCode);
-        if (ObjectUtils.isEmpty(scenePlus)) {
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        if (Objects.isNull(scenePlus)) {
+            scenePlus = sceneCooperationService.getCooperaSceneByUserIdAndNum(userId, sceneCode);
+            if(Objects.isNull(scenePlus)){
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            }
         }
         if(Objects.isNull(scenePlus.getCameraId())){
             throw new BusinessException(ErrorCode.FAILURE_CODE_7010);