package middleware import ( "github.com/gin-gonic/gin" "go.uber.org/zap" ) // Recover 捕获 panic 并返回 500 func Recover(logger *zap.Logger) gin.HandlerFunc { return gin.CustomRecovery(func(c *gin.Context, err interface{}) { logger.Error("panic recovered", zap.Any("error", err), zap.String("path", c.Request.URL.Path), zap.String("request_id", c.GetString("request_id")), ) c.JSON(500, gin.H{ "code": 5000, "message": "internal server error", }) c.Abort() }) }