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(?,?,?,?,?,?)";
|
}
|