Browse Source

Merge remote-tracking branch 'origin/release-协作改造-20250317' into release

dengsixing 4 tháng trước cách đây
mục cha
commit
0de86117e3

+ 3 - 11
src/main/java/com/fdkankan/scene/Interceptor/CheckPermitAspect.java

@@ -102,18 +102,10 @@ public class CheckPermitAspect {
         }
 
         //如果不是用户自己的场景,判断是否有协作权限
-        Long userId = null;
-		SceneCooperation sceneCooperation = sceneCooperationService.getByNum(num);
-		if(Objects.nonNull(sceneCooperation)){
-			userId = sceneCooperation.getUserId();
+		SceneCooperation sceneCooperation = sceneCooperationService.getByNumAndUserId(num, user.getId());
+		if(Objects.isNull(sceneCooperation)){
+			throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
 		}
-
-		if(Objects.isNull(userId)){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
-        }
-        if(!userId.equals(user.getId())){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
-        }
 	}
 
 }

+ 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 - 0
src/main/java/com/fdkankan/scene/mapper/ISceneResourceCooperationMapper.java

@@ -1,9 +1,12 @@
 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 接口
@@ -15,4 +18,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface ISceneResourceCooperationMapper extends BaseMapper<SceneResourceCooperation> {
 
+    List<SceneResourceCooperation> selectByCondition(SceneResourceDTO dto);
+
+
 }

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

@@ -15,4 +15,6 @@ public interface ISceneCooperationService extends IService<SceneCooperation> {
 
     SceneCooperation getByNum(String num);
 
+    SceneCooperation getByNumAndUserId(String num, Long userId);
+
 }

+ 3 - 0
src/main/java/com/fdkankan/scene/service/ISceneResourceCooperationService.java

@@ -1,6 +1,7 @@
 package com.fdkankan.scene.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.scene.dto.SceneResourceDTO;
 import com.fdkankan.scene.entity.SceneResourceCooperation;
 
 import java.util.List;
@@ -18,4 +19,6 @@ public interface ISceneResourceCooperationService extends IService<SceneResource
     void deleteByCooperationId(Long id);
 
     void deleteByCooperationIds(List<Long> ids);
+
+    List<SceneResourceCooperation> listByCondition(SceneResourceDTO dto);
 }

+ 9 - 0
src/main/java/com/fdkankan/scene/service/impl/SceneCooperationServiceImpl.java

@@ -24,4 +24,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"));
+    }
 }

+ 1 - 23
src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java

@@ -180,9 +180,6 @@ public class SceneEditServiceImpl implements ISceneEditService {
         sceneAuthVO.setIsExpired(isExpired);
         sceneAuthVO.setIsVip(isVip);
 
-        //判断过期时间
-        Date date = DateUtil.parse(expectedTime, DateExtUtil.dateStyle);
-
         if(camera != null){
             if(!scenePlus.getCameraId().equals(camera.getId())){
                 throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
@@ -199,25 +196,6 @@ public class SceneEditServiceImpl implements ISceneEditService {
         }
 
         User user = userService.findByUserName(username);
-        if("18750226207".equals(username)){
-            log.info("18750226207该账号默认超级管理员,可以操作所有场景");
-        }
-        else if(user == null || scenePlus.getUserId() == null || user.getId().longValue() != scenePlus.getUserId().longValue()){
-            log.info("user:" + user.getId() + ",scene:" + scenePlus.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 {
-                throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
-            }
-        }
-
         if(scenePlus.getCameraId() != null){
             camera = cameraService.getById(scenePlus.getCameraId());
             if(camera != null){
@@ -235,7 +213,7 @@ public class SceneEditServiceImpl implements ISceneEditService {
         if(scenePlus.getUserId().equals(ssoUser.getId())){
             return sceneAuthVO;
         }
-        SceneCooperation sceneCooperation = sceneCooperationService.getByNum(num);
+        SceneCooperation sceneCooperation = sceneCooperationService.getByNumAndUserId(num, user.getId());
         if(Objects.nonNull(sceneCooperation)){
             sceneAuthVO.setInclude(sceneResourceService.findByCooperationId(sceneCooperation.getId()));
         }

+ 6 - 0
src/main/java/com/fdkankan/scene/service/impl/SceneResourceCooperationServiceImpl.java

@@ -2,6 +2,7 @@ package com.fdkankan.scene.service.impl;
 
 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.SceneResourceCooperation;
 import com.fdkankan.scene.mapper.ISceneResourceCooperationMapper;
 import com.fdkankan.scene.service.ISceneResourceCooperationService;
@@ -29,4 +30,9 @@ public class SceneResourceCooperationServiceImpl extends ServiceImpl<ISceneResou
     public void deleteByCooperationIds(List<Long> ids) {
         this.remove(new LambdaQueryWrapper<SceneResourceCooperation>().in(SceneResourceCooperation::getSceneCooperationId, ids));
     }
+
+    @Override
+    public List<SceneResourceCooperation> listByCondition(SceneResourceDTO dto) {
+        return this.baseMapper.selectByCondition(dto);
+    }
 }

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

@@ -5,6 +5,7 @@ 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.dto.SceneResourceDTO;
 import com.fdkankan.scene.entity.SceneResource;
 import com.fdkankan.scene.entity.SceneResourceCooperation;
 import com.fdkankan.scene.mapper.ISceneResourceMapper;
@@ -12,6 +13,8 @@ import com.fdkankan.scene.service.ISceneResourceCooperationService;
 import com.fdkankan.scene.service.ISceneResourceService;
 import java.util.List;
 import java.util.stream.Collectors;
+
+import org.ini4j.spi.RegEscapeTool;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -32,14 +35,21 @@ 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<SceneResourceCooperation> sceneResourceCooperationList
+//                = sceneResourceCooperationService.list(
+//                new LambdaQueryWrapper<SceneResourceCooperation>()
+//                        .eq(SceneResourceCooperation::getSceneCooperationId, sceneCooperationId));
+        List<SceneResourceCooperation> sceneResourceCooperationList =
+                sceneResourceCooperationService.listByCondition(
+                SceneResourceDTO.builder().sceneCooperationId(sceneCooperationId).version("v4").build());
+        //多人协作改造后方案,不写sceneResourceCooperationList表,所以这里,没有查到相关资源绑定信息,即为全部授权协作
+        if(CollUtil.isEmpty(sceneResourceCooperationList)){
+            return null;
+        }
 
-        if(countV4Resource == sceneResourceCooperationList.size()){//如果协作菜单数量与资源数量相同,则返回空,由前端判断当前用户拥有所有该场景编辑权限
+        //如果协作菜单数量与资源数量相同,则返回空,由前端判断当前用户拥有所有该场景编辑权限
+        long countV4Resource = this.countByVersion("v4");
+        if(countV4Resource == sceneResourceCooperationList.size()){
             return null;
         }
 

+ 14 - 1
src/main/resources/mapper/scene/SceneResourceCooperationMapper.xml

@@ -1,5 +1,18 @@
 <?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.com.fdkankan.scene.mapper.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>