package handlers import ( "strconv" "github.com/gin-gonic/gin" "gorm.io/gorm" "everypublish/server/internal/api/response" "everypublish/server/internal/models" ) // AuditHandler 审计日志处理器 type AuditHandler struct { DB *gorm.DB } // List 审计日志(分页 + 筛选) func (h *AuditHandler) List(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) size, _ := strconv.Atoi(c.DefaultQuery("size", "20")) if page < 1 { page = 1 } if size < 1 || size > 100 { size = 20 } q := h.DB.Model(&models.AuditLog{}).Where("workspace_id = ?", c.GetUint64("wsid")) if uid := c.Query("userId"); uid != "" { q = q.Where("user_id = ?", uid) } if action := c.Query("action"); action != "" { q = q.Where("action = ?", action) } var total int64 q.Count(&total) var list []models.AuditLog q.Order("id desc").Offset((page - 1) * size).Limit(size).Find(&list) response.OK(c, gin.H{"list": list, "total": total, "page": page, "size": size}) }