118 lines
3.8 KiB
Go
118 lines
3.8 KiB
Go
package ebai
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
|
"git.rosy.net.cn/jx-callback/globals/api"
|
|
|
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/model"
|
|
)
|
|
|
|
type tShowStatusAndTypeInfo struct {
|
|
ShowStatus int
|
|
ActivityType int
|
|
}
|
|
|
|
func ebaiPageActType2Jx(activityType int) int {
|
|
if activityType == ebaiapi.PageActivityTypeSkuDiscount || activityType == ebaiapi.PageActivityTypeSkuDirectDown {
|
|
return model.ActSkuDirectDown
|
|
} else if activityType == ebaiapi.PageActivityTypeSkuSpecialPrice {
|
|
return model.ActSkuSecKill
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func ebaiPageActStatus2Jx(status int) int {
|
|
if status == ebaiapi.PageActivityStatusWaiting || status == ebaiapi.PageActivityStatusOnGoing {
|
|
return model.ActStatusCreated
|
|
} else if status == ebaiapi.PageActivityStatusEnded {
|
|
return model.ActStatusEnded
|
|
}
|
|
return model.ActStatusNA
|
|
}
|
|
|
|
func (c *PurchaseHandler) GetPageActList(ctx *jxcontext.Context, createdFrom time.Time) (actList []*model.Act2, err error) {
|
|
var typeAndStatusList []*tShowStatusAndTypeInfo
|
|
for _, showStatus := range []int{
|
|
ebaiapi.PageActivityShowStatusWaiting,
|
|
ebaiapi.PageActivityShowStatusOnGoing,
|
|
// ebaiapi.PageActivityStatusEnded,
|
|
} {
|
|
for _, activityType := range []int{
|
|
ebaiapi.PageActivityTypeSkuDiscount,
|
|
ebaiapi.PageActivityTypeSkuSpecialPrice,
|
|
ebaiapi.PageActivityTypeSkuDirectDown,
|
|
} {
|
|
typeAndStatusList = append(typeAndStatusList, &tShowStatusAndTypeInfo{
|
|
ShowStatus: showStatus,
|
|
ActivityType: activityType,
|
|
})
|
|
}
|
|
}
|
|
|
|
task := tasksch.NewParallelTask("ebai GetPageActList", tasksch.NewParallelConfig().SetParallelCount(10), ctx,
|
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
info := batchItemList[0].(*tShowStatusAndTypeInfo)
|
|
list, err := api.EbaiAPI.BegetActivityList(info.ShowStatus, info.ActivityType, 0, api.EbaiAPI.GetSupplierID())
|
|
if err == nil {
|
|
retVal = list
|
|
}
|
|
return retVal, err
|
|
}, typeAndStatusList)
|
|
task.Run()
|
|
list, err := task.GetResult(0)
|
|
if len(list) > 0 {
|
|
for _, v := range list {
|
|
ebaiAct := v.(*ebaiapi.PageActItem)
|
|
if utils.Timestamp2Time(ebaiAct.CreateTime).Sub(createdFrom) > 0 {
|
|
act := &model.Act2{
|
|
Act: model.Act{
|
|
Name: fmt.Sprintf("%s-%s", ebaiAct.ActivityName, ebaiAct.ActivityID),
|
|
Type: ebaiPageActType2Jx(ebaiAct.ActivityType),
|
|
Status: ebaiPageActStatus2Jx(ebaiAct.Status),
|
|
Source: ebaiAct.User,
|
|
CreateType: model.ActCreateTypeSpider,
|
|
BeginAt: utils.Timestamp2Time(ebaiAct.StartTime),
|
|
EndAt: utils.Timestamp2Time(ebaiAct.EndTime),
|
|
VendorMask: model.GetVendorMask(model.VendorIDEBAI),
|
|
LimitCount: 1,
|
|
},
|
|
VendorID: model.VendorIDEBAI,
|
|
VendorOrgCode: api.EbaiAPI.GetSource(),
|
|
VendorActID: ebaiAct.ActivityID,
|
|
}
|
|
actList = append(actList, act)
|
|
}
|
|
}
|
|
}
|
|
return actList, err
|
|
}
|
|
|
|
func (c *PurchaseHandler) GetPageActSkuList(ctx *jxcontext.Context, vendorPageActID string) (actStoreSkuList []*model.ActStoreSku2, err error) {
|
|
skus, err := api.EbaiAPI.BegetActSkuList(utils.Str2Int64(vendorPageActID), 0, api.EbaiAPI.GetSupplierID())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, v := range skus {
|
|
actStoreSku := &model.ActStoreSku2{
|
|
ActStoreSku: model.ActStoreSku{
|
|
Stock: v.Stock,
|
|
OriginalPrice: jxutils.StandardPrice2Int(v.OriginalPrice),
|
|
},
|
|
VendorStoreID: utils.Int64ToStr(v.Wid),
|
|
VendorSkuID: v.SkuID,
|
|
VendorActID: v.ActivityID,
|
|
ActualActPrice: jxutils.StandardPrice2Int(v.PromotionPrice),
|
|
}
|
|
actStoreSkuList = append(actStoreSkuList, actStoreSku)
|
|
}
|
|
return actStoreSkuList, nil
|
|
}
|