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), ) } } }