Commit c201e6cc84aa00278520ded5730d5d96178f0a95

Authored by 黄 x
1 parent 0edb5c49

fix: 修改场景联动分页查询BUG【客户只能查看自己组织下的场景联动】

@@ -86,7 +86,8 @@ public class YtSceneLinkageController extends BaseController { @@ -86,7 +86,8 @@ public class YtSceneLinkageController extends BaseController {
86 queryMap.put("status", status); 86 queryMap.put("status", status);
87 queryMap.put("organizationId", organizationId); 87 queryMap.put("organizationId", organizationId);
88 queryMap.put("triggers", triggers); 88 queryMap.put("triggers", triggers);
89 - return sceneLinkageService.page(queryMap, getCurrentUser().getCurrentTenantId()); 89 + queryMap.put("currentUser",getCurrentUser().getCurrentUserId());
  90 + return sceneLinkageService.page(queryMap, getCurrentUser().getCurrentTenantId(),getCurrentUser().isCustomerUser());
90 } 91 }
91 92
92 @ApiOperation(value = "删除") 93 @ApiOperation(value = "删除")
@@ -45,6 +45,7 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap @@ -45,6 +45,7 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
45 private final UserMapper userMapper; 45 private final UserMapper userMapper;
46 private final ConvertConfigMapper ruleEngineMapper; 46 private final ConvertConfigMapper ruleEngineMapper;
47 private final ConvertConfigService ruleEngineService; 47 private final ConvertConfigService ruleEngineService;
  48 + private final UserOrganizationMappingService userOrganizationMappingService;
48 /** 49 /**
49 * 增加场景联动,触发器可以多个,执行条件可以多个,执行动作可以多个 50 * 增加场景联动,触发器可以多个,执行条件可以多个,执行动作可以多个
50 * 51 *
@@ -267,27 +268,18 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap @@ -267,27 +268,18 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
267 * @return SceneLinkageDTO 场景对象 268 * @return SceneLinkageDTO 场景对象
268 */ 269 */
269 @Override 270 @Override
270 - @Transactional  
271 - public YtPageData<SceneLinkageDTO> page(Map<String, Object> queryMap, String tenantId) { 271 + public YtPageData<SceneLinkageDTO> page(Map<String, Object> queryMap, String tenantId,boolean isCustomerUser) {
272 queryMap.put("tenantId", tenantId); 272 queryMap.put("tenantId", tenantId);
273 // 拿到传入的组织id 273 // 拿到传入的组织id
274 String organizationId = (String) queryMap.get("organizationId"); 274 String organizationId = (String) queryMap.get("organizationId");
275 // 不为空 275 // 不为空
276 if (null != organizationId && !StringUtils.isEmpty(organizationId)) { 276 if (null != organizationId && !StringUtils.isEmpty(organizationId)) {
277 - // 新建组织集合  
278 - List<String> organizationIds = new ArrayList<>();  
279 - // 添加拿到的组织  
280 - organizationIds.add(organizationId);  
281 - // 查询该组织的所有子类  
282 - List<OrganizationDTO> organizationDTOS =  
283 - organizationMapper.findOrganizationTreeList(tenantId, organizationIds);  
284 - // 遍历组织id  
285 - List<String> queryOrganizationIds = new ArrayList<>();  
286 - organizationDTOS.forEach(  
287 - item -> {  
288 - queryOrganizationIds.add(item.getId());  
289 - });  
290 - queryMap.put("organizationIds", queryOrganizationIds); 277 + queryMap.put("organizationIds", getQueryOrganizationIds(tenantId,Arrays.asList(organizationId)));
  278 + }
  279 + if(null == organizationId && isCustomerUser){
  280 + String currentUserId = (String) queryMap.get("currentUser");
  281 + List<String> ids = userOrganizationMappingService.getOrganizationIdsByUserId(currentUserId);
  282 + queryMap.put("organizationIds", getQueryOrganizationIds(tenantId,ids));
291 } 283 }
292 IPage<SceneLinkage> page = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, false); 284 IPage<SceneLinkage> page = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, false);
293 IPage<SceneLinkageDTO> scenePage = baseMapper.getScenePage(page, queryMap); 285 IPage<SceneLinkageDTO> scenePage = baseMapper.getScenePage(page, queryMap);
@@ -425,5 +417,15 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap @@ -425,5 +417,15 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
425 ruleEngineService.createOrUpdate(ruleEngine); 417 ruleEngineService.createOrUpdate(ruleEngine);
426 return false; 418 return false;
427 } 419 }
428 - 420 + private List<String> getQueryOrganizationIds(String tenantId,List<String> organizationIds){
  421 + // 查询该组织的所有子类
  422 + List<OrganizationDTO> organizationDTOS =
  423 + organizationMapper.findOrganizationTreeList(tenantId, organizationIds);
  424 + // 遍历组织id
  425 + List<String> queryOrganizationIds = new ArrayList<>();
  426 + organizationDTOS.forEach(item -> queryOrganizationIds.add(item.getId()));
  427 + Set<String> set = new HashSet<>();
  428 + set.addAll(queryOrganizationIds);
  429 + return new ArrayList<>(set);
  430 + }
429 } 431 }
@@ -37,10 +37,12 @@ public interface SceneLinkageService extends BaseService<SceneLinkage>{ @@ -37,10 +37,12 @@ public interface SceneLinkageService extends BaseService<SceneLinkage>{
37 37
38 /** 38 /**
39 * 分页查询 39 * 分页查询
40 - * @param queryMap 40 + * @param queryMap 查询条件
  41 + * @param tenantId 租户ID
  42 + * @param isCustomerUser true是客户 false不是
41 * @return 43 * @return
42 */ 44 */
43 - YtPageData<SceneLinkageDTO> page(Map<String, Object> queryMap, String tenantId); 45 + YtPageData<SceneLinkageDTO> page(Map<String, Object> queryMap, String tenantId,boolean isCustomerUser);
44 46
45 /** 47 /**
46 * 查找场景联动所有数据 48 * 查找场景联动所有数据
@@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
36 <if test="queryMap.status !=null"> 36 <if test="queryMap.status !=null">
37 AND s.status = #{queryMap.status} 37 AND s.status = #{queryMap.status}
38 </if> 38 </if>
39 - <if test="queryMap.organizationId !=null"> 39 + <if test="queryMap.organizationIds !=null">
40 AND s.organization_id IN 40 AND s.organization_id IN
41 <foreach collection="queryMap.organizationIds" item="organizationId" open="(" separator="," close=")"> 41 <foreach collection="queryMap.organizationIds" item="organizationId" open="(" separator="," close=")">
42 #{organizationId} 42 #{organizationId}