This commit is contained in:
suyl
2021-05-17 15:50:48 +08:00
parent d74eed1b69
commit 86513089ae
2 changed files with 172 additions and 168 deletions

View File

@@ -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

View File

@@ -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 {
//如果是普通店关注商品