SysDataScopeServiceImpl.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.ruoyi.system.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.convert.Convert;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.ruoyi.common.core.domain.entity.SysDept;
  6. import com.ruoyi.system.domain.SysRoleDept;
  7. import com.ruoyi.system.mapper.SysDeptMapper;
  8. import com.ruoyi.system.mapper.SysRoleDeptMapper;
  9. import com.ruoyi.system.service.ISysDataScopeService;
  10. import lombok.RequiredArgsConstructor;
  11. import org.springframework.stereotype.Service;
  12. import java.util.List;
  13. import java.util.stream.Collectors;
  14. /**
  15. * 数据权限 实现
  16. * <p>
  17. * 注意: 此Service内不允许调用标注`数据权限`注解的方法
  18. * 例如: deptMapper.selectList 此 selectList 方法标注了`数据权限`注解 会出现循环解析的问题
  19. *
  20. * @author Lion Li
  21. */
  22. @RequiredArgsConstructor
  23. @Service("sdss")
  24. public class SysDataScopeServiceImpl implements ISysDataScopeService {
  25. private final SysRoleDeptMapper roleDeptMapper;
  26. private final SysDeptMapper deptMapper;
  27. @Override
  28. public String getRoleCustom(Long roleId) {
  29. List<SysRoleDept> list = roleDeptMapper.selectList(
  30. new LambdaQueryWrapper<SysRoleDept>()
  31. .select(SysRoleDept::getDeptId)
  32. .eq(SysRoleDept::getRoleId, roleId));
  33. if (CollUtil.isNotEmpty(list)) {
  34. return list.stream().map(rd -> Convert.toStr(rd.getDeptId())).collect(Collectors.joining(","));
  35. }
  36. return null;
  37. }
  38. @Override
  39. public String getDeptAndChild(Long deptId) {
  40. List<SysDept> list = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  41. .select(SysDept::getDeptId)
  42. .eq(SysDept::getDeptId, deptId)
  43. .or()
  44. .apply("find_in_set({0},ancestors)", deptId));
  45. if (CollUtil.isNotEmpty(list)) {
  46. return list.stream().map(d -> Convert.toStr(d.getDeptId())).collect(Collectors.joining(","));
  47. }
  48. return null;
  49. }
  50. }