41 lines
987 B
Go
41 lines
987 B
Go
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})
|
|
}
|