瀏覽代碼

增加文档、以及功能的优化

liukx@elab 5 年之前
父節點
當前提交
b2bc4d58cd

+ 1 - 1
elab-alert/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>elab-parent</artifactId>
         <groupId>com.elab.core</groupId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>elab-alert</artifactId>

+ 1 - 1
elab-annotation/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>elab-parent</artifactId>
         <groupId>com.elab.core</groupId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
elab-cache/pom.xml

@@ -6,7 +6,7 @@
     <parent>
         <groupId>com.elab.core</groupId>
         <artifactId>elab-parent</artifactId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <groupId>com.elab.cache</groupId>
     <artifactId>elab-cache</artifactId>

+ 1 - 1
elab-core/pom.xml

@@ -7,7 +7,7 @@
     <parent>
         <groupId>com.elab.core</groupId>
         <artifactId>elab-parent</artifactId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
 
     <groupId>com.elab.core</groupId>

+ 5 - 0
elab-db/REDEME.md

@@ -324,6 +324,11 @@ list.add("3");
 
 ```
 
+# 拓展类
+- SQLEventHandler : 所有SQL执行前后的接口都会回调该类
+- CheckSqlProcess : 最终要执行的SQL回调。
+- ISQLBuliderSupport: 自定义自动生成的接口
+
 # 使用建议
 1. 如果出现(columnA = :A or columnB = :B) 这种括号条件的话....希望传值不能为空!
 2. 传值的时候参数必须带有一个以上!

+ 1 - 1
elab-db/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <groupId>com.elab.core</groupId>
         <artifactId>elab-parent</artifactId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>elab-db</artifactId>

+ 80 - 17
elab-db/src/main/java/com/elab/core/dao/BasicBaseDao.java

@@ -11,10 +11,16 @@ import com.elab.core.dao.row.ThirdRowMapper;
 import com.elab.core.exception.CoreException;
 import com.elab.core.spring.method.CheckSqlProcess;
 import com.elab.core.spring.method.DefaultCheckSQLProcess;
+import com.elab.core.spring.method.SQLEventHandler;
+import com.elab.core.sql.config.SqlCommandType;
 import com.elab.core.utils.BeanPropertyUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
 import org.springframework.dao.DataAccessException;
 import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -26,10 +32,7 @@ import org.springframework.jdbc.core.namedparam.SqlParameterSource;
 import org.springframework.jdbc.support.GeneratedKeyHolder;
 
 import javax.persistence.Column;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 增强的持久层操作
@@ -38,7 +41,8 @@ import java.util.Map;
  * @create 2018-04-20 15:36
  * @email liukx@elab-plus.com
  **/
-public class BasicBaseDao {
+public class BasicBaseDao implements ApplicationContextAware,
+        InitializingBean {
 
     private Logger logger = LoggerFactory.getLogger(BasicBaseDao.class);
 
@@ -46,8 +50,46 @@ public class BasicBaseDao {
 
     private CheckSqlProcess checkSqlProcess = new DefaultCheckSQLProcess();
 
-    public void setCheckSqlProcess(CheckSqlProcess checkSqlProcess) {
-        this.checkSqlProcess = checkSqlProcess;
+    private List<SQLEventHandler> sqlEventHandlerList;
+
+    private ApplicationContext applicationContext;
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        Map<String, CheckSqlProcess> beansOfType = this.applicationContext.getBeansOfType(CheckSqlProcess.class);
+        Map<String, SQLEventHandler> SQLEventHandlerMap = this.applicationContext.getBeansOfType(SQLEventHandler.class);
+        if (SQLEventHandlerMap != null && SQLEventHandlerMap.size() > 0) {
+            this.sqlEventHandlerList = new ArrayList<>();
+            SQLEventHandlerMap.forEach((K, V) -> {
+                this.sqlEventHandlerList.add(V);
+            });
+        }
+    }
+
+//    @Override
+//    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
+//
+//    }
+
+//    @Override
+//    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
+//        Map<String, CheckSqlProcess> beansOfType = this.applicationContext.getBeansOfType(CheckSqlProcess.class);
+//        Map<String, SQLEventHandler> SQLEventHandlerMap = this.applicationContext.getBeansOfType(SQLEventHandler.class);
+//        if (SQLEventHandlerMap != null && SQLEventHandlerMap.size() > 0) {
+//            this.sqlEventHandlerList = new ArrayList<>();
+//            SQLEventHandlerMap.forEach((K, V) -> {
+//                this.sqlEventHandlerList.add(V);
+//            });
+//        }
+//    }
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        this.applicationContext = applicationContext;
+    }
+
+    public List<SQLEventHandler> getSqlEventHandlerList() {
+        return sqlEventHandlerList;
     }
 
     public JdbcTemplate getJdbcTemplate() {
@@ -134,11 +176,11 @@ public class BasicBaseDao {
      * @param param 参数
      * @return
      */
-    private JdbcParamsModel commonParseSql(String sql, Object param) throws Exception {
+    public JdbcParamsModel commonParseSql(String sql, Object param) throws Exception {
         return this.commonParseSql(sql, param, null);
     }
 
-    private JdbcParamsModel commonParseSql(String sql, Object param, ListDynamicSearch search) throws Exception {
+    public JdbcParamsModel commonParseSql(String sql, Object param, ListDynamicSearch search) throws Exception {
         long start = System.currentTimeMillis();
         JdbcParamsModel model = new JdbcParamsModel();
         if (param instanceof String) {
@@ -153,10 +195,7 @@ public class BasicBaseDao {
         // 解析参数类型 , 这里会根据Map和Object对象做装换
         SqlParameterSource sqlParameterSource = getSqlParameterSource(param);
         // 获取有效的参数,将为null和""的参数给替换掉
-        long k = System.currentTimeMillis();
         Object[] data = NamedParameterUtils2.buildValueArray(parsedSql, sqlParameterSource, null);
-        long k1 = System.currentTimeMillis() - k;
-        logger.debug("--------------------" + k1 + "-----------------------");
         // 正常解析sql为jdbc与参数对应
         String s = NamedParameterUtils2.substituteNamedParameters(parsedSql, sqlParameterSource);
         // 校验第一个参数为空的情况下
@@ -175,7 +214,9 @@ public class BasicBaseDao {
         logger.debug(" 对应参数    -  " + Arrays.toString(model.getObjects()));
 
         // 校验SQL是否符合规范
-        checkSqlProcess.checkProcess(model, param);
+        if (this.checkSqlProcess != null) {
+            this.checkSqlProcess.checkProcess(model, param);
+        }
         long time = System.currentTimeMillis() - start;
         logger.debug(" sql 语句处理耗时 : " + time);
         return model;
@@ -201,7 +242,7 @@ public class BasicBaseDao {
 
     /**
      * @param sql
-     * @param o
+     * @param obj
      * @param search
      * @param elementType
      * @param <T>
@@ -431,14 +472,16 @@ public class BasicBaseDao {
     public int insert(String sql, Object o) {
         SqlParameterSource sqlParameterSource = getSqlParameterSource(o);
         GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
+        sqlInvokeBefore(SqlCommandType.INSERT, sql, o);
         long start = System.currentTimeMillis();
         logger.debug("sql : " + sql);
         this.getNamedParameterJdbcTemplate().update(sql, sqlParameterSource, keyHolder);
-        int i = keyHolder.getKey().intValue();
-        logger.debug(" params : " + i);
+        int result = keyHolder.getKey().intValue();
+        logger.debug(" params : " + result);
         long time = System.currentTimeMillis() - start;
         logger.debug(" SQL 执行耗时 : " + time);
-        return i;
+        sqlInvokeAfter(SqlCommandType.INSERT, sql, o, result);
+        return result;
     }
 
 
@@ -496,6 +539,24 @@ public class BasicBaseDao {
         }
     }
 
+    private void sqlInvokeBefore(SqlCommandType event, String sql, Object o) {
+        if (this.sqlEventHandlerList != null && this.sqlEventHandlerList.size() > 0) {
+            for (int i = 0; i < sqlEventHandlerList.size(); i++) {
+                SQLEventHandler sqlEventHandler = sqlEventHandlerList.get(i);
+                sqlEventHandler.sqlInvokeBefore(event, sql, o);
+            }
+        }
+    }
+
+    private void sqlInvokeAfter(SqlCommandType event, String sql, Object request, Object result) {
+        if (this.sqlEventHandlerList != null && this.sqlEventHandlerList.size() > 0) {
+            for (int i = 0; i < sqlEventHandlerList.size(); i++) {
+                SQLEventHandler sqlEventHandler = sqlEventHandlerList.get(i);
+                sqlEventHandler.sqlInvokeAfter(event, sql, request, result);
+            }
+        }
+    }
+
     /**
      * 修改数据操作
      *
@@ -505,9 +566,11 @@ public class BasicBaseDao {
      */
     public int update(String sql, Object o) throws Exception {
         JdbcParamsModel jdbcParamsModel = commonParseSql(sql, o);
+        sqlInvokeBefore(SqlCommandType.UPDATE, sql, o);
         long start = System.currentTimeMillis();
         int update = this.jdbcTemplate.update(jdbcParamsModel.getSql(), jdbcParamsModel.getObjects());
         long time = System.currentTimeMillis() - start;
+        sqlInvokeAfter(SqlCommandType.UPDATE, sql, o, update);
         logger.debug(" SQL 执行耗时 : " + time);
         return update;
     }

+ 2 - 2
elab-db/src/main/java/com/elab/core/dao/params/NamedParameterUtils2.java

@@ -680,7 +680,7 @@ public abstract class NamedParameterUtils2 {
         }
 
         OrderBySearch orderBy = search.getOrderBy();
-        if (StringUtils.isNotEmpty(orderBy.getField())) {
+        if (orderBy != null && StringUtils.isNotEmpty(orderBy.getField())) {
             sb.append(" order by " + orderBy.getField() + " " + orderBy.getSortType());
         }
 
@@ -690,7 +690,7 @@ public abstract class NamedParameterUtils2 {
         }
 
         List<LikeSearch> likeSearches = search.getLikeSearches();
-        if (likeSearches.size() > 0) {
+        if (likeSearches != null && likeSearches.size() > 0) {
             for (int i = 0; i < likeSearches.size(); i++) {
                 LikeSearch likeSearch = likeSearches.get(i);
                 sb.append(" and " + likeSearch.getField() + " like '" + likeSearch.getValue() + "'");

+ 7 - 7
elab-db/src/main/java/com/elab/core/spring/binding/DaoMethod.java

@@ -80,7 +80,7 @@ public class DaoMethod {
     /**
      * 自动生成的SQL对象接口
      */
-    private List<ISQLBuliderSupport> sqlBuliderSupportList = new ArrayList<ISQLBuliderSupport>();
+    private List<ISQLBuliderSupport> sqlBuilderSupportList = new ArrayList<ISQLBuliderSupport>();
 
     /**
      * 缓存一些反射的信息
@@ -123,7 +123,7 @@ public class DaoMethod {
         // 配置工厂
         this.configurableFactory = configurableFactory;
         //默认先将初始化的sql构建加入进来
-        this.sqlBuliderSupportList.add(new DefaultSQLBuilderSupport());
+        this.sqlBuilderSupportList.add(new DefaultSQLBuilderSupport());
         // 类的信息提取
         // 父类的接口类
         this.supperInterfaceName = mapperInterface.getGenericInterfaces()[0].getTypeName();
@@ -409,7 +409,7 @@ public class DaoMethod {
      * @throws Exception
      */
     private boolean createSql(String statementName) throws Exception {
-        List<ISQLBuliderSupport> sqlBuliderSupportList = getSqlBuliderSupportList();
+        List<ISQLBuliderSupport> sqlBuliderSupportList = getSqlBuilderSupportList();
         String sql = "";
         boolean isSQLNotNull = false;
         for (int i = 0; i < sqlBuliderSupportList.size(); i++) {
@@ -428,11 +428,11 @@ public class DaoMethod {
     }
 
 
-    public List<ISQLBuliderSupport> getSqlBuliderSupportList() {
-        return sqlBuliderSupportList;
+    public List<ISQLBuliderSupport> getSqlBuilderSupportList() {
+        return sqlBuilderSupportList;
     }
 
-    public void setSqlBuliderSupportList(List<ISQLBuliderSupport> sqlBuliderSupportList) {
-        this.sqlBuliderSupportList = sqlBuliderSupportList;
+    public void setSqlBuilderSupportList(List<ISQLBuliderSupport> sqlBuilderSupportList) {
+        this.sqlBuilderSupportList = sqlBuilderSupportList;
     }
 }

+ 5 - 1
elab-db/src/main/java/com/elab/core/spring/common/utils/DataUtils.java

@@ -555,7 +555,11 @@ public class DataUtils {
                 }
             }
         }
-        model.setMap(dataMap);
+        if (model.getMap() != null) {
+            model.getMap().putAll(dataMap);
+        } else {
+            model.setMap(dataMap);
+        }
         model.setObj(dataList.toArray());
         return model;
     }

+ 8 - 0
elab-db/src/main/java/com/elab/core/spring/config/BasicDaoConfig.java

@@ -18,6 +18,12 @@ import javax.sql.DataSource;
 @Configuration
 public class BasicDaoConfig {
 
+//    @Autowired(required = false)
+//    private List<SQLEventHandler> sqlEventHandlerList;
+//
+//    @Autowired(required = false)
+//    private CheckSqlProcess checkSqlProcess;
+
     @Bean
     public JdbcTemplate jdbcTemplate(@Autowired DataSource dataSource) {
         JdbcTemplate jdbcTemplate = new JdbcTemplate();
@@ -29,6 +35,8 @@ public class BasicDaoConfig {
     public BasicBaseDao basicBaseDao(@Autowired JdbcTemplate jdbcTemplate) {
         BasicBaseDao basicBaseDao = new BasicBaseDao();
         basicBaseDao.setJdbcTemplate(jdbcTemplate);
+//        basicBaseDao.setSqlEventHandlerList(sqlEventHandlerList);
+//        basicBaseDao.setCheckSqlProcess(checkSqlProcess);
         return basicBaseDao;
     }
 }

+ 17 - 0
elab-db/src/main/java/com/elab/core/spring/method/SQLEventHandler.java

@@ -0,0 +1,17 @@
+package com.elab.core.spring.method;
+
+import com.elab.core.sql.config.SqlCommandType;
+
+/**
+ * SQL执行触发事件
+ *
+ * @author : liukx
+ * @time : 2020/4/29 - 17:26
+ */
+public interface SQLEventHandler {
+
+    public void sqlInvokeBefore(SqlCommandType sqlCommandType, String sql, Object params);
+
+    public void sqlInvokeAfter(SqlCommandType sqlCommandType, String sql, Object params, Object result);
+
+}

+ 22 - 0
elab-db/src/main/java/com/elab/core/spring/method/SQLEventHandlerAdaptor.java

@@ -0,0 +1,22 @@
+package com.elab.core.spring.method;
+
+import com.elab.core.sql.config.SqlCommandType;
+
+/**
+ * 默认的sql事件处理器
+ *
+ * @author : liukx
+ * @time : 2020/4/29 - 17:44
+ */
+public class SQLEventHandlerAdaptor implements SQLEventHandler {
+
+    @Override
+    public void sqlInvokeBefore(SqlCommandType sqlCommandType, String sql, Object params) {
+
+    }
+
+    @Override
+    public void sqlInvokeAfter(SqlCommandType sqlCommandType, String sql, Object params, Object result) {
+
+    }
+}

+ 5 - 0
elab-db/src/test/java/com.db.service/dao/ITestDao.java

@@ -4,10 +4,12 @@ import com.db.service.model.TTest;
 import com.db.service.model.TTest2;
 import com.elab.core.aop.annotations.FieldParam;
 import com.elab.core.aop.annotations.XmlGroupName;
+import com.elab.core.bean.PageModel;
 import com.elab.core.dao.IBaseDaoSupport;
 import com.elab.core.dao.model.ListDynamicSearch;
 import org.springframework.jdbc.core.RowMapper;
 
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -32,4 +34,7 @@ public interface ITestDao extends IBaseDaoSupport<TTest> {
 
     public int[] batchInsert(Object list);
 
+    PageModel<Map> getTestPageListMap(PageModel page, LinkedHashMap params) throws Exception;
+
+
 }

+ 33 - 0
elab-db/src/test/java/com.db.service/main/BasicBaseDaoCase.java

@@ -1,14 +1,19 @@
 package com.db.service.main;
 
+import com.alibaba.fastjson.JSON;
 import com.db.service.model.TTest;
 import com.elab.core.dao.BasicBaseDao;
+import com.elab.core.dao.model.JdbcParamsModel;
 import com.elab.core.sql.ConfigurableFactory;
+import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
+import java.util.Map;
+
 /**
  * 基于拓展的测试用例
  *
@@ -88,5 +93,33 @@ public class BasicBaseDaoCase {
         System.out.println(integer);
     }
 
+    @Test
+    public void testSql() throws Exception {
+        String json = "{\"houseId\":10151,\"writeType\":1,\"keyword1\":\"%%\",\"keyword2\n" +
+                "\":\"%%\"}";
+        Map map = JSON.parseObject(json, Map.class);
+        String sql = "select distinct a.id,a.name,a.mobile,a.sex,a.head,a.online_status,a.video_online_status,\n" +
+                "        a.wxno,a.im_adviser,a.video_adviser,a.agent,a.honor,d.id organize_id,\n" +
+                "        d.name organize_name,b.user_id worker_id,b.follow_service,b.toker_service,\n" +
+                "        b.writer,b.write_time,b.write_type,b.status,b.recommend,a.photo,a.email from worker_account a\n" +
+                "        left join organize_user_rlat b on b.user_id = a.id\n" +
+                "        left join organize d on d.id = b.organize_id\n" +
+                "        left join t_dm_organize_house_rlat f on f.organize_id = d.id and f.house_id = b.house_id\n" +
+                "        where d.status = 1 and f.status = 1 and b.house_id = :houseId and b.write_type = :writeType\n" +
+                "        and b.organize_id = :organizeId and (a.name like :keyword1 or a.mobile like :keyword2)\n" +
+                "        order by ifnull(b.updated,b.created) desc";
+        String okSql = "select distinct a.id,a.name,a.mobile,a.sex,a.head,a.online_status,a.video_online_status,\n" +
+                "        a.wxno,a.im_adviser,a.video_adviser,a.agent,a.honor,d.id organize_id,\n" +
+                "        d.name organize_name,b.user_id worker_id,b.follow_service,b.toker_service,\n" +
+                "        b.writer,b.write_time,b.write_type,b.status,b.recommend,a.photo,a.email from worker_account a\n" +
+                "        left join organize_user_rlat b on b.user_id = a.id\n" +
+                "        left join organize d on d.id = b.organize_id\n" +
+                "        left join t_dm_organize_house_rlat f on f.organize_id = d.id and f.house_id = b.house_id\n" +
+                "        where d.status = 1 and f.status = 1 and b.house_id = ? and b.write_type = ?  and (a.name like ? )\n" +
+                "        order by ifnull(b.updated,b.created) desc";
+        JdbcParamsModel model = basicBaseDao.commonParseSql(sql, map);
+        Assert.assertTrue(model.getSql().equals(okSql));
+    }
+
 
 }

+ 21 - 4
elab-db/src/test/java/com.db.service/main/BasicBaseDaoProxyCase.java

@@ -173,7 +173,6 @@ public class BasicBaseDaoProxyCase {
 
         Integer count = testDao.selectByObjectToCount(test);
 
-
         ListDynamicSearch search = getListDynamicSearch();
         Integer count1 = testDao.selectByObjectToCount(test, search);
         System.out.println(count + "\t" + count1);
@@ -233,9 +232,9 @@ public class BasicBaseDaoProxyCase {
 //                .build();
         ListDynamicSearch.newBuilder().addInSearches("id", list)
                 .limit(1)
-                .addLikeSearches("","")
-                .dataRangeSearches("time",new Date(),new Date())
-                .orderBy("id",OrderBySearch.DESC);
+                .addLikeSearches("", "")
+                .dataRangeSearches("time", new Date(), new Date())
+                .orderBy("id", OrderBySearch.DESC);
         // 普通方法追加动态参数
 //        ListDynamicSearch listDynamicSearch = getListDynamicSearch();
         List<TTest> tTests = testDao.getTestList2(test, listDynamicSearch);
@@ -283,6 +282,24 @@ public class BasicBaseDaoProxyCase {
         Assert.assertTrue(ints.length > 0);
     }
 
+    @Test
+    public void testPageListMap() throws Exception {
+        PageModel pageModel = new PageModel(0, 0, 10);
+        String json = "{\"status\":1}";
+        LinkedHashMap linkedHashMap = JSON.parseObject(json, LinkedHashMap.class);
+        PageModel<Map> mapPageModel = testDao.getTestPageListMap(pageModel, linkedHashMap);
+        System.out.println("====");
+    }
+//    @Test
+//    public void test1() throws Exception {
+//        PageModel pageModel = new PageModel(0, 0, 10);
+//        String json = "{\"houseId\":10151,\"writeType\":1,\"keyword1\":\"%%\",\"keyword2\n" +
+//                "\":\"%%\"}";
+//        LinkedHashMap linkedHashMap = JSON.parseObject(json, LinkedHashMap.class);
+//        PageModel<Map> mapPageModel = testDao.selectOrganizeMembsersByPage(pageModel, linkedHashMap);
+//        System.out.println("====");
+//    }
+
 //    public static void main(String[] args) {
 //        BasicBaseDaoCase basicBaseDaoCase = new BasicBaseDaoCase();
 //        basicBaseDaoCase.executeQueryforListMap();

+ 22 - 0
elab-db/src/test/resources/sql/test-sql.xml

@@ -94,4 +94,26 @@
         where
         status = :status
     </sql>
+
+    <sql id="getTestPageListMap">
+        select
+        id
+        ,username,name,sex,status,created,time,test_id,love_name
+        from t_test
+        where
+        status = :status
+    </sql>
+
+    <sql id="selectOrganizeMembsersByPage">
+        select distinct a.id,a.name,a.mobile,a.sex,a.head,a.online_status,a.video_online_status,
+        a.wxno,a.im_adviser,a.video_adviser,a.agent,a.honor,d.id organize_id,
+        d.name organize_name,b.user_id worker_id,b.follow_service,b.toker_service,
+        b.writer,b.write_time,b.write_type,b.status,b.recommend,a.photo,a.email from worker_account a
+        left join organize_user_rlat b on b.user_id = a.id
+        left join organize d on d.id = b.organize_id
+        left join t_dm_organize_house_rlat f on f.organize_id = d.id and f.house_id = b.house_id
+        where d.status = 1 and f.status = 1 and b.house_id = :houseId and b.write_type = :writeType
+        and b.organize_id = :organizeId and (a.name like :keyword1 or a.mobile like :keyword2)
+        order by ifnull(b.updated,b.created) desc
+    </sql>
 </sqlGroup>

+ 1 - 1
elab-es/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>elab-parent</artifactId>
         <groupId>com.elab.core</groupId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
elab-log/pom.xml

@@ -7,7 +7,7 @@
     <parent>
         <groupId>com.elab.core</groupId>
         <artifactId>elab-parent</artifactId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
 
     <groupId>com.elab.log</groupId>

+ 1 - 1
elab-mongodb/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>elab-parent</artifactId>
         <groupId>com.elab.core</groupId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
elab-mq/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>elab-parent</artifactId>
         <groupId>com.elab.core</groupId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 16 - 6
elab-mq/src/main/java/com/elab/mq/config/RocketMQConfiguration.java

@@ -7,6 +7,8 @@ import com.elab.mq.listener.AbstractMessageListener;
 import com.elab.mq.listener.MessageListenerWrapper;
 import com.elab.mq.msg.IMsgProducerFacade;
 import com.elab.mq.msg.impl.MsgProducerImpl;
+import com.google.common.base.Splitter;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,10 +18,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.core.env.Environment;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
+import java.util.*;
 
 /**
  * rocketMQ消息队列的配置
@@ -50,14 +49,25 @@ public class RocketMQConfiguration {
             messageListenerWrapper, @Autowired List<AbstractMessageListener> messageListeners) {
         Consumer consumer = ONSFactory.createConsumer(mqProperties(env));
         if (messageListeners.size() > 0) {
+            Map<String, Set<String>> topicMap = new LinkedHashMap<>();
             Set<String> existTopic = new HashSet<>();
             for (int i = 0; i < messageListeners.size(); i++) {
                 AbstractMessageListener abstractMessageListener = messageListeners.get(i);
                 String topic = abstractMessageListener.topic();
+                Set<String> tags = topicMap.get(topic);
+                if (tags == null) {
+                    tags = new HashSet<>();
+                    topicMap.put(topic, tags);
+                }
                 String tag = abstractMessageListener.tag();
-                consumer.subscribe(topic, tag, messageListenerWrapper);
-                logger.debug(" MQ 消费者注册 -> topic : {} , tag : {} ,class : {}", topic, tag, abstractMessageListener.toString());
+                List<String> tagList = Splitter.on("||").trimResults().omitEmptyStrings().splitToList(tag);
+                tags.addAll(tagList);
             }
+            topicMap.forEach((K, V) -> {
+                String tag = StringUtils.join(V.toArray(), " || ");
+                consumer.subscribe(K, tag, messageListenerWrapper);
+                logger.debug(" MQ 消费者注册 -> topic : {} , tag : {}", K, tag);
+            });
             consumer.start();
         }
         return consumer;

+ 1 - 1
elab-mq/src/main/java/com/elab/mq/listener/AbstractMessageListener.java

@@ -151,7 +151,7 @@ public abstract class AbstractMessageListener implements MessageListener {
             t.setSuccessStatus();
         } catch (Exception e) {
             t.setStatus(e);
-            logger.debug("消息处理异常 : " + action);
+            logger.error("消息处理异常 : ", e);
             e.printStackTrace();
             return Action.ReconsumeLater;
         } finally {

+ 1 - 1
elab-rocketMQ/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>elab-parent</artifactId>
         <groupId>com.elab.core</groupId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
elab-spring/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>elab-parent</artifactId>
         <groupId>com.elab.core</groupId>
-        <version>2.0.4.12-SNAPSHOT</version>
+        <version>2.0.4.13-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
pom.xml

@@ -7,7 +7,7 @@
     <groupId>com.elab.core</groupId>
     <artifactId>elab-parent</artifactId>
     <packaging>pom</packaging>
-    <version>2.0.4.12-SNAPSHOT</version>
+    <version>2.0.4.13-SNAPSHOT</version>
     <modules>
         <module>elab-core</module>
         <module>elab-cache</module>