You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
770 B
Go

package logic
import "joybuywork/internal/plugins/jsonm"
type Container interface {
Exec() (err error) //执行逻辑
Before() (err error) //执行逻辑之前做的
Data() (data jsonm.JsonM) //执行逻辑
After(err error) //执行逻辑之后做的
TranCommit(err error) //提交事务
PushErr(data jsonm.JsonM, err error) //推送错误
}
// Run 运行逻辑
func Run(container Container) (err error) {
defer func() {
container.TranCommit(err)
container.After(err)
}()
defer func() {
if r := recover(); r != nil {
err = r.(error)
container.PushErr(container.Data(), err)
}
}()
err = container.Before()
if err != nil {
return
}
return container.Exec()
}