heihei
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -18,8 +18,8 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
maxOrderPrice = 6399 // 单位为分,达达最大价格,超过这个价格配送费会增加
|
||||
maxOrderWeight = 5000 // 5公斤
|
||||
maxOrderPrice = 50000 // 单位为分,达达最大价格,超过这个价格配送费会增加,2020-11-25改为50000,之前是6399
|
||||
maxOrderWeight = 5000 // 5公斤
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@@ -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 = `<p><img src="` + jdshopapi.JdsImgURL + pic3 + `" style="width: auto; height: auto; max-width: 100%;"><br></p><p><br></p>`
|
||||
} else {
|
||||
desc = `<p><br></p><p><br></p>`
|
||||
}
|
||||
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 = `<p><img src="` + jdshopapi.JdsImgURL + pic3 + `" style="width: auto; height: auto; max-width: 100%;"><br></p><p><br></p>`
|
||||
} else {
|
||||
err = getAPI(v.VendorOrgCode).ImageUpdate(v.JdsWareID, 2, pic1)
|
||||
desc = `<p><br></p><p><br></p>`
|
||||
}
|
||||
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 = `<p><img src="` + jdshopapi.JdsImgURL + pic3 + `" style="width: auto; height: auto; max-width: 100%;"><br></p><p><br></p>`
|
||||
} else {
|
||||
desc = `<p><br></p><p><br></p>`
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user