lyhzzz 8 months ago
parent
commit
2bec174ce0

+ 0 - 2
src/main/java/com/fdkankan/fusion/common/ResultCode.java

@@ -43,8 +43,6 @@ public enum ResultCode {
     DEPT_EDIT_ERROR(6010,"修改失败,部门上级不能是自己或下级"),
     DEPT_EDIT_ERROR(6010,"修改失败,部门上级不能是自己或下级"),
     DEPT_ADD_ERROR(6011,"部门上限为四级"),
     DEPT_ADD_ERROR(6011,"部门上限为四级"),
     NOT_PER(6012,"无权操作"),
     NOT_PER(6012,"无权操作"),
-
-
     UPLOAD_ERROR(7001,"文件上传失败"),
     UPLOAD_ERROR(7001,"文件上传失败"),
     UPLOAD_FILE_NO_EXIST(7002,"上传文件不存在"),
     UPLOAD_FILE_NO_EXIST(7002,"上传文件不存在"),
     UPLOAD_FILE_TO_LONG(7003,"文件上传过大"),
     UPLOAD_FILE_TO_LONG(7003,"文件上传过大"),

+ 11 - 3
src/main/java/com/fdkankan/fusion/config/SaTokenConfigure.java

@@ -48,10 +48,12 @@ public class SaTokenConfigure {
                 .addInclude("/**").addExclude("/**/test/**","/**/inner/**","/**/notAuth/**","/**/systemSetting/**","/**/downMD5/**","/**/downDocx/**","/**ws/**")
                 .addInclude("/**").addExclude("/**/test/**","/**/inner/**","/**/notAuth/**","/**/systemSetting/**","/**/downMD5/**","/**/downDocx/**","/**ws/**")
                 // 认证函数: 每次请求执行
                 // 认证函数: 每次请求执行
                 .setAuth(obj -> {
                 .setAuth(obj -> {
-                    String share = SaHolder.getRequest().getHeader("share");
-                    if(StringUtils.isNotBlank(share) && "1".equals(share)){ //分享请求头
-                        return;
+                    String pageType = SaHolder.getRequest().getHeader("page-type");
+                    String caseId = SaHolder.getRequest().getHeader("caseId");
+                    if(StringUtils.isBlank(pageType)){
+                        pageType = "view";
                     }
                     }
+                    checkCaseAuth(caseId,pageType);
                     SaRouter.match("/sceneDownLog/list", r -> StpUtil.checkRoleOr("admin-super","admin-system","admin") );
                     SaRouter.match("/sceneDownLog/list", r -> StpUtil.checkRoleOr("admin-super","admin-system","admin") );
 
 
                     // 登录认证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
                     // 登录认证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
@@ -120,6 +122,8 @@ public class SaTokenConfigure {
 
 
     }
     }
 
 
+
+
     private void checkLogin(){
     private void checkLogin(){
         String redisKey = String.format(RedisKeyUtil.loginToken,StpUtil.getTokenValue());
         String redisKey = String.format(RedisKeyUtil.loginToken,StpUtil.getTokenValue());
         if(!redisUtil.hasKey(redisKey)){
         if(!redisUtil.hasKey(redisKey)){
@@ -138,6 +142,10 @@ public class SaTokenConfigure {
         redisUtil.expire(redisKey,2 * 60 * 60);
         redisUtil.expire(redisKey,2 * 60 * 60);
     }
     }
 
 
+    private void checkCaseAuth(String caseId,String pageType) {
+        fdService.checkCaseAuth(caseId,pageType,StpUtil.getTokenValue());
+    }
+
 
 
     //Sa-Token    整合 jwt
     //Sa-Token    整合 jwt
     //Stateless   无状态模式 纯jwt
     //Stateless   无状态模式 纯jwt

+ 8 - 0
src/main/java/com/fdkankan/fusion/entity/CaseEntity.java

@@ -115,6 +115,14 @@ public class CaseEntity implements Serializable {
     @TableField("crime_time")
     @TableField("crime_time")
     private String crimeTime;
     private String crimeTime;
 
 
+    /**
+     * 是否展示场景0否,1是
+     */
+    @TableField("show_scenes")
+    private Integer showScenes;
+
     @TableField(exist = false)
     @TableField(exist = false)
     private String deptName;
     private String deptName;
+
+
 }
 }

+ 32 - 0
src/main/java/com/fdkankan/fusion/httpClient/FdService.java

@@ -21,6 +21,7 @@ import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;
 import com.fdkankan.fusion.httpClient.response.FdkkResponse;
 import com.fdkankan.fusion.httpClient.response.FdkkResponse;
 import com.fdkankan.fusion.response.CameraVo;
 import com.fdkankan.fusion.response.CameraVo;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.redis.util.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -32,6 +33,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 @Service
 @Service
+@Slf4j
 public class FdService {
 public class FdService {
 
 
     @Autowired
     @Autowired
@@ -136,4 +138,34 @@ public class FdService {
             throw new BusinessException(code,message);
             throw new BusinessException(code,message);
         }
         }
     }
     }
+
+    public void checkCaseAuth(String caseId,String pageType,String token) {
+        if(StringUtils.isBlank(pageType) || StringUtils.isBlank(caseId)|| StringUtils.isBlank(token)){
+            throw new BusinessException(ResultCode.NOT_PERMISSION);
+        }
+        Boolean viewAuth = false;
+        Boolean editAuth = false;
+        try {
+            JSONObject jsonObject = fdKKClient.checkCaseAuth(Integer.valueOf(caseId),token);
+            Integer code = jsonObject.getInteger("code");
+            String message = jsonObject.getString("message");
+            if(code != 0){
+                throw new BusinessException(code,message);
+            }
+            JSONObject data = jsonObject.getJSONObject("data");
+             viewAuth = data.getBoolean("viewAuth");
+             editAuth = data.getBoolean("editAuth");
+        }catch (Exception e){
+            log.info("checkCaseAuth-error:",e);
+        }
+        if(!viewAuth && !editAuth){
+            throw new BusinessException(ResultCode.NOT_PERMISSION);
+        }
+        if(pageType.equals("view") && !viewAuth){
+            throw new BusinessException(ResultCode.NOT_PERMISSION);
+        }
+        if(pageType.equals("edit") && !editAuth){
+            throw new BusinessException(ResultCode.NOT_PERMISSION);
+        }
+    }
 }
 }

+ 3 - 0
src/main/java/com/fdkankan/fusion/httpClient/client/FdKKClient.java

@@ -110,4 +110,7 @@ public interface FdKKClient {
 
 
     @Get("/service/manage/inner/copyScene")
     @Get("/service/manage/inner/copyScene")
     JSONObject copyScene( @Query HashMap<String, Object> param ,@Header("sign") Long sign);
     JSONObject copyScene( @Query HashMap<String, Object> param ,@Header("sign") Long sign);
+
+    @Get("/service/manage/inner/checkCaseAuth/{caseId}")
+    JSONObject checkCaseAuth( @Var("caseId")Integer caseId,@Header("token") String token);
 }
 }