Просмотр исходного кода

组织架构权限设置为只可查看本机构以后,他是只可以看到自己机构的数据,机构管理里面显示数字,但是还会显示别的机构架构,后面显示0,然后可以删除掉这个机构,但是这个机构实际下面是有人的。

lipf 5 месяцев назад
Родитель
Сommit
9390a790da

+ 17 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java

@@ -2,6 +2,7 @@ package com.jzg.organization.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -181,6 +182,8 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     public List<SysDeptVo> getDeptTree(String deptId, SysDeptParam param) {
         log.info("查询部门信息:deptTid=[{}],param=[{}]",deptId, JSONUtil.toJsonStr(param));
         deptId = Objects.toString(deptId, "");
+        // 用户所属的部门序号
+        final String userDeptId = deptId;
 
         String userSystemCode = Optional.ofNullable(param.getSysCode())
                 .filter(StringUtils::isNotEmpty)
@@ -190,6 +193,12 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         SysSystem bySysCode = sysSystemService.getBySysCode(userSystemCode);
         SysDept sysDept = getById(deptId);
 
+        // add by lipf, 进行数据权限过滤
+        String userDataScope = baseController.getUserDataScope();
+        JSONObject dataScope = JSONObject.parseObject(userDataScope);
+        String dataMark = dataScope.getString("dataMark");
+        log.info("dataMark=[{}]",dataMark);
+
         List<String> deptTids = this.obatinDeptTids(param.getUserInfo());
         List<SysDeptVo> voDept = baseMapper.selectDeptVoList(deptId, userSystemCode, param.getName())
                 .stream()
@@ -198,6 +207,14 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
                         return true;
                     }
                     return deptTids.contains(action.getId());
+                }).filter(action->{
+                  // 如果用户的数据权限是: 只看本部门的数据,则安装部门序号进行过去,否则数据全部保留 2026年5月7日11:37:33
+                  // 这里的调整方式不是最优。 后续如果登录的时候,设置用户的datamark有多种权限,这里就不适用了
+                  if("1".equals(dataMark)){
+                      return userDeptId.equals(action.getId());
+                  }else{
+                      return true;
+                  }
                 }).map(item -> {
                     SysDeptVo sysDeptVo = new SysDeptVo(item);
 

+ 3 - 1
tenant/organization/src/main/resources/mapper/SysOrganizationMapper.xml

@@ -19,7 +19,9 @@
         select id, system_code, name, dept_id, manager_id, describe_information, attribute,
         (SELECT COUNT(1) FROM sys_organization_user_link WHERE sys_organization_user_link.organization_id = sys_organization.id) memberNumber,
         (SELECT sys_dept.`name` FROM sys_dept WHERE sys_dept.id = sys_organization.dept_id) deptName,
-        (SELECT u.username FROM sys_user u WHERE u.id = sys_organization.manager_id) managerName
+        (SELECT suji.name
+        FROM sys_user_jzg_info suji
+        WHERE suji.id = sys_organization.manager_id) manager_name
         from sys_organization
         <where>
             is_delete = 0