Browse Source

Merge branch 'release-多人协作' into test

dengsixing 4 months ago
parent
commit
f4e0b5f76c

+ 18 - 0
src/main/java/com/fdkankan/scene/dto/SceneResourceDTO.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Builder
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SceneResourceDTO {
+
+    private Long sceneCooperationId;
+
+    private String version;
+
+}

+ 5 - 2
src/main/java/com/fdkankan/scene/entity/SceneCooperation.java

@@ -12,10 +12,10 @@ import lombok.Setter;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-04
  */
 @Getter
@@ -50,5 +50,8 @@ public class SceneCooperation implements Serializable {
     @TableField("rec_status")
     private String recStatus;
 
+    @TableField("scene_type")
+    private String sceneType;
+
 
 }

+ 6 - 1
src/main/java/com/fdkankan/scene/mapper/ISceneResourceCooperationMapper.java

@@ -1,18 +1,23 @@
 package com.fdkankan.scene.mapper;
 
+import com.fdkankan.scene.dto.SceneResourceDTO;
 import com.fdkankan.scene.entity.SceneResourceCooperation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * <p>
  * 场景资源和协作用户关联表 Mapper 接口
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-04
  */
 @Mapper
 public interface ISceneResourceCooperationMapper extends BaseMapper<SceneResourceCooperation> {
 
+    List<SceneResourceCooperation> selectByCondition(SceneResourceDTO dto);
+
 }

+ 3 - 1
src/main/java/com/fdkankan/scene/service/ISceneCooperationService.java

@@ -8,11 +8,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  *  服务类
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-04
  */
 public interface ISceneCooperationService extends IService<SceneCooperation> {
 
     SceneCooperation getByNum(String num);
 
+    SceneCooperation getByNumAndUserId(String num, Long userId);
+
 }

+ 6 - 1
src/main/java/com/fdkankan/scene/service/ISceneResourceCooperationService.java

@@ -1,16 +1,21 @@
 package com.fdkankan.scene.service;
 
+import com.fdkankan.scene.dto.SceneResourceDTO;
 import com.fdkankan.scene.entity.SceneResourceCooperation;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 场景资源和协作用户关联表 服务类
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-04
  */
 public interface ISceneResourceCooperationService extends IService<SceneResourceCooperation> {
 
+    List<SceneResourceCooperation> listByCondition(SceneResourceDTO dto);
+
 }

+ 3 - 1
src/main/java/com/fdkankan/scene/service/ISceneResourceService.java

@@ -10,11 +10,13 @@ import org.apache.ibatis.annotations.Param;
  * 场景资源表 服务类
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-04
  */
 public interface ISceneResourceService extends IService<SceneResource> {
 
     List<SceneResource> findByCooperationId(Long resourceCooperationId);
 
+    long countByVersion(String version);
+
 }

+ 10 - 1
src/main/java/com/fdkankan/scene/service/impl/SceneCooperationServiceImpl.java

@@ -13,7 +13,7 @@ import org.springframework.stereotype.Service;
  *  服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-04
  */
 @Service
@@ -25,4 +25,13 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
             new LambdaQueryWrapper<SceneCooperation>()
                 .eq(SceneCooperation::getSceneNum, num));
     }
+
+    @Override
+    public SceneCooperation getByNumAndUserId(String num, Long userId) {
+        return this.getOne(
+                new LambdaQueryWrapper<SceneCooperation>()
+                        .eq(SceneCooperation::getSceneNum, num)
+                        .eq(SceneCooperation::getUserId, userId)
+                        .eq(SceneCooperation::getSceneType, "mesh"));
+    }
 }

+ 9 - 1
src/main/java/com/fdkankan/scene/service/impl/SceneResourceCooperationServiceImpl.java

@@ -1,20 +1,28 @@
 package com.fdkankan.scene.service.impl;
 
+import com.fdkankan.scene.dto.SceneResourceDTO;
 import com.fdkankan.scene.entity.SceneResourceCooperation;
 import com.fdkankan.scene.mapper.ISceneResourceCooperationMapper;
 import com.fdkankan.scene.service.ISceneResourceCooperationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 场景资源和协作用户关联表 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-04
  */
 @Service
 public class SceneResourceCooperationServiceImpl extends ServiceImpl<ISceneResourceCooperationMapper, SceneResourceCooperation> implements ISceneResourceCooperationService {
 
+    @Override
+    public List<SceneResourceCooperation> listByCondition(SceneResourceDTO dto) {
+        return this.baseMapper.selectByCondition(dto);
+    }
+
 }

+ 21 - 12
src/main/java/com/fdkankan/scene/service/impl/SceneResourceServiceImpl.java

@@ -3,6 +3,7 @@ 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.scene.dto.SceneResourceDTO;
 import com.fdkankan.scene.entity.SceneResource;
 import com.fdkankan.scene.entity.SceneResourceCooperation;
 import com.fdkankan.scene.mapper.ISceneResourceMapper;
@@ -18,7 +19,7 @@ import org.springframework.stereotype.Service;
  * 场景资源表 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-07-04
  */
 @Service
@@ -30,21 +31,29 @@ public class SceneResourceServiceImpl extends ServiceImpl<ISceneResourceMapper,
     @Override
     public List<SceneResource> findByCooperationId(Long sceneCooperationId) {
 
-        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());
+        List<SceneResourceCooperation> sceneResourceCooperationList =
+                sceneResourceCooperationService.listByCondition(
+                        SceneResourceDTO.builder().sceneCooperationId(sceneCooperationId).version("v3").build());
+        //多人协作改造后方案,不写sceneResourceCooperationList表,所以这里,没有查到相关资源绑定信息,即为全部授权协作
+        if(CollUtil.isEmpty(sceneResourceCooperationList)){
+            return null;
         }
-        if(CollUtil.isEmpty(sceneResourceIdList)){
+
+        //如果协作菜单数量与资源数量相同,则返回空,由前端判断当前用户拥有所有该场景编辑权限
+        long countV4Resource = this.countByVersion("v3");
+        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));
+    }
 }

+ 8 - 22
src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java

@@ -58,6 +58,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
+import javax.annotation.Resource;
+
 /**
  * <p>
  * TODO
@@ -94,7 +96,7 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
     private IScenePlusService scenePlusService;
     @Autowired
     private IScenePlusExtService scenePlusExtService;
-    @Autowired
+    @Resource
     private FYunFileServiceInterface fYunFileService;
     @Autowired
     private IVideoSceneProgressService videoSceneProgressService;
@@ -213,21 +215,15 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
         }
 
         User user = userService.findByUserName(username);
+        SceneCooperation sceneCooperation = null;
         if("18750226207".equals(username)){
             log.info("18750226207该账号默认超级管理员,可以操作所有场景");
         }
         else if(user == null || sceneProEntity.getUserId() == null || user.getId().longValue() != sceneProEntity.getUserId().longValue()){
             log.info("user:" + user.getId() + ",scene:" + sceneProEntity.getUserId());
 
-            List<SceneCooperation> list =
-                sceneCooperationService.list(
-                    new LambdaQueryWrapper<SceneCooperation>()
-                        .eq(SceneCooperation::getSceneNum, num));
-            if(list != null && list.size() > 0){
-                if(list.get(0).getUserId().longValue() != user.getId().longValue()){
-                    throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
-                }
-            }else {
+            sceneCooperation = sceneCooperationService.getByNumAndUserId(num, user.getId());
+            if(Objects.isNull(sceneCooperation)){
                 throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
             }
         }
@@ -245,20 +241,10 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
             }
         }
 
-        //权限控制完后判断若是协作账号,获取协作权限
-        SceneCooperation sceneCooperation = sceneCooperationService.getByNum(num);
-        //若数据为空表示可操作全部资源
-        if(sceneCooperation == null || sceneCooperation.getUserId().longValue() != ssoUser.getId().longValue()){
-            return result;
+        if(Objects.nonNull(sceneCooperation)){
+            jsonObject.put("include", sceneResourceService.findByCooperationId(sceneCooperation.getId()));
         }
 
-        if(sceneProEntity.getUserId()!= null && sceneCooperation.getUserId()!= null &&
-            sceneProEntity.getUserId().equals(sceneCooperation.getUserId())){
-            return result;
-        }
-
-        jsonObject.put("include", sceneResourceService.findByCooperationId(sceneCooperation.getId()));
-
         return result;
     }
 

+ 12 - 2
src/main/resources/mapper/scene/SceneResourceCooperationMapper.xml

@@ -1,5 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.fdkankan.ISceneResourceCooperationMapper">
-
+<mapper namespace="com.fdkankan.scene.mapper.ISceneResourceCooperationMapper">
+    <select id="selectByCondition" parameterType="com.fdkankan.scene.dto.SceneResourceDTO" resultType="com.fdkankan.scene.entity.SceneResourceCooperation">
+        select * from t_scene_resource_cooperation t
+        left join t_scene_resource r on t.scene_resource_id = r.id and r.rec_status = 'A'
+        where t.rec_status = 'A'
+        <if test="sceneCooperationId != null">
+            and t.scene_cooperation_id = #{sceneCooperationId}
+        </if>
+        <if test="version != null and version != ''">
+            and r.version = #{version}
+        </if>
+    </select>
 </mapper>