diff --git a/business/jxutils/tasksch/task.go b/business/jxutils/tasksch/task.go index 67cb15769..769b209e5 100644 --- a/business/jxutils/tasksch/task.go +++ b/business/jxutils/tasksch/task.go @@ -80,7 +80,7 @@ var ( ) func RunTask(taskName string, isContinueWhenError bool, resultHandler ResultHandlerFunc, parallelCount, batchSize int, userName string, worker WorkFunc, itemList interface{}, params ...interface{}) *Task { - if parallelCount > MaxParallelCount { + if parallelCount > MaxParallelCount || parallelCount == 0 { parallelCount = MaxParallelCount } listLen := jxutils.GetSliceLen(itemList) diff --git a/business/model/model.go b/business/model/model.go index 6a2aee5fd..cfdf73662 100644 --- a/business/model/model.go +++ b/business/model/model.go @@ -23,7 +23,9 @@ const ( FieldNameID = "NameID" FieldPlaceCode = "PlaceCode" - FieldJdID = "JdID" + FieldJdID = "JdID" + FieldElmID = "ElmID" + FieldEbaiID = "EbaiID" ) type ModelIDCUL struct { diff --git a/business/model/place.go b/business/model/place.go index 497d7776a..3089cb6c1 100644 --- a/business/model/place.go +++ b/business/model/place.go @@ -17,6 +17,7 @@ type Place struct { Level int8 `json:"level"` // 城市级别,参见相关常量定义 TelCode string `orm:"size(8);index" json:"telCode"` JdCode int `orm:"index" json:"jdCode"` // 对应的京东代码 - Enabled int8 `json:"enabled"` // 是否启用 - MtpsPrice int `json:"mtpsPrice"` // 分为单位 + EbaiCode int `orm:"index" json:"ebaiCode"` + Enabled int8 `json:"enabled"` // 是否启用 + MtpsPrice int `json:"mtpsPrice"` // 分为单位 } diff --git a/business/partner/partner.go b/business/partner/partner.go index d9989a8b0..c66475cec 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -74,13 +74,14 @@ type IPurchasePlatformHandler interface { // CloseStore(vendorStoreID, closeNotice, userName string) error SyncStoreSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) + + GetFieldIDName() string + GetFieldSyncStatusName() string } // db *dao.DaoDB, type IMultipleStoresHandler interface { - GetFieldIDName() string - GetFieldSyncStatusName() string - + IPurchasePlatformHandler ReadCategories() (cats []*model.SkuCategory, err error) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) @@ -98,6 +99,7 @@ type IMultipleStoresHandler interface { } type ISingleStoreHandler interface { + IPurchasePlatformHandler SyncStoreCategories(db *dao.DaoDB, storeIDs []int, catIDs []int) (err error) ReadStoreCategories(storeID int) (cats []*model.SkuCategory, err error) diff --git a/business/partner/purchase/ebai/common.go b/business/partner/purchase/ebai/common.go new file mode 100644 index 000000000..7f40e48af --- /dev/null +++ b/business/partner/purchase/ebai/common.go @@ -0,0 +1,37 @@ +package ebai + +import ( + "git.rosy.net.cn/baseapi/platformapi/ebaiapi" + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" + "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/api" +) + +func (p *PurchaseHandler) UpdatePlaces() (err error) { + provinces, err := api.EbaiAPI.CommonShopCities(0) + if err == nil { + task := tasksch.RunTask("UpdatePlaces", false, nil, 0, 1, "", func(batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + province := batchItemList[0].(*ebaiapi.CityInfo) + cities, err := api.EbaiAPI.CommonShopCities(province.ID) + retSlice := make([]*ebaiapi.CityInfo, len(cities)) + copy(retSlice, cities) + for _, city := range cities { + if city.IsOpen != 0 { + districts, err2 := api.EbaiAPI.CommonShopCities(city.ID) + if err = err2; err == nil { + retSlice = append(retSlice, districts...) + } else { + break + } + } + } + return retSlice, err + }, provinces) + places, err2 := task.GetResult(0) + if err = err2; err == nil { + globals.SugarLogger.Debug(utils.Format4Output(places, false)) + } + } + return err +} diff --git a/business/partner/purchase/ebai/common_test.go b/business/partner/purchase/ebai/common_test.go new file mode 100644 index 000000000..8057b39b7 --- /dev/null +++ b/business/partner/purchase/ebai/common_test.go @@ -0,0 +1,12 @@ +package ebai + +import ( + "testing" +) + +func TestUpdatePlacese(t *testing.T) { + err := new(PurchaseHandler).UpdatePlaces() + if err != nil { + t.Fatal(err.Error()) + } +} diff --git a/business/partner/purchase/ebai/store.go b/business/partner/purchase/ebai/store.go index 21680a281..d95641ebc 100644 --- a/business/partner/purchase/ebai/store.go +++ b/business/partner/purchase/ebai/store.go @@ -28,6 +28,18 @@ type tEbaiStoreInfo struct { SyncStatus int } +func (p *PurchaseHandler) GetFieldIDName() string { + return model.FieldEbaiID +} + +func (p *PurchaseHandler) GetFieldSyncStatusName() string { + return model.FieldEbaiSyncStatus +} + +func (p *PurchaseHandler) CreateStore(storeID int) (vendorStoreID string, err error) { + return "", err +} + func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) { baiduShopID := utils.Str2Int64(vendorStoreID) result, err := api.EbaiAPI.ShopGet("", baiduShopID) diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index 7a0c41ed5..316d79295 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -9,7 +9,7 @@ func (p *PurchaseHandler) SyncStoreSkus(db *dao.DaoDB, storeIDs []int, skuIDs [] return err } -func (p *PurchaseHandler) syncOneStoreSkus(db *dao.DaoDB, storeID, skuIDs []int, isForce bool, userName string) (err error) { +func (p *PurchaseHandler) syncOneStoreSkus(db *dao.DaoDB, storeID int, skuIDs []int, isForce bool, userName string) (err error) { // sql := ` // SELECT * // FROM store_sku_bind t1 @@ -17,12 +17,25 @@ func (p *PurchaseHandler) syncOneStoreSkus(db *dao.DaoDB, storeID, skuIDs []int, // JOIN sku_name t3 ON t2.name_id = t3.id // JOIN sku_category t4 ON t3.category_id = t4.id // LEFT JOIN store_sku_category_map t5 ON t5.store_id = t1.store_id AND t5.sku_category_id = t4.id - // WHERE t1.ebai_sync_status <> 0 AND t1.store_id = ? + // WHERE t1.store_id = ? AND (t1.ebai_sync_status <> 0 // ` return err } -func (p *PurchaseHandler) SyncStoreCategories(db *dao.DaoDB, storeIDs []int, catIDs []int) (err error) { +func (p *PurchaseHandler) SyncStoreCategories(db *dao.DaoDB, storeID int, catIDs []int) (err error) { + // sql := ` + // SELECT * + // FROM store_sku_bind t1 + // JOIN sku t2 ON t1.sku_id = t2.skuIDs + // JOIN sku_name t3 ON t2.name_id = t3.id + // JOIN sku_category t4 ON t3.category_id = t4.id + // LEFT JOIN store_sku_category_map t5 ON t5.store_id = t1.store_id AND t5.sku_category_id = t4.id + // WHERE t1.store_id = ? AND (t1.ebai_sync_status <> 0 + // ` + return err +} + +func (p *PurchaseHandler) syncOneStoreCategory(db *dao.DaoDB, storeIDs []int, catIDs []int) (err error) { return err } diff --git a/business/partner/purchase/ebai/store_test.go b/business/partner/purchase/ebai/store_test.go index 87e76e283..4beb22924 100644 --- a/business/partner/purchase/ebai/store_test.go +++ b/business/partner/purchase/ebai/store_test.go @@ -4,6 +4,7 @@ import ( "testing" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/model/dao" ) func TestReadStore(t *testing.T) { @@ -15,7 +16,8 @@ func TestReadStore(t *testing.T) { } func TestUpdateStore(t *testing.T) { - err := new(PurchaseHandler).UpdateStore(100077, "autotest") + db := dao.GetDB() + err := new(PurchaseHandler).UpdateStore(db, 100077, "autotest") if err != nil { t.Fatal(err.Error()) } diff --git a/business/partner/purchase/elm/store.go b/business/partner/purchase/elm/store.go index ee52a4283..4cdd18307 100644 --- a/business/partner/purchase/elm/store.go +++ b/business/partner/purchase/elm/store.go @@ -5,6 +5,14 @@ import ( "git.rosy.net.cn/jx-callback/business/model/dao" ) +func (p *PurchaseHandler) GetFieldIDName() string { + return model.FieldElmID +} + +func (p *PurchaseHandler) GetFieldSyncStatusName() string { + return model.FieldElmSyncStatus +} + func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) { return nil, nil }