121 lines
4.4 KiB
Go
121 lines
4.4 KiB
Go
package jd
|
|
|
|
import (
|
|
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
|
"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"
|
|
"git.rosy.net.cn/jx-callback/globals"
|
|
"git.rosy.net.cn/jx-callback/globals/api"
|
|
)
|
|
|
|
func (p *PurchaseHandler) GetStoreSkusBatchSize(funcID int) (batchSize int) {
|
|
switch funcID {
|
|
case partner.FuncUpdateStoreSkusStock, partner.FuncUpdateStoreSkusStatus, partner.FuncUpdateStoreSkusPrice:
|
|
batchSize = jdapi.MaxStoreSkuBatchSize
|
|
}
|
|
return batchSize
|
|
}
|
|
|
|
func (p *PurchaseHandler) GetStoreSkusInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, inStoreSkuList []*partner.BareStoreSkuInfo) (outStoreSkuList []*partner.BareStoreSkuInfo, err error) {
|
|
var batchSkuInfoList []*jdapi.BaseStockCenterRequest
|
|
batchSkuList := partner.BareStoreSkuInfoList(inStoreSkuList).GetVendorSkuIDIntList()
|
|
for _, v := range inStoreSkuList {
|
|
if !dao.IsVendorThingIDEmpty(v.VendorSkuID) {
|
|
batchSkuInfoList = append(batchSkuInfoList, &jdapi.BaseStockCenterRequest{
|
|
StationNo: vendorStoreID,
|
|
SkuId: utils.Str2Int64(v.VendorSkuID),
|
|
})
|
|
}
|
|
}
|
|
if len(batchSkuInfoList) > 0 {
|
|
var stockInfo []*jdapi.QueryStockResponse
|
|
var priceInfo []*jdapi.StorePriceInfo
|
|
task := tasksch.NewParallelTask("获取京东到家平台门店商品信息", tasksch.NewParallelConfig().SetParallelCount(2), ctx,
|
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
subTaskID := batchItemList[0].(int)
|
|
if subTaskID == 0 {
|
|
stockInfo, err = api.JdAPI.QueryOpenUseable(batchSkuInfoList)
|
|
} else {
|
|
priceInfo, err = api.JdAPI.GetStationInfoList(vendorStoreID, batchSkuList)
|
|
globals.SugarLogger.Debug(utils.Format4Output(priceInfo, false))
|
|
}
|
|
return nil, err
|
|
}, []int{0, 1})
|
|
tasksch.HandleTask(task, parentTask, false).Run()
|
|
_, err = task.GetResult(0)
|
|
if err == nil {
|
|
storeSkuMap := make(map[int64]*partner.BareStoreSkuInfo)
|
|
for _, v := range inStoreSkuList {
|
|
storeSkuMap[utils.Str2Int64(v.VendorSkuID)] = v
|
|
}
|
|
for _, v := range stockInfo {
|
|
outStoreSkuList = append(outStoreSkuList, storeSkuMap[v.SkuID])
|
|
storeSkuMap[v.SkuID].Status = jdStoreSkuStatus2Jx(v.Vendibility)
|
|
}
|
|
for _, v := range priceInfo {
|
|
storeSkuMap[v.SkuID].Price = v.Price
|
|
}
|
|
}
|
|
}
|
|
return outStoreSkuList, err
|
|
}
|
|
|
|
func jdStoreSkuStatus2Jx(jdStoreSkuStatus int) (jxSkuStatus int) {
|
|
if jdStoreSkuStatus == 0 {
|
|
jxSkuStatus = model.SkuStatusNormal
|
|
} else {
|
|
jxSkuStatus = model.SkuStatusDontSale
|
|
}
|
|
return jxSkuStatus
|
|
}
|
|
|
|
func jxStoreSkuStatus2Jd(jxStoreSkuStatus int) (isSale bool) {
|
|
return jxStoreSkuStatus == model.SkuStatusNormal
|
|
}
|
|
|
|
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.BareStoreSkuInfo) (err error) {
|
|
var skuStockList []*jdapi.SkuStock
|
|
for _, v := range storeSkuList {
|
|
skuStockList = append(skuStockList, &jdapi.SkuStock{
|
|
OutSkuId: utils.Int2Str(v.SkuID),
|
|
StockQty: v.Stock,
|
|
})
|
|
}
|
|
if globals.EnableJdStoreWrite {
|
|
_, err = api.JdAPI.BatchUpdateCurrentQtys("", vendorStoreID, skuStockList, ctx.GetUserName())
|
|
}
|
|
return err
|
|
}
|
|
|
|
func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.BareStoreSkuInfo) (err error) {
|
|
var skuVendibilityList []*jdapi.StockVendibility
|
|
for _, v := range storeSkuList {
|
|
skuVendibilityList = append(skuVendibilityList, &jdapi.StockVendibility{
|
|
OutSkuId: utils.Int2Str(v.SkuID),
|
|
DoSale: jxStoreSkuStatus2Jd(v.Status),
|
|
})
|
|
}
|
|
if globals.EnableJdStoreWrite {
|
|
_, err = api.JdAPI.BatchUpdateVendibility("", vendorStoreID, skuVendibilityList, ctx.GetUserName())
|
|
}
|
|
return err
|
|
}
|
|
|
|
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.BareStoreSkuInfo) (err error) {
|
|
var skuPriceInfoList []*jdapi.SkuPriceInfo
|
|
for _, v := range storeSkuList {
|
|
skuPriceInfoList = append(skuPriceInfoList, &jdapi.SkuPriceInfo{
|
|
OutSkuId: utils.Int2Str(v.SkuID),
|
|
Price: int(v.Price),
|
|
})
|
|
}
|
|
if globals.EnableJdStoreWrite {
|
|
_, err = api.JdAPI.UpdateVendorStationPrice("", vendorStoreID, skuPriceInfoList)
|
|
}
|
|
return err
|
|
}
|