diff --git a/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/ProjectDataScopeHandler.java b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/ProjectDataScopeHandler.java index a87c6ba47..bf89e0793 100644 --- a/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/ProjectDataScopeHandler.java +++ b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/ProjectDataScopeHandler.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHan import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.LongValue; import net.sf.jsqlparser.expression.Parenthesis; +import net.sf.jsqlparser.expression.operators.conditional.AndExpression; import net.sf.jsqlparser.expression.operators.relational.EqualsTo; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.expression.operators.relational.InExpression; @@ -52,14 +53,35 @@ public class ProjectDataScopeHandler implements MultiDataPermissionHandler { return null; } + Expression dataScopeExpression = null; + // 如果是需要校验仅创建人数据 if (dataScopeConfig.isDoCreateUserValidate()) { + + // 获取创建人ID + Long currentUserId = dataScopeConfig.getUserId(); + + // 生成创建人条件表达式 + dataScopeExpression = getEqualsTo(dataScopeConfig.getUserIdFieldName(), currentUserId); } // 如果是需要校验指定部门数据 if (dataScopeConfig.isDoOrgScopeValidate()) { + + // 获取组织范围条件表达式 + InExpression orgScopeCondition = getInExpression(dataScopeConfig); + + // 如果已经有创建人条件,需要合并 + if (dataScopeExpression != null) { + // 使用 OrExpression 合并条件 + dataScopeExpression = new AndExpression(dataScopeExpression, orgScopeCondition); + } else { + // 否则仅使用组织范围条件 + dataScopeExpression = orgScopeCondition; + } } + return dataScopeExpression; } /**