Commit c201e6cc84aa00278520ded5730d5d96178f0a95

Authored by 黄 x
1 parent 0edb5c49

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

... ... @@ -86,7 +86,8 @@ public class YtSceneLinkageController extends BaseController {
86 86 queryMap.put("status", status);
87 87 queryMap.put("organizationId", organizationId);
88 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 93 @ApiOperation(value = "删除")
... ...
... ... @@ -45,6 +45,7 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
45 45 private final UserMapper userMapper;
46 46 private final ConvertConfigMapper ruleEngineMapper;
47 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 268 * @return SceneLinkageDTO 场景对象
268 269 */
269 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 272 queryMap.put("tenantId", tenantId);
273 273 // 拿到传入的组织id
274 274 String organizationId = (String) queryMap.get("organizationId");
275 275 // 不为空
276 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 284 IPage<SceneLinkage> page = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, false);
293 285 IPage<SceneLinkageDTO> scenePage = baseMapper.getScenePage(page, queryMap);
... ... @@ -425,5 +417,15 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
425 417 ruleEngineService.createOrUpdate(ruleEngine);
426 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 37
38 38 /**
39 39 * 分页查询
40   - * @param queryMap
  40 + * @param queryMap 查询条件
  41 + * @param tenantId 租户ID
  42 + * @param isCustomerUser true是客户 false不是
41 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 36 <if test="queryMap.status !=null">
37 37 AND s.status = #{queryMap.status}
38 38 </if>
39   - <if test="queryMap.organizationId !=null">
  39 + <if test="queryMap.organizationIds !=null">
40 40 AND s.organization_id IN
41 41 <foreach collection="queryMap.organizationIds" item="organizationId" open="(" separator="," close=")">
42 42 #{organizationId}
... ...