im 管理后台
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
// Package payment
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2023 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
package payment
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"hotgo/internal/library/contexts"
|
||||
"hotgo/internal/model/input/payin"
|
||||
"hotgo/utility/simple"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// 异步回调
|
||||
|
||||
type NotifyCallFunc func(ctx context.Context, pay *payin.NotifyCallFuncInp) (err error)
|
||||
|
||||
var (
|
||||
notifyCall = make(map[string]NotifyCallFunc)
|
||||
ncLock sync.Mutex
|
||||
)
|
||||
|
||||
// RegisterNotifyCall 注册支付成功回调方法
|
||||
func RegisterNotifyCall(group string, f NotifyCallFunc) {
|
||||
ncLock.Lock()
|
||||
defer ncLock.Unlock()
|
||||
if _, ok := notifyCall[group]; ok {
|
||||
panic("notifyCall repeat registration, group:" + group)
|
||||
}
|
||||
notifyCall[group] = f
|
||||
}
|
||||
|
||||
// RegisterNotifyCallMap 注册支付成功回调方法
|
||||
func RegisterNotifyCallMap(calls map[string]NotifyCallFunc) {
|
||||
for group, f := range calls {
|
||||
RegisterNotifyCall(group, f)
|
||||
}
|
||||
}
|
||||
|
||||
// NotifyCall 执行订单分组的异步回调
|
||||
func NotifyCall(ctx context.Context, in *payin.NotifyCallFuncInp) {
|
||||
f, ok := notifyCall[in.Pay.OrderGroup]
|
||||
if ok {
|
||||
ctx = contexts.Detach(ctx)
|
||||
simple.SafeGo(ctx, func(ctx context.Context) {
|
||||
if err := f(ctx, in); err != nil {
|
||||
g.Log().Warningf(ctx, "payment.NotifyCall in:%+v exec err:%+v", gjson.New(in.Pay).String(), err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user