浏览代码

add DataScopeContextHolder logic

guoenzhou 10 月之前
父节点
当前提交
a0adaa3253

+ 4 - 2
base-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java

@@ -1,5 +1,6 @@
 package com.ruoyi.common.datascope.aspect;
 
+import com.ruoyi.common.datascope.context.DataScopeContextHolder;
 import com.usky.system.domain.SysUserVO;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
@@ -93,8 +94,8 @@ public class DataScopeAspect
             String dataScope = role.getDataScope();
             if (DATA_SCOPE_ALL.equals(dataScope))
             {
-                sqlString = new StringBuilder();
-                break;
+                Integer tenantId = SecurityUtils.getTenantId();
+                sqlString.append(StringUtils.format(" OR {}.tenant_id = {} ", deptAlias, tenantId));
             }
             else if (DATA_SCOPE_CUSTOM.equals(dataScope))
             {
@@ -134,6 +135,7 @@ public class DataScopeAspect
                 BaseEntity baseEntity = (BaseEntity) params;
                 baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
             }
+            DataScopeContextHolder.setDataScopeSql(" AND (" + sqlString.substring(4) + ")");
         }
     }
 

+ 24 - 0
base-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/context/DataScopeContextHolder.java

@@ -0,0 +1,24 @@
+package com.ruoyi.common.datascope.context;
+
+public class DataScopeContextHolder {
+
+    /**
+     * 当前租户编号
+     */
+    private static final ThreadLocal<String> DATA_SCOPE_SQL = new ThreadLocal<>();
+
+
+    public static String getDataScopeSql() {
+        return DATA_SCOPE_SQL.get();
+    }
+
+
+    public static void setDataScopeSql(String dataScope) {
+        DATA_SCOPE_SQL.set(dataScope);
+    }
+
+    public static void clear() {
+        DATA_SCOPE_SQL.remove();
+    }
+
+}

+ 2 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/ISysDeptService.java

@@ -23,6 +23,8 @@ public interface ISysDeptService extends IService<SysDept>
      */
     public List<SysDept> selectDeptList(SysDept dept);
 
+    public List<SysDept> selectDeptListLamda(SysDept dept);
+
     /**
      * 构建前端所需要树结构
      * 

+ 15 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysDeptServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.system.service.impl;
 
 
 import com.ruoyi.common.datascope.annotation.DataScope;
+import com.ruoyi.common.datascope.context.DataScopeContextHolder;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.common.core.exception.BusinessException;
@@ -11,10 +12,13 @@ import com.usky.system.domain.SysDept;
 import com.usky.system.domain.SysRole;
 import com.usky.system.domain.SysUser;
 import com.usky.system.domain.constants.UserConstants;
+import com.usky.system.factory.RemoteLogFallbackFactory;
 import com.usky.system.mapper.SysDeptMapper;
 import com.usky.system.mapper.SysRoleMapper;
 import com.usky.system.service.ISysDeptService;
 import com.usky.system.service.vo.TreeSelect;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -33,6 +37,8 @@ import java.util.stream.Collectors;
 @Service
 public class SysDeptServiceImpl extends AbstractCrudService<SysDeptMapper, SysDept> implements ISysDeptService
 {
+    private static final Logger log = LoggerFactory.getLogger(SysDeptServiceImpl.class);
+
     @Autowired
     private SysDeptMapper deptMapper;
 
@@ -50,9 +56,18 @@ public class SysDeptServiceImpl extends AbstractCrudService<SysDeptMapper, SysDe
     public List<SysDept> selectDeptList(SysDept dept)
     {
         dept.setTenantId(SecurityUtils.getTenantId());
+        log.debug(DataScopeContextHolder.getDataScopeSql());
         return deptMapper.selectDeptList(dept);
     }
 
+    @DataScope(deptAlias = "d")
+    public List<SysDept> selectDeptListByLamda(SysDept dept)
+    {
+//        dept.setTenantId(SecurityUtils.getTenantId());
+//        log.debug(DataScopeContextHolder.getDataScopeSql());
+//        return deptMapper.selectDeptList(dept);
+    }
+
     /**
      * 构建前端所需要树结构
      *