feat: 优化after hook的逻辑
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user