service.xpcool.com/api/admin/system/log/log.go
夏犀麟 9010592c9e fix(build): 修正 .gitignore 的 log/ 规则误伤源码包,恢复 HEAD 可编译
问题:.gitignore 第 27 行的 `log/` 未锚定根目录,会匹配任意层级的
log 目录,把下面 4 个**源码包**一并忽略:
  - api/admin/base/log
  - api/admin/system/log
  - internal/service/admin/base/log
  - internal/service/admin/system/log

而引用它们的 internal/controller/admin/log.go 已在库中,于是
「已提交的代码 import 了不存在(未提交)的包」——干净检出后
`go build .` 直接失败:
  no required module provides package service.xpcool.com/api/admin/base/log

因为 service 仓库没有 CI 自动构建,这个问题一直没有暴露,
影响是:新克隆/新设备无法编译,任何干净检出构建都会失败。

修复:
1. 规则改为 `/log/`,只忽略仓库根目录下的运行日志输出目录
   (config.dev.yaml 的 logger.path: "log"),不再误伤同名源码包;
2. 补交被忽略期间漏掉的 4 个 log 包,恢复 HEAD 完整可编译。
2026-09-14 02:34:46 +08:00

52 lines
2.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package admin_system_log 定义管理员操作日志(操作审计)查询接口契约。
//
// 路由前缀 /api/service/admin/system/log对应 admin_menu
// - POST /api/service/admin/system/log —— system:log:list操作日志分页查询
package admin_system_log
import "github.com/gogf/gf/v2/frame/g"
// LogItem 一条管理员操作日志记录。
type LogItem struct {
Id uint64 `json:"id"`
AdminID uint64 `json:"adminId"` // 操作人ID
AdminUsername string `json:"adminUsername"` // 操作人账号(冗余)
Permission string `json:"permission"` // 命中的权限码
Method string `json:"method"` // HTTP 方法
Path string `json:"path"` // 请求路径
IP string `json:"ip"` // 来源 IP
IpLocation string `json:"ipLocation"` // IP 归属地
Param string `json:"param"` // 请求参数
DurationMS uint `json:"durationMs"` // 耗时(毫秒)
StatusCode int `json:"statusCode"` // HTTP 状态码
ErrorMessage string `json:"errorMessage"` // 失败原因
UserAgent string `json:"userAgent"` // 浏览器 UA
CreatedAt string `json:"createdAt"` // 操作时间
}
// LogListReq 分页查询管理员操作日志。
type LogListReq struct {
g.Meta `path:"/system/log" method:"post" tags:"Admin/System/Log" summary:"操作日志列表"`
Page int `json:"page" d:"1" v:"min:1"`
Size int `json:"size" d:"10" v:"min:1|max:100"`
AdminID uint64 `json:"adminId"` // 按管理员ID精确过滤
Username string `json:"username"` // 按管理员账号模糊过滤
IP string `json:"ip"` // 按来源 IP 模糊过滤
IpLocation string `json:"ipLocation"` // 按 IP 归属地模糊过滤
Method string `json:"method"` // 按 HTTP 方法精确过滤
Status int `json:"status"` // 结果筛选0 全部 / 1 成功 / 2 失败
Keyword string `json:"keyword"` // 关键字:匹配 permission / path / ip
StartTime string `json:"startTime"` // 起始时间,格式 2006-01-02 15:04:05
EndTime string `json:"endTime"` // 结束时间,格式 2006-01-02 15:04:05
MinDuration int `json:"minDuration"` // 耗时下限ms0 不限
MaxDuration int `json:"maxDuration"` // 耗时上限ms0 不限
OrderBy string `json:"orderBy"` // 排序字段createdAt(默认) | durationMs
OrderDir string `json:"orderDir"` // 排序方向desc(默认) | asc
}
// LogListRes 是 LogListReq 的响应。
type LogListRes struct {
List []*LogItem `json:"list"`
Total int `json:"total"`
}