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

142 lines
2.4 KiB

package dapi
import (
"epur-pay/cache"
"epur-pay/model"
"epur-pay/pkg/async"
"epur-pay/pkg/logger"
"epur-pay/pkg/rds"
"epur-pay/pkg/utils"
"gorm.io/gorm"
)
func (a *ApiBase) apiAfter() error {
if a.AfterCallback != nil {
async.Asyncs.AfterCallback.Add(async.NewAsyncRequestFunc(a.AfterCallback, a.AfterCallbackDelay))
}
if Cf.ApiAfter != nil {
if err := Cf.ApiAfter(a); err != nil {
return err
}
}
return nil
}
func (a *ApiBase) apiBefore() error {
if err := a.limitRouterRuleHandler(); err != nil {
return err
}
if err := a.headerHandler(); err != nil {
return err
}
if Cf.ApiBefore != nil {
if err := Cf.ApiBefore(a); err != nil {
return err
}
}
if !cache.Global.ProjectInitStatus {
return a.ReturnPublicErrorResponse(a.Translate("during_upgrade"))
}
return nil
}
func (a *ApiBase) apiRunEx() error {
if err := a.authHandler(); err != nil {
return err
}
if err := a.lockTrade(); err != nil {
return err
}
a.saveLogBefore()
if err := a.apiHandler(); err != nil {
return err
}
return nil
}
func (a *ApiBase) saveLogBefore() {
//记录日志
if a.InParams.IsSaveLog || a.InParams.IsSkipErrorSaveLog {
a.Log = new(model.Log)
a.Log.Event = a.InParams.SaveEvent
if a.User != nil {
a.Log.Uid = a.User.Uid
a.Log.Name = a.User.Account
}
a.Log.Ip = a.ClientIp()
a.Log.CreateTime = utils.Time2StampSecond()
if a.Site == "h5App" {
a.Log.UserType = "0"
} else if a.Site == "h5Admin" {
a.Log.UserType = "1"
}
a.Log.IsSuper = "0"
}
}
func (a *ApiBase) apiRun() error {
if a.InParams.IsTransaction {
if err := rds.DB.Transaction(func(ts *gorm.DB) error {
a.Ts = ts
if err := a.apiRunEx(); err != nil && a.Error == nil {
a.Error = err
}
if a.Error != nil {
return a.Error
} else {
return nil
}
}); err != nil {
logger.AccessLogger.Errorln(err.Error())
}
} else {
a.Ts = rds.DB
if err := a.apiRunEx(); err != nil && a.Error == nil {
a.Error = err
}
}
return a.Error
}
func (a *ApiBase) apiMain() error {
if err := a.apiBefore(); err != nil {
return err
}
if err := a.apiRun(); err != nil {
return err
}
a.freeTrade()
if err := a.apiAfter(); err != nil {
return err
}
return nil
}
func (a *ApiBase) TMapGet(data model.JSON) string {
if row, ok := data[a.Lang]; ok {
return row.(string)
} else {
if row1, ok1 := data[cache.Global.Caches.Language.DefaultLanguage]; ok1 {
return row1.(string)
} else {
return ""
}
}
}