刷新饿鲜达商品分类分离

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,100 +1482,117 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
switch step { switch step {
case 0: case 0:
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
// v := batchItemList[0].(*ebaiapi.ExianDaSkus) v := batchItemList[0].(*ebaiapi.ExianDaSkus)
// skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID)) skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
// if err != nil { if err != nil {
// return result, err return result, err
// } }
// skuNameExt := &model.SkuName{} skuNameExt := &model.SkuName{}
// sql2 := ` sql2 := `
// SELECT a.* SELECT a.*
// FROM sku_name a FROM sku_name a
// JOIN sku b ON b.name_id = a.id JOIN sku b ON b.name_id = a.id
// WHERE a.upc = ? WHERE a.upc = ?
// ` `
// sqlParams2 := []interface{}{ sqlParams2 := []interface{}{
// skus.UpcIds, skus.UpcIds,
// } }
// dao.GetRow(db, skuNameExt, sql2, sqlParams2) dao.GetRow(db, skuNameExt, sql2, sqlParams2)
// prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName) prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName)
// //京西库中存在此商品 //京西库中存在此商品
// if skuNameExt.ID != 0 { if skuNameExt.ID != 0 {
// var flag = false var flag = false
// if skuNameExt.Name != v.GoodsName { if skuNameExt.Name != v.GoodsName {
// skuNameExt.Name = v.GoodsName skuNameExt.Name = v.GoodsName
// skuNameExt.Prefix = prefix skuNameExt.Prefix = prefix
// skuNameExt.SpecUnit = specUnit skuNameExt.SpecUnit = specUnit
// skuNameExt.Unit = unit skuNameExt.Unit = unit
// skuNameExt.SpecQuality = specQuality skuNameExt.SpecQuality = specQuality
// flag = true flag = true
// } }
// if skuNameExt.Img != v.ImageURL { if skuNameExt.Img != v.ImageURL {
// skuNameExt.Img = v.ImageURL skuNameExt.Img = v.ImageURL
// flag = true flag = true
// } }
// if flag { if flag {
// _, err = dao.UpdateEntity(db, skuNameExt, "Name", "Prefix", "SpecUnit", "Unit", "SpecQuality", "Img") _, err = dao.UpdateEntity(db, skuNameExt, "Name", "Prefix", "SpecUnit", "Unit", "SpecQuality", "Img")
// if err != nil { if err != nil {
// return result, err return result, err
// } }
// } }
// } else { } else {
// skuCat := &model.SkuCategory{} skuCat := &model.SkuCategory{}
// sql := ` sql := `
// SELECT * SELECT *
// FROM sku_category FROM sku_category
// WHERE ebai_category_id = ? WHERE ebai_category_id = ?
// ` `
// sqlParams := []interface{}{ sqlParams := []interface{}{
// skus.CategoryIDThird, skus.CategoryIDThird,
// } }
// dao.GetRow(db, skuCat, sql, sqlParams) dao.GetRow(db, skuCat, sql, sqlParams)
// skuName := &model.SkuName{ skuName := &model.SkuName{
// Prefix: prefix, Prefix: prefix,
// Name: v.GoodsName, Name: v.GoodsName,
// IsGlobal: model.YES, IsGlobal: model.YES,
// Unit: unit, Unit: unit,
// SpecQuality: specQuality, SpecQuality: specQuality,
// SpecUnit: specUnit, SpecUnit: specUnit,
// Price: 100, Price: 100,
// Img: v.ImageURL, Img: v.ImageURL,
// Upc: &v.UpcID, Upc: &v.UpcID,
// Status: model.SkuStatusNormal, Status: model.SkuStatusNormal,
// } }
// if skuCat.ID != 0 { if skuCat.ID != 0 {
// skuName.CategoryID = skuCat.ID skuName.CategoryID = skuCat.ID
// } else { } else {
// skuName.CategoryID = 35 //默认给了个分类 skuName.CategoryID = 35 //默认给了个分类
// } }
// dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName()) dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName())
// err = dao.CreateEntity(db, skuName) err = dao.CreateEntity(db, skuName)
// if err != nil { if err != nil {
// return result, err return result, err
// } }
// sku := &model.Sku{ sku := &model.Sku{
// NameID: skuName.ID, NameID: skuName.ID,
// SpecQuality: specQuality, SpecQuality: specQuality,
// SpecUnit: specUnit, SpecUnit: specUnit,
// Weight: int(utils.Str2Int64(skus.Weight)), Weight: int(utils.Str2Int64(skus.Weight)),
// Status: model.SkuStatusNormal, Status: model.SkuStatusNormal,
// ExdSkuID: v.ElemeGoodsID, ExdSkuID: v.ElemeGoodsID,
// ExdCategoryThirdID: skus.CategoryIDThird, ExdCategoryThirdID: skus.CategoryIDThird,
// } }
// dao.WrapAddIDCULDEntity(sku, ctx.GetUserName()) dao.WrapAddIDCULDEntity(sku, ctx.GetUserName())
// err = dao.CreateEntity(db, sku) err = dao.CreateEntity(db, sku)
// if err != nil { if err != nil {
// return result, err return result, err
// } }
// } }
return retVal, err return retVal, err
} }
taskParallel := tasksch.NewParallelTask("更新京西上饿鲜达商品库", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, results) taskParallel := tasksch.NewParallelTask("更新京西上饿鲜达商品库", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, results)
tasksch.HandleTask(taskParallel, task, true).Run() tasksch.HandleTask(taskParallel, task, true).Run()
_, err = taskParallel.GetResult(0) _, err = taskParallel.GetResult(0)
case 1: case 1:
//刷新分类 }
var skus []*model.SkuName return result, err
}
taskSeq := tasksch.NewSeqTask2("合并饿鲜达商品库", ctx, isContinueWhenError, taskSeqFunc, 2)
tasksch.HandleTask(taskSeq, nil, true).Run()
if !isAsync {
_, err = taskSeq.GetResult(0)
hint = "1"
} else {
hint = taskSeq.GetID()
}
return hint, err
}
func UpdateExianDaSkuCategory(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
var (
db = dao.GetDB()
skus []*model.SkuName
)
sql := ` sql := `
SELECT a.* SELECT a.*
FROM sku_name a FROM sku_name a
@@ -1589,14 +1606,15 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue,
} }
err = dao.GetRows(db, &skus, sql, sqlParams...) err = dao.GetRows(db, &skus, sql, sqlParams...)
taskFunc2 := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { task := tasksch.NewParallelTask("更新京西上饿鲜达商品分类", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
v := batchItemList[0].(*model.SkuName) v := batchItemList[0].(*model.SkuName)
skuList, err := api.Ebai2API.GetEbaiDepotSku(ebaiapi.EbaiWholeCountryStore, *v.Upc) skuList, err := api.Ebai2API.GetEbaiDepotSku(ebaiapi.EbaiWholeCountryStore, *v.Upc)
if err != nil || len(skuList) == 0 { if err != nil || len(skuList) == 0 {
return retVal, err return retVal, err
} }
sku, err := api.Ebai2API.GetEbaiSku(skuList[0].UpcID, ebaiapi.EbaiWholeCountryStore) sku, err := api.Ebai2API.GetEbaiSku(skuList[0].UpcID, ebaiapi.EbaiWholeCountryStore)
if err != nil || sku == nil { if err != nil || sku == nil || sku.CustomCatName == "" {
return retVal, err return retVal, err
} }
skuCat := &model.SkuCategory{} skuCat := &model.SkuCategory{}
@@ -1624,81 +1642,13 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
} }
dao.Commit(db) dao.Commit(db)
return retVal, err return retVal, err
} }, skus)
taskParallel2 := tasksch.NewParallelTask("更新京西上饿鲜达商品分类", tasksch.NewParallelConfig().SetParallelCount(parallelCount), ctx, taskFunc2, skus) tasksch.HandleTask(task, nil, true).Run()
tasksch.HandleTask(taskParallel2, task, true).Run()
_, err = taskParallel2.GetResult(0)
}
return result, err
}
taskSeq := tasksch.NewSeqTask2("合并饿鲜达商品库", ctx, isContinueWhenError, taskSeqFunc, 2)
tasksch.HandleTask(taskSeq, nil, true).Run()
if !isAsync { if !isAsync {
_, err = taskSeq.GetResult(0) _, err = task.GetResult(0)
hint = "1" hint = "1"
} else { } else {
hint = taskSeq.GetID() hint = task.GetID()
} }
return hint, err 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 = ?
`
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)
}
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,
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}
return retVal, err
}, results)
tasksch.HandleTask(task, nil, true).Run()
resultIns, err = task.GetResult(0)
for _, v := range resultIns {
tmp := v.(*Tmp)
skuMap[tmp.CatID] = tmp.Name
}
for k, _ := range skuMap {
fmt.Println(k, skuMap[k])
}
return err
}

View File

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

View File

@@ -1251,15 +1251,6 @@ func init() {
Filters: nil, Filters: nil,
Params: 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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{ beego.ControllerComments{
Method: "DeleteCategory", Method: "DeleteCategory",
@@ -1359,15 +1350,6 @@ func init() {
Filters: nil, Filters: nil,
Params: 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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{ beego.ControllerComments{
Method: "SortCategorySkus", Method: "SortCategorySkus",
@@ -1413,6 +1395,15 @@ func init() {
Filters: nil, Filters: nil,
Params: 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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{ beego.ControllerComments{
Method: "UpdateSku", Method: "UpdateSku",