132 lines
3.5 KiB
Go
132 lines
3.5 KiB
Go
package event
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
"time"
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/dao"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
"git.rosy.net.cn/jx-callback/business/model"
|
|
)
|
|
|
|
var (
|
|
NoUseEventMap = map[string]string{
|
|
"CreateQrOrBarCode": "CreateQrOrBarCode",
|
|
"StatisticsReportForOrders": "StatisticsReportForOrders",
|
|
"UpdateUser": "UpdateUser",
|
|
}
|
|
regexpToken = regexp.MustCompile(`,"token":".*"`)
|
|
)
|
|
|
|
const (
|
|
sysMessageTitle = ""
|
|
)
|
|
|
|
func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string, errCode, errMsg string, useTime int, apiFunctionSpec string) (err error) {
|
|
var (
|
|
apiFunction string
|
|
db = dao.GetDB()
|
|
)
|
|
// if ctx.GetRequest() == nil {
|
|
// return nil
|
|
// }
|
|
if apiFunctionSpec == "" {
|
|
url := ctx.GetRequest().URL.Path
|
|
if url != "" {
|
|
apiFunction = url[strings.LastIndex(url, "/")+1 : len(url)]
|
|
}
|
|
} else {
|
|
apiFunction = apiFunctionSpec
|
|
}
|
|
if apiFunction != "" {
|
|
if apiFunction[0:3] == "Get" || NoUseEventMap[apiFunction] != "" {
|
|
return err
|
|
}
|
|
}
|
|
if accessUUID != "" {
|
|
accessUUID = accessUUID[0:strings.Index(accessUUID, ",")]
|
|
}
|
|
jsonData = strings.ReplaceAll(jsonData, regexpToken.FindString(jsonData), "")
|
|
jsonData = utils.LimitUTF8StringLen(jsonData, 3200)
|
|
errMsg = utils.LimitUTF8StringLen(errMsg, 9999)
|
|
event := &model.OperateEvent{
|
|
CreatedAt: time.Now(),
|
|
LastOperator: ctx.GetUserName(),
|
|
APIFunction: apiFunction,
|
|
UserID: ctx.GetUserID(),
|
|
AccessUUID: accessUUID,
|
|
JsonData: jsonData,
|
|
ErrCode: errCode,
|
|
ErrMsg: errMsg,
|
|
UseTime: useTime,
|
|
}
|
|
txDB, _ := dao.Begin(db)
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
dao.Rollback(db, txDB)
|
|
panic(r)
|
|
}
|
|
}()
|
|
err = dao.CreateEntity(db, event)
|
|
dao.Commit(db, txDB)
|
|
return err
|
|
}
|
|
|
|
func AddOperateEventDetail(db *dao.DaoDB, operateEventDetail *model.OperateEventDetail) (err error) {
|
|
txDB, _ := dao.Begin(db)
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
dao.Rollback(db, txDB)
|
|
panic(r)
|
|
}
|
|
}()
|
|
operateEventDetail.BeforeData = utils.LimitUTF8StringLen(operateEventDetail.BeforeData, 3200)
|
|
operateEventDetail.AfterData = utils.LimitUTF8StringLen(operateEventDetail.AfterData, 3200)
|
|
err = dao.CreateEntity(db, operateEventDetail)
|
|
dao.Commit(db, txDB)
|
|
return err
|
|
}
|
|
|
|
func DeleteOperateEventAndDetail(ctx *jxcontext.Context, deleteTime time.Time) (err error) {
|
|
db := dao.GetDB()
|
|
txDB, _ := dao.Begin(db)
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
dao.Rollback(db, txDB)
|
|
panic(r)
|
|
}
|
|
}()
|
|
dao.DeleteOperateEventDetail(db, deleteTime)
|
|
dao.DeleteOperateEvent(db, deleteTime)
|
|
dao.Commit(db, txDB)
|
|
return err
|
|
}
|
|
|
|
func GetOperateEvents(ctx *jxcontext.Context, name string, apiFunctions []string, operateTypes, skuIDs, storeIDs []int, fromTime, toTime, keyword string, errType, offset, pageSize int) (pageInfo *model.PagedInfo, err error) {
|
|
var (
|
|
fromTimeP time.Time
|
|
toTimeP time.Time
|
|
)
|
|
db := dao.GetDB()
|
|
if fromTime != "" {
|
|
fromTimeP = utils.Str2Time(fromTime)
|
|
}
|
|
if toTime != "" {
|
|
toTimeP = utils.Str2Time(toTime)
|
|
}
|
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
|
offset = jxutils.FormalizePageOffset(offset)
|
|
operateEventExt, totalCount, err := dao.GetOperateEvents(db, name, apiFunctions, operateTypes, skuIDs, storeIDs, fromTimeP, toTimeP, keyword, errType, offset, pageSize)
|
|
if err != nil {
|
|
return pageInfo, err
|
|
}
|
|
pageInfo = &model.PagedInfo{
|
|
Data: operateEventExt,
|
|
TotalCount: totalCount,
|
|
}
|
|
return pageInfo, err
|
|
}
|