From 58e3e3dfb235722c56b48a265145e35af85f5090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Nov 2020 08:58:45 +0800 Subject: [PATCH] heihei --- business/jxutils/weixinmsg/weixinmsg.go | 4 +- business/partner/delivery/dada/waybill.go | 4 +- business/partner/purchase/jdshop/store_sku.go | 547 +++++++++++++----- 3 files changed, 398 insertions(+), 157 deletions(-) diff --git a/business/jxutils/weixinmsg/weixinmsg.go b/business/jxutils/weixinmsg/weixinmsg.go index 70fe53d03..55c7addd7 100644 --- a/business/jxutils/weixinmsg/weixinmsg.go +++ b/business/jxutils/weixinmsg/weixinmsg.go @@ -184,8 +184,8 @@ func getOrderDetailBrief(order *model.GoodsOrder) (brief string) { if order.EarningType == model.EarningTypePoints { price = order.ActualPayPrice } else { - storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, "") - if storeDetail.CityCode == 510100 { + stores, _ := dao.GetStoreList(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, []int{510100}, nil, nil, "") + if len(stores) > 0 { price = order.ActualPayPrice } else { price = order.ShopPrice diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index c66233cf1..dee857fb6 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -18,8 +18,8 @@ import ( ) const ( - maxOrderPrice = 6399 // 单位为分,达达最大价格,超过这个价格配送费会增加 - maxOrderWeight = 5000 // 5公斤 + maxOrderPrice = 50000 // 单位为分,达达最大价格,超过这个价格配送费会增加,2020-11-25改为50000,之前是6399 + maxOrderWeight = 5000 // 5公斤 ) var ( diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index a5fa7fe50..5fbee4c1a 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -37,8 +37,10 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v if globals.EnableJdShopWrite && (vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2) { for _, v := range storeSkuList { //判断京东商城上是否有这个商品了,如果有就是添加规格而不是创建商品 + //如果是京东商城2,是下架的商品,弄上架 name := filterSensitiveWord(v.Name) flag := false + flag2 := false result, err := getAPI(v.VendorOrgCode).SearchWare4Valid(name, 1, 100) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") @@ -47,72 +49,169 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v for _, v := range result.Data { if v.Title == name { flag = true + //下架 + if v.WareStatus == 2 { + flag2 = true + } break } } - if result.TotalItem > 0 && len(result.Data) > 0 && flag { - for _, vv := range v.StoreSkuSyncInfoJds { - v.JdsWareID = result.Data[0].WareID - vv.JdsWareID = result.Data[0].WareID - updateSkusParam, err := buildUpdateSkusParam(v, vv, true) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") - return failedList, err - } - vendorSkuID, err := getAPI(v.VendorOrgCode).UpdateSkus(updateSkusParam) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") - return failedList, err - } - vv.VendorSkuID = vendorSkuID - } + if v.VendorOrgCode == "2" && flag2 { + err = api.JdShop2API.WareDoUpdate("op", utils.Int64ToStr(v.JdsWareID)) } else { - createSkuParamWare, createSkuParamSkus, _, err := buildCreateWareParam(v) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") - return failedList, err - } - createSkuResult, err := getAPI(v.VendorOrgCode).CreateWare(createSkuParamWare, createSkuParamSkus) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") - return failedList, err - } else { - //追加商品透图 - imageURL := "" - img := v.Img - if img != "" { - suffix := img[strings.LastIndex(img, "."):] - if suffix != ".png" { - if resBinary, _, _ := jxutils.DownloadFileByURL(img + model.SkuNameImgToPng); err == nil { - downloadURL, _ := jxutils.UploadExportContent(resBinary, utils.Int64ToStr(time.Now().Unix())) - imageURL, _ = uploadImg(downloadURL, name, "tou", v.VendorOrgCode) + if result.TotalItem > 0 && len(result.Data) > 0 && flag { + //jds2 + wareSaveParam := &jdshopapi.WareSaveParam{ + WareID: result.Data[0].WareID, + Title: v.Name, + CategoryID: int(v.VendorVendorCatID), + VenderID: jdshopapi.VendorID2, + Length: 100, + Wide: 100, + Height: 100, + Weight: utils.Int2Str(v.Weight), + BrandID: jdshopapi.BrandIdNO, + ShopCategorys: []int{utils.Str2Int(v.VendorCatID)}, + PromiseID: -1, + MultiCateProps: []interface{}{}, + PropsSet: []interface{}{}, + SaleAttrs: []interface{}{}, + } + var wareSaveSkus []*jdshopapi.WareSaveSkus + //先把已有的规格放进去 + if v.VendorOrgCode == "2" { + skus, _, _ := api.JdShop2API.SearchSkuList2([]int{int(wareSaveParam.WareID)}) + if len(skus) > 0 { + for _, vv := range skus { + sku := &jdshopapi.WareSaveSkus{ + SkuID: vv.SkuID, + JdPrice: utils.Float64ToStr(vv.JdPrice), + StockNum: vv.StockNum, + Props: []*jdshopapi.WareSaveSkusProp{ + &jdshopapi.WareSaveSkusProp{ + AttrID: utils.Str2Int(vv.SaleAttrs[0].AttrID), + AttrValues: utils.Str2Int64(vv.SaleAttrs[0].AttrValues[0]), + AttrValueAlias: vv.SaleAttrs[0].AttrValueAlias[0], + }, + }, + } + wareSaveSkus = append(wareSaveSkus, sku) } + } + } + for _, vv := range v.StoreSkuSyncInfoJds { + v.JdsWareID = result.Data[0].WareID + vv.JdsWareID = result.Data[0].WareID + updateSkusParam, wareSaveSku, err := buildUpdateSkusParam(v, vv, true) + wareSaveSkus = append(wareSaveSkus, wareSaveSku) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err + } + if v.VendorOrgCode == "1" { + vendorSkuID, err := getAPI(v.VendorOrgCode).UpdateSkus(updateSkusParam) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err + } + vv.VendorSkuID = vendorSkuID } else { - imageURL, _ = uploadImg(img, name, "tou", v.VendorOrgCode) + wareSaveParam.Skus = wareSaveSkus + getAPI(v.VendorOrgCode).WareSave(wareSaveParam) + skus, _, _ := api.JdShop2API.SearchSkuList2([]int{int(wareSaveParam.WareID)}) + for _, vvv := range skus { + if vvv.OuterID == wareSaveSku.OuterID { + vv.VendorSkuID = utils.Int64ToStr(vvv.SkuID) + break + } + } } } - getAPI(v.VendorOrgCode).TransparentImageAdd(createSkuResult.WareID, imageURL) - } - var paramAttrs = make(map[string]*jdshopapi.CreateSkuParamSkus) - var resultAttrs = make(map[string]int64) - for _, vv := range createSkuParamSkus { - for _, vvv := range vv.SaleAttrs { - paramAttrs[vvv.AttrValues[0]] = vv + } else { + createSkuParamWare, createSkuParamSkus, wareSaveParam, err := buildCreateWareParam(v) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err } - } - for _, vv1 := range createSkuResult.Skus { - for _, vvv1 := range vv1.SaleAttrs { - if paramAttrs[vvv1.AttrValues[0]] != nil { - resultAttrs[paramAttrs[vvv1.AttrValues[0]].OuterID] = vv1.SkuID + var ( + wareID int64 + resultAttrs = make(map[string]int64) + ) + if v.VendorOrgCode == "1" { + createSkuResult, err2 := getAPI(v.VendorOrgCode).CreateWare(createSkuParamWare, createSkuParamSkus) + err = err2 + wareID = createSkuResult.WareID + + var paramAttrs = make(map[string]*jdshopapi.CreateSkuParamSkus) + for _, vv := range createSkuParamSkus { + for _, vvv := range vv.SaleAttrs { + paramAttrs[vvv.AttrValues[0]] = vv + } + } + for _, vv1 := range createSkuResult.Skus { + for _, vvv1 := range vv1.SaleAttrs { + if paramAttrs[vvv1.AttrValues[0]] != nil { + resultAttrs[paramAttrs[vvv1.AttrValues[0]].OuterID] = vv1.SkuID + } + } + } + for _, vv2 := range v.StoreSkuSyncInfoJds { + vv2.JdsWareID = createSkuResult.WareID + if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 { + vv2.VendorSkuID = utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)]) + } + } + } else { + createSkuResult, err2 := getAPI(v.VendorOrgCode).WareSave(wareSaveParam) + err = err2 + wareID = createSkuResult[0].WareID + + var paramAttrs = make(map[string]*jdshopapi.WareSaveSkus) + for _, vv := range wareSaveParam.Skus { + for _, vvv := range vv.Props { + paramAttrs[vvv.AttrValueAlias] = vv + } + } + for _, vv1 := range createSkuResult { + for _, vvv1 := range vv1.Props { + if paramAttrs[vvv1.AttrValueAlias] != nil { + resultAttrs[paramAttrs[vvv1.AttrValueAlias].OuterID] = vv1.SkuID + } + } + } + for _, vv2 := range v.StoreSkuSyncInfoJds { + vv2.JdsWareID = createSkuResult[0].WareID + if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 { + vv2.VendorSkuID = utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)]) + } } } - } - for _, vv2 := range v.StoreSkuSyncInfoJds { - vv2.JdsWareID = createSkuResult.WareID - if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 { - vv2.VendorSkuID = utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)]) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err + } else { + //追加商品透图 + imageURL := "" + img := v.Img + if img != "" { + suffix := img[strings.LastIndex(img, "."):] + if suffix != ".png" { + if resBinary, _, _ := jxutils.DownloadFileByURL(img + model.SkuNameImgToPng); err == nil { + downloadURL, _ := jxutils.UploadExportContent(resBinary, utils.Int64ToStr(time.Now().Unix())) + imageURL, _ = uploadImg(downloadURL, name, "tou", v.VendorOrgCode) + } + } else { + imageURL, _ = uploadImg(img, name, "tou", v.VendorOrgCode) + } + } + getAPI(v.VendorOrgCode).TransparentImageAdd(wareID, imageURL) } } + //创建商品后要上架,改价,库存,门店关注商品等 + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err + } } } } @@ -121,89 +220,155 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { if globals.EnableJdShopWrite && (vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2) { - for _, v := range storeSkuList { - name := filterSensitiveWord(v.Name) - updateWareParam := &jdshopapi.UpdateWareParam{ - WareID: v.JdsWareID, - Title: name, - VenderID: jdshopapi.VenderID, - // PromiseID: jdshopapi.JdsPromiseID, - ShopCategorys: []int{utils.Str2Int(v.VendorCatID)}, - JdPrice: jxutils.IntPrice2Standard(v.UnitPrice), - } - if v.VendorVendorCatID != jdshopapi.JdsOtherMeatCatID { - updateWareParam.PromiseID = jdshopapi.JdsPromiseID - } - var desc string - if v.DescImg != "" { - pic3, err2 := uploadImg2(v.DescImg, name, "desc", v.VendorOrgCode) - err = err2 - desc = `



` - } else { - desc = `



` - } - updateWareParam.Introduction = desc - updateWareParam.MobileDesc = desc - img := "" - if v.ImgMix != "" { - img = v.ImgMix - } else { - img = v.Img - } - if img != "" { - pic1, err2 := uploadImg2(img, name, "1", v.VendorOrgCode) - err = err2 - err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 1, pic1) - if v.Img2 != "" { - pic2, err2 := uploadImg2(v.Img2, name, "2", v.VendorOrgCode) + if vendorStoreID == model.JdShopMainVendorStoreID { + for _, v := range storeSkuList { + name := filterSensitiveWord(v.Name) + updateWareParam := &jdshopapi.UpdateWareParam{ + WareID: v.JdsWareID, + Title: name, + VenderID: jdshopapi.VenderID, + // PromiseID: jdshopapi.JdsPromiseID, + ShopCategorys: []int{utils.Str2Int(v.VendorCatID)}, + JdPrice: jxutils.IntPrice2Standard(v.UnitPrice), + } + if v.VendorVendorCatID != jdshopapi.JdsOtherMeatCatID { + updateWareParam.PromiseID = jdshopapi.JdsPromiseID + } + var desc string + if v.DescImg != "" { + pic3, err2 := uploadImg2(v.DescImg, name, "desc", v.VendorOrgCode) err = err2 - err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 2, pic2) + desc = `



` } else { - err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 2, pic1) + desc = `



` + } + updateWareParam.Introduction = desc + updateWareParam.MobileDesc = desc + img := "" + if v.ImgMix != "" { + img = v.ImgMix + } else { + img = v.Img } - err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 3, pic1) - } - var features = []*jdshopapi.CreateSkuParamFeatures{ - &jdshopapi.CreateSkuParamFeatures{ - Key: "is7ToReturn", //不支持7天无理由退货 - Value: "0", - }, - &jdshopapi.CreateSkuParamFeatures{ - Key: "tssp", //支持自提 - Value: "", - }, - // &jdshopapi.CreateSkuParamFeatures{ - // Key: "fdms", //分单? - // Value: "1", - // }, - } - updateWareParam.Features = features - err = getAPI(v.VendorOrgCode).UpdateWare(updateWareParam) - if err == nil { - //追加商品透图 - imageURL := "" - img := v.Img if img != "" { - suffix := img[strings.LastIndex(img, "."):] - if suffix != ".png" { - if resBinary, _, err := jxutils.DownloadFileByURL(img + model.SkuNameImgToPng); err == nil { - downloadURL, err2 := jxutils.UploadExportContent(resBinary, utils.Int64ToStr(time.Now().Unix())) - err = err2 - imageURL, err = uploadImg(downloadURL, name, "tou", v.VendorOrgCode) - } + pic1, err2 := uploadImg2(img, name, "1", v.VendorOrgCode) + err = err2 + err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 1, pic1) + if v.Img2 != "" { + pic2, err2 := uploadImg2(v.Img2, name, "2", v.VendorOrgCode) + err = err2 + err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 2, pic2) } else { - imageURL, err = uploadImg(img, name, "tou", v.VendorOrgCode) + err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 2, pic1) } + err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 3, pic1) + } + var features = []*jdshopapi.CreateSkuParamFeatures{ + &jdshopapi.CreateSkuParamFeatures{ + Key: "is7ToReturn", //不支持7天无理由退货 + Value: "0", + }, + &jdshopapi.CreateSkuParamFeatures{ + Key: "tssp", //支持自提 + Value: "", + }, + // &jdshopapi.CreateSkuParamFeatures{ + // Key: "fdms", //分单? + // Value: "1", + // }, + } + updateWareParam.Features = features + err = getAPI(v.VendorOrgCode).UpdateWare(updateWareParam) + if err == nil { + //追加商品透图 + imageURL := "" + img := v.Img + if img != "" { + suffix := img[strings.LastIndex(img, "."):] + if suffix != ".png" { + if resBinary, _, err := jxutils.DownloadFileByURL(img + model.SkuNameImgToPng); err == nil { + downloadURL, err2 := jxutils.UploadExportContent(resBinary, utils.Int64ToStr(time.Now().Unix())) + err = err2 + imageURL, err = uploadImg(downloadURL, name, "tou", v.VendorOrgCode) + } + } else { + imageURL, err = uploadImg(img, name, "tou", v.VendorOrgCode) + } + } + getAPI(v.VendorOrgCode).TransparentImageAdd(v.JdsWareID, imageURL) + } + for _, vv := range v.StoreSkuSyncInfoJds { + updateSkusParam, _, err := buildUpdateSkusParam(v, vv, false) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "更新商品基础信息") + return failedList, err + } + _, err = getAPI(v.VendorOrgCode).UpdateSkus(updateSkusParam) } - getAPI(v.VendorOrgCode).TransparentImageAdd(v.JdsWareID, imageURL) } - for _, vv := range v.StoreSkuSyncInfoJds { - updateSkusParam, err := buildUpdateSkusParam(v, vv, false) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "更新商品基础信息") - return failedList, err + } else { + for _, v := range storeSkuList { + var wareSaveSkus []*jdshopapi.WareSaveSkus + name := filterSensitiveWord(v.Name) + //jds2 + wareSaveParam := &jdshopapi.WareSaveParam{ + WareID: v.JdsWareID, + Title: name, + CategoryID: int(v.VendorVendorCatID), + VenderID: jdshopapi.VendorID2, + Length: 100, + Wide: 100, + Height: 100, + Weight: utils.Int2Str(v.Weight), + BrandID: jdshopapi.BrandIdNO, + ShopCategorys: []int{utils.Str2Int(v.VendorCatID)}, + PromiseID: -1, + MultiCateProps: []interface{}{}, + PropsSet: []interface{}{}, + SaleAttrs: []interface{}{}, } - _, err = getAPI(v.VendorOrgCode).UpdateSkus(updateSkusParam) + var desc string + if v.DescImg != "" { + pic3, err2 := uploadImg2(v.DescImg, name, "desc", v.VendorOrgCode) + err = err2 + desc = `



` + } else { + desc = `



` + } + wareSaveParam.Notes = desc + //上传京东图片 + //规则,有两张就传两张,没有就重复传一张 + pic1, _ := uploadImg(v.Img, name, "1", v.VendorOrgCode) + img1 := &jdshopapi.CreateSkuParamImages{ + ColorID: "0000000000", + ImgIndex: 1, + ImgURL: pic1, + } + img2 := &jdshopapi.CreateSkuParamImages{ + ColorID: "0000000000", + ImgIndex: 2, + } + if v.Img2 == "" { + img2.ImgURL = pic1 + } else { + pic2, err2 := uploadImg(v.Img, name, "2", v.VendorOrgCode) + err = err2 + img2.ImgURL = pic2 + } + img3 := &jdshopapi.CreateSkuParamImages{ + ColorID: "0000000000", + ImgIndex: 3, + ImgURL: pic1, + } + //jds2图片 + wareSaveParam.ImageMap.Num0000000000 = append(wareSaveParam.ImageMap.Num0000000000, img1, img2, img3) + for _, vv := range v.StoreSkuSyncInfoJds { + _, wareSaveSku, err2 := buildUpdateSkusParam(v, vv, true) + err = err2 + wareSaveSku.SkuID = utils.Str2Int64(vv.VendorSkuID) + wareSaveSkus = append(wareSaveSkus, wareSaveSku) + } + api.JdShop2API.WareSave(wareSaveParam) } } if err != nil { @@ -219,9 +384,13 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v if v.IsDeletedBySku { err = getAPI(v.VendorOrgCode).DeleteSku(utils.Str2Int64(v.VendorSkuID)) } else { - err = getAPI(v.VendorOrgCode).UpOrDown(utils.Str2Int64(v.VendorSkuID2), 2) - if err == nil { - err = getAPI(v.VendorOrgCode).DeleteWare(utils.Str2Int(v.VendorSkuID2)) + if v.VendorOrgCode == "1" { + err = getAPI(v.VendorOrgCode).UpOrDown(utils.Str2Int64(v.VendorSkuID2), 2) + if err == nil { + err = getAPI(v.VendorOrgCode).DeleteWare(utils.Str2Int(v.VendorSkuID2)) + } + } else { + err = api.JdShop2API.WareDoUpdate("down", v.VendorSkuID2) } } if err != nil { @@ -263,16 +432,22 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr stock = 0 } err = getAPI(v.VendorOrgCode).UpdateSkuStock(utils.Str2Int(v.VendorSkuID), stock) + } else if storeID == model.JdShopMainStoreID2 { + } else { - storeSkus, err2 := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, []int{v.SkuID}) - err = err2 - if len(storeSkus) > 0 { - if storeSkus[0].JdsID != 0 && vendorStoreID != "" { - if storeSkus[0].Status == model.SkuStatusNormal { - stock = 9999 + if v.VendorOrgCode == "1" { + storeSkus, err2 := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, []int{v.SkuID}) + err = err2 + if len(storeSkus) > 0 { + if storeSkus[0].JdsID != 0 && vendorStoreID != "" { + if storeSkus[0].Status == model.SkuStatusNormal { + stock = 9999 + } + err = getAPI(v.VendorOrgCode).UpdateSkuSiteStock(storeSkus[0].JdsID, stock, utils.Str2Int(vendorStoreID)) } - err = getAPI(v.VendorOrgCode).UpdateSkuSiteStock(storeSkus[0].JdsID, stock, utils.Str2Int(vendorStoreID)) } + } else { + err = api.JdShop2API.StoreWareDoUpdate(status, utils.Str2Int64(v.VendorSkuID), vendorStoreID) } } } @@ -284,9 +459,19 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr } func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { - if globals.EnableJdShopWrite && (vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2) { + if globals.EnableJdShopWrite { for _, v := range storeSkuList { - err = getAPI(v.VendorOrgCode).UpdateSkuJdPrice(utils.Str2Int(v.VendorSkuID), jxutils.IntPrice2Standard(v.VendorPrice)) + if storeID == model.JdShopMainStoreID { + err = getAPI(v.VendorOrgCode).UpdateSkuJdPrice(utils.Str2Int(v.VendorSkuID), jxutils.IntPrice2Standard(v.VendorPrice)) + } else if storeID == model.JdShopMainStoreID2 { + //修改京东商城商品库价格 + } else { + if v.VendorOrgCode == "1" { + // null + } else { + err = api.JdShop2API.StoreUpdatePrice(utils.Float64TwoInt(jxutils.IntPrice2Standard(v.VendorPrice)), utils.Str2Int64(v.VendorSkuID), vendorStoreID) + } + } if err != nil { failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "修改商品价格")...) } @@ -297,7 +482,18 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { if globals.EnableJdShopWrite { + for _, v := range storeSkuList { + if storeID == model.JdShopMainStoreID { + } else if storeID == model.JdShopMainStoreID2 { + + } else { + err = api.JdShop2API.StoreUpdateStock(v.Stock, utils.Str2Int64(v.VendorSkuID), vendorStoreID) + } + } + if err != nil { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "修改商品库存")...) + } } return failedList, err } @@ -527,8 +723,6 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j if storeSku.VendorOrgCode == "1" { createSkuParamWare.VenderID = jdshopapi.VenderID - } else { - createSkuParamWare.VenderID = jdshopapi.VendorID2 } if storeSku.VendorVendorCatID != jdshopapi.JdsOtherMeatCatID { @@ -708,13 +902,19 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j } createSkuParamWare.Features = features //组合sku - var vendorPrice int64 = 0 + var ( + vendorPrice int64 = 0 + wareSaveSkus []*jdshopapi.WareSaveSkus + ) + for _, v := range storeSku.StoreSkuSyncInfoJds { var ( - ggValueID int64 //规格的属性id - attrsPropSku []*jdshopapi.CreateSkuParamAttrs - multiPropSku []*jdshopapi.CreateSkuParamAttrs - specQuality string + ggValueID int64 //规格的属性id + ggValueName string //规格的属性名 + attrsPropSku []*jdshopapi.CreateSkuParamAttrs + attrsPropSku2 []*jdshopapi.WareSaveSkusProp //jds2 + multiPropSku []*jdshopapi.CreateSkuParamAttrs + specQuality string ) valuesSku, maxNo, _ := getAPI(storeSku.VendorOrgCode).FindValuesByAttrId(attrIDs["规格"]) if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] { @@ -728,17 +928,29 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j for _, v := range valuesSku { if v.Name == specQuality { ggValueID = v.ID + ggValueName = v.Name } } if ggValueID == 0 { //说明没有建这个规格,要建上 catID, _ := getAPI(storeSku.VendorOrgCode).SaveVenderAttrValue(specQuality, attrIDs["规格"], int(storeSku.VendorVendorCatID), maxNo+1) ggValueID = catID + ggValueName = specQuality } + //jds1 attrSku := &jdshopapi.CreateSkuParamAttrs{ AttrID: utils.Int2Str(attrIDs["规格"]), AttrValues: []string{utils.Int64ToStr(ggValueID)}, } attrsPropSku = append(attrsPropSku, attrSku) + //jds2 + attrSku2 := &jdshopapi.WareSaveSkusProp{ + AttrID: attrIDs["规格"], + AttrValues: ggValueID, + AttrValueAlias: ggValueName, + } + attrsPropSku2 = append(attrsPropSku2, attrSku2) + + //jds1 sku := &jdshopapi.CreateSkuParamSkus{ JdPrice: jxutils.IntPrice2Standard(v.VendorPrice), // StockNum: 9999, @@ -747,6 +959,13 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j OuterID: utils.Int2Str(v.SkuID), } sku.SaleAttrs = attrsPropSku + //jds2 + sku2 := &jdshopapi.WareSaveSkus{ + JdPrice: utils.Float64ToStr(jxutils.IntPrice2Standard(v.VendorPrice)), + OuterID: utils.Int2Str(v.SkuID), + } + sku2.Props = attrsPropSku2 + if attrIDs["类别"] != 0 { values2, _, err2 := getAPI(storeSku.VendorOrgCode).FindValuesByAttrId(attrIDs["类别"]) err = err2 @@ -765,9 +984,12 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j } if v.Status == model.SkuStatusNormal { sku.StockNum = 9999 + sku2.StockNum = 9999 } else { sku.StockNum = 0 + sku2.StockNum = 0 } + wareSaveSkus = append(wareSaveSkus, sku2) } //市场价固定500 createSkuParamWare.MarketPrice = 500 @@ -815,13 +1037,15 @@ func filterSensitiveWord(name string) (result string) { return name } -func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInfo, isCreate bool) (updateSkusParam *jdshopapi.UpdateSkusParam, err error) { +func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInfo, isCreate bool) (updateSkusParam *jdshopapi.UpdateSkusParam, wareSku *jdshopapi.WareSaveSkus, err error) { var ( - ggValueID int64 //规格的属性id - attrsPropSku []*jdshopapi.CreateSkuParamAttrs - skus []*jdshopapi.UpdateSkusParamSkus - multiPropSku []*jdshopapi.CreateSkuParamAttrs - specQuality string + ggValueID int64 //规格的属性id + ggValueName string //规格名 + attrsPropSku []*jdshopapi.CreateSkuParamAttrs + attrsPropSku2 []*jdshopapi.WareSaveSkusProp + skus []*jdshopapi.UpdateSkusParamSkus + multiPropSku []*jdshopapi.CreateSkuParamAttrs + specQuality string ) updateSkusParam = &jdshopapi.UpdateSkusParam{ WareID: storeSku.JdsWareID, @@ -833,11 +1057,18 @@ func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInf Type2: "com.jd.pop.ware.ic.api.domain.Sku", OuterID: utils.Int2Str(v.SkuID), } + //jds2 + wareSku = &jdshopapi.WareSaveSkus{ + JdPrice: utils.Float64ToStr(jxutils.IntPrice2Standard(v.VendorPrice)), + } + //库存设置 if v.StoreSkuStatus == model.SkuStatusNormal { sku.StockNum = "9999" + wareSku.StockNum = 9999 } else { sku.StockNum = "0" + wareSku.StockNum = 0 } //规格类别设置 attrIDs := make(map[string]int) @@ -874,12 +1105,14 @@ func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInf for _, vv := range valuesSku { if vv.Name == specQuality { ggValueID = vv.ID + ggValueName = vv.Name break } } if ggValueID == 0 { //说明没有建这个规格,要建上 catID, _ := getAPI(storeSku.VendorOrgCode).SaveVenderAttrValue(specQuality, attrIDs["规格"], int(storeSku.VendorVendorCatID), maxNo+1) ggValueID = catID + ggValueName = specQuality } attrSku := &jdshopapi.CreateSkuParamAttrs{ AttrID: utils.Int2Str(attrIDs["规格"]), @@ -887,6 +1120,14 @@ func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInf } attrsPropSku = append(attrsPropSku, attrSku) sku.SaleAttrs = attrsPropSku + //jds2 + attrSku2 := &jdshopapi.WareSaveSkusProp{ + AttrID: attrIDs["规格"], + AttrValues: ggValueID, + AttrValueAlias: ggValueName, + } + attrsPropSku2 = append(attrsPropSku2, attrSku2) + wareSku.Props = attrsPropSku2 } else { vendorSku, err2 := getAPI(storeSku.VendorOrgCode).FindSkuById(utils.Str2Int64(v.VendorSkuID)) err = err2 @@ -918,5 +1159,5 @@ func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInf } skus = append(skus, sku) updateSkusParam.Skus = skus - return updateSkusParam, err + return updateSkusParam, wareSku, err }