From 86513089aecd0c2d8d64cc0ff0565903e8790b45 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Mon, 17 May 2021 15:50:48 +0800 Subject: [PATCH] aa --- business/jxstore/cms/store_sku.go | 2 + business/partner/purchase/jdshop/store_sku.go | 338 +++++++++--------- 2 files changed, 172 insertions(+), 168 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 4cbafdc99..2f716df3e 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1429,6 +1429,8 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs // vendorSkuID的赋值意义不大 skuBind.MtwmID = deletedSku.MtwmID skuBind.EbaiID = deletedSku.EbaiID + skuBind.JdsID = deletedSku.JdsID + skuBind.JdsWareID = deletedSku.JdsWareID if num, err = dao.UpdateEntity(db, skuBind); err != nil { dao.Rollback(db, txDB) return nil, err diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index c48a9efd9..b531b2d66 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -41,6 +41,7 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v name := filterSensitiveWord(v.Name) flag := false flag2 := false + var wareStatusUpdateWareID string result, err := getAPI(v.VendorOrgCode).SearchWare4Valid(name, 1, 100) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") @@ -52,204 +53,205 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v //下架 if v.WareStatus == 2 { flag2 = true + wareStatusUpdateWareID = utils.Int64ToStr(v.WareID) } break } } if flag2 { - err = getAPI(v.VendorOrgCode).WareDoUpdate("op", utils.Int64ToStr(v.JdsWareID)) - } else { - 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: 200, - Wide: 100, - Height: 100, - Weight: "1", - BrandID: jdshopapi.BrandIdNO, - ShopCategorys: []int{utils.Str2Int(v.VendorCatID)}, - PromiseID: -1, - MultiCateProps: []interface{}{}, - PropsSet: []interface{}{}, - SaleAttrs: []interface{}{}, - WareStatus: 8, + err = getAPI(v.VendorOrgCode).WareDoUpdate("op", wareStatusUpdateWareID) + } + 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: 200, + Wide: 100, + Height: 100, + Weight: "1", + BrandID: jdshopapi.BrandIdNO, + ShopCategorys: []int{utils.Str2Int(v.VendorCatID)}, + PromiseID: -1, + MultiCateProps: []interface{}{}, + PropsSet: []interface{}{}, + SaleAttrs: []interface{}{}, + WareStatus: 8, + } + var wareSaveSkus []*jdshopapi.WareSaveSkus + //先把已有的规格放进去 + // if v.VendorOrgCode == "2" { + wareResult, _ := getAPI(v.VendorOrgCode).FindWareById(wareSaveParam.WareID) + if wareResult != nil { + for _, v := range wareResult.Images { + wareSaveParam.ImageMap.Num0000000000 = append(wareSaveParam.ImageMap.Num0000000000, &jdshopapi.CreateSkuParamImages{ + ColorID: v.ColorID, + ImgURL: v.ImgURL, + ImgIndex: v.ImgIndex, + }) } - var wareSaveSkus []*jdshopapi.WareSaveSkus - //先把已有的规格放进去 - // if v.VendorOrgCode == "2" { - wareResult, _ := getAPI(v.VendorOrgCode).FindWareById(wareSaveParam.WareID) - if wareResult != nil { - for _, v := range wareResult.Images { - wareSaveParam.ImageMap.Num0000000000 = append(wareSaveParam.ImageMap.Num0000000000, &jdshopapi.CreateSkuParamImages{ - ColorID: v.ColorID, - ImgURL: v.ImgURL, - ImgIndex: v.ImgIndex, - }) - } - } - skus, _, _ := getAPI(v.VendorOrgCode).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], - }, + } + skus, _, _ := getAPI(v.VendorOrgCode).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], }, - OuterID: vv.OuterID, - } - wareSaveSkus = append(wareSaveSkus, sku) + }, + OuterID: vv.OuterID, } + wareSaveSkus = append(wareSaveSkus, sku) } - // } - for _, vv := range v.StoreSkuSyncInfoJds { - v.JdsWareID = result.Data[0].WareID - vv.JdsWareID = result.Data[0].WareID - _, 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 strings.Contains(err.Error(), "cookie可能过期了") { - // err = nil - // } - // if err != nil { - // failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") - // return failedList, err - // } - // vv.VendorSkuID = vendorSkuID - // } else { - wareSaveParam.Skus = wareSaveSkus - if wareResult, err2 := getAPI(v.VendorOrgCode).WareSave(wareSaveParam); err2 == nil { - for _, vvv := range wareResult { - if vvv.OuterID == wareSaveSku.OuterID { - vv.VendorSkuID = utils.Int64ToStr(vvv.SkuID) - break - } - } - //创建商品后要上架,改价,库存,门店关注商品等 - if err = getAPI(v.VendorOrgCode).WareDoUpdate("up", utils.Int64ToStr(wareSaveParam.WareID)); err == nil { - err = getAPI(v.VendorOrgCode).StoreSkuBindStore(true, []string{vv.VendorSkuID}, nil) - } - } - // } - } - } else { - _, _, wareSaveParam, err := buildCreateWareParam(v) + } + // } + for _, vv := range v.StoreSkuSyncInfoJds { + v.JdsWareID = result.Data[0].WareID + vv.JdsWareID = result.Data[0].WareID + _, 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 } - var ( - wareID int64 - resultAttrs = make(map[string]int64) - ) // if v.VendorOrgCode == "1" { - // createSkuResult, err2 := getAPI(v.VendorOrgCode).CreateWare(createSkuParamWare, createSkuParamSkus) - // err = err2 + // vendorSkuID, err := getAPI(v.VendorOrgCode).UpdateSkus(updateSkusParam) // if strings.Contains(err.Error(), "cookie可能过期了") { // err = nil // } - // 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)]) - // } + // if err != nil { + // failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + // return failedList, err // } + // vv.VendorSkuID = vendorSkuID // } else { - var createSkuResult []*jdshopapi.WareSaveResult - for i := 0; i < 10; i++ { - createSkuResult, err = getAPI(v.VendorOrgCode).WareSave(wareSaveParam) - if len(createSkuResult) > 0 { - break - } - time.Sleep(time.Second) - } - 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 + wareSaveParam.Skus = wareSaveSkus + if wareResult, err2 := getAPI(v.VendorOrgCode).WareSave(wareSaveParam); err2 == nil { + for _, vvv := range wareResult { + if vvv.OuterID == wareSaveSku.OuterID { + vv.VendorSkuID = utils.Int64ToStr(vvv.SkuID) + break } } - } - 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)]) - } - } - //创建商品后要上架,改价,库存,门店关注商品等 - if err = getAPI(v.VendorOrgCode).WareDoUpdate("up", utils.Int64ToStr(wareID)); err == nil { - for _, vv2 := range v.StoreSkuSyncInfoJds { - if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 { - err = getAPI(v.VendorOrgCode).StoreSkuBindStore(true, []string{utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)])}, nil) - } + //创建商品后要上架,改价,库存,门店关注商品等 + if err = getAPI(v.VendorOrgCode).WareDoUpdate("up", utils.Int64ToStr(wareSaveParam.WareID)); err == nil { + err = getAPI(v.VendorOrgCode).StoreSkuBindStore(true, []string{vv.VendorSkuID}, nil) } } // } - 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) - } - } - if v.VendorOrgCode == "1" { - api.JdShopAPI.TransparentImageAdd(wareID, imageURL) - } - } } + } else { + _, _, wareSaveParam, err := buildCreateWareParam(v) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") return failedList, err } + var ( + wareID int64 + resultAttrs = make(map[string]int64) + ) + // if v.VendorOrgCode == "1" { + // createSkuResult, err2 := getAPI(v.VendorOrgCode).CreateWare(createSkuParamWare, createSkuParamSkus) + // err = err2 + // if strings.Contains(err.Error(), "cookie可能过期了") { + // err = nil + // } + // 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 { + var createSkuResult []*jdshopapi.WareSaveResult + for i := 0; i < 10; i++ { + createSkuResult, err = getAPI(v.VendorOrgCode).WareSave(wareSaveParam) + if len(createSkuResult) > 0 { + break + } + time.Sleep(time.Second) + } + 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)]) + } + } + //创建商品后要上架,改价,库存,门店关注商品等 + if err = getAPI(v.VendorOrgCode).WareDoUpdate("up", utils.Int64ToStr(wareID)); err == nil { + for _, vv2 := range v.StoreSkuSyncInfoJds { + if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 { + err = getAPI(v.VendorOrgCode).StoreSkuBindStore(true, []string{utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)])}, nil) + } + } + } + // } + 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) + } + } + if v.VendorOrgCode == "1" { + api.JdShopAPI.TransparentImageAdd(wareID, imageURL) + } + } } + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") + return failedList, err + } + } } else { //如果是普通店关注商品