projectx/internal/pkg/mid/audit_v3.go
2025-06-30 16:44:06 +08:00

53 lines
1.1 KiB
Go

package mid
import (
"context"
"time"
"management/internal/tasks"
"github.com/drhin/logger"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"github.com/hibiken/asynq"
"go.uber.org/zap"
)
// Audit 改造后的中间件
func Audit(log *logger.Logger, task tasks.TaskDistributor) gin.HandlerFunc {
return func(ctx *gin.Context) {
start := time.Now()
log.Info(start.Format(time.DateTime))
ctx.Next()
payload := GetUser(ctx)
if payload == nil {
return
}
if payload.ID == uuid.Nil {
return
}
logs := &tasks.PayloadConsumeAuditLog{
//AuditLog: system.NewAuditLog(r, payload.Email, payload.OS, payload.Browser, start, time.Now()),
}
opts := []asynq.Option{
asynq.MaxRetry(10),
asynq.ProcessIn(1 * time.Second),
asynq.Queue(tasks.QueueCritical),
}
c, cancel := context.WithTimeout(ctx, 2*time.Second)
defer cancel()
if err := task.DistributeTaskConsumeAuditLog(c, logs, opts...); err != nil {
log.Error("distribute task failed", err,
zap.String("type", "audit"),
zap.Any("payload", payload),
)
}
}
}