Forráskód Böngészése

优化代码:
1. MQ异常消息不记录的问题
2. SQL拦截影响行数过多的情况

liukaixiong 4 éve
szülő
commit
f6894adba4

+ 20 - 4
elab-db/src/main/java/com/elab/core/spring/method/DefaultCheckSQLProcess.java

@@ -1,8 +1,12 @@
 package com.elab.core.spring.method;
 
+import com.alibaba.druid.sql.SQLUtils;
+import com.alibaba.druid.sql.ast.SQLStatement;
 import com.elab.core.dao.model.JdbcParamsModel;
 import com.elab.core.exception.CoreException;
 
+import java.util.List;
+
 /**
  * 默认的SQL检验执行
  *
@@ -18,6 +22,8 @@ public class DefaultCheckSQLProcess implements CheckSqlProcess {
 
     private final String insertType = "insert";
 
+    private final String deleteType = "delete";
+
     @Override
     public void checkProcess(JdbcParamsModel model, Object o) throws Exception {
 
@@ -26,9 +32,9 @@ public class DefaultCheckSQLProcess implements CheckSqlProcess {
 //        if (o == null && isUpdate(sql) && isUpdate(sql)) {
 //            throw new CoreException(" 当前SQL执行,参数不能为null ");
 //        }
-
-        if (isUpdate(sql) && sql.indexOf(whereName) < 0) {
-            throw new CoreException(" 每个UPDATE - SQL执行,where条件后面必须有一个参数以上 ");
+        // List<SQLStatement> mysql = SQLUtils.parseStatements(model.getSql(), "mysql");
+        if (sql.toLowerCase().indexOf(whereName) < 0) {
+            throw new CoreException("where条件后面必须有一个参数以上");
         }
 
     }
@@ -40,7 +46,11 @@ public class DefaultCheckSQLProcess implements CheckSqlProcess {
      * @return
      */
     private boolean isUpdate(String sql) {
-        return sql.toLowerCase().startsWith(updateType);
+        return sql.toLowerCase().trim().startsWith(updateType);
+    }
+
+    private boolean isDelete(String sql) {
+        return sql.toLowerCase().trim().startsWith(deleteType);
     }
 
     /**
@@ -52,4 +62,10 @@ public class DefaultCheckSQLProcess implements CheckSqlProcess {
     private boolean isInsert(String sql) {
         return sql.toLowerCase().startsWith(insertType);
     }
+
+    public static void main(String[] args) {
+        String sql = "update c_user_info set updated = ?,\n" +
+                "mobile_time = ?, source = ? and brand_id = ? and user_id = ?";
+
+    }
 }

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

@@ -41,5 +41,6 @@ public interface ITestDao extends IBaseDaoSupport<TTest> {
 
     public int updateByExample(TTest test);
 
+    public int updateUserInfo(LinkedHashMap params);
 
 }

+ 13 - 7
elab-db/src/test/java/com.db.service/main/BasicBaseDaoProxyCase.java

@@ -56,13 +56,19 @@ public class BasicBaseDaoProxyCase {
 
     @Test
     public void testUpdateCase() throws Exception {
-        TTest test = new TTest();
-        test.setId(1);
-        test.setStatus("1");
-        test.setUsername("某某某xx33333333");
-        int insert = testDao.updateById(test);
-        System.out.println(insert);
-        Assert.assertTrue(insert > 0);
+//        TTest test = new TTest();
+//        test.setId(1);
+//        test.setStatus("1");
+//        test.setLoveName("aaaaa");
+//        test.setUsername("某某某xx33333333");
+//        int insert = testDao.updateById(test);
+//        System.out.println(insert);
+
+        String json = "{\"brandId\":1,\"dispatchOrderStatus\":1,\"mobileTime\":1614061782345,\"source\":1,\"updated\":1614061782345,\"userId\":34958}";
+        LinkedHashMap map = JSON.parseObject(json, LinkedHashMap.class);
+        map.put("houseId","100");
+        int i = testDao.updateUserInfo(map);
+//        Assert.assertTrue(insert > 0);
     }
 
     @Test

+ 8 - 1
elab-db/src/test/resources/sql/test-sql.xml

@@ -126,6 +126,13 @@
     </sql>
 
     <sql id="updateByExample">
-        update t_test set love_name=:loveName  where name = :name
+        update t_test set love_name=:loveName  where status = :status and name = :name
+    </sql>
+
+    <sql id="updateUserInfo">
+        update c_user_info set updated = :updated, real_name = :realName,
+        report_name = :reportName, visit_name = :visitName, validate_name = :validateName,
+        mobile_time = :mobileTime, other_name = :otherName, source = :source
+        where house_id = :houseId and brand_id = :brandId and  user_id = :userId
     </sql>
 </sqlGroup>

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

@@ -56,16 +56,20 @@ public class MessageListenerWrapper implements MessageListener {
                             Action actionResult = abstractMessageListener.consume(message, consumeContext);
                             if (actionResult == null || Action.ReconsumeLater == actionResult) {
                                 logger.warn(" MQ 消费失败 : " + abstractMessageListener);
+                                long time = System.currentTimeMillis() - start;
+                                RocketMonitorUtils.sendConsumerMonitorData(message, -1, time);
                                 return Action.ReconsumeLater;
                             }
                         }
                     }
                     long time = System.currentTimeMillis() - start;
                     RocketMonitorUtils.sendConsumerMonitorData(message, 1, time);
+                    logger.info("消费成功");
                     return Action.CommitMessage;
                 });
             } catch (Exception e) {
-                e.printStackTrace();
+                logger.error("未知异常", e);
+                RocketMonitorUtils.sendConsumerMonitorData(message, -1, -1L);
                 return Action.ReconsumeLater;
             }
         }

+ 220 - 235
elab-mq/src/main/java/com/elab/mq/model/ConsumerEntity.java

@@ -1,235 +1,220 @@
-//package com.elab.mq.model;
-//
-//import io.swagger.annotations.ApiModel;
-//import io.swagger.annotations.ApiModelProperty;
-//
-//import javax.persistence.Column;
-//import javax.persistence.Id;
-//import javax.persistence.Table;
-//import java.util.Date;
-//
-///**
-// * @author liuhx
-// * @create 2019/05/16 19:32
-// * @email liuhx@elab-plus.com
-// **/
-//@Table(name = "mq_consumer", catalog = "elab_db")
-//@ApiModel(description = "消息队列生产者 实体")
-//public class ConsumerEntity {
-//
-//    @Id
-//    @ApiModelProperty(name = "id", value = "主键")
-//    private Integer id;
-//
-//    @Column(name = "producer_id")
-//    @ApiModelProperty(name = "producer_id", value = "生产者id")
-//    private Integer producerId;
-//
-//    @Column(name = "module_name")
-//    @ApiModelProperty(name = "moduleName", value = "微服务模块名")
-//    private String moduleName;
-//    @Column(name = "msg_id")
-//    @ApiModelProperty(name = "msgId", value = "MQ的消息编号")
-//    private String msgId;
-//
-//    @Column(name = "module_method")
-//    @ApiModelProperty(name = "moduleMethod", value = "模块方法")
-//    private String moduleMethod;
-//    @Column(name = "tag")
-//    @ApiModelProperty(name = "tag", value = "标签 业务区分标识")
-//    private String tag;
-//    @Column(name = "cat_id")
-//    @ApiModelProperty(name = "catId", value = "监控链路编号")
-//    private String catId;
-//
-//    @Column(name = "house_id")
-//    @ApiModelProperty(name = "houseId", value = "项目id")
-//    private Integer houseId;
-//
-//    @Column(name = "topic_id")
-//    @ApiModelProperty(name = "topicId", value = "队列通道id")
-//    private String topicId;
-//
-//    @Column(name = "content")
-//    @ApiModelProperty(name = "content", value = "内容")
-//    private String content;
-//
-//    @Column(name = "consumer_status")
-//    @ApiModelProperty(name = "consumerStatus", value = "消费者状态 1成功-1失败")
-//    private Integer consumerStatus;
-//
-//    @Column(name = "retry_count")
-//    @ApiModelProperty(name = "retryCount", value = "失败重试次数")
-//    private Integer retryCount;
-//
-//    /**
-//     * 状态:1  有效  -1  无效
-//     */
-//    @Column(name = "status")
-//    @ApiModelProperty(name = "status", value = "状态:1  有效  -1  无效")
-//    private Integer status;
-//
-//    /**
-//     * 创建时间
-//     */
-//    @Column(name = "created")
-//    @ApiModelProperty(name = "created", value = "创建时间")
-//    private Date created;
-//
-//    /**
-//     * 修改时间
-//     */
-//    @Column(name = "updated")
-//    @ApiModelProperty(name = "updated", value = "修改时间")
-//    private Date updated;
-//
-//    /**
-//     * 创建者
-//     */
-//    @Column(name = "creator")
-//    @ApiModelProperty(name = "creator", value = "创建者")
-//    private String creator;
-//
-//    /**
-//     * 修改者
-//     */
-//    @Column(name = "updator")
-//    @ApiModelProperty(name = "updator", value = "修改者")
-//    private String updator;
-//
-//    public String getTag() {
-//        return tag;
-//    }
-//
-//    public String getCatId() {
-//        return catId;
-//    }
-//
-//    public void setCatId(String catId) {
-//        this.catId = catId;
-//    }
-//
-//    public void setTag(String tag) {
-//        this.tag = tag;
-//    }
-//
-//    public String getMsgId() {
-//        return msgId;
-//    }
-//
-//    public void setMsgId(String msgId) {
-//        this.msgId = msgId;
-//    }
-//
-//    public String getModuleMethod() {
-//        return moduleMethod;
-//    }
-//
-//    public void setModuleMethod(String moduleMethod) {
-//        this.moduleMethod = moduleMethod;
-//    }
-//
-//    public Integer getId() {
-//        return id;
-//    }
-//
-//    public void setId(Integer id) {
-//        this.id = id;
-//    }
-//
-//    public Integer getProducerId() {
-//        return producerId;
-//    }
-//
-//    public void setProducerId(Integer producerId) {
-//        this.producerId = producerId;
-//    }
-//
-//    public String getModuleName() {
-//        return moduleName;
-//    }
-//
-//    public void setModuleName(String moduleName) {
-//        this.moduleName = moduleName;
-//    }
-//
-//    public Integer getHouseId() {
-//        return houseId;
-//    }
-//
-//    public void setHouseId(Integer houseId) {
-//        this.houseId = houseId;
-//    }
-//
-//    public String getTopicId() {
-//        return topicId;
-//    }
-//
-//    public void setTopicId(String topicId) {
-//        this.topicId = topicId;
-//    }
-//
-//    public String getContent() {
-//        return content;
-//    }
-//
-//    public void setContent(String content) {
-//        this.content = content;
-//    }
-//
-//    public Integer getConsumerStatus() {
-//        return consumerStatus;
-//    }
-//
-//    public void setConsumerStatus(Integer consumerStatus) {
-//        this.consumerStatus = consumerStatus;
-//    }
-//
-//    public Integer getRetryCount() {
-//        return retryCount;
-//    }
-//
-//    public void setRetryCount(Integer retryCount) {
-//        this.retryCount = retryCount;
-//    }
-//
-//    public Integer getStatus() {
-//        return status;
-//    }
-//
-//    public void setStatus(Integer status) {
-//        this.status = status;
-//    }
-//
-//    public Date getCreated() {
-//        return created;
-//    }
-//
-//    public void setCreated(Date created) {
-//        this.created = created;
-//    }
-//
-//    public Date getUpdated() {
-//        return updated;
-//    }
-//
-//    public void setUpdated(Date updated) {
-//        this.updated = updated;
-//    }
-//
-//    public String getCreator() {
-//        return creator;
-//    }
-//
-//    public void setCreator(String creator) {
-//        this.creator = creator;
-//    }
-//
-//    public String getUpdator() {
-//        return updator;
-//    }
-//
-//    public void setUpdator(String updator) {
-//        this.updator = updator;
-//    }
-//}
+package com.elab.mq.model;
+
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * @author liuhx
+ * @create 2019/05/16 19:32
+ * @email liuhx@elab-plus.com
+ **/
+@Table(name = "mq_consumer", catalog = "elab_db")
+public class ConsumerEntity {
+
+    @Id
+    private Integer id;
+
+    @Column(name = "producer_id")
+    private Integer producerId;
+
+    @Column(name = "module_name")
+    private String moduleName;
+    @Column(name = "msg_id")
+    private String msgId;
+
+    @Column(name = "module_method")
+    private String moduleMethod;
+    @Column(name = "tag")
+    private String tag;
+    @Column(name = "cat_id")
+    private String catId;
+
+    @Column(name = "house_id")
+    private Integer houseId;
+
+    @Column(name = "topic_id")
+    private String topicId;
+
+    @Column(name = "content")
+    private String content;
+
+    @Column(name = "consumer_status")
+    private Integer consumerStatus;
+
+    @Column(name = "retry_count")
+    private Integer retryCount;
+
+    /**
+     * 状态:1  有效  -1  无效
+     */
+    @Column(name = "status")
+    
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    @Column(name = "created")
+    
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+    @Column(name = "updated")
+    
+    private Date updated;
+
+    /**
+     * 创建者
+     */
+    @Column(name = "creator")
+    
+    private String creator;
+
+    /**
+     * 修改者
+     */
+    @Column(name = "updator")
+    
+    private String updator;
+
+    public String getTag() {
+        return tag;
+    }
+
+    public String getCatId() {
+        return catId;
+    }
+
+    public void setCatId(String catId) {
+        this.catId = catId;
+    }
+
+    public void setTag(String tag) {
+        this.tag = tag;
+    }
+
+    public String getMsgId() {
+        return msgId;
+    }
+
+    public void setMsgId(String msgId) {
+        this.msgId = msgId;
+    }
+
+    public String getModuleMethod() {
+        return moduleMethod;
+    }
+
+    public void setModuleMethod(String moduleMethod) {
+        this.moduleMethod = moduleMethod;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getProducerId() {
+        return producerId;
+    }
+
+    public void setProducerId(Integer producerId) {
+        this.producerId = producerId;
+    }
+
+    public String getModuleName() {
+        return moduleName;
+    }
+
+    public void setModuleName(String moduleName) {
+        this.moduleName = moduleName;
+    }
+
+    public Integer getHouseId() {
+        return houseId;
+    }
+
+    public void setHouseId(Integer houseId) {
+        this.houseId = houseId;
+    }
+
+    public String getTopicId() {
+        return topicId;
+    }
+
+    public void setTopicId(String topicId) {
+        this.topicId = topicId;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Integer getConsumerStatus() {
+        return consumerStatus;
+    }
+
+    public void setConsumerStatus(Integer consumerStatus) {
+        this.consumerStatus = consumerStatus;
+    }
+
+    public Integer getRetryCount() {
+        return retryCount;
+    }
+
+    public void setRetryCount(Integer retryCount) {
+        this.retryCount = retryCount;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreated() {
+        return created;
+    }
+
+    public void setCreated(Date created) {
+        this.created = created;
+    }
+
+    public Date getUpdated() {
+        return updated;
+    }
+
+    public void setUpdated(Date updated) {
+        this.updated = updated;
+    }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+
+    public String getUpdator() {
+        return updator;
+    }
+
+    public void setUpdator(String updator) {
+        this.updator = updator;
+    }
+}

+ 210 - 213
elab-mq/src/main/java/com/elab/mq/model/ProducerEntity.java

@@ -1,213 +1,210 @@
-//package com.elab.mq.model;
-//
-//import io.swagger.annotations.ApiModel;
-//import io.swagger.annotations.ApiModelProperty;
-//
-//import javax.persistence.Column;
-//import javax.persistence.Id;
-//import javax.persistence.Table;
-//import java.util.Date;
-//
-///**
-// * @author liuhx
-// * @create 2019/05/16 19:32
-// * @email liuhx@elab-plus.com
-// **/
-//@Table(name = "mq_producer", catalog = "elab_db")
-//@ApiModel(description = "消息队列生产者 实体")
-//public class ProducerEntity {
-//
-//    @Id
-//    @ApiModelProperty(name = "id", value = "主键")
-//    private Integer id;
-//
-//    @Column(name = "module_name")
-//    @ApiModelProperty(name = "moduleName", value = "微服务模块名")
-//    private String moduleName;
-//
-//    @Column(name = "house_id")
-//    @ApiModelProperty(name = "houseId", value = "项目id")
-//    private Integer houseId;
-//
-//    @Column(name = "producer_status")
-//    @ApiModelProperty(name = "producerStatus", value = "生产者状态 1成功-1失败")
-//    private Integer producerStatus;
-//
-//    @Column(name = "group_id")
-//    @ApiModelProperty(name = "groupId", value = "队列的groupId")
-//    private String groupId;
-//
-//    @Column(name = "topic_id")
-//    @ApiModelProperty(name = "topicId", value = "队列通道id")
-//    private String topicId;
-//
-//    @Column(name = "content")
-//    @ApiModelProperty(name = "content", value = "内容")
-//    private String content;
-//
-//    @Column(name = "result_content")
-//    @ApiModelProperty(name = "resultContent", value = "返回结果内容")
-//    private String resultContent;
-//
-//    @Column(name = "cat_id")
-//    @ApiModelProperty(name = "catId", value = "链路编号")
-//    private String catId;
-//    @Column(name = "tag")
-//    @ApiModelProperty(name = "tag", value = "标签名称")
-//    private String tag;
-//
-//    /**
-//     * 状态:1  有效  -1  无效
-//     */
-//    @Column(name = "status")
-//    @ApiModelProperty(name = "status", value = "状态:1  有效  -1  无效")
-//    private Integer status;
-//
-//    /**
-//     * 创建时间
-//     */
-//    @Column(name = "created")
-//    @ApiModelProperty(name = "created", value = "创建时间")
-//    private Date created;
-//
-//    /**
-//     * 修改时间
-//     */
-//    @Column(name = "updated")
-//    @ApiModelProperty(name = "updated", value = "修改时间")
-//    private Date updated;
-//
-//    /**
-//     * 创建者
-//     */
-//    @Column(name = "creator")
-//    @ApiModelProperty(name = "creator", value = "创建者")
-//    private String creator;
-//
-//    /**
-//     * 修改者
-//     */
-//    @Column(name = "updator")
-//    @ApiModelProperty(name = "updator", value = "修改者")
-//    private String updator;
-//
-//    public String getCatId() {
-//        return catId;
-//    }
-//
-//    public void setCatId(String catId) {
-//        this.catId = catId;
-//    }
-//
-//    public String getTag() {
-//        return tag;
-//    }
-//
-//    public void setTag(String tag) {
-//        this.tag = tag;
-//    }
-//
-//    public String getResultContent() {
-//        return resultContent;
-//    }
-//
-//    public void setResultContent(String resultContent) {
-//        this.resultContent = resultContent;
-//    }
-//
-//    public Integer getId() {
-//        return id;
-//    }
-//
-//    public void setId(Integer id) {
-//        this.id = id;
-//    }
-//
-//    public String getModuleName() {
-//        return moduleName;
-//    }
-//
-//    public void setModuleName(String moduleName) {
-//        this.moduleName = moduleName;
-//    }
-//
-//    public Integer getHouseId() {
-//        return houseId;
-//    }
-//
-//    public void setHouseId(Integer houseId) {
-//        this.houseId = houseId;
-//    }
-//
-//    public Integer getProducerStatus() {
-//        return producerStatus;
-//    }
-//
-//    public void setProducerStatus(Integer producerStatus) {
-//        this.producerStatus = producerStatus;
-//    }
-//
-//    public String getGroupId() {
-//        return groupId;
-//    }
-//
-//    public void setGroupId(String groupId) {
-//        this.groupId = groupId;
-//    }
-//
-//    public String getTopicId() {
-//        return topicId;
-//    }
-//
-//    public void setTopicId(String topicId) {
-//        this.topicId = topicId;
-//    }
-//
-//    public String getContent() {
-//        return content;
-//    }
-//
-//    public void setContent(String content) {
-//        this.content = content;
-//    }
-//
-//    public Integer getStatus() {
-//        return status;
-//    }
-//
-//    public void setStatus(Integer status) {
-//        this.status = status;
-//    }
-//
-//    public Date getCreated() {
-//        return created;
-//    }
-//
-//    public void setCreated(Date created) {
-//        this.created = created;
-//    }
-//
-//    public Date getUpdated() {
-//        return updated;
-//    }
-//
-//    public void setUpdated(Date updated) {
-//        this.updated = updated;
-//    }
-//
-//    public String getCreator() {
-//        return creator;
-//    }
-//
-//    public void setCreator(String creator) {
-//        this.creator = creator;
-//    }
-//
-//    public String getUpdator() {
-//        return updator;
-//    }
-//
-//    public void setUpdator(String updator) {
-//        this.updator = updator;
-//    }
-//}
+package com.elab.mq.model;
+
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * @author liuhx
+ * @create 2019/05/16 19:32
+ * @email liuhx@elab-plus.com
+ **/
+@Table(name = "mq_producer", catalog = "elab_db") 
+public class ProducerEntity {
+
+    @Id
+    
+    private Integer id;
+
+    @Column(name = "module_name")
+    
+    private String moduleName;
+
+    @Column(name = "house_id")
+    
+    private Integer houseId;
+
+    @Column(name = "producer_status")
+    
+    private Integer producerStatus;
+
+    @Column(name = "group_id")
+    
+    private String groupId;
+
+    @Column(name = "topic_id")
+    
+    private String topicId;
+
+    @Column(name = "content")
+    
+    private String content;
+
+    @Column(name = "result_content")
+    
+    private String resultContent;
+
+    @Column(name = "cat_id")
+    
+    private String catId;
+    @Column(name = "tag")
+    
+    private String tag;
+
+    /**
+     * 状态:1  有效  -1  无效
+     */
+    @Column(name = "status")
+    
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    @Column(name = "created")
+    
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+    @Column(name = "updated")
+    
+    private Date updated;
+
+    /**
+     * 创建者
+     */
+    @Column(name = "creator")
+    
+    private String creator;
+
+    /**
+     * 修改者
+     */
+    @Column(name = "updator")
+    
+    private String updator;
+
+    public String getCatId() {
+        return catId;
+    }
+
+    public void setCatId(String catId) {
+        this.catId = catId;
+    }
+
+    public String getTag() {
+        return tag;
+    }
+
+    public void setTag(String tag) {
+        this.tag = tag;
+    }
+
+    public String getResultContent() {
+        return resultContent;
+    }
+
+    public void setResultContent(String resultContent) {
+        this.resultContent = resultContent;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getModuleName() {
+        return moduleName;
+    }
+
+    public void setModuleName(String moduleName) {
+        this.moduleName = moduleName;
+    }
+
+    public Integer getHouseId() {
+        return houseId;
+    }
+
+    public void setHouseId(Integer houseId) {
+        this.houseId = houseId;
+    }
+
+    public Integer getProducerStatus() {
+        return producerStatus;
+    }
+
+    public void setProducerStatus(Integer producerStatus) {
+        this.producerStatus = producerStatus;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getTopicId() {
+        return topicId;
+    }
+
+    public void setTopicId(String topicId) {
+        this.topicId = topicId;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreated() {
+        return created;
+    }
+
+    public void setCreated(Date created) {
+        this.created = created;
+    }
+
+    public Date getUpdated() {
+        return updated;
+    }
+
+    public void setUpdated(Date updated) {
+        this.updated = updated;
+    }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+
+    public String getUpdator() {
+        return updator;
+    }
+
+    public void setUpdator(String updator) {
+        this.updator = updator;
+    }
+}

+ 36 - 1
elab-redis/src/test/java/com/elab/redis/spring/SpringDataTest.java

@@ -1,9 +1,11 @@
 package com.elab.redis.spring;
 
+import com.elab.core.utils.StringUtils;
 import com.elab.marketing.auth.service.response.organize.OrganizeInfoModel;
 import com.elab.redis.CacheTemplate;
 import com.elab.redis.RedisSpringBoot;
 import com.elab.redis.serializers.CompatibilityJsonRedisSerializer;
+import com.google.common.base.Splitter;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -11,7 +13,7 @@ import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
 
 import java.io.IOException;
-import java.util.Set;
+import java.util.*;
 
 /**
  * springData
@@ -131,4 +133,37 @@ public class SpringDataTest extends RedisSpringBoot {
 //
 //        redisTemplate.delete(Arrays.asList(""));
     }
+
+    @Test
+    public void delToken() {
+        String mobiles = "15123317643,18423586949,15730080319,13330396258,15683552125,13996022227,13896140216,18580429360,\n" +
+                "    18696697989,13436008391,15025446540,13436020926,15025634510,17754989043,17723039715,15123224136,\n" +
+                "    13789996159,15023632596,17708327136,15213163035,15002377412,18702366654,18623383017,13637911168,\n" +
+                "    18716287371,15683169135,18696760033,18608003962,15555044400";
+
+        String prefixKey = "gateway:LOGIN:UID:token:";
+        String prefixTokenKey = "gateway:LOGIN:TOKEN:token:";
+        List<String> mobileList = Splitter.on(",").trimResults().splitToList(mobiles);
+
+        Set<String> delKey = new HashSet<>();
+        for (int i = 0; i < mobileList.size(); i++) {
+            System.out.println(mobileList.get(i));
+            String mobile = mobileList.get(i);
+            String key = prefixKey + mobile;
+            delKey.add(key);
+        }
+        List<Object> tokenKeys = redisTemplate.opsForValue().multiGet(delKey);
+
+
+        List<String> tokenName = new ArrayList<>();
+
+        tokenKeys.forEach((key) -> {
+            if (key != null) {
+                tokenName.add(prefixTokenKey + key);
+            }
+        });
+
+        Long delete = redisTemplate.delete(tokenName);
+        System.out.println("删除key个数:" + tokenName.size() + " 删除总数:" + delete);
+    }
 }

+ 8 - 5
elab-spring/src/main/java/com/elab/spring/config/SpringMvcConfig.java

@@ -1,5 +1,6 @@
 package com.elab.spring.config;
 
+import com.elab.spring.intercept.SQLMonitorEventHandler;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -17,21 +18,23 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 @Configuration
 public class SpringMvcConfig {
 
-
-    @Autowired
-    private Environment env;
-
     /**
      * 构建一个文件上传解析器
      *
      * @return
      */
     @Bean(name = "multipartResolver")
-    public MultipartResolver getCommonsMultipartResolver() {
+    public MultipartResolver getCommonsMultipartResolver(@Autowired Environment env) {
         CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
         multipartResolver.setMaxUploadSize(Long.valueOf(env.getProperty("mvc.multipartResolver.MaxUploadSize", "10485760")));
         multipartResolver.setDefaultEncoding("UTF-8");
         return multipartResolver;
     }
 
+    @Bean
+    public SQLMonitorEventHandler sqlMonitorEventHandler(@Autowired Environment env) {
+        SQLMonitorEventHandler sqlMonitorEventHandler = new SQLMonitorEventHandler();
+        sqlMonitorEventHandler.setAffectNumber(Integer.valueOf(env.getProperty("default.affectNumber", "100")));
+        return sqlMonitorEventHandler;
+    }
 }

+ 39 - 0
elab-spring/src/main/java/com/elab/spring/intercept/SQLMonitorEventHandler.java

@@ -0,0 +1,39 @@
+package com.elab.spring.intercept;
+
+import com.elab.core.spring.method.SQLEventHandler;
+import com.elab.core.sql.config.SqlCommandType;
+import com.elab.log.utils.EventProcessUtils;
+
+/**
+ * SQL 事件触发
+ *
+ * @author liukx
+ */
+public class SQLMonitorEventHandler implements SQLEventHandler {
+
+    private String SQL_MONITOR_TYPE = "SQL_MONITOR_NODE";
+
+    private Integer affectNumber = 100;
+
+    public Integer getAffectNumber() {
+        return affectNumber;
+    }
+
+    public void setAffectNumber(Integer affectNumber) {
+        this.affectNumber = affectNumber;
+    }
+
+    @Override
+    public void sqlInvokeBefore(SqlCommandType sqlCommandType, String sqlId, String table, String sql, Object params) {
+
+    }
+
+    @Override
+    public void sqlInvokeAfter(SqlCommandType sqlCommandType, String sqlId, String table, String sql, Object params, Object result) {
+        if (SqlCommandType.UPDATE == sqlCommandType || SqlCommandType.DELETE == sqlCommandType) {
+            if (result!= null && result instanceof Number && Long.valueOf(result.toString()) > getAffectNumber()) {
+                EventProcessUtils.write(SQL_MONITOR_TYPE, sqlCommandType.name() + "_" + table + "_" + result.toString());
+            }
+        }
+    }
+}

+ 1 - 1
elab-spring/src/main/java/com/elab/spring/utils/RestTemplateUtils.java

@@ -352,9 +352,9 @@ public class RestTemplateUtils {
             HttpEntity<Object> entity = new HttpEntity<Object>(body, httpHeaders);
             ResponseEntity<T> result = null;
             if (body == null) {
-                logger.debug(" DATA :" + body);
                 result = restTemplate.exchange(url, httpMethod, entity, clazz);
             } else {
+                logger.debug(" DATA :" + body);
                 result = getRestTemplate.exchange(url, httpMethod, entity, clazz);
             }
             responseData = result.getBody();