Files
jx-callback/business/partner/purchase/ebai/act_page.go
2019-12-10 15:07:11 +08:00

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
}