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) 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 }