diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 1d125ae7b..5591683d1 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -159,7 +159,7 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string return nil, errors.New("Level3的分类其父分类必须为Level2分类") } } - if catsByName, err := dao.GetCategoriesByName(db, cat.Name); err == nil && len(catsByName) > 0 { + if catsByName, err := dao.GetCategoriesByName(db, cat.Name, ""); err == nil && len(catsByName) > 0 { return nil, fmt.Errorf("已有分类名:[%v],分类名不允许重复!", cat.Name) } else if err != nil { return nil, err @@ -1146,6 +1146,40 @@ type aa struct { ExdSkuID string `json:"exdSkuID"` } +// 根据名称获取商品分类[京东] +func getCategoryByName(name string) string { + handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler) + vendorCategoryId, _ := handler.GetSkuCategoryIdByName(beego.AppConfig.DefaultString("jdOrgCode", "320406"), name) + return vendorCategoryId +} + +// 获取抖音商品分类[抖音] +func getCategoryByImg(img string) string { + handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDDD).(partner.IPurchasePlatformStoreSkuHandler) + vendorCategoryId, _ := handler.GetSkuCategoryIdByName("57939570", img) + return vendorCategoryId +} + +// 根据平台返回的分类id,获取本地绑定的映射分类id +func getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, jdsCategoryID, ebaiCategoryID, mtwmCategoryID string) (string, string, string) { + cats, err := dao.GetCategoriesByName(dao.GetDB(), "", jdCategoryId) + if len(cats) == 0 || err != nil { + globals.SugarLogger.Errorf("%v", fmt.Errorf("根据京东分类id设置美团/饿了么分类错误:%d,%v", len(cats), err)) + return jdsCategoryID, ebaiCategoryID, mtwmCategoryID + } else { + if jdsCategoryID == "" && cats[0].JdsCategoryID != 0 { + jdsCategoryID = utils.Int64ToStr(cats[0].JdsCategoryID) + } + if ebaiCategoryID == "" && cats[0].EbaiCategoryID != 0 { + ebaiCategoryID = utils.Int64ToStr(cats[0].EbaiCategoryID) + } + if mtwmCategoryID == "" && cats[0].MtwmCategoryID != 0 { + mtwmCategoryID = utils.Int64ToStr(cats[0].MtwmCategoryID) + } + } + return jdsCategoryID, ebaiCategoryID, mtwmCategoryID +} + func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, nameID int, payload map[string]interface{}, skuNameExt *model.SkuNameExt, isDelete bool) (flag bool) { if isDelete { skuVendorCatMaps, _ := dao.GetSkuVendorCategoryMaps(db, []int{nameID}, nil, nil) @@ -1171,82 +1205,81 @@ func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, n dao.CreateEntity(db, skuVendorCatMap) } } + + // 京东的推荐分类id,可能是创建商品时用户添加的,如果用户没添加则,在平台获取京东的分类id + // 在本地平台分类id和系统分类id的绑定表当中获取当前京东id对应系统i对应的美团和饿了么id + // 将此id的值回填给当前的值! + jdCategoryId := "" + jdsCategoryID := "" + ebaiCategoryID := "" + mtwmCategoryID := "" + ddCategoryID := "" if skuNameExt != nil { if skuNameExt.JdCategoryID != "" { - updateOrCreate(model.VendorIDJD, nameID, skuNameExt.JdCategoryID) - flag = true - } /*else { - handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler) - vendorCategoryId, _ := handler.GetSkuCategoryIdByName(beego.AppConfig.DefaultString("jdOrgCode", "320406"), skuNameExt.Name) - if vendorCategoryId != "" { - updateOrCreate(model.VendorIDJD, nameID, skuNameExt.JdCategoryID) - flag = true - } - }*/ - - if skuNameExt.JdsCategoryID != "" { - updateOrCreate(model.VendorIDJDShop, nameID, skuNameExt.JdsCategoryID) - flag = true - } - if skuNameExt.EbaiCategoryID != "" { - updateOrCreate(model.VendorIDEBAI, nameID, skuNameExt.EbaiCategoryID) - flag = true - } - if skuNameExt.MtwmCategoryID != "" { - updateOrCreate(model.VendorIDMTWM, nameID, skuNameExt.MtwmCategoryID) - flag = true + jdCategoryId = skuNameExt.JdCategoryID } else { - + jdCategoryId = getCategoryByName(skuNameExt.Name) } + + if jdCategoryId != "" && jdCategoryId != "0" { + jdsCategoryID, ebaiCategoryID, mtwmCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, skuNameExt.JdsCategoryID, skuNameExt.EbaiCategoryID, skuNameExt.MtwmCategoryID) + } else { + jdsCategoryID = skuNameExt.JdsCategoryID + ebaiCategoryID = skuNameExt.EbaiCategoryID + mtwmCategoryID = skuNameExt.MtwmCategoryID + } + if skuNameExt.DdCategoryID != "" { - updateOrCreate(model.VendorIDDD, nameID, skuNameExt.DdCategoryID) - flag = true - } /*else { - handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDDD).(partner.IPurchasePlatformStoreSkuHandler) + ddCategoryID = skuNameExt.DdCategoryID + } else { + // 抖音是根据商品图片获取商品分类的! imgs := fmt.Sprintf("%s|%s|%s|%s|%s|%s", skuNameExt.DescImg, skuNameExt.Img, skuNameExt.Img2, skuNameExt.Img3, skuNameExt.Img4, skuNameExt.Img5) - vendorCategoryId, _ := handler.GetSkuCategoryIdByName("57939570", imgs) - if vendorCategoryId != "" { - updateOrCreate(model.VendorIDDD, nameID, skuNameExt.JdCategoryID) - flag = true - } - }*/ + ddCategoryID = getCategoryByImg(imgs) + } } else { if payload["jdCategoryID"] != nil { - updateOrCreate(model.VendorIDJD, nameID, payload["jdCategoryID"].(string)) - flag = true - } /*else { - handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler) - vendorCategoryId, _ := handler.GetSkuCategoryIdByName(beego.AppConfig.DefaultString("jdOrgCode", "320406"), skuNameExt.Name) - if vendorCategoryId != "" { - updateOrCreate(model.VendorIDJD, nameID, skuNameExt.JdCategoryID) - flag = true - } - }*/ - if payload["jdsCategoryID"] != nil { - updateOrCreate(model.VendorIDJDShop, nameID, payload["jdsCategoryID"].(string)) - flag = true + jdCategoryId = payload["jdCategoryID"].(string) + } else { + jdCategoryId = getCategoryByName(payload["name"].(string)) } - if payload["ebaiCategoryID"] != nil { - updateOrCreate(model.VendorIDEBAI, nameID, payload["ebaiCategoryID"].(string)) - flag = true - } - if payload["mtwmCategoryID"] != nil { - updateOrCreate(model.VendorIDMTWM, nameID, payload["mtwmCategoryID"].(string)) - flag = true + + if jdCategoryId != "" { + jdsCategoryID, ebaiCategoryID, mtwmCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, payload["jdsCategoryID"].(string), payload["ebaiCategoryID"].(string), payload["mtwmCategoryID"].(string)) + } else { + jdsCategoryID = payload["jdsCategoryID"].(string) + ebaiCategoryID = payload["ebaiCategoryID"].(string) + mtwmCategoryID = payload["mtwmCategoryID"].(string) } + if payload["ddCategoryID"] != nil { - updateOrCreate(model.VendorIDDD, nameID, payload["ddCategoryID"].(string)) - flag = true - } /*else { - handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDDD).(partner.IPurchasePlatformStoreSkuHandler) - imgs := fmt.Sprintf("%s,%s,%s,%s,%s,%s", skuNameExt.DescImg, skuNameExt.Img, skuNameExt.Img2, skuNameExt.Img3, skuNameExt.Img4, skuNameExt.Img5) - vendorCategoryId, _ := handler.GetSkuCategoryIdByName("57939570", imgs) - if vendorCategoryId != "" { - updateOrCreate(model.VendorIDDD, nameID, skuNameExt.JdCategoryID) - flag = true - } - }*/ + ddCategoryID = payload["ddCategoryID"].(string) + } else { + imgs := fmt.Sprintf("%s|%s|%s|%s|%s|%s", skuNameExt.DescImg, skuNameExt.Img, skuNameExt.Img2, skuNameExt.Img3, skuNameExt.Img4, skuNameExt.Img5) + ddCategoryID = getCategoryByImg(imgs) + } } + + if jdsCategoryID != "" { + updateOrCreate(model.VendorIDJDShop, nameID, jdsCategoryID) + flag = true + } + if ebaiCategoryID != "" { + updateOrCreate(model.VendorIDEBAI, nameID, ebaiCategoryID) + flag = true + } + if mtwmCategoryID != "" { + updateOrCreate(model.VendorIDMTWM, nameID, mtwmCategoryID) + flag = true + } + if ddCategoryID != "" { + updateOrCreate(model.VendorIDDD, nameID, ddCategoryID) + flag = true + } + if jdCategoryId != "" { + updateOrCreate(model.VendorIDJD, nameID, jdCategoryId) + flag = true + } + } return flag } diff --git a/business/model/dao/sku.go b/business/model/dao/sku.go index 53146f2ad..67ba723d6 100644 --- a/business/model/dao/sku.go +++ b/business/model/dao/sku.go @@ -50,7 +50,7 @@ func DeleteSkuNamePlace(db *DaoDB, nameID int, placeCodes []int) (num int64, err return ExecuteSQL(db, sql, sqlParams...) } -func GetCategoriesByName(db *DaoDB, name string) (cats []*model.SkuCategory, err error) { +func GetCategoriesByName(db *DaoDB, name string, jdCategoryId string) (cats []*model.SkuCategory, err error) { sql := ` SELECT t1.* FROM sku_category t1 @@ -62,6 +62,11 @@ func GetCategoriesByName(db *DaoDB, name string) (cats []*model.SkuCategory, err sql += " AND t1.name = ?" params = append(params, name) } + + if jdCategoryId != "" { + sql += " AND t1.jd_category_id = ?" + params = append(params, jdCategoryId) + } return cats, GetRows(db, &cats, sql, params) }