刷新饿鲜达商品分类分离
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user