///** // * Copyright (c) 2018 人人开源 All rights reserved. // * // * https://www.renren.io // * // * 版权所有,侵权必究! // */ // //package com.iailab.common.interceptor; // //import cn.hutool.core.util.StrUtil; //import com.baomidou.mybatisplus.core.toolkit.PluginUtils; //import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; //import net.sf.jsqlparser.JSQLParserException; //import net.sf.jsqlparser.expression.Expression; //import net.sf.jsqlparser.expression.StringValue; //import net.sf.jsqlparser.expression.operators.conditional.AndExpression; //import net.sf.jsqlparser.parser.CCJSqlParserUtil; //import net.sf.jsqlparser.statement.select.PlainSelect; //import net.sf.jsqlparser.statement.select.Select; //import org.apache.ibatis.executor.Executor; //import org.apache.ibatis.mapping.BoundSql; //import org.apache.ibatis.mapping.MappedStatement; //import org.apache.ibatis.session.ResultHandler; //import org.apache.ibatis.session.RowBounds; // //import java.util.Map; // ///** // * 数据过滤 // * // * @author Mark sunlightcs@gmail.com // */ //public class DataFilterInterceptor implements InnerInterceptor { // // @Override // public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) { // DataScope scope = getDataScope(parameter); // // 不进行数据过滤 // if(scope == null || StrUtil.isBlank(scope.getSqlFilter())){ // return; // } // // // 拼接新SQL // String buildSql = getSelect(boundSql.getSql(), scope); // // // 重写SQL // PluginUtils.mpBoundSql(boundSql).sql(buildSql); // } // // private DataScope getDataScope(Object parameter){ // if (parameter == null){ // return null; // } // // // 判断参数里是否有DataScope对象 // if (parameter instanceof Map) { // Map parameterMap = (Map) parameter; // for (Map.Entry entry : parameterMap.entrySet()) { // if (entry.getValue() != null && entry.getValue() instanceof DataScope) { // return (DataScope) entry.getValue(); // } // } // } else if (parameter instanceof DataScope) { // return (DataScope) parameter; // } // // return null; // } // // private String getSelect(String buildSql, DataScope scope){ // try { // Select select = (Select) CCJSqlParserUtil.parse(buildSql); // PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); // // Expression expression = plainSelect.getWhere(); // if(expression == null){ // plainSelect.setWhere(new StringValue(scope.getSqlFilter())); // }else{ // AndExpression andExpression = new AndExpression(expression, new StringValue(scope.getSqlFilter())); // plainSelect.setWhere(andExpression); // } // // return select.toString().replaceAll("'", ""); // }catch (JSQLParserException e){ // return buildSql; // } // } //}