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
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()
|
|
}
|