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
142 lines
2.4 KiB
1 month ago
|
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 ""
|
||
|
}
|
||
|
}
|
||
|
}
|