From 19056208c872013f5336f0e84064bba7f51ebffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sun, 4 Jan 2026 22:54:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96after=20hook=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- router/handler.go | 2 +- router/hook.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/router/handler.go b/router/handler.go index dd15128..4ee6e3c 100644 --- a/router/handler.go +++ b/router/handler.go @@ -137,6 +137,7 @@ func (s *server) formatError(ctx *gin.Context, err any) exception.IException { // RequestHandler 获取请求处理方法 func (s *server) RequestHandler(uriCfg define.UriConfig) gin.HandlerFunc { return func(ctx *gin.Context) { + defer s.hook(ctx, uriCfg) var ( e exception.IException handleResult any @@ -151,7 +152,6 @@ func (s *server) RequestHandler(uriCfg define.UriConfig) gin.HandlerFunc { return } - defer s.hook(ctx, uriCfg) // 执行 Logic 之后的相关逻辑 if handleResult, e = s.callFunc(ctx, uriCfg, inputValue); nil == e { response.SuccessWithExtension(ctx, handleResult, &define.ResponseOption{ContentType: consts.MimeTypeJson}) return diff --git a/router/hook.go b/router/hook.go index ae85e7d..c5ce629 100644 --- a/router/hook.go +++ b/router/hook.go @@ -43,7 +43,7 @@ func (s *server) hook(ctx *gin.Context, uriCfg define.UriConfig) { s.hookAfter(ctx, uriCfg, hookInstance, success) } else { // 异步执行 - go s.hookAfter(ctx, uriCfg, hookInstance, success) + go s.hookAfter(util.Copy(ctx), uriCfg, hookInstance, success) } } @@ -60,13 +60,14 @@ func (s *server) hookAfter(ctx *gin.Context, uriCfg define.UriConfig, hookInstan } }() if success { - logger.Instance.Debug("接口Logic执行成功, 执行Hook逻辑") + logger.Instance.Debug("接口Logic执行成功, 执行Hook逻辑", pkgLogger.NewLogData(innerContext, logger.RecordType, logger.CodeLogicHook, map[string]any{}).ToFieldList()...) for _, itemFunc := range hookInstance.SuccessHookFuncList { if nil != itemFunc { itemFunc(ctx) } } } else { + logger.Instance.Debug("接口Logic执行失败, 执行Hook逻辑", pkgLogger.NewLogData(innerContext, logger.RecordType, logger.CodeLogicHook, map[string]any{}).ToFieldList()...) for _, itemFunc := range hookInstance.FailureHookFuncList { if nil != itemFunc { itemFunc(ctx)