Browse Source

接口监测

zhijiezhao 2 years ago
parent
commit
3e2ecf440d

+ 5 - 0
pom.xml

@@ -58,6 +58,11 @@
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
         </dependency>
+        <!-- mongo -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+        </dependency>
         <!-- mysql -->
         <dependency>
             <groupId>mysql</groupId>

+ 49 - 0
src/main/java/com/caimei365/tools/listener/IpSaveListener.java

@@ -1,10 +1,22 @@
 package com.caimei365.tools.listener;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.caimei365.tools.model.po.IpSavePo;
+import com.caimei365.tools.service.impl.IpSaveService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
 import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.applet.Applet;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Stream;
+
 /**
  * 测试消息监听
  *
@@ -21,8 +33,45 @@ import org.springframework.stereotype.Component;
         // selectorExpression = "tag",     // 指定了tag后,发送的消息如果不带tag,将会消费不到
         consumerGroup = "Ip_group")
 public class IpSaveListener implements RocketMQListener<String> {
+
+    @Autowired
+    private IpSaveService ipSaveService;
+
     @Override
     public void onMessage(String message) {
         log.info("{}收到消息:{}", this.getClass().getSimpleName(), message);
+        String[] params = message.split("¥");
+        //ip,接口路径,接口参数,注解名
+        String ip=params[0];
+        String path=params[1];
+        String param=params[2];
+        String saveName=params[3];
+        IpSavePo ipSavePo = new IpSavePo();
+        if(StringUtils.isNotBlank(param)){
+            ipSavePo.setParams(param);
+            if(param.contains("userId")){
+                String[] split = param.split("&");
+                for (String s : split) {
+                    if(s.contains("userId")&&s.contains("=")){
+                        String value = s.split("=")[1];
+                        String trim = value.trim();
+                        if(StringUtils.isNotBlank(trim)){
+                            ipSavePo.setUserId(trim);
+                        }
+                    }
+                }
+            }
+        }
+        if(StringUtils.isNotBlank(path)){
+            ipSavePo.setRequestUrl(path);
+        }
+        if(StringUtils.isNotBlank(saveName)){
+            ipSavePo.setPortName(saveName);
+        }
+        if(StringUtils.isNotBlank(ip)){
+            ipSavePo.setIp(ip);
+        }
+        ipSavePo.setSaveTime(new Date());
+        ipSaveService.save(ipSavePo);
     }
 }

+ 8 - 0
src/main/java/com/caimei365/tools/mapper/IpSaveRepository.java

@@ -0,0 +1,8 @@
+package com.caimei365.tools.mapper;
+
+import com.caimei365.tools.model.po.IpSavePo;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface IpSaveRepository extends MongoRepository<IpSavePo,String> {
+
+}

+ 47 - 0
src/main/java/com/caimei365/tools/model/po/IpSavePo.java

@@ -0,0 +1,47 @@
+package com.caimei365.tools.model.po;
+
+import lombok.Data;
+import lombok.ToString;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+import org.springframework.data.mongodb.core.mapping.Field;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Administrator
+ */ 
+//可以省略,如果省略,则默认使用类名小写映射集合
+@Document(collection="IpCollection")
+@Data
+@ToString
+public class IpSavePo implements Serializable {
+    /**
+     * 主键标识,该属性的值会自动对应mongodb的主键字段"_id",如果该属性名就叫“id”,则该注解可以省略,否则必须写
+     */
+    @Id
+    private String id;
+    private String userId;
+    /**
+     * 该属性对应mongodb的字段的名字,如果一致,则无需该注解
+     */
+    @Field("ip")
+    private String ip;
+    /**
+     * 用户访问接口参数
+     */
+    private String params;
+    /**
+     * 用户访问路径
+     */
+    private String requestUrl;
+    /**
+     * 接口显示名称(展示名)
+     */
+    private String portName;
+    /**
+     * 时间
+     */
+    private Date saveTime;
+}

+ 76 - 0
src/main/java/com/caimei365/tools/service/impl/IpSaveService.java

@@ -0,0 +1,76 @@
+package com.caimei365.tools.service.impl;
+
+import com.caimei365.tools.mapper.IpSaveRepository;
+import com.caimei365.tools.model.po.IpSavePo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@Service
+public class IpSaveService {
+
+    @Autowired
+    private IpSaveRepository ipSaveRepository;
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+
+    /**
+     * 保存
+     * @param IpSavePo
+     */
+    public void save(IpSavePo IpSavePo){
+        //如果需要自定义主键,可以在这里指定主键;如果不指定主键,MongoDB会自动生成主键
+        //设置一些默认初始值。。。
+        //调用dao
+        ipSaveRepository.save(IpSavePo);
+    }
+
+    /**
+     * 修改
+     * @param IpSavePo
+     */
+    public void update(IpSavePo IpSavePo){
+        //调用dao
+        ipSaveRepository.save(IpSavePo);
+    }
+
+    /**
+     * 根据id删除
+     * @param id
+     */
+    public void deleteById(String id){
+        //调用dao
+        ipSaveRepository.deleteById(id);
+    }
+
+    /**
+     * 查询所有
+     * @return
+     */
+    public List<IpSavePo> findList(){
+        //调用dao
+        return ipSaveRepository.findAll();
+    }
+
+    /**
+     * 根据id查询
+     * @param id
+     * @return
+     */
+    public IpSavePo findById(String id){
+        //调用dao
+        return ipSaveRepository.findById(id).get();
+    }
+
+}