Administrator
2018-11-09 efe95743e06fa05c2b7dc8bd0b55f4d63b1825eb
增加api的监控机制
6个文件已添加
282 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/monitor/ClientAPIMonitorMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/monitor/ClientAPIMonitor.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/monitor/ClientAPIMonitorMapper.xml 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/monitor/MonitorServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/monitor/MonitorService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/MonitorFactory.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/monitor/ClientAPIMonitorMapper.java
New file
@@ -0,0 +1,18 @@
package com.yeshi.fanli.dao.mybatis.monitor;
import com.yeshi.fanli.entity.monitor.ClientAPIMonitor;
public interface ClientAPIMonitorMapper {
    int deleteByPrimaryKey(Long id);
    int insert(ClientAPIMonitor record);
    int insertSelective(ClientAPIMonitor record);
    ClientAPIMonitor selectByPrimaryKey(Long id);
    int updateByPrimaryKeySelective(ClientAPIMonitor record);
    int updateByPrimaryKey(ClientAPIMonitor record);
}
fanli/src/main/java/com/yeshi/fanli/entity/monitor/ClientAPIMonitor.java
New file
@@ -0,0 +1,90 @@
package com.yeshi.fanli.entity.monitor;
import java.util.Date;
import org.yeshi.utils.mybatis.Column;
import org.yeshi.utils.mybatis.Table;
@Table("yeshi_ec_monitor_client_api")
public class ClientAPIMonitor {
    @Column(name = "mca_id")
    private Long id;
    @Column(name = "mca_url")
    private String url;
    @Column(name = "mca_ip")
    private String ip;
    @Column(name = "mca_request_data")
    private String requestData;
    @Column(name = "mca_code")
    private Integer code;
    @Column(name = "mca_time")
    private Integer time;
    @Column(name = "mca_createtime")
    private Date createTime;
    @Column(name = "mca_beizhu")
    private String beiZhu;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    public String getRequestData() {
        return requestData;
    }
    public void setRequestData(String requestData) {
        this.requestData = requestData;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public Integer getTime() {
        return time;
    }
    public void setTime(Integer time) {
        this.time = time;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getBeiZhu() {
        return beiZhu;
    }
    public void setBeiZhu(String beiZhu) {
        this.beiZhu = beiZhu;
    }
}
fanli/src/main/java/com/yeshi/fanli/mapping/monitor/ClientAPIMonitorMapper.xml
New file
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeshi.fanli.dao.mybatis.monitor.ClientAPIMonitorMapper">
    <resultMap id="BaseResultMap"
        type="com.yeshi.fanli.entity.monitor.ClientAPIMonitor">
        <id column="mca_id" property="id" jdbcType="BIGINT" />
        <result column="mca_url" property="url" jdbcType="VARCHAR" />
        <result column="mca_ip" property="ip" jdbcType="VARCHAR" />
        <result column="mca_request_data" property="requestData"
            jdbcType="VARCHAR" />
        <result column="mca_code" property="code" jdbcType="INTEGER" />
        <result column="mca_time" property="time" jdbcType="INTEGER" />
        <result column="mca_createtime" property="createTime" jdbcType="TIMESTAMP" />
        <result column="mca_beizhu" property="beiZhu" jdbcType="VARCHAR" />
    </resultMap>
    <sql id="Base_Column_List">mca_id,mca_url,mca_ip,mca_request_data,mca_code,mca_time,mca_createtime,mca_beizhu
    </sql>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap"
        parameterType="java.lang.Long">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_monitor_client_api where mca_id = #{id,jdbcType=BIGINT}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
        yeshi_ec_monitor_client_api where mca_id = #{id,jdbcType=BIGINT}
    </delete>
    <insert id="insert" parameterType="com.yeshi.fanli.entity.monitor.ClientAPIMonitor"
        useGeneratedKeys="true" keyProperty="id">insert into
        yeshi_ec_monitor_client_api
        (mca_id,mca_url,mca_ip,mca_request_data,mca_code,mca_time,mca_createtime,mca_beizhu)
        values
        (#{id,jdbcType=BIGINT},#{url,jdbcType=VARCHAR},#{ip,jdbcType=VARCHAR},#{requestData,jdbcType=VARCHAR},#{code,jdbcType=INTEGER},#{time,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP},#{beiZhu,jdbcType=VARCHAR})
    </insert>
    <insert id="insertSelective" parameterType="com.yeshi.fanli.entity.monitor.ClientAPIMonitor"
        useGeneratedKeys="true" keyProperty="id">
        insert into yeshi_ec_monitor_client_api
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">mca_id,</if>
            <if test="url != null">mca_url,</if>
            <if test="ip != null">mca_ip,</if>
            <if test="requestData != null">mca_request_data,</if>
            <if test="code != null">mca_code,</if>
            <if test="time != null">mca_time,</if>
            <if test="createTime != null">mca_createtime,</if>
            <if test="beiZhu != null">mca_beizhu,</if>
        </trim>
        values
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id,jdbcType=BIGINT},</if>
            <if test="url != null">#{url,jdbcType=VARCHAR},</if>
            <if test="ip != null">#{ip,jdbcType=VARCHAR},</if>
            <if test="requestData != null">#{requestData,jdbcType=VARCHAR},</if>
            <if test="code != null">#{code,jdbcType=INTEGER},</if>
            <if test="time != null">#{time,jdbcType=INTEGER},</if>
            <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="beiZhu != null">#{beiZhu,jdbcType=VARCHAR},</if>
        </trim>
    </insert>
    <update id="updateByPrimaryKey" parameterType="com.yeshi.fanli.entity.monitor.ClientAPIMonitor">update
        yeshi_ec_monitor_client_api set mca_url =
        #{url,jdbcType=VARCHAR},mca_ip =
        #{ip,jdbcType=VARCHAR},mca_request_data =
        #{requestData,jdbcType=VARCHAR},mca_code =
        #{code,jdbcType=INTEGER},mca_time =
        #{time,jdbcType=INTEGER},mca_createtime =
        #{createTime,jdbcType=TIMESTAMP},mca_beizhu =
        #{beiZhu,jdbcType=VARCHAR} where mca_id = #{id,jdbcType=BIGINT}
    </update>
    <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.monitor.ClientAPIMonitor">
        update yeshi_ec_monitor_client_api
        <set>
            <if test="url != null">mca_url=#{url,jdbcType=VARCHAR},</if>
            <if test="ip != null">mca_ip=#{ip,jdbcType=VARCHAR},</if>
            <if test="requestData != null">mca_request_data=#{requestData,jdbcType=VARCHAR},</if>
            <if test="code != null">mca_code=#{code,jdbcType=INTEGER},</if>
            <if test="time != null">mca_time=#{time,jdbcType=INTEGER},</if>
            <if test="createTime != null">mca_createtime=#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="beiZhu != null">mca_beizhu=#{beiZhu,jdbcType=VARCHAR},</if>
        </set>
        where mca_id = #{id,jdbcType=BIGINT}
    </update>
</mapper>
fanli/src/main/java/com/yeshi/fanli/service/impl/monitor/MonitorServiceImpl.java
New file
@@ -0,0 +1,24 @@
package com.yeshi.fanli.service.impl.monitor;
import javax.annotation.Resource;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.mybatis.monitor.ClientAPIMonitorMapper;
import com.yeshi.fanli.entity.monitor.ClientAPIMonitor;
import com.yeshi.fanli.service.inter.monitor.MonitorService;
@Service
public class MonitorServiceImpl implements MonitorService {
    @Resource
    private ClientAPIMonitorMapper clientAPIMonitorMapper;
    @Async
    @Override
    public void addClientAPIMonitor(ClientAPIMonitor monitor) {
        clientAPIMonitorMapper.insertSelective(monitor);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/monitor/MonitorService.java
New file
@@ -0,0 +1,20 @@
package com.yeshi.fanli.service.inter.monitor;
import com.yeshi.fanli.entity.monitor.ClientAPIMonitor;
/**
 * 监控服务
 *
 * @author Administrator
 *
 */
public interface MonitorService {
    /**
     * 添加客户端API的监控
     *
     * @param monitor
     */
    public void addClientAPIMonitor(ClientAPIMonitor monitor);
}
fanli/src/main/java/com/yeshi/fanli/util/factory/MonitorFactory.java
New file
@@ -0,0 +1,47 @@
package com.yeshi.fanli.util.factory;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.yeshi.fanli.entity.monitor.ClientAPIMonitor;
import net.sf.json.JSONObject;
public class MonitorFactory {
    @SuppressWarnings("unchecked")
    public static ClientAPIMonitor createClientAPI(HttpServletRequest request, int code, int time, String beiZhu)
            throws Exception {
        if (request == null)
            throw new Exception("request 为空");
        ClientAPIMonitor monitor = new ClientAPIMonitor();
        Map<String, Object> params = (Map<String, Object>) request.getParameterMap();
        if (params != null) {
            Iterator<String> its = params.keySet().iterator();
            JSONObject json = new JSONObject();
            while (its.hasNext()) {
                String key = its.next();
                if ("packages".equalsIgnoreCase(key) || "appkey".equalsIgnoreCase(key)
                        || "platform".equalsIgnoreCase(key) || "apiversion".equalsIgnoreCase(key)
                        || "channel".equalsIgnoreCase(key) || "imei".equalsIgnoreCase(key)
                        || "osVersion".equalsIgnoreCase(key) || "network".equalsIgnoreCase(key)
                        || "deviceType".equalsIgnoreCase(key) || "time".equalsIgnoreCase(key)
                        || "sign".equalsIgnoreCase(key))
                    continue;
                json.put(key, ((Object[]) params.get(key))[0]);
            }
            monitor.setRequestData(json.toString());
        }
        monitor.setBeiZhu(beiZhu);
        monitor.setCode(code);
        monitor.setCreateTime(new Date());
        monitor.setIp(request.getRemoteHost());
        monitor.setTime(time);
        monitor.setUrl(request.getRequestURI());
        return monitor;
    }
}