From 804c9c146c10eafd6330da5c2fc343e67b662fbb Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 21 Sep 2018 10:57:00 +0800 Subject: [PATCH] - refactor partner. --- business/jxstore/cms/sku.go | 4 +- business/jxstore/cms/store.go | 3 + business/jxstore/cms/sync.go | 47 +++----- business/partner/partner.go | 24 ++-- business/partner/purchase/ebai/ebai.go | 14 --- business/partner/purchase/ebai/store.go | 3 +- business/partner/purchase/ebai/store_sku.go | 19 ++- business/partner/purchase/elm/sku.go | 1 - business/partner/purchase/elm/store.go | 3 +- business/partner/purchase/elm/store_sku.go | 12 +- business/partner/purchase/jd/sku.go | 49 +++----- business/partner/purchase/jd/store.go | 3 +- business/partner/purchase/jd/store_sku.go | 121 ++++++++++---------- business/partner/purchase/jd/store_test.go | 20 ++-- 14 files changed, 150 insertions(+), 173 deletions(-) delete mode 100644 business/partner/purchase/elm/sku.go diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 9c4971886..bbd29db52 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -97,9 +97,7 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er } // todo 这里应该也需要先置标记 if err == nil { - if handler := GetPurchaseHandler(model.VendorIDJD); handler != nil { - err = handler.(partner.IMultipleStoresHandler).ReorderCategories(parentCat, userName) - } + err = CurVendorSync.SyncReorderCategories(db, parentID, false, userName) } } } diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index a17f8628a..a945b3de7 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -264,6 +264,9 @@ func AddStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, storeMap *model.Sto } func DeleteStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, userName string) (num int64, err error) { + if db == nil { + db = dao.GetDB() + } storeMap := &model.StoreMap{} if num, err = dao.DeleteEntityLogically(db, storeMap, map[string]interface{}{ model.FieldSyncStatus: model.SyncFlagDeletedMask, diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index f26d585ae..77bc210c5 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -37,15 +37,6 @@ func Init() { } func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) { - if db == nil { - db = dao.GetDB() - } - // v.LoopSingleStoreVendors(db, "SyncCategory", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { - // storeMap := batchItemList[0].(*model.StoreMap) - // handler := GetPurchaseHandler(storeMap.VendorID).(partner.ISingleStoreHandler) - // return nil, nil - // }) - err = v.LoopMultiStoresVendors(db, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler) var cats []*model.SkuCategory @@ -57,11 +48,11 @@ func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, u tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { cat := batchItemList[0].(*model.SkuCategory) if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 { //删除 - err = multiStoresHandler.DeleteCategory(cat, userName) + err = multiStoresHandler.DeleteCategory(db, cat, userName) } else if (cat.JdSyncStatus&model.SyncFlagNewMask) != 0 || isForce { // 新增 - err = multiStoresHandler.CreateCategory(cat, userName) + err = multiStoresHandler.CreateCategory(db, cat, userName) } else if (cat.JdSyncStatus & model.SyncFlagModifiedMask) != 0 { // 修改 - err = multiStoresHandler.UpdateCategory(cat, userName) + err = multiStoresHandler.UpdateCategory(db, cat, userName) } if err == nil { cat.JdSyncStatus = 0 @@ -75,16 +66,21 @@ func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, u return err } +func (v *VendorSync) SyncReorderCategories(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) { + // todo + if handler := GetPurchaseHandler(model.VendorIDJD); handler != nil { + err = handler.(partner.IMultipleStoresHandler).ReorderCategories(db, categoryID, userName) + } + return nil +} + func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce bool, userName string) (err error) { globals.SugarLogger.Debugf("SyncStore, storeID:%d", storeID) - if db == nil { - db = dao.GetDB() - } err = v.LoopStoreMap(db, storeID, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { storeMap := batchItemList[0].(*model.StoreMap) if (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) { if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil { - if err = handler.UpdateStore(storeID, userName); err == nil { + if err = handler.UpdateStore(db, storeID, userName); err == nil { storeMap.SyncStatus = 0 _, err = dao.UpdateEntity(db, storeMap, model.FieldSyncStatus) } @@ -96,14 +92,6 @@ func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce boo } func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, userName string) (err error) { - if db == nil { - db = dao.GetDB() - } - // v.LoopSingleStoreVendors(db, "SyncSku", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { - // storeMap := batchItemList[0].(*model.StoreMap) - // handler := GetPurchaseHandler(storeMap.VendorID).(partner.ISingleStoreHandler) - // return nil, nil - // }) err = v.LoopMultiStoresVendors(db, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler) var skuList []*model.Sku @@ -120,12 +108,12 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use if (skuID == -1 || skuID == sku.ID) && (isForce || sku.JdSyncStatus != 0) { updateFields := []string{model.FieldJdSyncStatus} if sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除 - err = multiStoresHandler.CreateSku(sku, userName) + err = multiStoresHandler.CreateSku(db, sku, userName) updateFields = append(updateFields, model.FieldJdID) } else if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 新增 - err = multiStoresHandler.DeleteSku(sku, userName) + err = multiStoresHandler.DeleteSku(db, sku, userName) } else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改 - err = multiStoresHandler.UpdateSku(sku, userName) + err = multiStoresHandler.UpdateSku(db, sku, userName) } if err == nil { sku.JdSyncStatus = 0 @@ -143,13 +131,10 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use // func (v *VendorSync) SyncStoreSku(db *dao.DaoDB, storeID int, skuIDs []int, isForce bool, userName string) (err error) { globals.SugarLogger.Debug("SyncStoreSku") - if db == nil { - db = dao.GetDB() - } err = v.LoopStoreMap(db, storeID, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { storeMap := batchItemList[0].(*model.StoreMap) if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil { - err = handler.SyncStoreSku(storeID, skuIDs, isForce, userName) + err = handler.SyncStoreSkus(db, []int{storeID}, skuIDs, isForce, userName) } return nil, err }) diff --git a/business/partner/partner.go b/business/partner/partner.go index 383acc14e..bef3ddbe3 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -5,6 +5,7 @@ import ( "time" "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" ) const ( @@ -67,35 +68,34 @@ type IPurchasePlatformHandler interface { //////// // Store ReadStore(vendorStoreID string) (store *model.Store, err error) - UpdateStore(storeID int, userName string) error + UpdateStore(db *dao.DaoDB, storeID int, userName string) error // EnableAutoAcceptOrder(vendorStoreID string, isEnabled bool) error // OpenStore(vendorStoreID string, userName string) error // CloseStore(vendorStoreID, closeNotice, userName string) error - SyncStoreSku(storeID int, skuIDs []int, isForce bool, userName string) (err error) + SyncStoreSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) } +// db *dao.DaoDB, type IMultipleStoresHandler interface { ReadCategories() (cats []*model.SkuCategory, err error) - // ReadCategory(vendorCatID string) (cat *model.SkuCategory, err error) - CreateCategory(cat *model.SkuCategory, userName string) (err error) - UpdateCategory(cat *model.SkuCategory, userName string) error - DeleteCategory(cat *model.SkuCategory, userName string) error - ReorderCategories(parentCat *model.SkuCategory, 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) // sku - CreateSku(sku *model.Sku, userName string) (err error) + CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) - UpdateSku(sku *model.Sku, userName string) (err error) - DeleteSku(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) } type ISingleStoreHandler interface { - SyncCategories(catIDs []int) (err error) + SyncStoreCategories(db *dao.DaoDB, storeIDs []int, catIDs []int) (err error) ReadStoreCategories(storeID int) (cats []*model.SkuCategory, err error) - SyncSkus(skuIDs []int) (err error) ReadStoreSku(storeID, skuID int) (skuNameExt *model.SkuNameExt, err error) } diff --git a/business/partner/purchase/ebai/ebai.go b/business/partner/purchase/ebai/ebai.go index 6aa20418b..04df5f507 100644 --- a/business/partner/purchase/ebai/ebai.go +++ b/business/partner/purchase/ebai/ebai.go @@ -25,17 +25,3 @@ func EbaiBusStatus2JxStatus(ebaiStatus int) int { } return model.StoreStatusOpened } - -func (p *PurchaseHandler) SyncCategories(catIDs []int) (err error) { - return err -} -func (p *PurchaseHandler) ReadStoreCategories(storeID int) (cats []*model.SkuCategory, err error) { - return cats, err -} - -func (p *PurchaseHandler) SyncSkus(skuIDs []int) (err error) { - return err -} -func (p *PurchaseHandler) ReadStoreSku(storeID, skuID int) (skuNameExt *model.SkuNameExt, err error) { - return skuNameExt, err -} diff --git a/business/partner/purchase/ebai/store.go b/business/partner/purchase/ebai/store.go index 0618aa4d0..21680a281 100644 --- a/business/partner/purchase/ebai/store.go +++ b/business/partner/purchase/ebai/store.go @@ -86,8 +86,7 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) return nil, err } -func (p *PurchaseHandler) UpdateStore(storeID int, userName string) (err error) { - db := dao.GetDB() +func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) { var store tEbaiStoreInfo sql := ` SELECT t1.*, t2.status ebai_store_status, t2.vendor_store_id, diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index a4fa1d6c8..94682875f 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -1,5 +1,22 @@ package ebai -func (p *PurchaseHandler) SyncStoreSku(storeID int, skuIDs []int, isForce bool, userName string) (err error) { +import ( + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" +) + +func (p *PurchaseHandler) SyncStoreSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) { return err } + +func (p *PurchaseHandler) SyncStoreCategories(db *dao.DaoDB, storeIDs []int, catIDs []int) (err error) { + return err +} + +func (p *PurchaseHandler) ReadStoreCategories(storeID int) (cats []*model.SkuCategory, err error) { + return cats, err +} + +func (p *PurchaseHandler) ReadStoreSku(storeID, skuID int) (skuNameExt *model.SkuNameExt, err error) { + return skuNameExt, err +} diff --git a/business/partner/purchase/elm/sku.go b/business/partner/purchase/elm/sku.go deleted file mode 100644 index e466f326e..000000000 --- a/business/partner/purchase/elm/sku.go +++ /dev/null @@ -1 +0,0 @@ -package elm diff --git a/business/partner/purchase/elm/store.go b/business/partner/purchase/elm/store.go index c76e2b3e2..ee52a4283 100644 --- a/business/partner/purchase/elm/store.go +++ b/business/partner/purchase/elm/store.go @@ -2,13 +2,14 @@ package elm import ( "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" ) func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) { return nil, nil } -func (p *PurchaseHandler) UpdateStore(storeID int, userName string) error { +func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) error { return nil } diff --git a/business/partner/purchase/elm/store_sku.go b/business/partner/purchase/elm/store_sku.go index 0e22e5b81..18ab491ab 100644 --- a/business/partner/purchase/elm/store_sku.go +++ b/business/partner/purchase/elm/store_sku.go @@ -1,21 +1,21 @@ package elm -import "git.rosy.net.cn/jx-callback/business/model" +import ( + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" +) -func (p *PurchaseHandler) SyncCategories(catIDs []int) (err error) { +func (p *PurchaseHandler) SyncStoreCategories(db *dao.DaoDB, storeIDs []int, catIDs []int) (err error) { return nil } func (p *PurchaseHandler) ReadStoreCategories(storeID int) (cats []*model.SkuCategory, err error) { return nil, nil } -func (p *PurchaseHandler) SyncSkus(skuIDs []int) (err error) { - return nil -} func (p *PurchaseHandler) ReadStoreSku(storeID, skuID int) (skuNameExt *model.SkuNameExt, err error) { return nil, nil } -func (p *PurchaseHandler) SyncStoreSku(storeID int, skuIDs []int, isForce bool, userName string) (err error) { +func (p *PurchaseHandler) SyncStoreSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) { return nil } diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 7c9ba362d..f5e9846d3 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -25,12 +25,12 @@ type skuInfoExt struct { SkuCatID int64 `orm:"column(sku_cat_id)"` // 商家特殊类别 } -func (p *PurchaseHandler) CreateCategory(cat *model.SkuCategory, userName string) (err error) { +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(nil, pCat); err == nil { + if err = dao.GetEntity(db, pCat); err == nil { jdPid = pCat.JdID } else { return err @@ -47,19 +47,6 @@ func (p *PurchaseHandler) CreateCategory(cat *model.SkuCategory, userName string return err } -func (p *PurchaseHandler) ReadCategory(vendorCatID string) (cat *model.SkuCategory, err error) { - result, err := p.ReadCategories() - if err == nil { - jdID := utils.Str2Int64(vendorCatID) - for _, v := range result { - if v.JdID == jdID { - return v, nil - } - } - } - return nil, err -} - func (p *PurchaseHandler) ReadCategories() (cats []*model.SkuCategory, err error) { result, err := api.JdAPI.QueryCategoriesByOrgCode() if err == nil { @@ -78,29 +65,32 @@ func (p *PurchaseHandler) ReadCategories() (cats []*model.SkuCategory, err error return nil, err } -func (p *PurchaseHandler) UpdateCategory(cat *model.SkuCategory, userName string) error { +func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error { if !globals.EnableStoreWrite { return nil } return api.JdAPI.UpdateShopCategory(cat.JdID, cat.Name) } -func (p *PurchaseHandler) DeleteCategory(cat *model.SkuCategory, userName string) error { +func (p *PurchaseHandler) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error { if !globals.EnableStoreWrite { return nil } return api.JdAPI.DelShopCategory(cat.JdID) } -func (p *PurchaseHandler) ReorderCategories(parentCat *model.SkuCategory, userName string) (err error) { - parentID := 0 +func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error) { var parentJDID int64 - if parentCat != nil { - parentID = parentCat.ID - parentJDID = parentCat.JdID + 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(nil, &cats, "SELECT * FROM sku_category WHERE parent_id = ? ORDER BY seq", parentID); err == nil { + if err = dao.GetRows(db, &cats, "SELECT * FROM sku_category WHERE parent_id = ? ORDER BY seq", parentCatID); err == nil { jdCatIDs := make([]int64, len(cats)) for k, v := range cats { jdCatIDs[k] = v.JdID @@ -112,9 +102,8 @@ func (p *PurchaseHandler) ReorderCategories(parentCat *model.SkuCategory, userNa return err } -func (p *PurchaseHandler) cuSku(sku *model.Sku, handler func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) { +func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) { var otherInfo skuInfoExt - db := dao.GetDB() err = dao.GetRow(nil, &otherInfo, ` SELECT t2.*, t3.jd_id, t3.jd_category_id, t4.jd_id sku_cat_id FROM sku t1 @@ -160,8 +149,8 @@ func (p *PurchaseHandler) cuSku(sku *model.Sku, handler func(skuExt *skuInfoExt, return err } -func (p *PurchaseHandler) CreateSku(sku *model.Sku, userName string) (err error) { - return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { +func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { + return p.cuSku(db, sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { if globals.EnableStoreWrite { vendorSkuID, err = api.JdAPI.AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, skuExt.Price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, 1, true, addParams) } @@ -235,8 +224,8 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuNameExt *model.SkuName return skuNameExt, err } -func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) { - return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { +func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { + return p.cuSku(db, sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { params := utils.MergeMaps(addParams) params["categoryId"] = skuExt.JdCategoryID params["shopCategories"] = shopCategories @@ -252,7 +241,7 @@ func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) }) } -func (p *PurchaseHandler) DeleteSku(sku *model.Sku, userName string) (err error) { +func (p *PurchaseHandler) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { params := map[string]interface{}{ "fixedStatus": 4, } diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index 420553bf1..e761c2629 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -75,8 +75,7 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) } // stoerIDs为nil表示所有 -func (p *PurchaseHandler) UpdateStore(storeID int, userName string) (err error) { - db := dao.GetDB() +func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) { var store tJdStoreInfo sql := ` SELECT t1.*, city.jd_code jd_city_code, district.jd_code jd_district_code, t2.status jd_store_status, t2.vendor_store_id, diff --git a/business/partner/purchase/jd/store_sku.go b/business/partner/purchase/jd/store_sku.go index 0f3f2ba56..29d6239e7 100644 --- a/business/partner/purchase/jd/store_sku.go +++ b/business/partner/purchase/jd/store_sku.go @@ -11,83 +11,84 @@ import ( ) // 京东到家,以有库存表示关注(认领) -func (p *PurchaseHandler) SyncStoreSku(storeID int, skuIDs []int, isForce bool, userName string) (err error) { - db := dao.GetDB() +func (p *PurchaseHandler) SyncStoreSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) { var storeSkus []*model.StoreSkuBind - sqlParams := []interface{}{ - storeID, - } - sql := ` + for _, storeID := range storeIDs { + sqlParams := []interface{}{ + storeID, + } + sql := ` SELECT * FROM store_sku_bind WHERE store_id = ? ` - if skuIDs != nil && len(skuIDs) > 0 { - sql += " AND sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")" - sqlParams = append(sqlParams, skuIDs) - } - globals.SugarLogger.Debug(sql, sqlParams) - if err = dao.GetRows(db, &storeSkus, sql, sqlParams); err == nil { - outStationNo := utils.Int2Str(storeID) - task := tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { - var skuPriceInfoList []*jdapi.SkuPriceInfo - var skuVendibilityList []*jdapi.StockVendibility - var skuStockList []*jdapi.SkuStock + if skuIDs != nil && len(skuIDs) > 0 { + sql += " AND sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")" + sqlParams = append(sqlParams, skuIDs) + } + globals.SugarLogger.Debug(sql, sqlParams) + if err = dao.GetRows(db, &storeSkus, sql, sqlParams); err == nil { + outStationNo := utils.Int2Str(storeID) + task := tasksch.RunTask("", func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { + var skuPriceInfoList []*jdapi.SkuPriceInfo + var skuVendibilityList []*jdapi.StockVendibility + var skuStockList []*jdapi.SkuStock - for _, v := range batchItemList { - storeSku := v.(*model.StoreSkuBind) - if storeSku.JdSyncStatus&model.SyncFlagChangedMask != 0 { - if storeSku.JdSyncStatus&(model.SyncFlagPriceMask|model.SyncFlagNewMask) != 0 || isForce { - skuPriceInfoList = append(skuPriceInfoList, &jdapi.SkuPriceInfo{ - OutSkuId: utils.Int2Str(storeSku.SkuID), - Price: storeSku.Price, - }) - } - if storeSku.JdSyncStatus&(model.SyncFlagSaleMask|model.SyncFlagNewMask) != 0 || isForce { - vendibility := &jdapi.StockVendibility{ - OutSkuId: utils.Int2Str(storeSku.SkuID), - DoSale: true, + for _, v := range batchItemList { + storeSku := v.(*model.StoreSkuBind) + if storeSku.JdSyncStatus&model.SyncFlagChangedMask != 0 { + if storeSku.JdSyncStatus&(model.SyncFlagPriceMask|model.SyncFlagNewMask) != 0 || isForce { + skuPriceInfoList = append(skuPriceInfoList, &jdapi.SkuPriceInfo{ + OutSkuId: utils.Int2Str(storeSku.SkuID), + Price: storeSku.Price, + }) } - if storeSku.Status != model.StoreSkuBindStatusNormal { - vendibility.DoSale = false + if storeSku.JdSyncStatus&(model.SyncFlagSaleMask|model.SyncFlagNewMask) != 0 || isForce { + vendibility := &jdapi.StockVendibility{ + OutSkuId: utils.Int2Str(storeSku.SkuID), + DoSale: true, + } + if storeSku.Status != model.StoreSkuBindStatusNormal { + vendibility.DoSale = false + } + skuVendibilityList = append(skuVendibilityList, vendibility) } - skuVendibilityList = append(skuVendibilityList, vendibility) - } - if storeSku.JdSyncStatus&(model.SyncFlagDeletedMask|model.SyncFlagNewMask) != 0 || isForce { // 关注或取消关注 - stock := &jdapi.SkuStock{ - OutSkuId: utils.Int2Str(storeSku.SkuID), - StockQty: 9999, - } - if storeSku.DeletedAt != utils.DefaultTimeValue { - stock.StockQty = 0 + if storeSku.JdSyncStatus&(model.SyncFlagDeletedMask|model.SyncFlagNewMask) != 0 || isForce { // 关注或取消关注 + stock := &jdapi.SkuStock{ + OutSkuId: utils.Int2Str(storeSku.SkuID), + StockQty: 9999, + } + if storeSku.DeletedAt != utils.DefaultTimeValue { + stock.StockQty = 0 + } } } } - } - if globals.EnableStoreWrite { - // todo 以下可以优化为并行操作 - if len(skuVendibilityList) > 0 { - _, err = api.JdAPI.BatchUpdateVendibility(outStationNo, "", skuVendibilityList, userName) + if globals.EnableStoreWrite { + // todo 以下可以优化为并行操作 + if len(skuVendibilityList) > 0 { + _, err = api.JdAPI.BatchUpdateVendibility(outStationNo, "", skuVendibilityList, userName) + } + if err == nil && len(skuPriceInfoList) > 0 { + _, err = api.JdAPI.UpdateVendorStationPrice(outStationNo, "", skuPriceInfoList) + } + if err == nil && len(skuStockList) > 0 { + _, err = api.JdAPI.BatchUpdateCurrentQtys(outStationNo, "", skuStockList, userName) + } } - if err == nil && len(skuPriceInfoList) > 0 { - _, err = api.JdAPI.UpdateVendorStationPrice(outStationNo, "", skuPriceInfoList) - } - if err == nil && len(skuStockList) > 0 { - _, err = api.JdAPI.BatchUpdateCurrentQtys(outStationNo, "", skuStockList, userName) - } - } - return nil, err - }, nil, 10, 50, userName, storeSkus) - if _, err = task.GetResult(0); err == nil { - sql := ` + return nil, err + }, nil, 10, 50, userName, storeSkus) + if _, err = task.GetResult(0); err == nil { + sql := ` UPDATE store_sku_bind SET jd_sync_status = 0 WHERE store_id = ? ` - if skuIDs != nil && len(skuIDs) > 0 { - sql += " AND sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")" + if skuIDs != nil && len(skuIDs) > 0 { + sql += " AND sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")" + } + _, err = dao.ExecuteSQL(db, sql, sqlParams) } - _, err = dao.ExecuteSQL(db, sql, sqlParams) } } return err diff --git a/business/partner/purchase/jd/store_test.go b/business/partner/purchase/jd/store_test.go index ccf7d3fbb..9d0acacc6 100644 --- a/business/partner/purchase/jd/store_test.go +++ b/business/partner/purchase/jd/store_test.go @@ -52,15 +52,15 @@ func TestUpdateStore(t *testing.T) { } } -func TestCoordRangeConversion(t *testing.T) { - jxRange := "108841759,34332892;108842271,34330820;108846013,34331422;108846110,34333189;108847722,34331853;108856703,34331729;108866149,34327507;108873423,34320980;108877737,34312856;108877727,34299624;108870105,34287988;108855137,34290911;108867884,34286298;108858260,34281316;108854162,34283490;108853803,34280145;108846110,34279291;108830587,34282539;108818806,34291500;108814493,34299624;108813596,34308465;108818797,34320980;108830582,34329941;108841759,34332892" - jdRange := "108.841759,34.332892;108.842271,34.330820;108.846013,34.331422;108.846110,34.333189;108.847722,34.331853;108.856703,34.331729;108.866149,34.327507;108.873423,34.320980;108.877737,34.312856;108.877727,34.299624;108.870105,34.287988;108.855137,34.290911;108.867884,34.286298;108.858260,34.281316;108.854162,34.283490;108.853803,34.280145;108.846110,34.279291;108.830587,34.282539;108.818806,34.291500;108.814493,34.299624;108.813596,34.308465;108.818797,34.320980;108.830582,34.329941;108.841759,34.332892" +// func TestCoordRangeConversion(t *testing.T) { +// jxRange := "108841759,34332892;108842271,34330820;108846013,34331422;108846110,34333189;108847722,34331853;108856703,34331729;108866149,34327507;108873423,34320980;108877737,34312856;108877727,34299624;108870105,34287988;108855137,34290911;108867884,34286298;108858260,34281316;108854162,34283490;108853803,34280145;108846110,34279291;108830587,34282539;108818806,34291500;108814493,34299624;108813596,34308465;108818797,34320980;108830582,34329941;108841759,34332892" +// jdRange := "108.841759,34.332892;108.842271,34.330820;108.846013,34.331422;108.846110,34.333189;108.847722,34.331853;108.856703,34.331729;108.866149,34.327507;108.873423,34.320980;108.877737,34.312856;108.877727,34.299624;108.870105,34.287988;108.855137,34.290911;108.867884,34.286298;108.858260,34.281316;108.854162,34.283490;108.853803,34.280145;108.846110,34.279291;108.830587,34.282539;108.818806,34.291500;108.814493,34.299624;108.813596,34.308465;108.818797,34.320980;108.830582,34.329941;108.841759,34.332892" - if JdRange2JxRange(jdRange) != jxRange { - t.Fatal("result doesn't match") - } +// if JdRange2JxRange(jdRange) != jxRange { +// t.Fatal("result doesn't match") +// } - if JxRange2JdRange(jxRange) != jdRange { - t.Fatal("result doesn't match") - } -} +// if JxRange2JdRange(jxRange) != jdRange { +// t.Fatal("result doesn't match") +// } +// }