mes-vue/src/api/monitor.ts
2026-05-25 15:46:29 +08:00

215 lines
6.1 KiB
TypeScript

import { request } from '@/utils/request'
import { PageResult } from './system'
// ==================== 操作日志 ====================
export interface SysOperLog {
id?: number
title: string
businessType: number
method: string
requestMethod: string
operName: string
operUrl: string
operIp: string
operParam: string
jsonResult: string
status: number
errorMsg: string
operTime: string
costTime: number
}
export const operLogApi = {
page(params: { page: number; pageSize: number; title?: string; operName?: string; status?: number }): Promise<PageResult<SysOperLog>> {
return request({ url: '/monitor/operlog/page', method: 'get', params })
},
delete(id: number): Promise<void> {
return request({ url: `/monitor/operlog/${id}`, method: 'delete' })
},
clean(): Promise<void> {
return request({ url: '/monitor/operlog/clean', method: 'delete' })
}
}
// ==================== 登录日志 ====================
export interface SysLoginLog {
id?: number
username: string
ipaddr: string
loginLocation: string
browser: string
os: string
status: number
msg: string
loginTime: string
}
export const loginLogApi = {
page(params: { page: number; pageSize: number; username?: string; status?: number }): Promise<PageResult<SysLoginLog>> {
return request({ url: '/monitor/loginlog/page', method: 'get', params })
},
delete(id: number): Promise<void> {
return request({ url: `/monitor/loginlog/${id}`, method: 'delete' })
},
clean(): Promise<void> {
return request({ url: '/monitor/loginlog/clean', method: 'delete' })
}
}
// ==================== 在线用户 ====================
export interface OnlineUser {
tokenId: string
loginName?: string
deptName?: string
ipaddr?: string
loginLocation?: string
browser?: string
os?: string
status?: number
loginTime: string
lastAccessTime: string
tokenValue?: string
}
export const onlineApi = {
list(): Promise<OnlineUser[]> {
return request({ url: '/monitor/online/list', method: 'get' })
},
forceLogout(tokenId: string): Promise<void> {
return request({ url: `/monitor/online/${tokenId}`, method: 'delete' })
}
}
// ==================== 定时任务 ====================
export interface SysJob {
id?: number
jobName: string
jobGroup: string
invokeTarget: string
cronExpression: string
misfirePolicy: number
concurrent: number
status: number
remark?: string
createTime?: string
}
export interface SysJobLog {
id?: number
jobName: string
jobGroup: string
invokeTarget: string
jobMessage: string
status: number
exceptionInfo: string
startTime: string
stopTime: string
}
export const jobApi = {
page(params: { page: number; pageSize: number; jobName?: string; jobGroup?: string; status?: number }): Promise<PageResult<SysJob>> {
return request({ url: '/monitor/job/page', method: 'get', params })
},
detail(id: number): Promise<SysJob> {
return request({ url: `/monitor/job/${id}`, method: 'get' })
},
create(data: SysJob): Promise<void> {
return request({ url: '/monitor/job', method: 'post', data })
},
update(data: SysJob): Promise<void> {
return request({ url: '/monitor/job', method: 'put', data })
},
delete(id: number): Promise<void> {
return request({ url: `/monitor/job/${id}`, method: 'delete' })
},
changeStatus(id: number, status: number): Promise<void> {
return request({ url: '/monitor/job/changeStatus', method: 'put', data: { id, status } })
},
run(id: number): Promise<void> {
return request({ url: `/monitor/job/run/${id}`, method: 'post' })
},
logPage(params: { page: number; pageSize: number; jobName?: string; jobGroup?: string; status?: number }): Promise<PageResult<SysJobLog>> {
return request({ url: '/monitor/job/log/page', method: 'get', params })
},
logStatistics(): Promise<{ totalCount: number; successCount: number; failCount: number; dailyStats: Array<{ exec_date: string; success_count: number; fail_count: number }> }> {
return request({ url: '/monitor/job/log/statistics', method: 'get' })
},
cleanLog(): Promise<void> {
return request({ url: '/monitor/job/log/clean', method: 'delete' })
}
}
// ==================== 缓存监控 ====================
export interface CacheStats {
usedMemory: number
maxMemory: number
ops: number
hitRate: number
connectedClients: number
}
export const cacheApi = {
info(): Promise<any> {
return request({ url: '/monitor/cache/info', method: 'get' })
},
stats(): Promise<CacheStats> {
return request({ url: '/monitor/cache/stats', method: 'get' })
},
keys(pattern?: string): Promise<string[]> {
return request({ url: '/monitor/cache/keys', method: 'get', params: { pattern } })
},
delete(key: string): Promise<void> {
return request({ url: '/monitor/cache', method: 'delete', params: { key } })
},
getValue(key: string): Promise<any> {
return request({ url: '/monitor/cache/value', method: 'get', params: { key } })
}
}
// ==================== 服务监控 ====================
export const serverApi = {
info(): Promise<any> {
return request({ url: '/monitor/server/info', method: 'get' })
}
}
// ==================== API 访问统计 ====================
export interface ApiAccessLog {
id?: number
startTime?: string
endTime?: string
apiPath?: string
method?: string
statusCode?: number
success?: number
costTime?: number
ip?: string
userId?: number
}
export interface ApiAccessStatistics {
totalCount: number
successCount: number
failCount: number
dailyStats: Record<string, { total: number; success: number; fail: number }>
topPaths: Array<{ apiPath: string; count: number }>
methodCount: Record<string, number>
}
export const apiAccessApi = {
page(params: {
page: number
pageSize: number
apiPath?: string
method?: string
success?: number
startTime?: string
endTime?: string
}): Promise<PageResult<ApiAccessLog>> {
return request({ url: '/monitor/api-access/page', method: 'get', params })
},
statistics(params?: { startDate?: string; endDate?: string }): Promise<ApiAccessStatistics> {
return request({ url: '/monitor/api-access/statistics', method: 'get', params })
}
}