Browse Source

getauth接口改造,场景协作菜单返回 增加逻辑:如果协作资源数量与配置资源数量一直,返回空

dengsixing 1 year ago
parent
commit
01a1b3305f

+ 4 - 1
src/main/java/com/fdkankan/scene/entity/SceneResource.java

@@ -12,7 +12,7 @@ import java.util.Date;
  * 场景资源表
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-01-20
  */
 @Getter
@@ -55,6 +55,9 @@ public class SceneResource implements Serializable {
     @TableField("description")
     private String description;
 
+    @TableField("version")
+    private String version;
+
     /**
      * 创建时间
      */

+ 2 - 0
src/main/java/com/fdkankan/scene/service/ISceneResourceService.java

@@ -17,4 +17,6 @@ public interface ISceneResourceService extends IService<SceneResource> {
 
     List<SceneResource> findByCooperationId(Long id);
 
+    long countByVersion(String version);
+
 }

+ 2 - 10
src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java

@@ -226,18 +226,10 @@ public class SceneEditServiceImpl implements ISceneEditService {
 
         //权限控制完后判断若是协作账号,获取协作权限
         SceneCooperation sceneCooperation = sceneCooperationService.getByNum(num);
-        //若数据为空表示可操作全部资源
-        if(sceneCooperation == null || sceneCooperation.getUserId().longValue() != ssoUser.getId().longValue()){
-            return sceneAuthVO;
+        if(Objects.nonNull(sceneCooperation)){
+            sceneAuthVO.setInclude(sceneResourceService.findByCooperationId(sceneCooperation.getId()));
         }
 
-        if(scenePlus.getUserId()!= null && sceneCooperation.getUserId()!= null &&
-            scenePlus.getUserId().equals(sceneCooperation.getUserId())){
-            return sceneAuthVO;
-        }
-
-        sceneAuthVO.setInclude(sceneResourceService.findByCooperationId(sceneCooperation.getId()));
-
         return sceneAuthVO;
     }
 

+ 17 - 7
src/main/java/com/fdkankan/scene/service/impl/SceneResourceServiceImpl.java

@@ -3,6 +3,8 @@ package com.fdkankan.scene.service.impl;
 import cn.hutool.core.collection.CollUtil;
 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.scene.entity.SceneResource;
 import com.fdkankan.scene.entity.SceneResourceCooperation;
 import com.fdkankan.scene.mapper.ISceneResourceMapper;
@@ -18,7 +20,7 @@ import org.springframework.stereotype.Service;
  * 场景资源表 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-18
  */
 @Service
@@ -30,21 +32,29 @@ public class SceneResourceServiceImpl extends ServiceImpl<ISceneResourceMapper,
     @Override
     public List<SceneResource> findByCooperationId(Long sceneCooperationId) {
 
+        long countV4Resource = this.countByVersion("v4");
+
         List<SceneResourceCooperation> sceneResourceCooperationList
             = sceneResourceCooperationService.list(
             new LambdaQueryWrapper<SceneResourceCooperation>()
                 .eq(SceneResourceCooperation::getSceneCooperationId, sceneCooperationId));
 
-        List<Long> sceneResourceIdList = null;
-        if(CollUtil.isNotEmpty(sceneResourceCooperationList)){
-            sceneResourceIdList = sceneResourceCooperationList.stream()
-                .map(sceneResourceCooperation -> sceneResourceCooperation.getSceneResourceId())
-                .collect(Collectors.toList());
+        if(CollUtil.isEmpty(sceneResourceCooperationList)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
         }
-        if(CollUtil.isEmpty(sceneResourceIdList)){
+        if(countV4Resource == sceneResourceCooperationList.size()){//如果协作菜单数量与资源数量相同,则返回空,由前端判断当前用户拥有所有该场景编辑权限
             return null;
         }
 
+        List<Long> sceneResourceIdList = sceneResourceCooperationList.stream()
+                .map(sceneResourceCooperation -> sceneResourceCooperation.getSceneResourceId())
+                .collect(Collectors.toList());
+
         return this.listByIds(sceneResourceIdList);
     }
+
+    @Override
+    public long countByVersion(String version) {
+        return this.count(new LambdaQueryWrapper<SceneResource>().eq(SceneResource::getVersion, version));
+    }
 }