From 018af6bed3da8be2e7b846aa3e654f16f8f71654 Mon Sep 17 00:00:00 2001 From: 101captain <237651143@qq.com> Date: 星期三, 29 十二月 2021 16:29:30 +0800 Subject: [PATCH] 12/29 河门口大屏特殊修改 --- springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/config/MybatisHmkInterceptor.java | 78 +++++++++++++++++++++++++------------- 1 files changed, 51 insertions(+), 27 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/config/MybatisHmkInterceptor.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/config/MybatisHmkInterceptor.java index 391f298..afcc6e8 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/config/MybatisHmkInterceptor.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/config/MybatisHmkInterceptor.java @@ -3,24 +3,18 @@ import com.baomidou.mybatisplus.core.toolkit.PluginUtils; import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; import org.apache.ibatis.executor.Executor; -import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.ParameterMapping; -import org.apache.ibatis.plugin.Intercepts; -import org.apache.ibatis.plugin.Signature; import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds; +import java.lang.reflect.Field; import java.sql.SQLException; -import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.Map; -@Intercepts({ - @Signature(type = StatementHandler.class, method = "query", args = {Statement.class, ResultHandler.class}) -}) public class MybatisHmkInterceptor implements InnerInterceptor { @Override public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { @@ -34,27 +28,57 @@ } } if(parameter instanceof Map){ - List<ParameterMapping> parameterMappingList=new ArrayList<>(); - if(sql.contains("community_id = ?")&&((Map<?, ?>) parameter).containsValue(10086L)){ - List<ParameterMapping> parameterMappings=boundSql.getParameterMappings(); - parameterMappings.forEach(parameterMapping -> { - if (parameterMapping.getProperty().equals("communityId")){ - ParameterMapping parameterMapping1=new ParameterMapping.Builder(ms.getConfiguration(),"communityId",Object.class).build(); - parameterMappingList.add(parameterMapping1); + if(sql.contains("community_id = ?")){ + List<ParameterMapping> parameterMappingList=new ArrayList<>(); + if(((Map<?, ?>) parameter).containsValue(10086L)){ + List<ParameterMapping> parameterMappings=boundSql.getParameterMappings(); + parameterMappings.forEach(parameterMapping -> { + if (parameterMapping.getProperty().equals("communityId")){ + ParameterMapping parameterMapping1=new ParameterMapping.Builder(ms.getConfiguration(),parameterMapping.getProperty(),Object.class).build(); + parameterMappingList.add(parameterMapping1); + } + else { + parameterMappingList.add(parameterMapping); + } + }); + sql=sql.replace("community_id = ?","community_id in (?)"); + ((Map<?,?>) parameter).replaceAll((k,v)->{ + if(v.toString().contains("10086")){ + boundSql.setAdditionalParameter(k.toString(),"30,31"); + } + return v; + }); + PluginUtils.mpBoundSql(boundSql).parameterMappings(parameterMappingList); + PluginUtils.mpBoundSql(boundSql).sql(sql); + } + else{ + if(((Map<?, ?>) parameter).containsKey("arg0")){ + Map<?, ?> param= (Map<?, ?>) boundSql.getAdditionalParameter("_parameter"); + String finalSql = sql; + param.forEach((k, v)->{ + try { + Field field= v.getClass().getDeclaredField("communityId"); + if(field!=null){ + field.setAccessible(true); + if((long)field.get(v)==10086L){ + String sql1= finalSql.replace("community_id = ?","community_id in (30,31)"); + boundSql.getParameterMappings().forEach(parameterMapping -> { + if(!parameterMapping.getProperty().contains("communityId")){ + parameterMappingList.add(parameterMapping); + } + }); + PluginUtils.mpBoundSql(boundSql).parameterMappings(parameterMappingList); + PluginUtils.mpBoundSql(boundSql).sql(sql1); + } + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (NoSuchFieldException e) { + + } + }); } - else { - parameterMappingList.add(parameterMapping); - } - }); - sql=sql.replace("community_id = ?","community_id in (?)"); - ((Map<?,?>) parameter).replaceAll((k,v)->{ - if(v.toString().equals("10086")){ - boundSql.setAdditionalParameter(k.toString(),"30,31"); - } - return v; - }); - PluginUtils.mpBoundSql(boundSql).parameterMappings(parameterMappingList); - PluginUtils.mpBoundSql(boundSql).sql(sql); + } } } InnerInterceptor.super.beforeQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql); -- Gitblit v1.7.1