77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
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})
|
|
}
|