dengsixing 2 месяцев назад
Родитель
Сommit
2098e9d689

+ 40 - 4
src/main/java/com/fdkankan/scene/Interceptor/CheckPermitAspect.java

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.Interceptor;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.fdkankan.common.constant.CommonStatus;
 import com.fdkankan.common.constant.ErrorCode;
@@ -16,7 +17,10 @@ import com.fdkankan.web.user.SSOLoginHelper;
 import com.fdkankan.web.user.SSOUser;
 import com.fdkankan.web.util.WebUtil;
 import java.io.IOException;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
 import lombok.extern.log4j.Log4j2;
 import org.aspectj.lang.JoinPoint;
@@ -24,6 +28,7 @@ import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.request.RequestContextHolder;
@@ -35,6 +40,31 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 @Order(101)
 public class CheckPermitAspect {
 
+	private static Set<String> demoAllowApis = new HashSet<>();
+
+	static {
+		demoAllowApis.add("/tag/list");
+		demoAllowApis.add("/linkPan/list");
+		demoAllowApis.add("/getInfo");
+		demoAllowApis.add("/downloadPanorama");
+		demoAllowApis.add("/downloadBallScreenVideo");
+		demoAllowApis.add("/getAuth");
+		demoAllowApis.add("/tour/video/download");
+		demoAllowApis.add("/mosaics/list");
+		demoAllowApis.add("/filter/list");
+		demoAllowApis.add("/surveillance/list");
+		demoAllowApis.add("/billboards/list");
+		demoAllowApis.add("/cutModel/list");
+		demoAllowApis.add("/point/getLatAndLon");
+		demoAllowApis.add("/box4/getInfos");
+		demoAllowApis.add("/dynamicPanel/list");
+		demoAllowApis.add("/sceneDraw/list");
+	}
+
+
+	@Value("#{'${demo.scene.num:}'.split(',')}")
+	private List<String> demoSceneNums;
+
 	@Autowired
 	private SSOLoginHelper ssoLoginHelper;
 	@Autowired
@@ -97,15 +127,21 @@ public class CheckPermitAspect {
 			throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
 		}
 
-        if(scenePlus.getUserId().equals(user.getId())){
-            return;
-        }
+		if(CollUtil.isNotEmpty(demoSceneNums) && demoSceneNums.contains(num)){//这是一个demo场景,允许无条件打开编辑页,但是不允许提交数据
+			String requestURI = request.getRequestURI();
+			log.info("-----------requestURI:{}", requestURI);
+		}
+		if(scenePlus.getUserId().equals(user.getId())){
+			return;
+		}
 
-        //如果不是用户自己的场景,判断是否有协作权限
+		//如果不是用户自己的场景,判断是否有协作权限
 		SceneCooperation sceneCooperation = sceneCooperationService.getByNumAndUserId(num, user.getId());
 		if(Objects.isNull(sceneCooperation)){
 			throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
 		}
+
+
 	}
 
 }

+ 14 - 0
src/main/java/com/fdkankan/scene/Interceptor/TokenInterceptor.java

@@ -1,6 +1,7 @@
 package com.fdkankan.scene.Interceptor;
 
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.http.ContentType;
 import com.alibaba.fastjson.JSON;
 import com.fdkankan.common.constant.ErrorCode;
@@ -9,12 +10,16 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.web.response.ResultData;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.fdkankan.web.util.WebUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpHeaders;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.HandlerInterceptor;
 
@@ -22,11 +27,20 @@ import org.springframework.web.servlet.HandlerInterceptor;
 @Slf4j
 public class TokenInterceptor implements HandlerInterceptor {
 
+	@Value("#{'${demo.scene.num:}'.split(',')}")
+	private List<String> demoSceneNums;
+
 	@Autowired
 	private RedisUtil redisUtil;
 
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
+		String num = WebUtil.getParameter("num", request);
+		if(CollUtil.isNotEmpty(demoSceneNums) && demoSceneNums.contains(num)){
+			return true;
+		}
+
 		response.setHeader(HttpHeaders.CONTENT_TYPE, ContentType.JSON.getValue());
 		response.setCharacterEncoding(StandardCharsets.UTF_8.name());
 		String token = request.getHeader("token");

+ 5 - 0
src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -161,6 +161,7 @@ public class SceneEditController extends BaseController {
      * @param num
      * @return com.fdkankan.web.response.ResultData
      **/
+    @CheckPermit
     @PostMapping(value = "/tag/list")
     public ResultData listTags(@RequestParam(value = "num") String num) throws Exception {
         return sceneProService.listTags(num);
@@ -405,6 +406,7 @@ public class SceneEditController extends BaseController {
      * @param param
      * @return com.fdkankan.scene.vo.SceneInfoVO
      **/
+    @CheckPermit
     @GetMapping(value = "/getInfo")
     public SceneInfoVO getInfo(@Validated SceneInfoParamVO param) throws Exception{
         param.setReqType(SceneInfoReqType.EDIT.code());
@@ -682,11 +684,13 @@ public class SceneEditController extends BaseController {
         return sceneEditService.deleteTour(param);
     }
 
+    @CheckPermit
     @PostMapping(value = "/tour/video/upload")
     public ResultData uploadTourVideo(@RequestParam("num") String num, @RequestParam("file") MultipartFile file) throws Exception {
         return downloadTourVideoService.uploadTourVideo(num, file);
     }
 
+    @CheckPermit
     @PostMapping(value = "/tour/video/download")
     public ResultData downloadTourVideo(@RequestParam("num") String num) throws Exception {
         return downloadTourVideoService.downloadTourVideo(num);
@@ -872,6 +876,7 @@ public class SceneEditController extends BaseController {
      * 上传二维码和分享的logo
      * @return
      */
+    @CheckPermit
     @PostMapping(value = "/uploadShareLogo")
     public ResultData uploadShareLogo(@RequestParam("num") String num, @RequestParam("file") MultipartFile file) throws Exception {
         return scenePlusService.uploadShareLogo(num, file);