Files
jx-callback/business/jxstore/event/event.go
2020-03-06 13:46:04 +08:00

231 lines
6.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package event
import (
"fmt"
"regexp"
"strings"
"time"
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
"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",
}
regexpToken = regexp.MustCompile(`,"token":".*"`)
)
type CheckCookie struct {
VendorID int `json:"vendorID"`
VendorOrgCode string `json:"vendorOrgCode"`
Status string `json:"status"`
}
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,
}
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)
}
}()
operateEventDetail.BeforeData = utils.LimitUTF8StringLen(operateEventDetail.BeforeData, 3200)
operateEventDetail.AfterData = utils.LimitUTF8StringLen(operateEventDetail.AfterData, 3200)
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, 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
}
func GetCheckVendorCookie(ctx *jxcontext.Context, vendorIDs []int, isAuto bool) (ccList []*CheckCookie, err error) {
var (
ebaiOrderID = "1577329467196263592"
ebaiErr = "return not json"
ebaiErr2 = "系统错误"
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) || strings.Contains(err.Error(), ebaiErr2) {
errMsg += fmt.Sprintf(" 饿百账号:[%v]的Cookie无效了", vv)
flag = true
}
}
result, err := api.Ebai2API.GetEbaiDepotSku(ebaiapi.EbaiWholeCountryStore, "190700570")
if err != nil || len(result) < 1 {
cc := &CheckCookie{}
cc.VendorID = v
cc.VendorOrgCode = "饿百后台饿鲜达全国账号"
cc.Status = "无效"
ccList = append(ccList, cc)
errMsg += fmt.Sprintf(" 饿百账号:[饿百后台饿鲜达全国账号]的Cookie无效了", vv)
flag = true
}
result2, err2 := api.EbaiAPI.GetExianDaSkuDepot("190600741")
if err2 != nil || result2 == nil {
cc := &CheckCookie{}
cc.VendorID = v
cc.VendorOrgCode = "饿鲜达供应链系统"
cc.Status = "无效"
ccList = append(ccList, cc)
errMsg += fmt.Sprintf(" 饿百账号:[饿鲜达供应链系统]的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
}
}
result2, err2 := api.JdPageAPI.GetCorporationInfo("11926674", "92510108MA68KK3M8P")
if err2 != nil || result2 == nil {
cc := &CheckCookie{}
cc.VendorID = v
cc.VendorOrgCode = "京东page账号"
cc.Status = "无效"
ccList = append(ccList, cc)
errMsg += fmt.Sprintf(" 京东page账号:的Cookie无效了", vv)
flag = true
}
}
cc.VendorID = v
cc.VendorOrgCode = vv
if flag {
cc.Status = "无效"
} else {
cc.Status = "有效"
}
ccList = append(ccList, cc)
}
}
}
if isAuto && errMsg != "" {
globals.SugarLogger.Warnf("GetCheckVendorCookie[%v]", errMsg)
}
return ccList, err
}