WangHan
2025-04-02 a8ba678a3fe5a39da2c732014cebbb66e408e97c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package com.iplatform.base.service;
 
import com.iplatform.model.vo.ApiTime;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;
 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
@Service
public class ApiTimeServiceImpl extends BaseServiceImpl {
 
    private final ApiTimeMapper apiTimeMapper = new ApiTimeMapper();
 
    /**
     * 检索接口调用时间列表
     * @param currentDate 当前日期如:20240229(可选)
     * @param maxSize 限制返回记录最大条数
     * @param millis 条件:最小花费时间,毫秒,超过该时间的记录
     * @return
     */
    public List<ApiTime> queryCostList(Integer currentDate, Integer maxSize, Long millis){
        StringBuilder sql = new StringBuilder(SQL_QUERY);
        List<Object> plist = new ArrayList<>(8);
        if(currentDate != null){
            sql.append(" and request_date = ?");
            plist.add(currentDate);
        }
        if(millis != null){
            sql.append(" and cost_time >= ?");
            plist.add(millis);
        }
        if(maxSize != null){
            sql.append(" limit ?");
            plist.add(maxSize);
        }
 
        Object[] parameters = plist.toArray();
        return this.select(sql.toString(), parameters, apiTimeMapper);
    }
 
    public void execBatchInsertAptTime(List<ApiTime> data){
        if(StringUtils.isEmptyList(data)){
            return;
        }
        List<Object[]> parameters = new ArrayList<>();
        Object[] one = null;
        for(ApiTime apiTime : data){
            one = this.transferToArray(apiTime);
            parameters.add(one);
        }
        this.execBatchUpdate(SQL_INSERT, parameters);
    }
 
    /**
     * 写入一条接口调用时间记录
     * @param apiTime
     * @date 2024-02-29
     */
    public void execInsertApiTime(ApiTime apiTime){
        Object[] one = this.transferToArray(apiTime);
        this.update(SQL_INSERT, one);
    }
 
    private Object[] transferToArray(ApiTime apiTime){
        Object[] one = new Object[6];
        one[0] = apiTime.getId();
        one[1] = apiTime.getCreateTime();
        one[2] = apiTime.getRequestDate();
        one[3] = apiTime.getUri();
        one[4] = apiTime.getCostTime();
        one[5] = apiTime.getUser();
        return one;
    }
 
    private class ApiTimeMapper implements RowMapper<ApiTime>{
        @Override
        public ApiTime mapRow(ResultSet rs, int rowNum) throws SQLException {
            ApiTime e = new ApiTime();
            e.setId(rs.getLong("id"));
            e.setCreateTime(rs.getLong("create_time"));
            e.setRequestDate(rs.getInt("request_date"));
            e.setUri(rs.getString("uri"));
            e.setCostTime(rs.getLong("cost_time"));
            e.setUser(StringUtils.EMPTY_STRING);
            return e;
        }
    }
 
    private static final String SQL_QUERY = "select * from s_api_time where 1=1 ";
    private static final String SQL_INSERT = "insert into s_api_time(id,create_time,request_date,uri,cost_time,user_name) values(?,?,?,?,?,?)";
}