diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go
index ce4d1d81f..894c6796d 100644
--- a/business/jxstore/cms/sync.go
+++ b/business/jxstore/cms/sync.go
@@ -12,7 +12,6 @@ import (
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
- "git.rosy.net.cn/jx-callback/globals/refutil"
)
type LoopStoreMapInfo struct {
@@ -47,36 +46,36 @@ var (
ErrEntityNotExist = errors.New("找不到相应实体")
)
-func (p *MultiStoreHandlerWrapper) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
- if jxutils.IsEmptyID(cat.JdID) {
- return nil
- }
- return p.IMultipleStoresHandler.DeleteCategory(db, cat, userName)
-}
+// func (p *MultiStoreHandlerWrapper) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
+// if jxutils.IsEmptyID(cat.JdID) {
+// return nil
+// }
+// return p.IMultipleStoresHandler.DeleteCategory(db, cat, userName)
+// }
-func (p *MultiStoreHandlerWrapper) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
- if jxutils.IsEmptyID(cat.JdID) {
- globals.SugarLogger.Warnf("UpdateCategory fakeid cat:%s should not get here", utils.Format4Output(cat, true))
- return nil
- }
- return p.IMultipleStoresHandler.UpdateCategory(db, cat, userName)
-}
+// func (p *MultiStoreHandlerWrapper) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
+// if jxutils.IsEmptyID(cat.JdID) {
+// globals.SugarLogger.Warnf("UpdateCategory fakeid cat:%s should not get here", utils.Format4Output(cat, true))
+// return nil
+// }
+// return p.IMultipleStoresHandler.UpdateCategory(db, cat, userName)
+// }
-func (p *MultiStoreHandlerWrapper) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
- globals.SugarLogger.Debugf("wrapper DeleteSku, sku:%s", utils.Format4Output(sku, false))
- if jxutils.IsEmptyID(sku.JdID) {
- return nil
- }
- return p.IMultipleStoresHandler.DeleteSku(db, sku, userName)
-}
+// func (p *MultiStoreHandlerWrapper) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
+// globals.SugarLogger.Debugf("wrapper DeleteSku, sku:%s", utils.Format4Output(sku, false))
+// if jxutils.IsEmptyID(sku.JdID) {
+// return nil
+// }
+// return p.IMultipleStoresHandler.DeleteSku(db, sku, userName)
+// }
-func (p *MultiStoreHandlerWrapper) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
- if jxutils.IsEmptyID(sku.JdID) {
- globals.SugarLogger.Warnf("UpdateSku fakeid sku:%s should not get here", utils.Format4Output(sku, true))
- return nil
- }
- return p.IMultipleStoresHandler.UpdateSku(db, sku, userName)
-}
+// func (p *MultiStoreHandlerWrapper) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
+// if jxutils.IsEmptyID(sku.JdID) {
+// globals.SugarLogger.Warnf("UpdateSku fakeid sku:%s should not get here", utils.Format4Output(sku, true))
+// return nil
+// }
+// return p.IMultipleStoresHandler.UpdateSku(db, sku, userName)
+// }
func (v *VendorSync) GetStoreHandler(vendorID int) partner.IPurchasePlatformHandler {
return partner.GetPurchasePlatformFromVendorID(vendorID)
@@ -96,95 +95,95 @@ func (v *VendorSync) GetSingleStoreHandler(vendorID int) partner.ISingleStoreHan
return nil
}
-func (v *VendorSync) syncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, db *dao.DaoDB, cats []*model.SkuCategory, userName string) (err error) {
- multiStoresHandler := v.GetMultiStoreHandler(vendorID)
- syncStatusFieldName := dao.GetSyncStatusStructField(model.VendorNames[vendorID])
- task := tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[vendorID]), nil, ctx,
- func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
- cat := batchItemList[0].(*model.SkuCategory)
- updateFields := []string{syncStatusFieldName}
- syncStatus := refutil.GetObjFieldByName(cat, syncStatusFieldName).(int8)
- if (syncStatus & model.SyncFlagDeletedMask) != 0 { //删除
- if (syncStatus & model.SyncFlagNewMask) == 0 {
- err = multiStoresHandler.DeleteCategory(db, cat, userName)
- }
- } else if (syncStatus & model.SyncFlagNewMask) != 0 { // 新增
- err = multiStoresHandler.CreateCategory(db, cat, userName)
- updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[multiStoresHandler.GetVendorID()]))
- } else if (syncStatus & model.SyncFlagModifiedMask) != 0 { // 修改
- err = multiStoresHandler.UpdateCategory(db, cat, userName)
- if intErr, ok := err.(*utils.ErrorWithCode); ok && intErr.IntCode() == -3 {
- err = nil
- }
- }
- if err == nil {
- refutil.SetObjFieldByName(cat, syncStatusFieldName, int8(0))
- _, err = dao.UpdateEntity(db, cat, updateFields...)
- }
- return nil, err
- }, cats)
- tasksch.HandleTask(task, parentTask, false).Run()
- _, err = task.GetResult(0)
- return err
-}
+// func (v *VendorSync) syncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, db *dao.DaoDB, cats []*model.SkuCategory, userName string) (err error) {
+// multiStoresHandler := v.GetMultiStoreHandler(vendorID)
+// syncStatusFieldName := dao.GetSyncStatusStructField(model.VendorNames[vendorID])
+// task := tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[vendorID]), nil, ctx,
+// func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
+// cat := batchItemList[0].(*model.SkuCategory)
+// updateFields := []string{syncStatusFieldName}
+// syncStatus := refutil.GetObjFieldByName(cat, syncStatusFieldName).(int8)
+// if (syncStatus & model.SyncFlagDeletedMask) != 0 { //删除
+// if (syncStatus & model.SyncFlagNewMask) == 0 {
+// err = multiStoresHandler.DeleteCategory(db, cat, userName)
+// }
+// } else if (syncStatus & model.SyncFlagNewMask) != 0 { // 新增
+// err = multiStoresHandler.CreateCategory(db, cat, userName)
+// updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[multiStoresHandler.GetVendorID()]))
+// } else if (syncStatus & model.SyncFlagModifiedMask) != 0 { // 修改
+// err = multiStoresHandler.UpdateCategory(db, cat, userName)
+// if intErr, ok := err.(*utils.ErrorWithCode); ok && intErr.IntCode() == -3 {
+// err = nil
+// }
+// }
+// if err == nil {
+// refutil.SetObjFieldByName(cat, syncStatusFieldName, int8(0))
+// _, err = dao.UpdateEntity(db, cat, updateFields...)
+// }
+// return nil, err
+// }, cats)
+// tasksch.HandleTask(task, parentTask, false).Run()
+// _, err = task.GetResult(0)
+// return err
+// }
func (v *VendorSync) SyncCategory(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int, isAsync bool, userName string) (hint string, err error) {
- if !globals.IsUseThingMap {
- return v.oldSyncCategory(ctx, db, categoryID, isAsync, userName)
- }
+ // if !globals.IsUseThingMap {
+ // return v.oldSyncCategory(ctx, db, categoryID, isAsync, userName)
+ // }
return SyncCategories(ctx, nil, nil, nil, []int{categoryID}, isAsync)
}
-func (v *VendorSync) oldSyncCategory(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int, isAsync bool, userName string) (hint string, err error) {
- globals.SugarLogger.Debug("SyncCategory")
- hint, err = v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步分类信息:%d", categoryID), isAsync, false,
- func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
- vendorInfo := batchItemList[0].(*MultiStoreVendorInfo)
- var cats []*model.SkuCategory
- cond := make(map[string]interface{})
- if categoryID > 0 {
- cond[model.FieldID] = categoryID
- } else {
- cond[model.FieldLevel] = 1
- }
- err := dao.GetEntitiesByKV(db, &cats, cond, true)
- if err == nil {
- err = v.syncCategories(ctx, t, vendorInfo.VendorID, db, cats, userName)
- }
- if err != nil || categoryID > 0 {
- return nil, err
- }
- cond[model.FieldLevel] = 2
- err = dao.GetEntitiesByKV(db, &cats, cond, true)
- if err == nil {
- err = v.syncCategories(ctx, t, vendorInfo.VendorID, db, cats, userName)
- }
- return nil, err
- })
- return "", err
-}
+// func (v *VendorSync) oldSyncCategory(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int, isAsync bool, userName string) (hint string, err error) {
+// globals.SugarLogger.Debug("SyncCategory")
+// hint, err = v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步分类信息:%d", categoryID), isAsync, false,
+// func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
+// vendorInfo := batchItemList[0].(*MultiStoreVendorInfo)
+// var cats []*model.SkuCategory
+// cond := make(map[string]interface{})
+// if categoryID > 0 {
+// cond[model.FieldID] = categoryID
+// } else {
+// cond[model.FieldLevel] = 1
+// }
+// err := dao.GetEntitiesByKV(db, &cats, cond, true)
+// if err == nil {
+// err = v.syncCategories(ctx, t, vendorInfo.VendorID, db, cats, userName)
+// }
+// if err != nil || categoryID > 0 {
+// return nil, err
+// }
+// cond[model.FieldLevel] = 2
+// err = dao.GetEntitiesByKV(db, &cats, cond, true)
+// if err == nil {
+// err = v.syncCategories(ctx, t, vendorInfo.VendorID, db, cats, userName)
+// }
+// return nil, err
+// })
+// return "", err
+// }
func (v *VendorSync) SyncReorderCategories(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int, isAsync bool, userName string) (hint string, err error) {
- if !globals.IsUseThingMap {
- return v.oldSyncReorderCategories(ctx, db, categoryID, isAsync, userName)
- }
+ // if !globals.IsUseThingMap {
+ // return v.oldSyncReorderCategories(ctx, db, categoryID, isAsync, userName)
+ // }
return SyncReorderCategories(ctx, -1, isAsync)
}
-func (v *VendorSync) oldSyncReorderCategories(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int, isAsync bool, userName string) (hint string, err error) {
- hint, err = v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("分类重排序:%d", categoryID), isAsync, false, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
- vendorInfo := batchItemList[0].(*MultiStoreVendorInfo)
- multiStoresHandler := v.GetMultiStoreHandler(vendorInfo.VendorID)
- err2 := multiStoresHandler.ReorderCategories(db, categoryID, userName)
- if err2 == nil {
- cat := &model.SkuCategory{}
- _, err2 = dao.UpdateEntityByKV(db, cat, utils.Params2Map(dao.GetSyncStatusStructField(model.VendorNames[multiStoresHandler.GetVendorID()]), 0), utils.Params2Map(model.FieldParentID, categoryID))
- return nil, err2
- }
- return nil, err2
- })
- return "", err
-}
+// func (v *VendorSync) oldSyncReorderCategories(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int, isAsync bool, userName string) (hint string, err error) {
+// hint, err = v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("分类重排序:%d", categoryID), isAsync, false, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
+// vendorInfo := batchItemList[0].(*MultiStoreVendorInfo)
+// multiStoresHandler := v.GetMultiStoreHandler(vendorInfo.VendorID)
+// err2 := multiStoresHandler.ReorderCategories(db, categoryID, userName)
+// if err2 == nil {
+// cat := &model.SkuCategory{}
+// _, err2 = dao.UpdateEntityByKV(db, cat, utils.Params2Map(dao.GetSyncStatusStructField(model.VendorNames[multiStoresHandler.GetVendorID()]), 0), utils.Params2Map(model.FieldParentID, categoryID))
+// return nil, err2
+// }
+// return nil, err2
+// })
+// return "", err
+// }
func (v *VendorSync) SyncStore(ctx *jxcontext.Context, db *dao.DaoDB, vendorID, storeID int, isAsync bool, userName string) (hint string, err error) {
globals.SugarLogger.Debugf("SyncStore, storeID:%d", storeID)
@@ -248,109 +247,109 @@ func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuI
}
func (v *VendorSync) SyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []int, skuIDs []int, isAsync, isContinueWhenError bool, userName string) (hint string, err error) {
- if !globals.IsUseThingMap {
- return v.oldSyncSkus(ctx, db, nameIDs, skuIDs, isAsync, isContinueWhenError, userName)
- }
+ // if !globals.IsUseThingMap {
+ // return v.oldSyncSkus(ctx, db, nameIDs, skuIDs, isAsync, isContinueWhenError, userName)
+ // }
return SyncSkus(ctx, nil, nil, nil, nameIDs, skuIDs, isAsync)
}
-func (v *VendorSync) oldSyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []int, skuIDs []int, isAsync, isContinueWhenError bool, userName string) (hint string, err error) {
- globals.SugarLogger.Debugf("SyncSku trackInfo:%s, nameIDs:%v, skuIDs:%v, userName:%s", ctx.GetTrackInfo(), nameIDs, skuIDs, userName)
- isManagedIt := !(len(nameIDs) > 0 && len(nameIDs) <= 2 || len(skuIDs) > 0 && len(skuIDs) < 8)
- return v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步商品信息, nameIDs:%v, skuIDs:%v", nameIDs, skuIDs), isAsync, isManagedIt,
- func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
- var resultList []interface{}
- vendorInfo := batchItemList[0].(*MultiStoreVendorInfo)
- multiStoresHandler := v.GetMultiStoreHandler(vendorInfo.VendorID)
- syncStatusFieldName := dao.GetSyncStatusStructField(model.VendorNames[multiStoresHandler.GetVendorID()])
- dbField := dao.ConvertDBFieldPrefix(model.VendorNames[multiStoresHandler.GetVendorID()])
- skuMap := make(map[int]bool)
- sql := fmt.Sprintf(`
- SELECT DISTINCT t2.*
- FROM sku t1
- JOIN sku_name t2 ON t2.id = t1.name_id
- WHERE t1.%s_sync_status <> 0
- `, dbField)
- sqlParams := []interface{}{}
- if len(nameIDs) > 0 {
- sql += " AND t1.name_id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")"
- sqlParams = append(sqlParams, nameIDs)
- }
- if len(skuIDs) > 0 {
- sql += " AND t1.id IN(" + dao.GenQuestionMarks(len(skuIDs)) + ")"
- sqlParams = append(sqlParams, skuIDs)
+// func (v *VendorSync) oldSyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []int, skuIDs []int, isAsync, isContinueWhenError bool, userName string) (hint string, err error) {
+// globals.SugarLogger.Debugf("SyncSku trackInfo:%s, nameIDs:%v, skuIDs:%v, userName:%s", ctx.GetTrackInfo(), nameIDs, skuIDs, userName)
+// isManagedIt := !(len(nameIDs) > 0 && len(nameIDs) <= 2 || len(skuIDs) > 0 && len(skuIDs) < 8)
+// return v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步商品信息, nameIDs:%v, skuIDs:%v", nameIDs, skuIDs), isAsync, isManagedIt,
+// func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
+// var resultList []interface{}
+// vendorInfo := batchItemList[0].(*MultiStoreVendorInfo)
+// multiStoresHandler := v.GetMultiStoreHandler(vendorInfo.VendorID)
+// syncStatusFieldName := dao.GetSyncStatusStructField(model.VendorNames[multiStoresHandler.GetVendorID()])
+// dbField := dao.ConvertDBFieldPrefix(model.VendorNames[multiStoresHandler.GetVendorID()])
+// skuMap := make(map[int]bool)
+// sql := fmt.Sprintf(`
+// SELECT DISTINCT t2.*
+// FROM sku t1
+// JOIN sku_name t2 ON t2.id = t1.name_id
+// WHERE t1.%s_sync_status <> 0
+// `, dbField)
+// sqlParams := []interface{}{}
+// if len(nameIDs) > 0 {
+// sql += " AND t1.name_id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")"
+// sqlParams = append(sqlParams, nameIDs)
+// }
+// if len(skuIDs) > 0 {
+// sql += " AND t1.id IN(" + dao.GenQuestionMarks(len(skuIDs)) + ")"
+// sqlParams = append(sqlParams, skuIDs)
- }
- for _, v := range skuIDs {
- skuMap[v] = true
- }
- sql += " ORDER BY t2.id"
+// }
+// for _, v := range skuIDs {
+// skuMap[v] = true
+// }
+// sql += " ORDER BY t2.id"
- var skuNameList []*model.SkuName
- err := dao.GetRows(db, &skuNameList, sql, sqlParams...)
- if err == nil && len(skuNameList) > 0 {
- // todo 同一skuName下的sku顺序处理的原因是京东SPU特殊类型必须要序列化同步才能正常处理, db可能会有多线程问题
- task := tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[vendorInfo.VendorID]), tasksch.NewParallelConfig().SetParallelCount(10).SetIsContinueWhenError(isContinueWhenError), ctx,
- func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
- var resultList []interface{}
- skuName := batchItemList[0].(*model.SkuName)
- var skuList []*model.Sku
- if err = dao.GetRows(db, &skuList, fmt.Sprintf(`
- SELECT *
- FROM sku
- WHERE name_id = ? AND %s_sync_status <> 0
- ORDER BY IF(spec_unit IN('kg', 'L'), 1000, 1) * spec_quality
- `, dbField), skuName.ID); err == nil && len(skuList) > 0 {
- for _, sku := range skuList {
- syncStatus := refutil.GetObjFieldByName(sku, syncStatusFieldName).(int8)
- globals.SugarLogger.Debugf("SyncSku trackInfo2:%s, skuID:%d, syncStatus:%d", ctx.GetTrackInfo(), sku.ID, syncStatus)
- if (len(skuIDs) == 0 || skuMap[sku.ID]) && (syncStatus != 0) {
- updateFields := []string{syncStatusFieldName}
- if syncStatus&model.SyncFlagDeletedMask != 0 { // 删除
- if syncStatus&model.SyncFlagNewMask == 0 {
- err = multiStoresHandler.DeleteSku(db, sku, userName)
- }
- } else if syncStatus&model.SyncFlagNewMask != 0 { // 新增
- if err = multiStoresHandler.CreateSku(db, sku, userName); err == nil {
- var tmpStruct struct {
- MaxIndex int
- }
- // todo hard code 得到京东spu中sku的顺序(以方便以后修改销售属性),这个必须要每次重新从数据库取
- if dao.GetRow(db, &tmpStruct, "SELECT MAX(sku_index) max_index FROM sku WHERE name_id = ? AND jd_id > 0 AND jd_id < 4024012631406 ", sku.NameID) == nil {
- sku.SkuIndex = tmpStruct.MaxIndex + 1
- updateFields = append(updateFields, "SkuIndex")
- }
- updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[multiStoresHandler.GetVendorID()]))
- }
- } else if syncStatus&model.SyncFlagModifiedMask != 0 { // 修改
- err = multiStoresHandler.UpdateSku(db, sku, userName)
- }
- if err == nil {
- refutil.SetObjFieldByName(sku, syncStatusFieldName, int8(0))
- if _, err = dao.UpdateEntity(db, sku, updateFields...); err != nil {
- break
- } else {
- resultList = append(resultList, 1)
- }
- }
- }
- }
- }
- if err == nil {
- refutil.SetObjFieldByName(skuName, syncStatusFieldName, int8(0))
- _, err = dao.UpdateEntity(db, skuName, syncStatusFieldName)
- }
- return resultList, err
- }, skuNameList)
- t.AddChild(task).Run()
- result, err2 := task.GetResult(0)
- if err = err2; err == nil {
- resultList = append(resultList, result...)
- }
- }
- return resultList, err
- })
-}
+// var skuNameList []*model.SkuName
+// err := dao.GetRows(db, &skuNameList, sql, sqlParams...)
+// if err == nil && len(skuNameList) > 0 {
+// // todo 同一skuName下的sku顺序处理的原因是京东SPU特殊类型必须要序列化同步才能正常处理, db可能会有多线程问题
+// task := tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[vendorInfo.VendorID]), tasksch.NewParallelConfig().SetParallelCount(10).SetIsContinueWhenError(isContinueWhenError), ctx,
+// func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
+// var resultList []interface{}
+// skuName := batchItemList[0].(*model.SkuName)
+// var skuList []*model.Sku
+// if err = dao.GetRows(db, &skuList, fmt.Sprintf(`
+// SELECT *
+// FROM sku
+// WHERE name_id = ? AND %s_sync_status <> 0
+// ORDER BY IF(spec_unit IN('kg', 'L'), 1000, 1) * spec_quality
+// `, dbField), skuName.ID); err == nil && len(skuList) > 0 {
+// for _, sku := range skuList {
+// syncStatus := refutil.GetObjFieldByName(sku, syncStatusFieldName).(int8)
+// globals.SugarLogger.Debugf("SyncSku trackInfo2:%s, skuID:%d, syncStatus:%d", ctx.GetTrackInfo(), sku.ID, syncStatus)
+// if (len(skuIDs) == 0 || skuMap[sku.ID]) && (syncStatus != 0) {
+// updateFields := []string{syncStatusFieldName}
+// if syncStatus&model.SyncFlagDeletedMask != 0 { // 删除
+// if syncStatus&model.SyncFlagNewMask == 0 {
+// err = multiStoresHandler.DeleteSku(db, sku, userName)
+// }
+// } else if syncStatus&model.SyncFlagNewMask != 0 { // 新增
+// if err = multiStoresHandler.CreateSku(db, sku, userName); err == nil {
+// var tmpStruct struct {
+// MaxIndex int
+// }
+// // todo hard code 得到京东spu中sku的顺序(以方便以后修改销售属性),这个必须要每次重新从数据库取
+// if dao.GetRow(db, &tmpStruct, "SELECT MAX(sku_index) max_index FROM sku WHERE name_id = ? AND jd_id > 0 AND jd_id < 4024012631406 ", sku.NameID) == nil {
+// sku.SkuIndex = tmpStruct.MaxIndex + 1
+// updateFields = append(updateFields, "SkuIndex")
+// }
+// updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[multiStoresHandler.GetVendorID()]))
+// }
+// } else if syncStatus&model.SyncFlagModifiedMask != 0 { // 修改
+// err = multiStoresHandler.UpdateSku(db, sku, userName)
+// }
+// if err == nil {
+// refutil.SetObjFieldByName(sku, syncStatusFieldName, int8(0))
+// if _, err = dao.UpdateEntity(db, sku, updateFields...); err != nil {
+// break
+// } else {
+// resultList = append(resultList, 1)
+// }
+// }
+// }
+// }
+// }
+// if err == nil {
+// refutil.SetObjFieldByName(skuName, syncStatusFieldName, int8(0))
+// _, err = dao.UpdateEntity(db, skuName, syncStatusFieldName)
+// }
+// return resultList, err
+// }, skuNameList)
+// t.AddChild(task).Run()
+// result, err2 := task.GetResult(0)
+// if err = err2; err == nil {
+// resultList = append(resultList, result...)
+// }
+// }
+// return resultList, err
+// })
+// }
func (v *VendorSync) SyncStoresCategory(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs []int, storeIDs []int, isForce, isAsync, isContinueWhenError bool) (hint string, err error) {
globals.SugarLogger.Debug("SyncStoresCategory")
diff --git a/business/partner/partner.go b/business/partner/partner.go
index f9146c15d..2f8587541 100644
--- a/business/partner/partner.go
+++ b/business/partner/partner.go
@@ -156,10 +156,10 @@ type IMultipleStoresHandler interface {
IPurchasePlatformHandler
GetAllCategories(ctx *jxcontext.Context, vendorOrgCode string) (cats []*BareCategoryInfo, err error)
- CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error)
- UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error
- DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error
- ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error)
+ // CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error)
+ // UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error
+ // DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error
+ // ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error)
CreateCategory2(ctx *jxcontext.Context, cat *dao.SkuStoreCatInfo) (err error)
UpdateCategory2(ctx *jxcontext.Context, cat *dao.SkuStoreCatInfo) (err error)
@@ -167,9 +167,9 @@ type IMultipleStoresHandler interface {
ReorderCategories2(ctx *jxcontext.Context, vendorOrgCode, vendorParentCatID string, vendorCatIDList []string) (err error)
// sku
- CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
- UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
- DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
+ // CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
+ // UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
+ // DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
// ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error)
CreateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error)
diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go
index 214aea54b..5643a4c7b 100644
--- a/business/partner/purchase/jd/sku.go
+++ b/business/partner/purchase/jd/sku.go
@@ -2,491 +2,479 @@ package jd
// 这里函数取得的信息,除了与自身实体相关的ID(比如PARENT ID),都已经转换成了本地ID了
-import (
- "fmt"
- "unicode/utf8"
+// type tSkuInfoExt struct {
+// model.SkuName
+// JdCatID int64 `orm:"column(jd_cat_id)"` // 商家类别
+// JdCategoryID int `orm:"column(jd_category_id)"` // 到家类别
+// SkuCatID int64 `orm:"column(sku_cat_id)"` // 商家特殊类别
+// Comment string `orm:"size(255)" json:"comment"`
+// }
- "git.rosy.net.cn/baseapi/platformapi/jdapi"
- "git.rosy.net.cn/baseapi/utils"
- "git.rosy.net.cn/jx-callback/business/jxutils"
- "git.rosy.net.cn/jx-callback/business/model"
- "git.rosy.net.cn/jx-callback/business/model/dao"
- "git.rosy.net.cn/jx-callback/globals"
-)
+// var (
+// skuAddParamsKeyMap = map[string]int{
+// jdapi.KeyUpcCode: 1,
+// }
+// )
-type tSkuInfoExt struct {
- model.SkuName
- JdCatID int64 `orm:"column(jd_cat_id)"` // 商家类别
- JdCategoryID int `orm:"column(jd_category_id)"` // 到家类别
- SkuCatID int64 `orm:"column(sku_cat_id)"` // 商家特殊类别
- Comment string `orm:"size(255)" json:"comment"`
-}
+// func (p *PurchaseHandler) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
+// var jdPid int64
+// if cat.ParentID != 0 {
+// pCat := &model.SkuCategory{}
+// pCat.ID = cat.ParentID
+// if err = dao.GetEntity(db, pCat); err == nil {
+// jdPid = pCat.JdID
+// } else {
+// return err
+// }
+// }
+// if globals.EnableJdStoreWrite {
+// result, err2 := getAPI("").AddShopCategory(jdPid, cat.Name, int(cat.Level), cat.Seq, userName)
+// if err = err2; err == nil {
+// if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {
+// cat.JdID = jdID
+// }
+// }
+// } else {
+// cat.JdID = jxutils.GenFakeID()
+// }
+// return err
+// }
-var (
- skuAddParamsKeyMap = map[string]int{
- jdapi.KeyUpcCode: 1,
- }
-)
+// func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
+// if globals.EnableJdStoreWrite {
+// return getAPI("").UpdateShopCategory(cat.JdID, cat.Name)
+// }
+// return nil
+// }
-func (p *PurchaseHandler) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
- var jdPid int64
- if cat.ParentID != 0 {
- pCat := &model.SkuCategory{}
- pCat.ID = cat.ParentID
- if err = dao.GetEntity(db, pCat); err == nil {
- jdPid = pCat.JdID
- } else {
- return err
- }
- }
- if globals.EnableJdStoreWrite {
- result, err2 := getAPI("").AddShopCategory(jdPid, cat.Name, int(cat.Level), cat.Seq, userName)
- if err = err2; err == nil {
- if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {
- cat.JdID = jdID
- }
- }
- } else {
- cat.JdID = jxutils.GenFakeID()
- }
- return err
-}
+// func (p *PurchaseHandler) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
+// if globals.EnableJdStoreWrite {
+// return getAPI("").DelShopCategory(cat.JdID)
+// }
+// return nil
+// }
-func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
- if globals.EnableJdStoreWrite {
- return getAPI("").UpdateShopCategory(cat.JdID, cat.Name)
- }
- return nil
-}
+// func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error) {
+// var parentJDID int64
+// if parentCatID != 0 {
+// cat := &model.SkuCategory{}
+// cat.ID = parentCatID
+// if err = dao.GetEntity(db, cat); err != nil {
+// return err
+// }
+// parentJDID = cat.JdID
+// }
+// var cats []*model.SkuCategory
+// if err = dao.GetRows(db, &cats, `
+// SELECT *
+// FROM sku_category
+// WHERE parent_id = ? AND deleted_at = ?
+// ORDER BY seq`, parentCatID, utils.DefaultTimeValue); err == nil {
+// jdCatIDs := make([]int64, len(cats))
+// for k, v := range cats {
+// jdCatIDs[k] = v.JdID
+// }
+// if globals.EnableJdStoreWrite {
+// err = getAPI("").ChangeShopCategoryOrder(parentJDID, jdCatIDs)
+// }
+// }
+// return err
+// }
-func (p *PurchaseHandler) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
- if globals.EnableJdStoreWrite {
- return getAPI("").DelShopCategory(cat.JdID)
- }
- return nil
-}
-
-func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error) {
- var parentJDID int64
- if parentCatID != 0 {
- cat := &model.SkuCategory{}
- cat.ID = parentCatID
- if err = dao.GetEntity(db, cat); err != nil {
- return err
- }
- parentJDID = cat.JdID
- }
- var cats []*model.SkuCategory
- if err = dao.GetRows(db, &cats, `
- SELECT *
- FROM sku_category
- WHERE parent_id = ? AND deleted_at = ?
- ORDER BY seq`, parentCatID, utils.DefaultTimeValue); err == nil {
- jdCatIDs := make([]int64, len(cats))
- for k, v := range cats {
- jdCatIDs[k] = v.JdID
- }
- if globals.EnableJdStoreWrite {
- err = getAPI("").ChangeShopCategoryOrder(parentJDID, jdCatIDs)
- }
- }
- return err
-}
-
-func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) {
- var skuInfoExt tSkuInfoExt
- err = dao.GetRow(nil, &skuInfoExt, `
- SELECT
- t2.*, IF(t2.jd_category_id > 0, t2.jd_category_id, t3.jd_category_id) jd_category_id,
- t3.jd_id jd_cat_id,
- t4.jd_id sku_cat_id
- FROM sku t1
- JOIN sku_name t2 ON t1.name_id = t2.id
- JOIN sku_category t3 ON t2.category_id = t3.id
- LEFT JOIN sku_category t4 ON t1.category_id = t4.id
- WHERE t1.id = ?
- `, sku.ID)
- if err == nil {
- shopCategories := []int64{skuInfoExt.JdCatID}
- // SPU只支持SPU的商家分类,不支持单独SKU的,去除SKU的分类
- // if skuInfoExt.SkuCatID != 0 {
- // shopCategories = append(shopCategories, skuInfoExt.SkuCatID)
- // }
- if skuInfoExt.JdCategoryID == 0 {
- skuInfoExt.JdCategoryID = getDefJdCategoryID()
- }
- if skuInfoExt.BrandID == 0 {
- skuInfoExt.BrandID = DefBrandID
- }
- addParams := map[string]interface{}{}
-
- if skuInfoExt.IsGlobal == 0 { //如果不是全国可售,要查可售区域
- sellPlaces, err2 := dao.GetSellCities(db, skuInfoExt.ID, model.VendorIDJD)
- if err = err2; err == nil && len(sellPlaces) > 0 {
- sellCites := make([]int, len(sellPlaces))
- for k, v := range sellPlaces {
- sellCites[k] = v.JdCode
- }
- addParams["sellCities"] = sellCites
- }
- }
- if addParams["sellCities"] == nil {
- addParams["sellCities"] = []int{0}
- }
- if skuInfoExt.DescImg != "" {
- addParams[jdapi.KeyProductDesc] = fmt.Sprintf(`
`, skuInfoExt.DescImg)
- addParams[jdapi.KeyIfViewDesc] = 0
- } else {
- addParams[jdapi.KeyIfViewDesc] = 1
- }
- if err == nil {
- skuName := jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, sku.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, jdapi.MaxSkuNameCharCount)
- skuPrice := jxutils.CaculateSkuPrice(skuInfoExt.Price, sku.SpecQuality, sku.SpecUnit, skuInfoExt.Unit)
- if skuInfoExt.Upc != "" {
- addParams[jdapi.KeyUpcCode] = skuInfoExt.Upc
- }
- result, err2 := handler(&skuInfoExt, skuPrice, skuName, shopCategories, addParams)
- if err = err2; err == nil {
- if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {
- sku.JdID = jdID
- }
- }
- }
- }
- return err
-}
-
-func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
- return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
- if skuExt.IsSpu == 0 {
- if globals.EnableJdStoreWrite {
- vendorSkuID, err = getAPI("").AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, price, jxutils.IntWeight2Float(sku.Weight), jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2), jxStatus2jdStatus(sku.Status), true, addParams)
- if err != nil {
- if jdSkuID := jdapi.GetJdSkuIDFromError(err); jdSkuID > 0 {
- vendorSkuID = utils.Int64ToStr(jdSkuID)
- err = nil
- }
- }
- } else {
- vendorSkuID = utils.Int64ToStr(jxutils.GenFakeID())
- }
- } else {
- vendorSkuID, err = p.syncSkuNameAsSpu(db, sku, skuExt, price, skuName, shopCategories, addParams)
- }
- return vendorSkuID, err
- })
-}
-
-// func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) {
-// jdSkuID := utils.Str2Int64(vendorSkuID)
-// a := getAPI(vendorOrgCode)
-// skuList, _, err := a.QuerySkuInfos(&jdapi.QuerySkuParam{
-// SkuID: jdSkuID,
-// })
+// func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) {
+// var skuInfoExt tSkuInfoExt
+// err = dao.GetRow(nil, &skuInfoExt, `
+// SELECT
+// t2.*, IF(t2.jd_category_id > 0, t2.jd_category_id, t3.jd_category_id) jd_category_id,
+// t3.jd_id jd_cat_id,
+// t4.jd_id sku_cat_id
+// FROM sku t1
+// JOIN sku_name t2 ON t1.name_id = t2.id
+// JOIN sku_category t3 ON t2.category_id = t3.id
+// LEFT JOIN sku_category t4 ON t1.category_id = t4.id
+// WHERE t1.id = ?
+// `, sku.ID)
// if err == nil {
-// if len(skuList) >= 1 {
-// skuNameExt = &model.SkuNameExt{}
-// if imgList, err2 := a.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{
-// SkuIDs: []int64{jdSkuID},
-// }); err2 == nil && len(imgList) > 0 {
-// skuNameExt.Img = imgList[0].SourceImgURL
-// }
-// sku := skuList[0]
-// prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(sku.SkuName)
-// if name == "" {
-// name = sku.SkuName
-// unit = "份"
-// specUnit = "g"
-// }
-// skuNameExt.Prefix = prefix
-// skuNameExt.Name = name
-// skuNameExt.Unit = unit
-// skuNameExt.Price = sku.SkuPrice
-// skuNameExt.Skus = []*model.SkuWithVendor{
-// &model.SkuWithVendor{
-// Sku: &model.Sku{
-// SpecQuality: specQuality,
-// SpecUnit: specUnit,
-// Weight: jxutils.FloatWeight2Int(float32(sku.Weight)),
-// JdID: sku.SkuID,
-// Status: jdStatus2jxStatus(sku.FixedStatus),
-// Comment: comment,
-// },
-// },
-// }
-// skuNameExt.Skus[0].ID = int(utils.Str2Int64(sku.OutSkuID))
+// shopCategories := []int64{skuInfoExt.JdCatID}
+// // SPU只支持SPU的商家分类,不支持单独SKU的,去除SKU的分类
+// // if skuInfoExt.SkuCatID != 0 {
+// // shopCategories = append(shopCategories, skuInfoExt.SkuCatID)
+// // }
+// if skuInfoExt.JdCategoryID == 0 {
+// skuInfoExt.JdCategoryID = getDefJdCategoryID()
+// }
+// if skuInfoExt.BrandID == 0 {
+// skuInfoExt.BrandID = DefBrandID
+// }
+// addParams := map[string]interface{}{}
-// db := dao.GetDB()
-// shopCategories := sku.ShopCategories
-// if len(shopCategories) > 0 {
-// skuCat := &model.SkuCategory{}
-// skuCat.JdID = shopCategories[0]
-// if dao.GetEntity(db, skuCat, "JdID") == nil {
-// skuNameExt.CategoryID = skuCat.ID
+// if skuInfoExt.IsGlobal == 0 { //如果不是全国可售,要查可售区域
+// sellPlaces, err2 := dao.GetSellCities(db, skuInfoExt.ID, model.VendorIDJD)
+// if err = err2; err == nil && len(sellPlaces) > 0 {
+// sellCites := make([]int, len(sellPlaces))
+// for k, v := range sellPlaces {
+// sellCites[k] = v.JdCode
+// }
+// addParams["sellCities"] = sellCites
+// }
+// }
+// if addParams["sellCities"] == nil {
+// addParams["sellCities"] = []int{0}
+// }
+// if skuInfoExt.DescImg != "" {
+// addParams[jdapi.KeyProductDesc] = fmt.Sprintf(`
`, skuInfoExt.DescImg)
+// addParams[jdapi.KeyIfViewDesc] = 0
+// } else {
+// addParams[jdapi.KeyIfViewDesc] = 1
+// }
+// if err == nil {
+// skuName := jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, sku.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, jdapi.MaxSkuNameCharCount)
+// skuPrice := jxutils.CaculateSkuPrice(skuInfoExt.Price, sku.SpecQuality, sku.SpecUnit, skuInfoExt.Unit)
+// if skuInfoExt.Upc != "" {
+// addParams[jdapi.KeyUpcCode] = skuInfoExt.Upc
+// }
+// result, err2 := handler(&skuInfoExt, skuPrice, skuName, shopCategories, addParams)
+// if err = err2; err == nil {
+// if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {
+// sku.JdID = jdID
// }
// }
-// sellCities := sku.SellCities
-// for _, v := range sellCities {
-// if v == 0 {
-// skuNameExt.IsGlobal = 1
+// }
+// }
+// return err
+// }
+
+// func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
+// return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
+// if skuExt.IsSpu == 0 {
+// if globals.EnableJdStoreWrite {
+// vendorSkuID, err = getAPI("").AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, price, jxutils.IntWeight2Float(sku.Weight), jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2), jxStatus2jdStatus(sku.Status), true, addParams)
+// if err != nil {
+// if jdSkuID := jdapi.GetJdSkuIDFromError(err); jdSkuID > 0 {
+// vendorSkuID = utils.Int64ToStr(jdSkuID)
+// err = nil
+// }
// }
-// }
-// if len(sellCities) == 0 || skuNameExt.IsGlobal == 1 {
-// skuNameExt.IsGlobal = 1
// } else {
-// var places []*model.Place
-// if err = dao.GetRows(db, &places, "SELECT * FROM place WHERE jd_code IN ("+dao.GenQuestionMarks(len(sellCities))+") AND level = 2", sellCities); err == nil {
-// skuNameExt.Places = make([]int, len(places))
-// for k, v := range places {
-// skuNameExt.Places[k] = v.Code
+// vendorSkuID = utils.Int64ToStr(jxutils.GenFakeID())
+// }
+// } else {
+// vendorSkuID, err = p.syncSkuNameAsSpu(db, sku, skuExt, price, skuName, shopCategories, addParams)
+// }
+// return vendorSkuID, err
+// })
+// }
+
+// // func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) {
+// // jdSkuID := utils.Str2Int64(vendorSkuID)
+// // a := getAPI(vendorOrgCode)
+// // skuList, _, err := a.QuerySkuInfos(&jdapi.QuerySkuParam{
+// // SkuID: jdSkuID,
+// // })
+// // if err == nil {
+// // if len(skuList) >= 1 {
+// // skuNameExt = &model.SkuNameExt{}
+// // if imgList, err2 := a.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{
+// // SkuIDs: []int64{jdSkuID},
+// // }); err2 == nil && len(imgList) > 0 {
+// // skuNameExt.Img = imgList[0].SourceImgURL
+// // }
+// // sku := skuList[0]
+// // prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(sku.SkuName)
+// // if name == "" {
+// // name = sku.SkuName
+// // unit = "份"
+// // specUnit = "g"
+// // }
+// // skuNameExt.Prefix = prefix
+// // skuNameExt.Name = name
+// // skuNameExt.Unit = unit
+// // skuNameExt.Price = sku.SkuPrice
+// // skuNameExt.Skus = []*model.SkuWithVendor{
+// // &model.SkuWithVendor{
+// // Sku: &model.Sku{
+// // SpecQuality: specQuality,
+// // SpecUnit: specUnit,
+// // Weight: jxutils.FloatWeight2Int(float32(sku.Weight)),
+// // JdID: sku.SkuID,
+// // Status: jdStatus2jxStatus(sku.FixedStatus),
+// // Comment: comment,
+// // },
+// // },
+// // }
+// // skuNameExt.Skus[0].ID = int(utils.Str2Int64(sku.OutSkuID))
+
+// // db := dao.GetDB()
+// // shopCategories := sku.ShopCategories
+// // if len(shopCategories) > 0 {
+// // skuCat := &model.SkuCategory{}
+// // skuCat.JdID = shopCategories[0]
+// // if dao.GetEntity(db, skuCat, "JdID") == nil {
+// // skuNameExt.CategoryID = skuCat.ID
+// // }
+// // }
+// // sellCities := sku.SellCities
+// // for _, v := range sellCities {
+// // if v == 0 {
+// // skuNameExt.IsGlobal = 1
+// // }
+// // }
+// // if len(sellCities) == 0 || skuNameExt.IsGlobal == 1 {
+// // skuNameExt.IsGlobal = 1
+// // } else {
+// // var places []*model.Place
+// // if err = dao.GetRows(db, &places, "SELECT * FROM place WHERE jd_code IN ("+dao.GenQuestionMarks(len(sellCities))+") AND level = 2", sellCities); err == nil {
+// // skuNameExt.Places = make([]int, len(places))
+// // for k, v := range places {
+// // skuNameExt.Places[k] = v.Code
+// // }
+// // }
+// // }
+// // } else {
+// // err = partner.ErrCanNotFindItem
+// // }
+// // }
+// // return skuNameExt, err
+// // }
+
+// func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
+// return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
+// params := utils.MergeMaps(addParams)
+// params[jdapi.KeyCategoryId] = skuExt.JdCategoryID
+// params[jdapi.KeyShopCategories] = shopCategories
+// params[jdapi.KeyBrandId] = skuExt.BrandID
+// params[jdapi.KeySkuName] = skuName
+// params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
+// params[jdapi.KeyImages] = jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2)
+// params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
+// if skuExt.IsSpu == 0 {
+// if globals.EnableJdStoreWrite {
+// vendorSkuID, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params)
+// }
+// } else {
+// vendorSkuID, err = p.syncSkuNameAsSpu(db, sku, skuExt, price, skuName, shopCategories, addParams)
+// }
+// return vendorSkuID, err
+// })
+// }
+
+// func (p *PurchaseHandler) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
+// params := map[string]interface{}{
+// jdapi.KeyFixedStatus: jdapi.SkuFixedStatusDeleted,
+// }
+// sql := `
+// SELECT t2.*
+// FROM sku t1
+// JOIN sku_name t2 ON t1.name_id = t2.id
+// WHERE t1.id = ?
+// `
+// var skuExt tSkuInfoExt
+// err = dao.GetRow(db, &skuExt, sql, sku.ID)
+// if err == nil {
+// if skuExt.IsSpu == 0 {
+// if globals.EnableJdStoreWrite {
+// _, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params)
+// }
+// } else {
+// _, err = p.syncSkuNameAsSpu(db, sku, &skuExt, 0, "", nil, nil)
+// }
+// }
+// return err
+// }
+
+// // func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
+// // globals.SugarLogger.Debugf("jd RefreshAllSkusID")
+
+// // db := dao.GetDB()
+// // var skuPairs []*jdapi.SkuIDPair
+// // const stepCount = 2
+
+// // rootTask := tasksch.NewSeqTask("jd RefreshAllSkusID", ctx,
+// // func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
+// // switch step {
+// // case 0:
+// // err = dao.GetRows(db, &skuPairs, `
+// // SELECT t1.id out_sku_id, t1.jd_id sku_id
+// // FROM sku t1
+// // WHERE t1.deleted_at = ?
+// // `, utils.DefaultTimeValue)
+// // default:
+// // taskName := "RefreshAllSkusID update id"
+// // if step != stepCount-1 {
+// // taskName = "RefreshAllSkusID update uuid"
+// // }
+// // task1 := tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetIsContinueWhenError(true).SetBatchSize(jdapi.MaxBatchSize4BatchUpdateOutSkuId), ctx,
+// // func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
+// // skuPairs := make([]*jdapi.SkuIDPair, len(batchItemList))
+// // for k, v := range batchItemList {
+// // pair := v.(*jdapi.SkuIDPair)
+// // skuPairs[k] = &jdapi.SkuIDPair{
+// // SkuId: pair.SkuId,
+// // OutSkuId: pair.OutSkuId,
+// // }
+// // if step != stepCount-1 {
+// // skuPairs[k].OutSkuId = utils.GetUUID()
+// // }
+// // }
+// // globals.SugarLogger.Debug(utils.Format4Output(skuPairs, false))
+// // if globals.EnableJdStoreWrite {
+// // _, err = getAPI("").BatchUpdateOutSkuId(skuPairs)
+// // }
+// // return nil, err
+// // }, skuPairs)
+// // rootTask.AddChild(task1).Run()
+// // _, err = task1.GetResult(0)
+// // }
+// // return nil, err
+// // }, stepCount)
+// // tasksch.HandleTask(rootTask, parentTask, false).Run()
+// // if !isAsync {
+// // _, err = rootTask.GetResult(0)
+// // }
+// // return rootTask.ID, err
+// // }
+
+// func splitAddParams(addParams map[string]interface{}) (spuAddParams, skuAddParams map[string]interface{}) {
+// if addParams != nil {
+// spuAddParams = make(map[string]interface{})
+// skuAddParams = make(map[string]interface{})
+// for key := range addParams {
+// if skuAddParamsKeyMap[key] == 1 {
+// skuAddParams[key] = addParams[key]
+// } else {
+// spuAddParams[key] = addParams[key]
+// }
+// }
+// }
+// return spuAddParams, skuAddParams
+// }
+
+// // 这个处理JD SPU,补丁形式
+// func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
+// // SPU的SKU NAME不需要规格信息
+// skuName = jxutils.ComposeSkuName(skuExt.Prefix, skuExt.Name, sku.Comment, "", 0, "", 0)
+// skuNameJdID := skuExt.JdID
+// globals.SugarLogger.Debugf("syncSkuNameAsSpu1 sku.id=%d, bareSkuName:%s, skuName:%s, skuNameJdID:%d", sku.ID, skuExt.Name, skuName, skuNameJdID)
+// spuAddParams, skuAddParams := splitAddParams(addParams)
+// if !jxutils.IsEmptyID(skuNameJdID) && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU
+// if globals.EnableJdStoreWrite {
+// err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
+// }
+// }
+// if err == nil {
+// updateFields := []string{}
+// if skuExt.JdSyncStatus&model.SyncFlagDeletedMask != 0 {
+// sql := `
+// SELECT COUNT(*) ct
+// FROM sku t1
+// WHERE t1.name_id = ? AND (t1.status <> ? OR t1.jd_sync_status <> 0)
+// `
+// var count struct {
+// Ct int
+// }
+// if err = dao.GetRow(db, &count, sql, sku.NameID, model.SkuStatusDeleted); err != nil {
+// return "", err
+// }
+// if count.Ct <= 1 && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 1就是最后删的那个
+// updateFields = append(updateFields, model.FieldJdSyncStatus)
+// if globals.EnableJdStoreWrite {
+// if err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusOffline)); err == nil {
+// err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
// }
// }
// }
-// } else {
-// err = partner.ErrCanNotFindItem
+// } else if skuExt.JdSyncStatus&model.SyncFlagNewMask != 0 && jxutils.IsEmptyID(skuNameJdID) {
+// if globals.EnableJdStoreWrite {
+// spuName := jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0)
+// skus := []map[string]interface{}{
+// map[string]interface{}{
+// jdapi.KeyOutSkuId: utils.Int2Str(sku.ID),
+// jdapi.KeySkuName: skuName,
+// jdapi.KeyFixedStatus: jxStatus2jdStatus(sku.Status),
+// jdapi.KeySkuPrice: price,
+// jdapi.KeyWeight: jxutils.IntWeight2Float(sku.Weight),
+// jdapi.KeyIsSale: true,
+// jdapi.FakeKeySpecAttr: composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit),
+// },
+// }
+// skus[0] = utils.MergeMaps(skus[0], skuAddParams)
+// updateFields = append(updateFields, model.FieldJdSyncStatus)
+// if globals.EnableJdStoreWrite {
+// vendorSpuID, skuPairs, err2 := getAPI("").AddSpu(utils.Int2Str(skuExt.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, spuName, []string{skuExt.Img}, jxStatus2jdStatus(skuExt.Status), spuAddParams, skus)
+// if err = err2; err == nil {
+// skuExt.JdID = vendorSpuID
+// // skuNameJdID = skuExt.JdID // 这个是故意去掉的,这样之后的首次SKU修改操作就会被忽略,下一条语句也就可以不用了
+// // sku.JdSyncStatus &= ^model.SyncFlagNewMask
+// vendorSkuID = utils.Int64ToStr(skuPairs[0].SkuId)
+// updateFields = append(updateFields, model.FieldJdID)
+// }
+// }
+// }
+// } else if skuExt.JdSyncStatus&model.SyncFlagModifiedMask != 0 {
+// params := utils.MergeMaps(map[string]interface{}{
+// jdapi.KeySpuName: jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0),
+// jdapi.KeyShopCategories: shopCategories,
+// jdapi.KeyCategoryId: skuExt.JdCategoryID,
+// jdapi.KeyBrandId: skuExt.BrandID,
+// jdapi.KeyImages: []string{skuExt.Img},
+// jdapi.KeyFixedStatus: jxStatus2jdStatus(skuExt.Status),
+// }, spuAddParams)
+// updateFields = append(updateFields, model.FieldJdSyncStatus)
+// if globals.EnableJdStoreWrite {
+// err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), params)
+// }
+// }
+// if err == nil {
+// if skuExt.JdSyncStatus != 0 && len(updateFields) > 0 {
+// skuExt.JdSyncStatus = 0
+// _, err = dao.UpdateEntity(db, &skuExt.SkuName, updateFields...)
+// globals.SugarLogger.Debugf("syncSkuNameAsSpu4 sku.id=%d, skuName:%s, skuName:%s", sku.ID, skuExt.Name, utils.Format4Output(&skuExt.SkuName, false))
+// }
// }
// }
-// return skuNameExt, err
-// }
-
-func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
- return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
- params := utils.MergeMaps(addParams)
- params[jdapi.KeyCategoryId] = skuExt.JdCategoryID
- params[jdapi.KeyShopCategories] = shopCategories
- params[jdapi.KeyBrandId] = skuExt.BrandID
- params[jdapi.KeySkuName] = skuName
- params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
- params[jdapi.KeyImages] = jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2)
- params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
- if skuExt.IsSpu == 0 {
- if globals.EnableJdStoreWrite {
- vendorSkuID, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params)
- }
- } else {
- vendorSkuID, err = p.syncSkuNameAsSpu(db, sku, skuExt, price, skuName, shopCategories, addParams)
- }
- return vendorSkuID, err
- })
-}
-
-func (p *PurchaseHandler) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
- params := map[string]interface{}{
- jdapi.KeyFixedStatus: jdapi.SkuFixedStatusDeleted,
- }
- sql := `
- SELECT t2.*
- FROM sku t1
- JOIN sku_name t2 ON t1.name_id = t2.id
- WHERE t1.id = ?
- `
- var skuExt tSkuInfoExt
- err = dao.GetRow(db, &skuExt, sql, sku.ID)
- if err == nil {
- if skuExt.IsSpu == 0 {
- if globals.EnableJdStoreWrite {
- _, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params)
- }
- } else {
- _, err = p.syncSkuNameAsSpu(db, sku, &skuExt, 0, "", nil, nil)
- }
- }
- return err
-}
-
-// func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
-// globals.SugarLogger.Debugf("jd RefreshAllSkusID")
-
-// db := dao.GetDB()
-// var skuPairs []*jdapi.SkuIDPair
-// const stepCount = 2
-
-// rootTask := tasksch.NewSeqTask("jd RefreshAllSkusID", ctx,
-// func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
-// switch step {
-// case 0:
-// err = dao.GetRows(db, &skuPairs, `
-// SELECT t1.id out_sku_id, t1.jd_id sku_id
-// FROM sku t1
-// WHERE t1.deleted_at = ?
-// `, utils.DefaultTimeValue)
-// default:
-// taskName := "RefreshAllSkusID update id"
-// if step != stepCount-1 {
-// taskName = "RefreshAllSkusID update uuid"
+// if err == nil && !jxutils.IsEmptyID(skuNameJdID) {
+// if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU
+// if globals.EnableJdStoreWrite {
+// vendorSkuID2, err2 := getAPI("").AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), skuAddParams)
+// if err = err2; err == nil {
+// vendorSkuID = utils.Int64ToStr(vendorSkuID2)
// }
-// task1 := tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetIsContinueWhenError(true).SetBatchSize(jdapi.MaxBatchSize4BatchUpdateOutSkuId), ctx,
-// func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
-// skuPairs := make([]*jdapi.SkuIDPair, len(batchItemList))
-// for k, v := range batchItemList {
-// pair := v.(*jdapi.SkuIDPair)
-// skuPairs[k] = &jdapi.SkuIDPair{
-// SkuId: pair.SkuId,
-// OutSkuId: pair.OutSkuId,
-// }
-// if step != stepCount-1 {
-// skuPairs[k].OutSkuId = utils.GetUUID()
-// }
-// }
-// globals.SugarLogger.Debug(utils.Format4Output(skuPairs, false))
-// if globals.EnableJdStoreWrite {
-// _, err = getAPI("").BatchUpdateOutSkuId(skuPairs)
-// }
-// return nil, err
-// }, skuPairs)
-// rootTask.AddChild(task1).Run()
-// _, err = task1.GetResult(0)
// }
-// return nil, err
-// }, stepCount)
-// tasksch.HandleTask(rootTask, parentTask, false).Run()
-// if !isAsync {
-// _, err = rootTask.GetResult(0)
+// } else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 {
+// params := make(map[string]interface{})
+// params[jdapi.KeySkuName] = skuName
+// params[jdapi.KeyImages] = []string{skuExt.Img}
+// params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
+// params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
+// params[jdapi.KeySkuPrice] = price
+// if globals.EnableJdStoreWrite {
+// err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
+// if sku.JdSyncStatus&model.SyncFlagSpecMask != 0 {
+// skuIndex := sku.SkuIndex
+// if skuIndex > 0 {
+// saleAttrValue := composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit)
+// globals.SugarLogger.Debugf("syncSkuNameAsSpu outSuperId:%d, saleAttrId:%d, saleAttrValueId:%d, saleAttrValueName:%s", skuExt.ID, jdapi.SaleAttrIDBase, jdapi.SaleAttrValueIDBase+skuIndex-1, saleAttrValue)
+// err = getAPI("").UpdateSpuSaleAttr(utils.Int2Str(skuExt.ID), utils.Int2Str(jdapi.SaleAttrIDBase), "", utils.Int2Str(jdapi.SaleAttrValueIDBase+skuIndex-1), saleAttrValue)
+// }
+// }
+// }
+// }
+// if err == nil {
+// sku.JdSyncStatus = 0
+// }
// }
-// return rootTask.ID, err
+// return vendorSkuID, err
// }
-func splitAddParams(addParams map[string]interface{}) (spuAddParams, skuAddParams map[string]interface{}) {
- if addParams != nil {
- spuAddParams = make(map[string]interface{})
- skuAddParams = make(map[string]interface{})
- for key := range addParams {
- if skuAddParamsKeyMap[key] == 1 {
- skuAddParams[key] = addParams[key]
- } else {
- spuAddParams[key] = addParams[key]
- }
- }
- }
- return spuAddParams, skuAddParams
-}
-
-// 这个处理JD SPU,补丁形式
-func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
- // SPU的SKU NAME不需要规格信息
- skuName = jxutils.ComposeSkuName(skuExt.Prefix, skuExt.Name, sku.Comment, "", 0, "", 0)
- skuNameJdID := skuExt.JdID
- globals.SugarLogger.Debugf("syncSkuNameAsSpu1 sku.id=%d, bareSkuName:%s, skuName:%s, skuNameJdID:%d", sku.ID, skuExt.Name, skuName, skuNameJdID)
- spuAddParams, skuAddParams := splitAddParams(addParams)
- if !jxutils.IsEmptyID(skuNameJdID) && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU
- if globals.EnableJdStoreWrite {
- err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
- }
- }
- if err == nil {
- updateFields := []string{}
- if skuExt.JdSyncStatus&model.SyncFlagDeletedMask != 0 {
- sql := `
- SELECT COUNT(*) ct
- FROM sku t1
- WHERE t1.name_id = ? AND (t1.status <> ? OR t1.jd_sync_status <> 0)
- `
- var count struct {
- Ct int
- }
- if err = dao.GetRow(db, &count, sql, sku.NameID, model.SkuStatusDeleted); err != nil {
- return "", err
- }
- if count.Ct <= 1 && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 1就是最后删的那个
- updateFields = append(updateFields, model.FieldJdSyncStatus)
- if globals.EnableJdStoreWrite {
- if err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusOffline)); err == nil {
- err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
- }
- }
- }
- } else if skuExt.JdSyncStatus&model.SyncFlagNewMask != 0 && jxutils.IsEmptyID(skuNameJdID) {
- if globals.EnableJdStoreWrite {
- spuName := jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0)
- skus := []map[string]interface{}{
- map[string]interface{}{
- jdapi.KeyOutSkuId: utils.Int2Str(sku.ID),
- jdapi.KeySkuName: skuName,
- jdapi.KeyFixedStatus: jxStatus2jdStatus(sku.Status),
- jdapi.KeySkuPrice: price,
- jdapi.KeyWeight: jxutils.IntWeight2Float(sku.Weight),
- jdapi.KeyIsSale: true,
- jdapi.FakeKeySpecAttr: composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit),
- },
- }
- skus[0] = utils.MergeMaps(skus[0], skuAddParams)
- updateFields = append(updateFields, model.FieldJdSyncStatus)
- if globals.EnableJdStoreWrite {
- vendorSpuID, skuPairs, err2 := getAPI("").AddSpu(utils.Int2Str(skuExt.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, spuName, []string{skuExt.Img}, jxStatus2jdStatus(skuExt.Status), spuAddParams, skus)
- if err = err2; err == nil {
- skuExt.JdID = vendorSpuID
- // skuNameJdID = skuExt.JdID // 这个是故意去掉的,这样之后的首次SKU修改操作就会被忽略,下一条语句也就可以不用了
- // sku.JdSyncStatus &= ^model.SyncFlagNewMask
- vendorSkuID = utils.Int64ToStr(skuPairs[0].SkuId)
- updateFields = append(updateFields, model.FieldJdID)
- }
- }
- }
- } else if skuExt.JdSyncStatus&model.SyncFlagModifiedMask != 0 {
- params := utils.MergeMaps(map[string]interface{}{
- jdapi.KeySpuName: jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0),
- jdapi.KeyShopCategories: shopCategories,
- jdapi.KeyCategoryId: skuExt.JdCategoryID,
- jdapi.KeyBrandId: skuExt.BrandID,
- jdapi.KeyImages: []string{skuExt.Img},
- jdapi.KeyFixedStatus: jxStatus2jdStatus(skuExt.Status),
- }, spuAddParams)
- updateFields = append(updateFields, model.FieldJdSyncStatus)
- if globals.EnableJdStoreWrite {
- err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), params)
- }
- }
- if err == nil {
- if skuExt.JdSyncStatus != 0 && len(updateFields) > 0 {
- skuExt.JdSyncStatus = 0
- _, err = dao.UpdateEntity(db, &skuExt.SkuName, updateFields...)
- globals.SugarLogger.Debugf("syncSkuNameAsSpu4 sku.id=%d, skuName:%s, skuName:%s", sku.ID, skuExt.Name, utils.Format4Output(&skuExt.SkuName, false))
- }
- }
- }
- if err == nil && !jxutils.IsEmptyID(skuNameJdID) {
- if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU
- if globals.EnableJdStoreWrite {
- vendorSkuID2, err2 := getAPI("").AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), skuAddParams)
- if err = err2; err == nil {
- vendorSkuID = utils.Int64ToStr(vendorSkuID2)
- }
- }
- } else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 {
- params := make(map[string]interface{})
- params[jdapi.KeySkuName] = skuName
- params[jdapi.KeyImages] = []string{skuExt.Img}
- params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
- params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
- params[jdapi.KeySkuPrice] = price
- if globals.EnableJdStoreWrite {
- err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
- if sku.JdSyncStatus&model.SyncFlagSpecMask != 0 {
- skuIndex := sku.SkuIndex
- if skuIndex > 0 {
- saleAttrValue := composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit)
- globals.SugarLogger.Debugf("syncSkuNameAsSpu outSuperId:%d, saleAttrId:%d, saleAttrValueId:%d, saleAttrValueName:%s", skuExt.ID, jdapi.SaleAttrIDBase, jdapi.SaleAttrValueIDBase+skuIndex-1, saleAttrValue)
- err = getAPI("").UpdateSpuSaleAttr(utils.Int2Str(skuExt.ID), utils.Int2Str(jdapi.SaleAttrIDBase), "", utils.Int2Str(jdapi.SaleAttrValueIDBase+skuIndex-1), saleAttrValue)
- }
- }
- }
- }
- if err == nil {
- sku.JdSyncStatus = 0
- }
- }
- return vendorSkuID, err
-}
-
-func composeSkuSpec(specQuality float32, specUnit, unit string) string {
- prefix := ""
- if unit == model.SpecialUnit {
- prefix = "约"
- }
- value := prefix + jxutils.ComposeSkuSpec(specQuality, specUnit)
- suffix := "/" + unit
- if utf8.RuneCountInString(value) <= 8-utf8.RuneCountInString(suffix) {
- value += suffix
- }
- return value
-}
+// func composeSkuSpec(specQuality float32, specUnit, unit string) string {
+// prefix := ""
+// if unit == model.SpecialUnit {
+// prefix = "约"
+// }
+// value := prefix + jxutils.ComposeSkuSpec(specQuality, specUnit)
+// suffix := "/" + unit
+// if utf8.RuneCountInString(value) <= 8-utf8.RuneCountInString(suffix) {
+// value += suffix
+// }
+// return value
+// }
diff --git a/business/partner/purchase/jx/sku.go b/business/partner/purchase/jx/sku.go
index 7673a1423..32daa9b18 100644
--- a/business/partner/purchase/jx/sku.go
+++ b/business/partner/purchase/jx/sku.go
@@ -9,25 +9,25 @@ import (
"git.rosy.net.cn/jx-callback/business/partner"
)
-func (p *PurchaseHandler) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
- return err
-}
+// func (p *PurchaseHandler) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
+// return err
+// }
func (p *PurchaseHandler) GetAllCategories(ctx *jxcontext.Context, vendorOrgCode string) (cats []*partner.BareCategoryInfo, err error) {
return cats, err
}
-func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
- return nil
-}
+// func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
+// return nil
+// }
-func (p *PurchaseHandler) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
- return nil
-}
+// func (p *PurchaseHandler) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
+// return nil
+// }
-func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error) {
- return err
-}
+// func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error) {
+// return err
+// }
func (p *PurchaseHandler) CreateCategory2(ctx *jxcontext.Context, cat *dao.SkuStoreCatInfo) (err error) {
return err
@@ -45,21 +45,21 @@ func (p *PurchaseHandler) ReorderCategories2(ctx *jxcontext.Context, vendorOrgCo
return err
}
-func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
- return err
-}
+// func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
+// return err
+// }
// func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) {
// return skuNameExt, err
// }
-func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
- return err
-}
+// func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
+// return err
+// }
-func (p *PurchaseHandler) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
- return err
-}
+// func (p *PurchaseHandler) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
+// return err
+// }
func (p *PurchaseHandler) CreateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) {
return err