Files
goalfylearning-admin/internal/api/handlers/audit_log_handler.go

74 lines
1.4 KiB
Go

package handlers
import (
"goalfymax-admin/internal/models"
"goalfymax-admin/internal/services"
"goalfymax-admin/pkg/utils"
"strconv"
"github.com/gin-gonic/gin"
)
// AuditLogHandler 审计日志处理器
type AuditLogHandler struct {
service services.AuditLogService
response *utils.Response
}
// NewAuditLogHandler 创建审计日志处理器
func NewAuditLogHandler(service services.AuditLogService) *AuditLogHandler {
return &AuditLogHandler{
service: service,
response: utils.NewResponse(),
}
}
// List 获取审计日志列表
func (h *AuditLogHandler) List(c *gin.Context) {
var req models.AuditLogListRequest
if err := c.ShouldBindQuery(&req); err != nil {
h.response.ValidateError(c, err)
return
}
// 设置默认值
if req.Page < 1 {
req.Page = 1
}
if req.Size < 1 {
req.Size = 20
}
if req.SortBy == "" {
req.SortBy = "operation_time"
}
if req.SortOrder == "" {
req.SortOrder = "desc"
}
result, err := h.service.List(&req)
if err != nil {
h.response.InternalServerError(c, err.Error())
return
}
h.response.Success(c, result)
}
// GetByID 获取审计日志详情
func (h *AuditLogHandler) GetByID(c *gin.Context) {
idStr := c.Param("id")
id, err := strconv.ParseUint(idStr, 10, 32)
if err != nil {
h.response.BadRequest(c, "无效的ID")
return
}
log, err := h.service.GetByID(uint(id))
if err != nil {
h.response.InternalServerError(c, err.Error())
return
}
h.response.Success(c, log)
}