diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 5ecadfab7..87a1a841c 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -38,11 +38,6 @@ type SingleStoreHandlerWrapper struct { partner.ISingleStoreHandler } -type tMultiStoreVendorInfo struct { - VendorID int - OrgCode string -} - var ( CurVendorSync VendorSync ) @@ -101,20 +96,6 @@ func (v *VendorSync) GetSingleStoreHandler(vendorID int) partner.ISingleStoreHan return nil } -func getMultiStoreVendorInfoList() (list []*tMultiStoreVendorInfo) { - vendorIDs := partner.GetMultiStoreVendorIDs() - for _, vendorID := range vendorIDs { - orgCodeList := partner.CurAPIManager.GetAppOrgCodeList(vendorID) - for _, v := range orgCodeList { - list = append(list, &tMultiStoreVendorInfo{ - VendorID: vendorID, - OrgCode: v, - }) - } - } - return list -} - 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]) @@ -715,59 +696,3 @@ func GetTimeMixByInt(begin1, end1, begin2, end2 int16) (beginAt, endAt int16) { } return beginAt, endAt } - -func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) { - for _, v := range getMultiStoreVendorInfoList() { - thingMap := &model.ThingMap{ - ThingID: thingID, - ThingType: thingType, - VendorID: v.VendorID, - VendorOrgCode: v.OrgCode, - SyncStatus: model.SyncFlagNewMask, - } - dao.WrapAddIDCULDEntity(thingMap, ctx.GetUserName()) - err = dao.CreateEntity(db, thingMap) - } - return nil -} - -func OnUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) { - for _, v := range getMultiStoreVendorInfoList() { - thingMap := &model.ThingMap{ - ThingID: thingID, - ThingType: thingType, - VendorID: v.VendorID, - VendorOrgCode: v.OrgCode, - } - thingMap.DeletedAt = utils.DefaultTimeValue - if err = dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt); err == nil { - thingMap.SyncStatus |= model.SyncFlagModifiedMask - thingMap.LastOperator = ctx.GetUserName() - _, err = dao.UpdateEntity(db, thingMap) - } - } - return nil -} - -func OnDeleteThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) { - for _, v := range getMultiStoreVendorInfoList() { - thingMap := &model.ThingMap{ - ThingID: thingID, - ThingType: thingType, - VendorID: v.VendorID, - VendorOrgCode: v.OrgCode, - } - thingMap.DeletedAt = utils.DefaultTimeValue - if err = dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt); err == nil { - if model.IsSyncStatusNew(thingMap.SyncStatus) { - thingMap.SyncStatus = 0 - } else { - thingMap.SyncStatus |= model.SyncFlagDeletedMask - } - _, err = dao.DeleteEntityLogically(db, thingMap, map[string]interface{}{ - model.FieldSyncStatus: thingMap.SyncStatus, - }, ctx.GetUserName(), nil) - } - } - return nil -} diff --git a/business/jxstore/cms/sync2.go b/business/jxstore/cms/sync2.go index 6c9e9db9a..b28060a88 100644 --- a/business/jxstore/cms/sync2.go +++ b/business/jxstore/cms/sync2.go @@ -1,30 +1,206 @@ package cms import ( + "fmt" + "time" + + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" + "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" ) +type tMultiStoreVendorInfo struct { + VendorID int + OrgCode string +} + +func CombineVendorIDAndOrgCode(vendorID int, orgCode string) string { + return fmt.Sprintf("%d-%s", vendorID, orgCode) +} + +func getMultiStoreVendorInfoList() (list []*tMultiStoreVendorInfo) { + vendorIDs := partner.GetMultiStoreVendorIDs() + for _, vendorID := range vendorIDs { + orgCodeList := partner.CurAPIManager.GetAppOrgCodeList(vendorID) + for _, v := range orgCodeList { + list = append(list, &tMultiStoreVendorInfo{ + VendorID: vendorID, + OrgCode: v, + }) + } + } + return list +} + func SyncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, appOrgCodes []string, catIDs []int, isAsync bool) (hint string, err error) { - // if len(vendorIDs) == 0 { - // vendorIDs = partner.GetMultiStoreVendorIDs() - // } - // vendorOrgCodeList := apimanager.CurAPIManager.GetVendorOrgCodeList(vendorIDs, appOrgCodes) - // task := tasksch.NewParallelTask("同步商家分类", nil, ctx, - // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - // vendorOrgCodePair := batchItemList[0].(*apimanager.VendorOrgCodePair) - // if handler := partner.GetPurchasePlatformFromVendorID(vendorOrgCodePair.VendorID); handler != nil { - // } - // return retVal, err - // }, vendorOrgCodeList) - // tasksch.HandleTask(task, parentTask, len(catIDs) > 0).Run() - // if isAsync { - // hint = task.GetID() - // } else { - // resultList, err2 := task.GetResult(0) - // if err = err2; err == nil { - // hint = utils.Int2Str(len(resultList)) - // } - // } + globals.SugarLogger.Debugf("SyncCategories catIDs:%v", catIDs) + db := dao.GetDB() + catList, err := dao.GetSkuCategoryWithVendor(db, nil, nil, -1, catIDs, true) + if err == nil { + // todo 按vendorID orgCode合并操作 + task := tasksch.NewParallelTask(fmt.Sprintf("同步分类:%v", catIDs), nil, ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + catVendorInfo := batchItemList[0].(*dao.SkuCategoryWithVendor) + if multiStoresHandler, ok := partner.GetPurchasePlatformFromVendorID(catVendorInfo.VendorID).(partner.IMultipleStoresHandler); ok { + if model.IsSyncStatusDelete(catVendorInfo.SyncStatus) { //删除 + if !dao.IsVendorThingIDEmpty(catVendorInfo.VendorCatID) && + model.IsSyncStatusNeedDelete(catVendorInfo.SyncStatus) { + err = multiStoresHandler.DeleteCategory2(ctx, catVendorInfo) + } + } else if model.IsSyncStatusNew(catVendorInfo.SyncStatus) { // 新增 + err = multiStoresHandler.CreateCategory2(ctx, catVendorInfo) + } else if model.IsSyncStatusUpdate(catVendorInfo.SyncStatus) { // 修改 + err = multiStoresHandler.UpdateCategory2(ctx, catVendorInfo) + } + } else { + err = fmt.Errorf("平台:%d不合法", catVendorInfo.VendorID) + } + if err = OnThingSync(ctx, dao.GetDB(), SkuCategoryVendor2ThingMap(catVendorInfo), err); err == nil { + retVal = []int{catVendorInfo.ID} + } + return retVal, err + }, catList) + tasksch.HandleTask(task, parentTask, len(catIDs) > 0).Run() + if isAsync { + hint = task.GetID() + } else { + resultList, err2 := task.GetResult(0) + if err = err2; err == nil { + hint = utils.Int2Str(len(resultList)) + } + } + } return hint, err } + +func SyncReorderCategories(ctx *jxcontext.Context, parentCatID int, isAsync bool) (hint string, err error) { + globals.SugarLogger.Debugf("SyncReorderCategories parentCatID:%d", parentCatID) + db := dao.GetDB() + hint, err = CurVendorSync.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("分类重排序:%d", parentCatID), isAsync, false, + func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + vendorInfo := batchItemList[0].(*tMultiStoreVendorInfo) + multiStoresHandler := CurVendorSync.GetMultiStoreHandler(vendorInfo.VendorID) + if multiStoresHandler != nil { + catList, err2 := dao.GetSkuCategoryWithVendor(db, []int{vendorInfo.VendorID}, []string{vendorInfo.OrgCode}, parentCatID, nil, false) + if err = err2; err == nil { + var vendorCatIDList []string + for _, v := range catList { + if v.VendorCatID != "" { + vendorCatIDList = append(vendorCatIDList, v.VendorCatID) + } + } + if len(vendorCatIDList) > 0 { + if err = multiStoresHandler.ReorderCategories2(ctx, vendorInfo.OrgCode, catList[0].VendorParentCatID, vendorCatIDList); err == nil { + retVal = []int{len(vendorCatIDList)} + } + } + } + } else { + err = fmt.Errorf("非法平台:%d", vendorInfo.VendorID) + } + return retVal, err + }) + return hint, err +} + +func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) { + for _, v := range getMultiStoreVendorInfoList() { + thingMap := &model.ThingMap{ + ThingID: thingID, + ThingType: thingType, + VendorID: v.VendorID, + VendorOrgCode: v.OrgCode, + SyncStatus: model.SyncFlagNewMask, + } + dao.WrapAddIDCULDEntity(thingMap, ctx.GetUserName()) + err = dao.CreateEntity(db, thingMap) + } + return nil +} + +func OnUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) { + for _, v := range getMultiStoreVendorInfoList() { + thingMap := &model.ThingMap{ + ThingID: thingID, + ThingType: thingType, + VendorID: v.VendorID, + VendorOrgCode: v.OrgCode, + } + thingMap.DeletedAt = utils.DefaultTimeValue + if err = dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt); err == nil { + thingMap.SyncStatus |= model.SyncFlagModifiedMask + thingMap.LastOperator = ctx.GetUserName() + _, err = dao.UpdateEntity(db, thingMap) + } + } + return nil +} + +func OnDeleteThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) { + for _, v := range getMultiStoreVendorInfoList() { + thingMap := &model.ThingMap{ + ThingID: thingID, + ThingType: thingType, + VendorID: v.VendorID, + VendorOrgCode: v.OrgCode, + } + thingMap.DeletedAt = utils.DefaultTimeValue + if err = dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt); err == nil { + if model.IsSyncStatusNew(thingMap.SyncStatus) { + thingMap.SyncStatus = 0 + thingMap.DeletedAt = time.Now() + } else { + thingMap.SyncStatus |= model.SyncFlagDeletedMask + } + thingMap.LastOperator = ctx.GetUserName() + _, err = dao.UpdateEntity(db, thingMap) + } + } + return nil +} + +func SkuCategoryVendor2ThingMap(cat *dao.SkuCategoryWithVendor) (thingMap *model.ThingMap) { + thingMap = &model.ThingMap{ + ThingID: int64(cat.ID), + ThingType: model.ThingTypeCategory, + VendorID: cat.VendorID, + VendorOrgCode: cat.VendorOrgCode, + + SyncStatus: cat.SyncStatus, + VendorThingID: cat.VendorCatID, + } + thingMap.ID = cat.MapID // 一定要赋值 + return thingMap +} + +func OnThingSync(ctx *jxcontext.Context, db *dao.DaoDB, thingMap *model.ThingMap, syncErr error) (err error) { + if syncErr != nil { + err = syncErr + thingMap.Remark = utils.LimitUTF8StringLen(err.Error(), 255) + dao.UpdateEntity(db, thingMap, "Remark") + } else { + updateFields := []string{ + model.FieldSyncStatus, + model.FieldUpdatedAt, + model.FieldLastOperator, + "Remark", + } + if model.IsSyncStatusDelete(thingMap.SyncStatus) { //删除 + thingMap.DeletedAt = time.Now() + thingMap.VendorThingID = "" + updateFields = append(updateFields, "VendorThingID", model.FieldDeletedAt) + } else if model.IsSyncStatusNew(thingMap.SyncStatus) { // 新增 + updateFields = append(updateFields, "VendorThingID") + } + thingMap.SyncStatus = 0 + thingMap.LastOperator = ctx.GetUserName() + thingMap.UpdatedAt = time.Now() + thingMap.Remark = "" + _, err = dao.UpdateEntity(db, thingMap, updateFields...) + } + return err +} diff --git a/business/model/dao/sku.go b/business/model/dao/sku.go index d48c657e2..c95200fe5 100644 --- a/business/model/dao/sku.go +++ b/business/model/dao/sku.go @@ -14,8 +14,11 @@ type SkuCategoryWithVendor struct { VendorID int `orm:"column(vendor_id)" json:"vendorID"` VendorOrgCode string `orm:"size(32)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空 + MapID int `orm:"column(map_id)" json:"mapID"` VendorCatID string `orm:"size(32);column(vendor_cat_id)" json:"vendorCatID"` SyncStatus int8 `orm:"default(2)"` + + VendorParentCatID string `orm:"size(32);column(vendor_parent_cat_id)" json:"vendorParentCatID"` } func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place, err error) { @@ -154,5 +157,55 @@ func SetSkuSyncStatus(db *DaoDB, vendorID int, skuIDs []int, syncStatus int) (nu return ExecuteSQL(db, sql, sqlParams...) } -// func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, catIDs []int) (num int64, err error) { -// } +func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, parentCatID int, catIDs []int, mustDirty bool) (catList []*SkuCategoryWithVendor, err error) { + sql := ` + SELECT t1.*, + t1m.vendor_id, t1m.vendor_org_code, + t1m.id map_id, + t1m.sync_status, + t1m.vendor_thing_id vendor_cat_id, + t1pm.vendor_thing_id vendor_parent_cat_id + /* + t1.jd_sync_status sync_status, + t1.jd_id vendor_cat_id, + t1p.jd_id vendor_parent_cat_id + */ + FROM sku_category t1 + LEFT JOIN thing_map t1m ON t1m.thing_id = t1.id AND t1m.thing_type = ? AND t1m.deleted_at = ? + LEFT JOIN sku_category t1p ON t1p.id = t1.parent_id + LEFT JOIN thing_map t1pm ON t1pm.thing_id = t1p.id AND t1pm.thing_type = ? AND t1m.deleted_at = ? + AND t1pm.vendor_id = t1m.vendor_id AND t1pm.vendor_org_code = t1m.vendor_org_code + WHERE 1 = 1 + ` + sqlParams := []interface{}{ + model.ThingTypeCategory, + utils.DefaultTimeValue, + model.ThingTypeCategory, + utils.DefaultTimeValue, + } + if mustDirty { + sql += " AND t1m.sync_status <> 0" + } else { + sql += " AND t1.deleted_at = ?" + sqlParams = append(sqlParams, utils.DefaultTimeValue) + } + if len(vendorIDs) > 0 { + sql += " AND t1m.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")" + sqlParams = append(sqlParams, vendorIDs) + } + if len(appOrgCodes) > 0 { + sql += " AND t1m.vendor_org_code IN (" + GenQuestionMarks(len(appOrgCodes)) + ")" + sqlParams = append(sqlParams, appOrgCodes) + } + if len(catIDs) > 0 { + sql += " AND t1.id IN (" + GenQuestionMarks(len(catIDs)) + ")" + sqlParams = append(sqlParams, catIDs) + } + if parentCatID >= 0 { + sql += " AND t1.parent_id = ?" + sqlParams = append(sqlParams, parentCatID) + } + sql += " ORDER BY t1.seq" + err = GetRows(db, &catList, sql, sqlParams...) + return catList, err +} diff --git a/business/model/sync_map.go b/business/model/sync_map.go index 05c10cfc5..2e5dc0d3c 100644 --- a/business/model/sync_map.go +++ b/business/model/sync_map.go @@ -16,6 +16,8 @@ type ThingMap struct { VendorThingID string `orm:"size(32);column(vendor_thing_id);index" json:"vendorThingID"` SyncStatus int8 `orm:"default(2)"` + + Remark string `orm:"size(255)" json:"remark"` } func (*ThingMap) TableUnique() [][]string { diff --git a/business/partner/partner.go b/business/partner/partner.go index 8af7d7564..b2fc5b81e 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -161,6 +161,11 @@ type IMultipleStoresHandler interface { 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.SkuCategoryWithVendor) (err error) + UpdateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) + DeleteCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) + ReorderCategories2(ctx *jxcontext.Context, vendorOrgCode, vendorParentCatID string, vendorCatIDList []string) (err error) + // sku CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index f923c12ba..9cf177335 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -303,7 +303,7 @@ func (c *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int { func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { globals.SugarLogger.Debugf("jd AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt) - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = getAPI("").OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName) if isAcceptIt && err == nil { c.postFakeMsg(order.VendorOrderID, jdapi.StatusIDWaitOutStore) diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 6b78f8b5a..158b089fd 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -57,7 +57,7 @@ func (p *PurchaseHandler) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, return err } } - if globals.EnableStoreWrite { + 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 { @@ -109,14 +109,14 @@ func (p *PurchaseHandler) GetAllCategories(ctx *jxcontext.Context, vendorOrgCode } func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error { - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { return getAPI("").UpdateShopCategory(cat.JdID, cat.Name) } return nil } func (p *PurchaseHandler) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error { - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { return getAPI("").DelShopCategory(cat.JdID) } return nil @@ -142,13 +142,48 @@ func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, user for k, v := range cats { jdCatIDs[k] = v.JdID } - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = getAPI("").ChangeShopCategoryOrder(parentJDID, jdCatIDs) } } return err } +func (p *PurchaseHandler) CreateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) { + if globals.EnableJdStoreWrite { + result, err2 := getAPI(cat.VendorOrgCode).AddShopCategory(utils.Str2Int64(cat.VendorParentCatID), cat.Name, int(cat.Level), cat.Seq, ctx.GetUserName()) + if err = err2; err == nil { + if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 { + cat.VendorCatID = utils.Int64ToStr(jdID) + } + } + } else { + cat.VendorCatID = utils.Int64ToStr(jxutils.GenFakeID()) + } + return err +} + +func (p *PurchaseHandler) UpdateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) { + if globals.EnableJdStoreWrite { + err = getAPI(cat.VendorOrgCode).UpdateShopCategory(utils.Str2Int64(cat.VendorCatID), cat.Name) + } + return err +} + +func (p *PurchaseHandler) DeleteCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) { + if globals.EnableJdStoreWrite { + err = getAPI(cat.VendorOrgCode).DelShopCategory(utils.Str2Int64(cat.VendorCatID)) + } + return err +} + +func (p *PurchaseHandler) ReorderCategories2(ctx *jxcontext.Context, vendorOrgCode, vendorParentCatID string, vendorCatIDList []string) (err error) { + if globals.EnableJdStoreWrite { + err = getAPI(vendorOrgCode).ChangeShopCategoryOrder(utils.Str2Int64(vendorParentCatID), utils.StringSlice2Int64(vendorCatIDList)) + } + 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, ` @@ -215,7 +250,7 @@ func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuE 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.EnableStoreWrite { + 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 { @@ -311,7 +346,7 @@ func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName stri params[jdapi.KeyImages] = jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2) params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status) if skuExt.IsSpu == 0 { - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { vendorSkuID, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params) } } else { @@ -335,7 +370,7 @@ func (p *PurchaseHandler) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName stri err = dao.GetRow(db, &skuExt, sql, sku.ID) if err == nil { if skuExt.IsSpu == 0 { - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { _, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params) } } else { @@ -380,7 +415,7 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask ta } } globals.SugarLogger.Debug(utils.Format4Output(skuPairs, false)) - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { _, err = getAPI("").BatchUpdateOutSkuId(skuPairs) } return nil, err @@ -420,7 +455,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt 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.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)) } } @@ -440,14 +475,14 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt } if count.Ct <= 1 && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 1就是最后删的那个 updateFields = append(updateFields, model.FieldJdSyncStatus) - if globals.EnableStoreWrite { + 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.EnableStoreWrite { + if globals.EnableJdStoreWrite { spuName := jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0) skus := []map[string]interface{}{ map[string]interface{}{ @@ -462,7 +497,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt } skus[0] = utils.MergeMaps(skus[0], skuAddParams) updateFields = append(updateFields, model.FieldJdSyncStatus) - if globals.EnableStoreWrite { + 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 @@ -483,7 +518,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt jdapi.KeyFixedStatus: jxStatus2jdStatus(skuExt.Status), }, spuAddParams) updateFields = append(updateFields, model.FieldJdSyncStatus) - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), params) } } @@ -497,7 +532,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt } if err == nil && !jxutils.IsEmptyID(skuNameJdID) { if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU - if globals.EnableStoreWrite { + 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) @@ -510,7 +545,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status) params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight) params[jdapi.KeySkuPrice] = price - if globals.EnableStoreWrite { + 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 diff --git a/business/partner/purchase/jx/sku.go b/business/partner/purchase/jx/sku.go index 00a6ad887..30951dc7e 100644 --- a/business/partner/purchase/jx/sku.go +++ b/business/partner/purchase/jx/sku.go @@ -30,6 +30,22 @@ func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, user return err } +func (p *PurchaseHandler) CreateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) { + return err +} + +func (p *PurchaseHandler) UpdateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) { + return err +} + +func (p *PurchaseHandler) DeleteCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) { + return err +} + +func (p *PurchaseHandler) ReorderCategories2(ctx *jxcontext.Context, vendorOrgCode, vendorParentCatID string, vendorCatIDList []string) (err error) { + return err +} + func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { return err }