mirror of
https://github.com/ccmjga/zhilu-admin
synced 2026-03-16 14:43:42 +08:00
重构AOP日志功能,新增日志查询、删除接口及相关页面,优化日志管理体验;更新前端组件以支持日志展示和操作。
This commit is contained in:
84
frontend/src/api/mocks/aopLogHandlers.ts
Normal file
84
frontend/src/api/mocks/aopLogHandlers.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
import { faker } from "@faker-js/faker";
|
||||
import { http, HttpResponse } from "msw";
|
||||
|
||||
// 生成AOP日志数据
|
||||
const generateAopLog = () => ({
|
||||
id: faker.number.int({ min: 1, max: 1000 }),
|
||||
className: faker.helpers.arrayElement([
|
||||
"com.example.controller.UserController",
|
||||
"com.example.service.UserService",
|
||||
"com.example.controller.RoleController",
|
||||
"com.example.service.RoleService",
|
||||
"com.example.controller.DepartmentController",
|
||||
"com.example.service.DepartmentService",
|
||||
]),
|
||||
methodName: faker.helpers.arrayElement([
|
||||
"findById",
|
||||
"save",
|
||||
"update",
|
||||
"delete",
|
||||
"findAll",
|
||||
"findByName",
|
||||
"pageQuery",
|
||||
]),
|
||||
methodArgs: JSON.stringify([
|
||||
{ name: "id", value: faker.number.int({ min: 1, max: 100 }) },
|
||||
{ name: "name", value: faker.person.fullName() },
|
||||
]),
|
||||
returnValue: JSON.stringify({
|
||||
id: faker.number.int({ min: 1, max: 100 }),
|
||||
name: faker.person.fullName(),
|
||||
success: true,
|
||||
}),
|
||||
executionTime: faker.number.int({ min: 10, max: 5000 }),
|
||||
success: faker.datatype.boolean(0.9), // 90%成功率
|
||||
errorMessage: faker.helpers.maybe(() => faker.lorem.sentence(), { probability: 0.1 }),
|
||||
userId: faker.number.int({ min: 1, max: 100 }),
|
||||
username: faker.internet.userName(),
|
||||
ipAddress: faker.internet.ip(),
|
||||
userAgent: faker.internet.userAgent(),
|
||||
curl: `curl -X GET "${faker.internet.url()}" -H "Authorization: Bearer ${faker.string.alphanumeric(32)}"`,
|
||||
createTime: faker.date.recent({ days: 30 }).toISOString(),
|
||||
});
|
||||
|
||||
export default [
|
||||
// 分页查询AOP日志
|
||||
http.get("/aop-log/page-query", () => {
|
||||
const mockData = {
|
||||
data: faker.helpers.multiple(generateAopLog, { count: 10 }),
|
||||
total: 100,
|
||||
};
|
||||
return HttpResponse.json(mockData);
|
||||
}),
|
||||
|
||||
// 查询单条日志详情
|
||||
http.get("/aop-log/:id", ({ params }) => {
|
||||
const id = params.id;
|
||||
return HttpResponse.json({
|
||||
...generateAopLog(),
|
||||
id: Number(id),
|
||||
});
|
||||
}),
|
||||
|
||||
// 删除单条日志
|
||||
http.delete("/aop-log/:id", ({ params }) => {
|
||||
console.log(`Captured a "DELETE /aop-log/${params.id}" request`);
|
||||
return HttpResponse.json({ success: true });
|
||||
}),
|
||||
|
||||
// 批量删除日志
|
||||
http.delete("/aop-log/batch", async ({ request }) => {
|
||||
const ids = await request.json();
|
||||
console.log(`Captured a "DELETE /aop-log/batch" request with ids: ${ids}`);
|
||||
return HttpResponse.json(ids.length);
|
||||
}),
|
||||
|
||||
// 删除指定时间前的日志
|
||||
http.delete("/aop-log/before", ({ params }) => {
|
||||
const { beforeTime } = Object.fromEntries(
|
||||
new URL(params.request.url).searchParams
|
||||
);
|
||||
console.log(`Captured a "DELETE /aop-log/before" request with time: ${beforeTime}`);
|
||||
return HttpResponse.json(faker.number.int({ min: 5, max: 50 }));
|
||||
}),
|
||||
];
|
||||
@@ -1,13 +1,14 @@
|
||||
import { setupWorker } from "msw/browser";
|
||||
import authHandlers from "./authHandlers";
|
||||
import jobHandlers from "./schedulerHandlers";
|
||||
import permissionHandlers from "./permissionHandlers";
|
||||
import roleHandlers from "./roleHandlers";
|
||||
import userHandlers from "./iamHandlers";
|
||||
import departmentHandlers from "./departmentHandlers";
|
||||
import positionHandlers from "./positionHandlers";
|
||||
import aiHandlers from "./aiHandlers";
|
||||
import aopLogHandlers from "./aopLogHandlers";
|
||||
import authHandlers from "./authHandlers";
|
||||
import departmentHandlers from "./departmentHandlers";
|
||||
import userHandlers from "./iamHandlers";
|
||||
import knowledgeHandlers from "./knowledgeHandlers";
|
||||
import permissionHandlers from "./permissionHandlers";
|
||||
import positionHandlers from "./positionHandlers";
|
||||
import roleHandlers from "./roleHandlers";
|
||||
import jobHandlers from "./schedulerHandlers";
|
||||
|
||||
export const worker = setupWorker(
|
||||
...userHandlers,
|
||||
@@ -19,4 +20,5 @@ export const worker = setupWorker(
|
||||
...positionHandlers,
|
||||
...aiHandlers,
|
||||
...knowledgeHandlers,
|
||||
...aopLogHandlers,
|
||||
);
|
||||
|
||||
@@ -10,6 +10,12 @@
|
||||
"description": "Generated server url"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
{
|
||||
"name": "AOP日志管理",
|
||||
"description": "AOP日志查看和管理接口"
|
||||
}
|
||||
],
|
||||
"paths": {
|
||||
"/scheduler/job/update": {
|
||||
"put": {
|
||||
@@ -1406,6 +1412,105 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/aop-log/{id}": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"AOP日志管理"
|
||||
],
|
||||
"summary": "查询日志详情",
|
||||
"description": "根据ID查询单条日志的详细信息",
|
||||
"operationId": "getAopLogById",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "日志ID",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"content": {
|
||||
"*/*": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/AopLogRespDto"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"tags": [
|
||||
"AOP日志管理"
|
||||
],
|
||||
"summary": "删除单条日志",
|
||||
"description": "根据ID删除单条日志",
|
||||
"operationId": "deleteAopLog",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "日志ID",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/aop-log/page-query": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"AOP日志管理"
|
||||
],
|
||||
"summary": "分页查询AOP日志",
|
||||
"description": "支持多种条件筛选的分页查询",
|
||||
"operationId": "pageQueryAopLogs",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "pageRequestDto",
|
||||
"in": "query",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/PageRequestDto"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "queryDto",
|
||||
"in": "query",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/AopLogQueryDto"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"content": {
|
||||
"*/*": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/PageResponseDtoListAopLogRespDto"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/ai/llm/page-query": {
|
||||
"get": {
|
||||
"tags": [
|
||||
@@ -1444,6 +1549,79 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/aop-log/before": {
|
||||
"delete": {
|
||||
"tags": [
|
||||
"AOP日志管理"
|
||||
],
|
||||
"summary": "删除指定时间前的日志",
|
||||
"description": "删除指定时间之前的所有日志",
|
||||
"operationId": "deleteLogsBeforeTime",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "beforeTime",
|
||||
"in": "query",
|
||||
"description": "截止时间",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"content": {
|
||||
"*/*": {
|
||||
"schema": {
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/aop-log/batch": {
|
||||
"delete": {
|
||||
"tags": [
|
||||
"AOP日志管理"
|
||||
],
|
||||
"summary": "批量删除日志",
|
||||
"description": "根据ID列表批量删除日志",
|
||||
"operationId": "deleteAopLogs",
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"description": "日志ID列表",
|
||||
"items": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": true
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"content": {
|
||||
"*/*": {
|
||||
"schema": {
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/ai/action/user": {
|
||||
"delete": {
|
||||
"tags": [
|
||||
@@ -2477,6 +2655,113 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"AopLogRespDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"className": {
|
||||
"type": "string"
|
||||
},
|
||||
"methodName": {
|
||||
"type": "string"
|
||||
},
|
||||
"methodArgs": {
|
||||
"type": "string"
|
||||
},
|
||||
"returnValue": {
|
||||
"type": "string"
|
||||
},
|
||||
"executionTime": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"success": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"errorMessage": {
|
||||
"type": "string"
|
||||
},
|
||||
"userId": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"username": {
|
||||
"type": "string"
|
||||
},
|
||||
"ipAddress": {
|
||||
"type": "string"
|
||||
},
|
||||
"userAgent": {
|
||||
"type": "string"
|
||||
},
|
||||
"curl": {
|
||||
"type": "string"
|
||||
},
|
||||
"createTime": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
},
|
||||
"AopLogQueryDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"className": {
|
||||
"type": "string"
|
||||
},
|
||||
"methodName": {
|
||||
"type": "string"
|
||||
},
|
||||
"success": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"userId": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"ipAddress": {
|
||||
"type": "string"
|
||||
},
|
||||
"startTime": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"endTime": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"minExecutionTime": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"maxExecutionTime": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PageResponseDtoListAopLogRespDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"total": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/AopLogRespDto"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"LlmQueryDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
||||
4959
frontend/src/api/types/schema.d.ts
vendored
4959
frontend/src/api/types/schema.d.ts
vendored
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user