瀏覽代碼

完善数据权限筛选注解

songxinlu 3 年之前
父節點
當前提交
baf9c9ce9c

+ 4 - 0
security-center/src/main/java/com/lantone/security/annotation/DataAuthFilter.java

@@ -24,6 +24,10 @@ public @interface DataAuthFilter {
      * 用户表数据范围的别名(in)
      */
     String usersAlias() default "";
+    /**
+     * 医生数据范围的别名(in)
+     */
+    String doctorsAlias() default "";
 
     /**
      * 科室表数据范围的别名(in)

+ 20 - 0
security-center/src/main/java/com/lantone/security/aop/DataAuthFilterAspect.java

@@ -90,23 +90,43 @@ public class DataAuthFilterAspect {
             sqlFilter.append(dataAuthFilter.usersAlias()).append(" in(").append(StringUtils.join(dataAuthMap.get("users"), ",")).append(")");
         }
 
+        if (StringUtils.isNotEmpty(dataAuthFilter.usersAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("notUsers"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.usersAlias()).append(" not in(").append(StringUtils.join(dataAuthMap.get("notUsers"), ",")).append(")");
+        }
+
         //2.筛选科室组
         if (StringUtils.isNotEmpty(dataAuthFilter.deptsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("depts"))) {
             sqlAppend(sqlFilter);
             sqlFilter.append(dataAuthFilter.deptsAlias()).append(" in(").append(StringUtils.join(dataAuthMap.get("depts"), ",")).append(")");
         }
+        if (StringUtils.isNotEmpty(dataAuthFilter.deptsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("notDepts"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.deptsAlias()).append(" not in(").append(StringUtils.join(dataAuthMap.get("notDepts"), ",")).append(")");
+        }
 
         //3.筛选组织组
         if (StringUtils.isNotEmpty(dataAuthFilter.hospitalsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("hospitals"))) {
             sqlAppend(sqlFilter);
             sqlFilter.append(dataAuthFilter.hospitalsAlias()).append(" in(").append(StringUtils.join(dataAuthMap.get("hospitals"), ",")).append(")");
         }
+        if (StringUtils.isNotEmpty(dataAuthFilter.hospitalsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("notHospitals"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.hospitalsAlias()).append(" not in(").append(StringUtils.join(dataAuthMap.get("notHospitals"), ",")).append(")");
+        }
 
         //4.自身
         if (StringUtils.isNotEmpty(dataAuthFilter.self())) {
             sqlAppend(sqlFilter);
             sqlFilter.append(dataAuthFilter.self()).append(" =").append(SysUserUtils.getCurrentPrincipleId());
         }
+
+        //5.医生组(医疗组)
+        if (StringUtils.isNotEmpty(dataAuthFilter.doctorsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("doctors"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.doctorsAlias()).append(" in(").append(StringUtils.join(dataAuthMap.get("doctors"), ",")).append(")");
+        }
+
         sqlFilter.append(") ");
 
         if (sqlFilter.toString().trim().equals("()")) {