198 lines
5.1 KiB
Go
198 lines
5.1 KiB
Go
package event
|
||
|
||
import (
|
||
"fmt"
|
||
"strings"
|
||
"time"
|
||
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"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"
|
||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||
"git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
|
||
"git.rosy.net.cn/jx-callback/globals"
|
||
"git.rosy.net.cn/jx-callback/globals/api"
|
||
"git.rosy.net.cn/jx-callback/globals/api/apimanager"
|
||
)
|
||
|
||
var (
|
||
NoUseEventMap = map[string]string{
|
||
"CreateQrOrBarCode": "CreateQrOrBarCode",
|
||
"StatisticsReportForOrders": "StatisticsReportForOrders",
|
||
}
|
||
)
|
||
|
||
type CheckCookie struct {
|
||
VendorID int `json:"vendorID"`
|
||
VendorOrgCode string `json:"vendorOrgCode"`
|
||
Status string `json:"status"`
|
||
}
|
||
|
||
func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string) (err error) {
|
||
var (
|
||
apiFunction string
|
||
db = dao.GetDB()
|
||
)
|
||
url := ctx.GetRequest().URL.Path
|
||
if url != "" {
|
||
apiFunction = url[strings.LastIndex(url, "/")+1 : len(url)]
|
||
}
|
||
if apiFunction != "" {
|
||
if apiFunction[0:3] == "Get" || NoUseEventMap[apiFunction] != "" {
|
||
return err
|
||
}
|
||
}
|
||
if accessUUID != "" {
|
||
accessUUID = accessUUID[0:strings.Index(accessUUID, ",")]
|
||
}
|
||
event := &model.OperateEvent{
|
||
CreatedAt: time.Now(),
|
||
LastOperator: ctx.GetUserName(),
|
||
APIFunction: apiFunction,
|
||
UserID: ctx.GetUserID(),
|
||
AccessUUID: accessUUID,
|
||
JsonData: jsonData,
|
||
}
|
||
dao.Begin(db)
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
dao.Rollback(db)
|
||
panic(r)
|
||
}
|
||
}()
|
||
err = dao.CreateEntity(db, event)
|
||
dao.Commit(db)
|
||
return err
|
||
}
|
||
|
||
func AddOperateEventDetail(db *dao.DaoDB, operateEventDetail *model.OperateEventDetail) (err error) {
|
||
dao.Begin(db)
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
dao.Rollback(db)
|
||
panic(r)
|
||
}
|
||
}()
|
||
err = dao.CreateEntity(db, operateEventDetail)
|
||
dao.Commit(db)
|
||
return err
|
||
}
|
||
|
||
func DeleteOperateEventAndDetail(ctx *jxcontext.Context, deleteTime time.Time) (err error) {
|
||
db := dao.GetDB()
|
||
dao.Begin(db)
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
dao.Rollback(db)
|
||
panic(r)
|
||
}
|
||
}()
|
||
dao.DeleteOperateEventDetail(db, deleteTime)
|
||
dao.DeleteOperateEvent(db, deleteTime)
|
||
dao.Commit(db)
|
||
return err
|
||
}
|
||
|
||
func GetOperateEvents(ctx *jxcontext.Context, name string, apiFunctions []string, operateTypes, skuIDs, storeIDs []int, fromTime, toTime string, 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, offset, pageSize)
|
||
if err != nil {
|
||
return pageInfo, err
|
||
}
|
||
pageInfo = &model.PagedInfo{
|
||
Data: operateEventExt,
|
||
TotalCount: totalCount,
|
||
}
|
||
return pageInfo, err
|
||
}
|
||
|
||
func GetCheckVendorCookie(ctx *jxcontext.Context, vendorIDs []int, isAuto bool) (ccList []*CheckCookie, err error) {
|
||
var (
|
||
ebaiOrderID = "1577329467196263592"
|
||
ebaiErr = "return not json"
|
||
mtStoreID = "7388603"
|
||
mtErr = "返回结果格式不正常"
|
||
jdUpcCode = "6952395700895"
|
||
jdErr = "请输入用户名"
|
||
mtpsErr = "用户未登录"
|
||
errMsg = ""
|
||
)
|
||
for _, v := range vendorIDs {
|
||
appOrgCodeList := apimanager.CurAPIManager.GetAppOrgCodeList(v)
|
||
if len(appOrgCodeList) > 0 {
|
||
for _, vv := range appOrgCodeList {
|
||
cc := &CheckCookie{}
|
||
var flag = false
|
||
switch v {
|
||
case model.VendorIDEBAI:
|
||
resultMap, err := api.EbaiAPI.GetStoreOrderInfo(ebaiOrderID)
|
||
if len(resultMap) < 1 && err != nil {
|
||
if strings.Contains(err.Error(), ebaiErr) {
|
||
errMsg += fmt.Sprintf(" 饿百账号:[%v]的Cookie无效了!", vv)
|
||
flag = true
|
||
}
|
||
}
|
||
case model.VendorIDMTWM:
|
||
_, err := api.MtwmAPI.PackagePriceGet(mtStoreID)
|
||
if err != nil {
|
||
if strings.Contains(err.Error(), mtErr) {
|
||
errMsg += fmt.Sprintf(" 美团账号:[%v]的Cookie无效了!", vv)
|
||
flag = true
|
||
}
|
||
}
|
||
case model.VendorIDJD:
|
||
result, err := jd.GetAPI(vv).GetJdUpcCodeByName("", jdUpcCode, 1, 5)
|
||
if len(result) < 1 && err != nil {
|
||
if strings.Contains(err.Error(), jdErr) {
|
||
errMsg += fmt.Sprintf(" 京东账号:[%v]的Cookie无效了!", vv)
|
||
flag = true
|
||
}
|
||
}
|
||
}
|
||
cc.VendorID = v
|
||
cc.VendorOrgCode = vv
|
||
if flag {
|
||
cc.Status = "无效"
|
||
} else {
|
||
cc.Status = "有效"
|
||
}
|
||
ccList = append(ccList, cc)
|
||
}
|
||
} else {
|
||
cc := &CheckCookie{}
|
||
var flag = false
|
||
if v == model.VendorIDMTPS {
|
||
err := api.MtpsAPI.GetAccountDetail()
|
||
if err != nil && strings.Contains(err.Error(), mtpsErr) {
|
||
errMsg += " 美团配送账号的Cookie无效了!"
|
||
flag = true
|
||
}
|
||
}
|
||
cc.VendorID = v
|
||
if flag {
|
||
cc.Status = "无效"
|
||
} else {
|
||
cc.Status = "有效"
|
||
}
|
||
ccList = append(ccList, cc)
|
||
}
|
||
}
|
||
if isAuto && len(ccList) > 0 {
|
||
globals.SugarLogger.Warnf("GetCheckVendorCookie", errMsg)
|
||
}
|
||
return ccList, err
|
||
}
|