添加API请求记录导出功能
This commit is contained in:
parent
78f8396f58
commit
f601365450
|
|
@ -50,6 +50,35 @@ public class AppRecordApiRequestDao extends ServiceImpl<AppRecordApiRequestMappe
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询数据
|
||||
*
|
||||
* @param request 筛选参数
|
||||
* @return 数据
|
||||
*/
|
||||
@Override
|
||||
public List<AppRecordApiRequest> queryByRequest(QueryRecordApiRequestReq request) {
|
||||
if(request == null) {
|
||||
return null;
|
||||
}
|
||||
LambdaQueryWrapper<AppRecordApiRequest> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(request.getSuccess() != null, AppRecordApiRequest::getSuccess, request.getSuccess());
|
||||
if(AppStringUtils.isNotEmpty(request.getQueryStr())) {
|
||||
queryWrapper.like(AppRecordApiRequest::getApiKey, request.getQueryStr())
|
||||
.or().like(AppRecordApiRequest::getRequestMsg, request.getQueryStr())
|
||||
.or().like(AppRecordApiRequest::getResponseMsg, request.getQueryStr());
|
||||
}
|
||||
if(request.getRequestTimes() != null && request.getRequestTimes().length == 2) {
|
||||
queryWrapper.between(AppRecordApiRequest::getRequestTime, request.getRequestTimes()[0], request.getRequestTimes()[1]);
|
||||
}
|
||||
queryWrapper.orderByDesc(AppRecordApiRequest::getRequestTime);
|
||||
try {
|
||||
return super.baseMapper.selectList(queryWrapper);
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入数据
|
||||
*
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ public interface AppRecordApiRequestService extends IService<AppRecordApiRequest
|
|||
|
||||
|
||||
Tuple2<Long, List<AppRecordApiRequest>> queryByPage(QueryRecordApiRequestReq request, Integer pageSize, Integer pageIndex);
|
||||
List<AppRecordApiRequest> queryByRequest(QueryRecordApiRequestReq request);
|
||||
int insert(AppRecordApiRequest record); // 插入数据
|
||||
|
||||
int deleteBySaveDays(int saveDays); // 删除指定天数前的数据
|
||||
|
|
|
|||
|
|
@ -0,0 +1,90 @@
|
|||
package org.wcs.model.vo.serve.recordApi;
|
||||
|
||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 导出记录API请求列表
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class ExportRecordApiRequestVo {
|
||||
|
||||
/**
|
||||
* 记录ID
|
||||
*/
|
||||
@Excel(name = "记录编号")
|
||||
private String recordId;
|
||||
|
||||
/**
|
||||
* API KEY
|
||||
*/
|
||||
@Excel(name = "API KEY")
|
||||
private String apiKey;
|
||||
|
||||
/**
|
||||
* 请求URL
|
||||
*/
|
||||
@Excel(name = "请求地址")
|
||||
private String requestUrl;
|
||||
|
||||
/**
|
||||
* 请求是否成功
|
||||
*/
|
||||
@Excel(name = "请求是否成功")
|
||||
private String success;
|
||||
|
||||
/**
|
||||
* 请求方式
|
||||
*/
|
||||
@Excel(name = "请求方式")
|
||||
private String method;
|
||||
|
||||
/**
|
||||
* url参数
|
||||
*/
|
||||
@Excel(name = "URL参数")
|
||||
private String urlParam;
|
||||
|
||||
/**
|
||||
* 请求参数
|
||||
*/
|
||||
@Excel(name = "请求数据")
|
||||
private String requestMsg;
|
||||
|
||||
/**
|
||||
* 响应内容
|
||||
*/
|
||||
@Excel(name = "响应内容")
|
||||
private String responseMsg;
|
||||
|
||||
/**
|
||||
* 请求时间
|
||||
*/
|
||||
@Excel(name = "请求时间")
|
||||
private LocalDateTime requestTime;
|
||||
|
||||
/**
|
||||
* 响应时间
|
||||
*/
|
||||
@Excel(name = "响应时间")
|
||||
private LocalDateTime responseTime;
|
||||
|
||||
/**
|
||||
* 耗时
|
||||
*/
|
||||
@Excel(name = "耗时")
|
||||
private BigDecimal useTime;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
@Excel(name = "错误信息")
|
||||
private String errMsg;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package org.wcs.serve.controller.app;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.wcs.model.dto.serve.recordApi.QueryRecordApiRequestReq;
|
||||
|
|
@ -20,7 +21,7 @@ import org.wcs.serve.service.intf.IRecordApiService;
|
|||
@RequiredArgsConstructor
|
||||
public class RecordApiController {
|
||||
|
||||
private final IRecordApiService recordApiRequestService;
|
||||
private final IRecordApiService recordApiService;
|
||||
|
||||
/**
|
||||
* 查询 API 请求记录
|
||||
|
|
@ -32,7 +33,7 @@ public class RecordApiController {
|
|||
@SaCheckPermission("recordApiRequest:query")
|
||||
@PostMapping("/queryApiRequestWithPage")
|
||||
public AppServeDataResponse<PageDataResponse<RecordApiRequestVo>> queryRecordApiRequest(@RequestBody QueryRecordApiRequestReq request, @RequestParam("pageSize") Integer pageSize, @RequestParam("pageIndex") Integer pageIndex) {
|
||||
return recordApiRequestService.queryRecordApiRequest(request, pageSize, pageIndex);
|
||||
return recordApiService.queryRecordApiRequest(request, pageSize, pageIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -45,7 +46,18 @@ public class RecordApiController {
|
|||
@SaCheckPermission("recordApiResponse:query")
|
||||
@PostMapping("/queryApiResponseWithPage")
|
||||
public AppServeDataResponse<PageDataResponse<RecordApiResponseVo>> queryRecordApiResponse(@RequestBody QueryRecordApiResponseReq request, @RequestParam("pageSize") Integer pageSize, @RequestParam("pageIndex") Integer pageIndex) {
|
||||
return recordApiRequestService.queryRecordApiResponse(request, pageSize, pageIndex);
|
||||
return recordApiService.queryRecordApiResponse(request, pageSize, pageIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出 API 请求记录
|
||||
* @param response 响应
|
||||
* @param request 查询参数
|
||||
*/
|
||||
@SaCheckPermission("recordApiRequest:export")
|
||||
@PostMapping("/exportApiRequest")
|
||||
public void exportApiRequest(HttpServletResponse response, @RequestBody QueryRecordApiRequestReq request) {
|
||||
recordApiService.exportApiRequest(response, request);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
package org.wcs.serve.service.impl;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.wcs.constant.enums.common.TrueOrFalseEnum;
|
||||
import org.wcs.factory.AppServeResponseFactory;
|
||||
import org.wcs.mapper.intf.AppRecordApiRequestService;
|
||||
import org.wcs.mapper.intf.AppRecordApiResponseService;
|
||||
|
|
@ -12,12 +14,15 @@ import org.wcs.model.po.app.AppRecordApiRequest;
|
|||
import org.wcs.model.po.app.AppRecordApiResponse;
|
||||
import org.wcs.model.vo.serve.AppServeDataResponse;
|
||||
import org.wcs.model.vo.serve.common.PageDataResponse;
|
||||
import org.wcs.model.vo.serve.recordApi.ExportRecordApiRequestVo;
|
||||
import org.wcs.model.vo.serve.recordApi.RecordApiRequestVo;
|
||||
import org.wcs.model.vo.serve.recordApi.RecordApiResponseVo;
|
||||
import org.wcs.plugin.excel.ExcelPoi;
|
||||
import org.wcs.serve.service.intf.IRecordApiService;
|
||||
import org.wcs.model.bo.tuple.Tuple2;
|
||||
import org.wcs.utils.AppBeanUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
|
|
@ -27,6 +32,7 @@ public class RecordApiService implements IRecordApiService {
|
|||
|
||||
private final AppRecordApiRequestService recordApiRequestService;
|
||||
private final AppRecordApiResponseService recordApiResponseService;
|
||||
private final ExcelPoi excelPoi;
|
||||
|
||||
/**
|
||||
* 查询记录API请求列表
|
||||
|
|
@ -76,5 +82,41 @@ public class RecordApiService implements IRecordApiService {
|
|||
return AppServeResponseFactory.success("查询成功", response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出记录API请求列表
|
||||
* @param response 响应
|
||||
* @param request 查询参数
|
||||
*/
|
||||
@Override
|
||||
public void exportApiRequest(HttpServletResponse response, QueryRecordApiRequestReq request) {
|
||||
List<AppRecordApiRequest> recordApiRequests = recordApiRequestService.queryByRequest(request);
|
||||
if(recordApiRequests == null) {
|
||||
log.error("导出API请求数据时查询数据失败");
|
||||
return;
|
||||
}
|
||||
List<ExportRecordApiRequestVo> recordApiRequestVos = new ArrayList<>();
|
||||
for (AppRecordApiRequest recordApiRequest : recordApiRequests) {
|
||||
ExportRecordApiRequestVo recordApiRequestVo = new ExportRecordApiRequestVo();
|
||||
recordApiRequestVo.setRecordId(recordApiRequest.getRecordId());
|
||||
recordApiRequestVo.setApiKey(recordApiRequest.getApiKey());
|
||||
recordApiRequestVo.setRequestUrl(recordApiRequest.getRequestUrl());
|
||||
recordApiRequestVo.setSuccess(TrueOrFalseEnum.getByCode(recordApiRequest.getSuccess()).getMsg());
|
||||
recordApiRequestVo.setMethod(recordApiRequest.getMethod());
|
||||
recordApiRequestVo.setUrlParam(recordApiRequest.getUrlParam());
|
||||
recordApiRequestVo.setRequestMsg(recordApiRequest.getRequestMsg());
|
||||
recordApiRequestVo.setResponseMsg(recordApiRequest.getResponseMsg());
|
||||
recordApiRequestVo.setRequestTime(recordApiRequest.getRequestTime());
|
||||
recordApiRequestVo.setResponseTime(recordApiRequest.getResponseTime());
|
||||
recordApiRequestVo.setUseTime(recordApiRequest.getUseTime());
|
||||
recordApiRequestVo.setErrMsg(recordApiRequest.getErrMsg());
|
||||
recordApiRequestVos.add(recordApiRequestVo);
|
||||
}
|
||||
try {
|
||||
excelPoi.doWriteExcel("API请求数据", response, recordApiRequestVos, ExportRecordApiRequestVo.class);
|
||||
} catch (Exception e) {
|
||||
log.error("导出API请求数据时发生异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package org.wcs.serve.service.intf;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.wcs.model.dto.serve.recordApi.QueryRecordApiRequestReq;
|
||||
import org.wcs.model.dto.serve.recordApi.QueryRecordApiResponseReq;
|
||||
import org.wcs.model.vo.serve.AppServeDataResponse;
|
||||
|
|
@ -11,4 +12,6 @@ public interface IRecordApiService {
|
|||
|
||||
AppServeDataResponse<PageDataResponse<RecordApiRequestVo>> queryRecordApiRequest(QueryRecordApiRequestReq request, Integer pageSize, Integer pageIndex);
|
||||
AppServeDataResponse<PageDataResponse<RecordApiResponseVo>> queryRecordApiResponse(QueryRecordApiResponseReq request, Integer pageSize, Integer pageIndex);
|
||||
|
||||
void exportApiRequest(HttpServletResponse response, QueryRecordApiRequestReq request); // 导出 API 请求记录
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,5 +21,12 @@ export default class RecordApi {
|
|||
pageIndex: pageIndex
|
||||
}
|
||||
})
|
||||
}
|
||||
};
|
||||
|
||||
static downLoadApiRequest(query: IRecordApiRequestSearch) {
|
||||
return axiosInstance.post('/app/recordApi/exportApiRequest', query, {
|
||||
responseType: 'blob',
|
||||
timeout: 30000
|
||||
})
|
||||
};
|
||||
}
|
||||
|
|
@ -13,6 +13,7 @@ import MessageUtils from "@/utils/MessageUtils.ts";
|
|||
import RecordApiRequestDetail from "@/components/page/recordApi/RecordApiRequestDetail.vue";
|
||||
import {menuStore} from "@/stores/menu.ts";
|
||||
import AppPermission from "@/components/manage/AppPermission.vue";
|
||||
import StackerLocationApi from "@/api/stackerLocation.ts";
|
||||
|
||||
const menuStoreInstance = menuStore();
|
||||
const trueFalseTagStyleFormatter = new TrueFalseTagStyleFormatter();
|
||||
|
|
@ -73,6 +74,21 @@ const handleEdit = (index: number, row: any) => {
|
|||
};
|
||||
showDetail.value = true;
|
||||
};
|
||||
// 导出数据
|
||||
const exportData = () => {
|
||||
MessageUtils.confirmMessageBox('确定导出数据?','导出确认').then(() => {
|
||||
RecordApi.downLoadApiRequest(querySearch.value).then(res => {
|
||||
const url = window.URL.createObjectURL(new Blob([res.data]));
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.setAttribute('download', '接口请求信息下载.xlsx');
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
MessageUtils.successMessage('您的下载将尽快开始,请稍后');
|
||||
document.body.removeChild(link);
|
||||
}).catch(() => {})
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
|
@ -104,7 +120,7 @@ const handleEdit = (index: number, row: any) => {
|
|||
<el-button-group style="width: 100%;margin-left: 10px; margin-bottom: 10px">
|
||||
<app-permission permission="recordApiRequest:query"><el-button type="primary" @click="query">查询/刷新</el-button></app-permission>
|
||||
<el-button type="warning" @click="resetInput">重置查询参数</el-button>
|
||||
<app-permission permission="recordApiRequest:export"><el-button type="info" >导出数据</el-button></app-permission>
|
||||
<app-permission permission="recordApiRequest:export"><el-button type="info" @click="exportData">导出数据</el-button></app-permission>
|
||||
</el-button-group>
|
||||
</el-row>
|
||||
</el-row>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user