Files

77 lines
1.6 KiB
Go
Raw Permalink Normal View History

2026-07-03 16:01:08 +08:00
package controller
import (
"strconv"
"seeyon-filesystem/dto"
"seeyon-filesystem/service"
"seeyon-filesystem/utils"
"github.com/gin-gonic/gin"
)
// LogController 日志控制器
type LogController struct {
logService *service.LogService
}
func NewLogController() *LogController {
return &LogController{
logService: service.NewLogService(),
}
}
// List 查询操作日志
// GET /api/admin/logs?page=1&size=20&action=upload&resource=file&keyword=xxx
func (c *LogController) List(ctx *gin.Context) {
page, _ := strconv.Atoi(ctx.DefaultQuery("page", "1"))
size, _ := strconv.Atoi(ctx.DefaultQuery("size", "20"))
if page < 1 {
page = 1
}
if size < 1 || size > 100 {
size = 20
}
action := ctx.Query("action")
resource := ctx.Query("resource")
keyword := ctx.Query("keyword")
logs, total, err := c.logService.List(page, size, action, resource, keyword, 0)
if err != nil {
utils.ServerError(ctx, "查询失败")
return
}
utils.PageSuccess(ctx, logs, total, page, size)
}
// Stats 日志统计
// GET /api/admin/logs/stats
func (c *LogController) Stats(ctx *gin.Context) {
stats, err := c.logService.GetStats()
if err != nil {
utils.ServerError(ctx, "查询失败")
return
}
utils.Success(ctx, stats)
}
// Clean 清理旧日志
// POST /api/admin/logs/clean
func (c *LogController) Clean(ctx *gin.Context) {
var req dto.LogCleanRequest
if err := ctx.ShouldBindJSON(&req); err != nil {
utils.BadRequest(ctx, "参数错误")
return
}
count, err := c.logService.CleanOld(req.Days)
if err != nil {
utils.ServerError(ctx, "清理失败")
return
}
utils.SuccessWithMessage(ctx, "清理完成", gin.H{"deleted": count})
}