刷新饿鲜达商品分类分离

This commit is contained in:
苏尹岚
2020-02-21 14:26:42 +08:00
parent ed1bc0d0d5
commit 4b5a6aeaa7
3 changed files with 162 additions and 233 deletions

View File

@@ -1482,152 +1482,98 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
switch step {
case 0:
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
// v := batchItemList[0].(*ebaiapi.ExianDaSkus)
// skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
// if err != nil {
// return result, err
// }
// skuNameExt := &model.SkuName{}
// sql2 := `
// SELECT a.*
// FROM sku_name a
// JOIN sku b ON b.name_id = a.id
// WHERE a.upc = ?
// `
// sqlParams2 := []interface{}{
// skus.UpcIds,
// }
// dao.GetRow(db, skuNameExt, sql2, sqlParams2)
// prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName)
// //京西库中存在此商品
// if skuNameExt.ID != 0 {
// var flag = false
// if skuNameExt.Name != v.GoodsName {
// skuNameExt.Name = v.GoodsName
// skuNameExt.Prefix = prefix
// skuNameExt.SpecUnit = specUnit
// skuNameExt.Unit = unit
// skuNameExt.SpecQuality = specQuality
// flag = true
// }
// if skuNameExt.Img != v.ImageURL {
// skuNameExt.Img = v.ImageURL
// flag = true
// }
// if flag {
// _, err = dao.UpdateEntity(db, skuNameExt, "Name", "Prefix", "SpecUnit", "Unit", "SpecQuality", "Img")
// if err != nil {
// return result, err
// }
// }
// } else {
// skuCat := &model.SkuCategory{}
// sql := `
// SELECT *
// FROM sku_category
// WHERE ebai_category_id = ?
// `
// sqlParams := []interface{}{
// skus.CategoryIDThird,
// }
// dao.GetRow(db, skuCat, sql, sqlParams)
// skuName := &model.SkuName{
// Prefix: prefix,
// Name: v.GoodsName,
// IsGlobal: model.YES,
// Unit: unit,
// SpecQuality: specQuality,
// SpecUnit: specUnit,
// Price: 100,
// Img: v.ImageURL,
// Upc: &v.UpcID,
// Status: model.SkuStatusNormal,
// }
// if skuCat.ID != 0 {
// skuName.CategoryID = skuCat.ID
// } else {
// skuName.CategoryID = 35 //默认给了个分类
// }
// dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName())
// err = dao.CreateEntity(db, skuName)
// if err != nil {
// return result, err
// }
// sku := &model.Sku{
// NameID: skuName.ID,
// SpecQuality: specQuality,
// SpecUnit: specUnit,
// Weight: int(utils.Str2Int64(skus.Weight)),
// Status: model.SkuStatusNormal,
// ExdSkuID: v.ElemeGoodsID,
// ExdCategoryThirdID: skus.CategoryIDThird,
// }
// dao.WrapAddIDCULDEntity(sku, ctx.GetUserName())
// err = dao.CreateEntity(db, sku)
// if err != nil {
// return result, err
// }
// }
v := batchItemList[0].(*ebaiapi.ExianDaSkus)
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
if err != nil {
return result, err
}
skuNameExt := &model.SkuName{}
sql2 := `
SELECT a.*
FROM sku_name a
JOIN sku b ON b.name_id = a.id
WHERE a.upc = ?
`
sqlParams2 := []interface{}{
skus.UpcIds,
}
dao.GetRow(db, skuNameExt, sql2, sqlParams2)
prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName)
//京西库中存在此商品
if skuNameExt.ID != 0 {
var flag = false
if skuNameExt.Name != v.GoodsName {
skuNameExt.Name = v.GoodsName
skuNameExt.Prefix = prefix
skuNameExt.SpecUnit = specUnit
skuNameExt.Unit = unit
skuNameExt.SpecQuality = specQuality
flag = true
}
if skuNameExt.Img != v.ImageURL {
skuNameExt.Img = v.ImageURL
flag = true
}
if flag {
_, err = dao.UpdateEntity(db, skuNameExt, "Name", "Prefix", "SpecUnit", "Unit", "SpecQuality", "Img")
if err != nil {
return result, err
}
}
} else {
skuCat := &model.SkuCategory{}
sql := `
SELECT *
FROM sku_category
WHERE ebai_category_id = ?
`
sqlParams := []interface{}{
skus.CategoryIDThird,
}
dao.GetRow(db, skuCat, sql, sqlParams)
skuName := &model.SkuName{
Prefix: prefix,
Name: v.GoodsName,
IsGlobal: model.YES,
Unit: unit,
SpecQuality: specQuality,
SpecUnit: specUnit,
Price: 100,
Img: v.ImageURL,
Upc: &v.UpcID,
Status: model.SkuStatusNormal,
}
if skuCat.ID != 0 {
skuName.CategoryID = skuCat.ID
} else {
skuName.CategoryID = 35 //默认给了个分类
}
dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName())
err = dao.CreateEntity(db, skuName)
if err != nil {
return result, err
}
sku := &model.Sku{
NameID: skuName.ID,
SpecQuality: specQuality,
SpecUnit: specUnit,
Weight: int(utils.Str2Int64(skus.Weight)),
Status: model.SkuStatusNormal,
ExdSkuID: v.ElemeGoodsID,
ExdCategoryThirdID: skus.CategoryIDThird,
}
dao.WrapAddIDCULDEntity(sku, ctx.GetUserName())
err = dao.CreateEntity(db, sku)
if err != nil {
return result, err
}
}
return retVal, err
}
taskParallel := tasksch.NewParallelTask("更新京西上饿鲜达商品库", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, results)
tasksch.HandleTask(taskParallel, task, true).Run()
_, err = taskParallel.GetResult(0)
case 1:
//刷新分类
var skus []*model.SkuName
sql := `
SELECT a.*
FROM sku_name a
JOIN sku b ON b.name_id = a.id
WHERE b.exd_sku_id <> ''
AND a.deleted_at = ?
AND b.deleted_at = ?
AND a.category_id = 35
`
sqlParams := []interface{}{
utils.DefaultTimeValue, utils.DefaultTimeValue,
}
err = dao.GetRows(db, &skus, sql, sqlParams...)
taskFunc2 := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
v := batchItemList[0].(*model.SkuName)
skuList, err := api.Ebai2API.GetEbaiDepotSku(ebaiapi.EbaiWholeCountryStore, *v.Upc)
if err != nil || len(skuList) == 0 {
return retVal, err
}
sku, err := api.Ebai2API.GetEbaiSku(skuList[0].UpcID, ebaiapi.EbaiWholeCountryStore)
if err != nil || sku == nil {
return retVal, err
}
skuCat := &model.SkuCategory{}
sql := `
SELECT *
FROM sku_category
WHERE exd_name like ?
`
sqlParams := []interface{}{
"%" + sku.CustomCatName + "%",
}
err = dao.GetRow(db, skuCat, sql, sqlParams)
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
v.CategoryID = skuCat.ID
_, err = dao.UpdateEntity(db, v, "CategoryID")
if err != nil {
dao.Rollback(db)
return retVal, err
}
dao.Commit(db)
return retVal, err
}
taskParallel2 := tasksch.NewParallelTask("更新京西上饿鲜达商品分类", tasksch.NewParallelConfig().SetParallelCount(parallelCount), ctx, taskFunc2, skus)
tasksch.HandleTask(taskParallel2, task, true).Run()
_, err = taskParallel2.GetResult(0)
}
return result, err
}
@@ -1642,63 +1588,67 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
return hint, err
}
func CopyEbaiSkuPriceToJx(ctx *jxcontext.Context, baiduShopID string) (err error) {
db := dao.GetDB()
skuList, err := api.EbaiAPI.PageGetSkuList(utils.Str2Int64(baiduShopID))
for _, v := range skuList {
sku, _ := api.EbaiAPI.PageGetSku(utils.Str2Int64(baiduShopID), utils.Str2Int64(v["sku_id"].(string)))
var skuName model.SkuName
sql2 := `
SELECT * FROM sku_category WHERE exd_name like ? AND deleted_at = ?
func UpdateExianDaSkuCategory(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
var (
db = dao.GetDB()
skus []*model.SkuName
)
sql := `
SELECT a.*
FROM sku_name a
JOIN sku b ON b.name_id = a.id
WHERE b.exd_sku_id <> ''
AND a.deleted_at = ?
AND b.deleted_at = ?
AND a.category_id = 35
`
sqlParams2 := []interface{}{
"%" + sku.CustomCatName + "%",
utils.DefaultTimeValue,
}
dao.GetRow(db, &skuName, sql2, sqlParams2)
price := int(utils.Float64TwoInt64(utils.Interface2Float64WithDefault(v["sale_price"], 0) * 100))
sql := `
UPDATE sku_name a
JOIN sku b ON a.id = b.name_id
SET a.price = ?,a.category_id = ?
WHERE a.upc = ?
`
sqlParams := []interface{}{
price, skuName.ID,
v["upc"].(string),
}
dao.ExecuteSQL(db, sql, sqlParams)
sqlParams := []interface{}{
utils.DefaultTimeValue, utils.DefaultTimeValue,
}
return err
}
type Tmp struct {
CatID int
Name string
}
func SearchExianDaDepot(ctx *jxcontext.Context) (err error) {
var resultIns []interface{}
var skuMap = make(map[int]string)
results, err := api.EbaiAPI.GetExianDaSkuDepot("")
task := tasksch.NewParallelTask("SearchExianDaDepot", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
err = dao.GetRows(db, &skus, sql, sqlParams...)
task := tasksch.NewParallelTask("更新京西上饿鲜达商品分类", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
v := batchItemList[0].(*ebaiapi.ExianDaSkus)
tmp := &Tmp{}
skus, _ := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
tmp.CatID = skus.CategoryIDThird
tmp.Name = skus.CategoryText
retVal = []*Tmp{tmp}
v := batchItemList[0].(*model.SkuName)
skuList, err := api.Ebai2API.GetEbaiDepotSku(ebaiapi.EbaiWholeCountryStore, *v.Upc)
if err != nil || len(skuList) == 0 {
return retVal, err
}
sku, err := api.Ebai2API.GetEbaiSku(skuList[0].UpcID, ebaiapi.EbaiWholeCountryStore)
if err != nil || sku == nil || sku.CustomCatName == "" {
return retVal, err
}
skuCat := &model.SkuCategory{}
sql := `
SELECT *
FROM sku_category
WHERE exd_name like ?
`
sqlParams := []interface{}{
"%" + sku.CustomCatName + "%",
}
err = dao.GetRow(db, skuCat, sql, sqlParams)
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
v.CategoryID = skuCat.ID
_, err = dao.UpdateEntity(db, v, "CategoryID")
if err != nil {
dao.Rollback(db)
return retVal, err
}
dao.Commit(db)
return retVal, err
}, results)
}, skus)
tasksch.HandleTask(task, nil, true).Run()
resultIns, err = task.GetResult(0)
for _, v := range resultIns {
tmp := v.(*Tmp)
skuMap[tmp.CatID] = tmp.Name
if !isAsync {
_, err = task.GetResult(0)
hint = "1"
} else {
hint = task.GetID()
}
for k, _ := range skuMap {
fmt.Println(k, skuMap[k])
}
return err
return hint, err
}

View File

@@ -420,8 +420,8 @@ func (c *SkuController) UpdateSkuNamesExPrefix() {
})
}
// @Title 合并饿鲜达商品库
// @Description 合并饿鲜达商品库
// @Title 合并饿鲜达商品库(必须要在饿鲜达系统中先导入商品)
// @Description 合并饿鲜达商品库(必须要在饿鲜达系统中先导入商品)
// @Param token header string true "认证token"
// @Param isAsync formData bool false "是否异步"
// @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false"
@@ -435,29 +435,17 @@ func (c *SkuController) SumExianDaDepot() {
})
}
// @Title 复制一个饿百的店的商品的价格和分类到京西饿鲜达商品
// @Description 复制一个饿百的店的商品的价格和分类到京西饿鲜达商品
// @Param token header string true "认证token"
// @Param baiduShopID formData string true "饿百店ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /CopyEbaiSkuPriceToJx [post]
func (c *SkuController) CopyEbaiSkuPriceToJx() {
c.callCopyEbaiSkuPriceToJx(func(params *tSkuCopyEbaiSkuPriceToJxParams) (retVal interface{}, errCode string, err error) {
err = cms.CopyEbaiSkuPriceToJx(params.Ctx, params.BaiduShopID)
return retVal, "", err
})
}
// @Title 合并饿鲜达商品库2
// @Description 合并饿鲜达商品库2
// @Title 根据饿百上已经分类的商品刷新京西库中饿鲜达商品分类
// @Description 根据饿百上已经分类的商品刷新京西库中饿鲜达商品分类
// @Param token header string true "认证token"
// @Param isAsync formData bool false "是否异步"
// @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /SearchExianDaDepot [post]
func (c *SkuController) SearchExianDaDepot() {
c.callSearchExianDaDepot(func(params *tSkuSearchExianDaDepotParams) (retVal interface{}, errCode string, err error) {
err = cms.SearchExianDaDepot(params.Ctx)
// @router /UpdateExianDaSkuCategory [put]
func (c *SkuController) UpdateExianDaSkuCategory() {
c.callUpdateExianDaSkuCategory(func(params *tSkuUpdateExianDaSkuCategoryParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.UpdateExianDaSkuCategory(params.Ctx, params.IsAsync, params.IsContinueWhenError)
return retVal, "", err
})
}

View File

@@ -1251,15 +1251,6 @@ func init() {
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{
Method: "CopyEbaiSkuPriceToJx",
Router: `/CopyEbaiSkuPriceToJx`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{
Method: "DeleteCategory",
@@ -1359,15 +1350,6 @@ func init() {
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{
Method: "SearchExianDaDepot",
Router: `/SearchExianDaDepot`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{
Method: "SortCategorySkus",
@@ -1413,6 +1395,15 @@ func init() {
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{
Method: "UpdateExianDaSkuCategory",
Router: `/UpdateExianDaSkuCategory`,
AllowHTTPMethods: []string{"put"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{
Method: "UpdateSku",