feat: 优化after hook的逻辑

This commit is contained in:
2026-01-04 22:54:04 +08:00
parent e0ba683411
commit 19056208c8
2 changed files with 4 additions and 3 deletions

View File

@@ -137,6 +137,7 @@ func (s *server) formatError(ctx *gin.Context, err any) exception.IException {
// RequestHandler 获取请求处理方法 // RequestHandler 获取请求处理方法
func (s *server) RequestHandler(uriCfg define.UriConfig) gin.HandlerFunc { func (s *server) RequestHandler(uriCfg define.UriConfig) gin.HandlerFunc {
return func(ctx *gin.Context) { return func(ctx *gin.Context) {
defer s.hook(ctx, uriCfg)
var ( var (
e exception.IException e exception.IException
handleResult any handleResult any
@@ -151,7 +152,6 @@ func (s *server) RequestHandler(uriCfg define.UriConfig) gin.HandlerFunc {
return return
} }
defer s.hook(ctx, uriCfg) // 执行 Logic 之后的相关逻辑
if handleResult, e = s.callFunc(ctx, uriCfg, inputValue); nil == e { if handleResult, e = s.callFunc(ctx, uriCfg, inputValue); nil == e {
response.SuccessWithExtension(ctx, handleResult, &define.ResponseOption{ContentType: consts.MimeTypeJson}) response.SuccessWithExtension(ctx, handleResult, &define.ResponseOption{ContentType: consts.MimeTypeJson})
return return

View File

@@ -43,7 +43,7 @@ func (s *server) hook(ctx *gin.Context, uriCfg define.UriConfig) {
s.hookAfter(ctx, uriCfg, hookInstance, success) s.hookAfter(ctx, uriCfg, hookInstance, success)
} else { } 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 { 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 { for _, itemFunc := range hookInstance.SuccessHookFuncList {
if nil != itemFunc { if nil != itemFunc {
itemFunc(ctx) itemFunc(ctx)
} }
} }
} else { } else {
logger.Instance.Debug("接口Logic执行失败, 执行Hook逻辑", pkgLogger.NewLogData(innerContext, logger.RecordType, logger.CodeLogicHook, map[string]any{}).ToFieldList()...)
for _, itemFunc := range hookInstance.FailureHookFuncList { for _, itemFunc := range hookInstance.FailureHookFuncList {
if nil != itemFunc { if nil != itemFunc {
itemFunc(ctx) itemFunc(ctx)