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 获取请求处理方法
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

View File

@@ -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)