From 585cc5604a4d119a55c819bb47e22d8d0da23b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Fri, 9 Jan 2026 01:04:38 +0800 Subject: [PATCH] fix: lint --- internal/http/request/process.go | 6 +- internal/service/process.go | 93 ++++++++++--------------- web/src/api/panel/process/index.ts | 5 +- web/src/layout/IndexView.vue | 12 ++-- web/src/views/home/IndexView.vue | 4 +- web/src/views/toolbox/BenchmarkView.vue | 2 +- web/src/views/toolbox/ProcessView.vue | 61 +--------------- web/src/views/toolbox/WebHookView.vue | 4 +- web/src/views/website/EditView.vue | 2 +- 9 files changed, 58 insertions(+), 131 deletions(-) diff --git a/internal/http/request/process.go b/internal/http/request/process.go index d7692b93..8a46024b 100644 --- a/internal/http/request/process.go +++ b/internal/http/request/process.go @@ -21,8 +21,8 @@ type ProcessSignal struct { type ProcessList struct { Page uint `json:"page" form:"page" query:"page"` Limit uint `json:"limit" form:"limit" query:"limit"` - Sort string `json:"sort" form:"sort" query:"sort"` // pid, name, cpu, rss, start_time - Order string `json:"order" form:"order" query:"order"` // asc, desc - Status string `json:"status" form:"status" query:"status"` // R, S, T, I, Z, W, L + Sort string `json:"sort" form:"sort" query:"sort" validate:"in:pid,name,cpu,rss,start_time,ppid,num_threads"` + Order string `json:"order" form:"order" query:"order" validate:"in:asc,desc"` + Status string `json:"status" form:"status" query:"status" validate:"in:R,S,T,I,Z,W,L"` Keyword string `json:"keyword" form:"keyword" query:"keyword"` } diff --git a/internal/service/process.go b/internal/service/process.go index 30d473d5..6c4ed193 100644 --- a/internal/service/process.go +++ b/internal/service/process.go @@ -75,52 +75,11 @@ func (s *ProcessService) List(w http.ResponseWriter, r *http.Request) { s.sortProcesses(data, req.Sort, req.Order) } - // 分页 - 使用 int64 避免溢出 - total := uint(len(data)) - start := uint64(req.Page-1) * uint64(req.Limit) - end := uint64(req.Page) * uint64(req.Limit) - - if start > uint64(total) { - data = []types.ProcessData{} - } else { - if end > uint64(total) { - end = uint64(total) - } - data = data[start:end] - } + paged, total := Paginate(r, data) Success(w, chix.M{ "total": total, - "items": data, - }) -} - -// sortProcesses 对进程列表进行排序 -func (s *ProcessService) sortProcesses(data []types.ProcessData, sortBy, order string) { - sort.Slice(data, func(i, j int) bool { - var less bool - switch sortBy { - case "pid": - less = data[i].PID < data[j].PID - case "name": - less = strings.ToLower(data[i].Name) < strings.ToLower(data[j].Name) - case "cpu": - less = data[i].CPU < data[j].CPU - case "rss": - less = data[i].RSS < data[j].RSS - case "start_time": - less = data[i].StartTime < data[j].StartTime - case "ppid": - less = data[i].PPID < data[j].PPID - case "num_threads": - less = data[i].NumThreads < data[j].NumThreads - default: - less = data[i].PID < data[j].PID - } - if order == "desc" { - return !less - } - return less + "items": paged, }) } @@ -186,7 +145,7 @@ func (s *ProcessService) Detail(w http.ResponseWriter, r *http.Request) { Success(w, data) } -// processProcessBasic 处理进程基本数据(用于列表,减少数据获取) +// processProcessBasic 处理进程基本数据(用于列表) func (s *ProcessService) processProcessBasic(proc *process.Process) types.ProcessData { data := types.ProcessData{ PID: proc.Pid, @@ -211,6 +170,12 @@ func (s *ProcessService) processProcessBasic(proc *process.Process) types.Proces data.CPU, _ = proc.CPUPercent() if mem, err := proc.MemoryInfo(); err == nil { data.RSS = mem.RSS + data.Data = mem.Data + data.VMS = mem.VMS + data.HWM = mem.HWM + data.Stack = mem.Stack + data.Locked = mem.Locked + data.Swap = mem.Swap } return data @@ -220,17 +185,6 @@ func (s *ProcessService) processProcessBasic(proc *process.Process) types.Proces func (s *ProcessService) processProcessFull(proc *process.Process) types.ProcessData { data := s.processProcessBasic(proc) - // 获取更多内存信息 - if mem, err := proc.MemoryInfo(); err == nil { - data.RSS = mem.RSS - data.Data = mem.Data - data.VMS = mem.VMS - data.HWM = mem.HWM - data.Stack = mem.Stack - data.Locked = mem.Locked - data.Swap = mem.Swap - } - if ioStat, err := proc.IOCounters(); err == nil { data.DiskWrite = ioStat.WriteBytes data.DiskRead = ioStat.ReadBytes @@ -250,3 +204,32 @@ func (s *ProcessService) processProcessFull(proc *process.Process) types.Process return data } + +// sortProcesses 对进程列表进行排序 +func (s *ProcessService) sortProcesses(data []types.ProcessData, sortBy, order string) { + sort.Slice(data, func(i, j int) bool { + var less bool + switch sortBy { + case "pid": + less = data[i].PID < data[j].PID + case "name": + less = strings.ToLower(data[i].Name) < strings.ToLower(data[j].Name) + case "cpu": + less = data[i].CPU < data[j].CPU + case "rss": + less = data[i].RSS < data[j].RSS + case "start_time": + less = data[i].StartTime < data[j].StartTime + case "ppid": + less = data[i].PPID < data[j].PPID + case "num_threads": + less = data[i].NumThreads < data[j].NumThreads + default: + less = data[i].PID < data[j].PID + } + if order == "desc" { + return !less + } + return less + }) +} diff --git a/web/src/api/panel/process/index.ts b/web/src/api/panel/process/index.ts index 32bcb695..c175d257 100644 --- a/web/src/api/panel/process/index.ts +++ b/web/src/api/panel/process/index.ts @@ -3,7 +3,7 @@ import { http } from '@/utils' export interface ProcessListParams { page: number limit: number - sort?: string // pid, name, cpu, rss, start_time + sort?: string // pid, name, cpu, rss, start_time, ppid, num_threads order?: string // asc, desc status?: string // R, S, T, I, Z, W, L keyword?: string @@ -11,8 +11,7 @@ export interface ProcessListParams { export default { // 获取进程列表 - list: (params: ProcessListParams) => - http.Get(`/process`, { params }), + list: (params: ProcessListParams) => http.Get(`/process`, { params }), // 获取进程详情 detail: (pid: number) => http.Get(`/process/detail`, { params: { pid } }), // 杀死进程 (SIGKILL) diff --git a/web/src/layout/IndexView.vue b/web/src/layout/IndexView.vue index 89b4ac52..4c877dbc 100644 --- a/web/src/layout/IndexView.vue +++ b/web/src/layout/IndexView.vue @@ -39,12 +39,12 @@ const themeStore = useThemeStore()
diff --git a/web/src/views/home/IndexView.vue b/web/src/views/home/IndexView.vue index c1cc8a1e..3f55a4c7 100644 --- a/web/src/views/home/IndexView.vue +++ b/web/src/views/home/IndexView.vue @@ -638,7 +638,7 @@ if (import.meta.hot) { trigger="hover" >