- update jd store phone and mobile.
This commit is contained in:
@@ -136,7 +136,7 @@ type SkuCategory struct {
|
|||||||
ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
|
ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
|
||||||
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
||||||
|
|
||||||
JdID int64 `orm:"column(jd_id)" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
|
JdID int64 `orm:"column(jd_id);null" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
|
||||||
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,30 +1,160 @@
|
|||||||
package ebai
|
package ebai
|
||||||
|
|
||||||
import (
|
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/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type tStoreSkuFullInfo struct {
|
||||||
|
model.StoreSkuBind
|
||||||
|
|
||||||
|
SpecQuality float32 `json:"specQuality"`
|
||||||
|
SpecUnit string `orm:"size(8)" json:"specUnit"` // 质量或容量
|
||||||
|
Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
||||||
|
SkuStatus int
|
||||||
|
|
||||||
|
Prefix string `orm:"size(255)" json:"prefix"`
|
||||||
|
Name string `orm:"size(255);index" json:"name"`
|
||||||
|
Comment string `orm:"size(255)" json:"comment"`
|
||||||
|
IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定
|
||||||
|
Unit string `orm:"size(8)" json:"unit"`
|
||||||
|
Img string `orm:"size(255)" json:"img"`
|
||||||
|
PlaceStr string
|
||||||
|
|
||||||
|
CatName string `orm:"size(255)"`
|
||||||
|
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
||||||
|
|
||||||
|
CatID int `orm:"column(cat_id)"`
|
||||||
|
CatEbaiID int64 `orm:"column(cat_ebai_id)"`
|
||||||
|
CatEbaiSyncStatus int
|
||||||
|
CatLevel int
|
||||||
|
|
||||||
|
ParentCatName string `orm:"size(255)"`
|
||||||
|
ParentCatID int `orm:"column(parent_cat_id)"`
|
||||||
|
ParentCatEbaiID int64 `orm:"column(parent_cat_ebai_id)"`
|
||||||
|
ParentCatEbaiSyncStatus int
|
||||||
|
ParentCatLevel int
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) SyncStoreSkus(db *dao.DaoDB, storeIDs []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 err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) syncOneStoreSkus(db *dao.DaoDB, storeID int, 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 := `
|
sql := `
|
||||||
// SELECT *
|
SELECT t1.*, t2.spec_quality, t2.spec_unit, t2.weight, t2.status sku_status,
|
||||||
// FROM store_sku_bind t1
|
t3.prefix, t3.name, t3.comment, t3.is_global, t3.unit, t3.img,
|
||||||
// JOIN sku t2 ON t1.sku_id = t2.skuIDs
|
t4.name cat_name, t4.ebai_category_id,
|
||||||
// JOIN sku_name t3 ON t2.name_id = t3.id
|
t4.id cat_id, t4.level cat_level, t5.ebai_id cat_ebai_id, t5.ebai_sync_status cat_ebai_sync_status,
|
||||||
// JOIN sku_category t4 ON t3.category_id = t4.id
|
t4p.name parent_cat_name,
|
||||||
// LEFT JOIN store_sku_category_map t5 ON t5.store_id = t1.store_id AND t5.sku_category_id = t4.id
|
t4p.id parent_cat_id, t4p.level parent_cat_level, t5p.ebai_id parent_cat_ebai_id, t5p.ebai_sync_status parent_cat_ebai_sync_status
|
||||||
// WHERE t1.store_id = ? AND (t1.ebai_sync_status <> 0
|
FROM store_sku_bind t1
|
||||||
// `
|
JOIN sku t2 ON t1.sku_id = t2.id
|
||||||
|
JOIN sku_name t3 ON t2.name_id = t3.id
|
||||||
|
JOIN sku_category t4 ON t3.category_id = t4.id
|
||||||
|
JOIN sku_category t4p ON t4p.id = t4.parent_id
|
||||||
|
LEFT JOIN store_sku_category_map t5 ON t5.store_id = t1.store_id AND t5.sku_category_id = t4.id
|
||||||
|
LEFT JOIN store_sku_category_map t5p ON t5p.store_id = t1.store_id AND t5p.sku_category_id = t4p.id
|
||||||
|
WHERE t1.store_id = ? AND (t1.ebai_sync_status <> 0)
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
storeID,
|
||||||
|
}
|
||||||
|
if skuIDs != nil && len(skuIDs) > 0 {
|
||||||
|
sql += " AND t1.sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
|
}
|
||||||
|
strStoreID := utils.Int2Str(storeID)
|
||||||
|
var storeSkuInfoList []*tStoreSkuFullInfo
|
||||||
|
if err = dao.GetRows(db, &storeSkuInfoList, sql, sqlParams...); err == nil {
|
||||||
|
level1CatList2Add := make(map[string]interface{})
|
||||||
|
level2CatList2Add := make(map[string]interface{})
|
||||||
|
for _, storeSku := range storeSkuInfoList {
|
||||||
|
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 {
|
||||||
|
if storeSku.ParentCatEbaiID == 0 {
|
||||||
|
level1CatList2Add[utils.Int2Str(storeSku.ParentCatID)] = map[string]interface{}{
|
||||||
|
ebaiapi.KeyShopID: strStoreID,
|
||||||
|
"parent_category_id": 0,
|
||||||
|
"name": storeSku.ParentCatName,
|
||||||
|
"shop_custom_id": storeSku.ParentCatID,
|
||||||
|
"rank": storeSku.ParentCatLevel + 1, // 饿百是从1开始
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
level1CatList := utils.MapKV2List(level1CatList2Add)
|
||||||
|
task := tasksch.RunTask("syncOneStoreSkus level1 cat", false, nil, 0, 1, userName, func(batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
cat := batchItemList[0].(map[string]interface{})
|
||||||
|
ebaiCatID, err2 := api.EbaiAPI.ShopCategoryCreate(strStoreID, 0, cat["name"].(string), cat["rank"].(int), cat["shop_custom_id"].(string))
|
||||||
|
if err2 == nil {
|
||||||
|
cat["category_id"] = ebaiCatID
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return nil, err2
|
||||||
|
}, level1CatList)
|
||||||
|
if _, err = task.GetResult(0); err == nil {
|
||||||
|
for _, storeSku := range storeSkuInfoList {
|
||||||
|
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 {
|
||||||
|
if storeSku.CatEbaiID == 0 {
|
||||||
|
level2CatList2Add[utils.Int2Str(storeSku.CatID)] = map[string]interface{}{
|
||||||
|
ebaiapi.KeyShopID: strStoreID,
|
||||||
|
"parent_category_id": level1CatList2Add[utils.Int2Str(storeSku.ParentCatID)].(map[string]interface{})["category_id"],
|
||||||
|
"name": storeSku.CatName,
|
||||||
|
"shop_custom_id": storeSku.CatID,
|
||||||
|
"rank": storeSku.CatLevel + 1, // 饿百是从1开始
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
level2CatList := utils.MapKV2List(level1CatList2Add)
|
||||||
|
task = tasksch.RunTask("syncOneStoreSkus level2 cat", false, nil, 0, 1, userName, func(batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
cat := batchItemList[0].(map[string]interface{})
|
||||||
|
ebaiCatID, err2 := api.EbaiAPI.ShopCategoryCreate(strStoreID, 0, cat["name"].(string), cat["rank"].(int), cat["shop_custom_id"].(string))
|
||||||
|
if err2 == nil {
|
||||||
|
cat["category_id"] = ebaiCatID
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return nil, err2
|
||||||
|
}, level2CatList)
|
||||||
|
if _, err = task.GetResult(0); err == nil {
|
||||||
|
task = tasksch.RunTask("syncOneStoreSkus skus", false, nil, 0, 1, userName, func(batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
storeSku := batchItemList[0].(*tStoreSkuFullInfo)
|
||||||
|
if storeSku.ParentCatEbaiID == 0 {
|
||||||
|
storeSku.ParentCatEbaiID = level1CatList2Add[utils.Int2Str(storeSku.ParentCatID)].(map[string]interface{})["category_id"].(int64)
|
||||||
|
}
|
||||||
|
if storeSku.CatEbaiID == 0 {
|
||||||
|
storeSku.CatEbaiID = level1CatList2Add[utils.Int2Str(storeSku.CatID)].(map[string]interface{})["category_id"].(int64)
|
||||||
|
}
|
||||||
|
updateFields := []string{model.FieldEbaiSyncStatus}
|
||||||
|
if storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 {
|
||||||
|
err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID))
|
||||||
|
} else if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 {
|
||||||
|
storeSku.EbaiID, err = api.EbaiAPI.SkuCreate(strStoreID, storeSku.SkuID, map[string]interface{}{})
|
||||||
|
updateFields = append(updateFields, model.FieldEbaiID)
|
||||||
|
} else if storeSku.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 {
|
||||||
|
_, err = api.EbaiAPI.SkuUpdate(strStoreID, map[string]interface{}{})
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
_, err = dao.UpdateEntity(nil, &storeSku.StoreSkuBind, updateFields...)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}, storeSkuInfoList)
|
||||||
|
_, err = task.GetResult(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) SyncStoreCategories(db *dao.DaoDB, storeIDs []int, catIDs []int) (err error) {
|
func (p *PurchaseHandler) SyncStoreCategories(db *dao.DaoDB, storeIDs []int, catIDs []int) (err error) {
|
||||||
// sql := `
|
// sql := `
|
||||||
// SELECT *
|
// SELECT t1.*, t2.spec_quality, t2.spec_unit, t2.weight,
|
||||||
|
// t3.prefix, t3.name, t3.comment, t3.is_global, t3.unit, t3.img,
|
||||||
|
// t4.ebai_category_id, t4.name cat_name, t5.ebai_id cat_id, t5.ebai_category_id
|
||||||
// FROM store_sku_bind t1
|
// FROM store_sku_bind t1
|
||||||
// JOIN sku t2 ON t1.sku_id = t2.skuIDs
|
// JOIN sku t2 ON t1.sku_id = t2.skuIDs
|
||||||
// JOIN sku_name t3 ON t2.name_id = t3.id
|
// JOIN sku_name t3 ON t2.name_id = t3.id
|
||||||
@@ -46,3 +176,10 @@ func (p *PurchaseHandler) ReadStoreCategories(storeID int) (cats []*model.SkuCat
|
|||||||
func (p *PurchaseHandler) ReadStoreSku(storeID, skuID int) (skuNameExt *model.SkuNameExt, err error) {
|
func (p *PurchaseHandler) ReadStoreSku(storeID, skuID int) (skuNameExt *model.SkuNameExt, err error) {
|
||||||
return skuNameExt, err
|
return skuNameExt, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// func genSkuParamsFromStoreSkuInfo(storeSku *tStoreSkuFullInfo) map[string]interface{} {
|
||||||
|
// return map[string]interface{}{
|
||||||
|
// ""
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
|||||||
@@ -113,6 +113,8 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
|
|||||||
"lat": jxutils.IntCoordinate2Standard(store.Lat),
|
"lat": jxutils.IntCoordinate2Standard(store.Lat),
|
||||||
"city": store.JdCityCode,
|
"city": store.JdCityCode,
|
||||||
"county": store.JdDistrictCode,
|
"county": store.JdDistrictCode,
|
||||||
|
"phone": store.Tel1,
|
||||||
|
"mobile": store.Tel2,
|
||||||
}
|
}
|
||||||
if store.DeliveryRangeType == model.DeliveryRangeTypePolygon {
|
if store.DeliveryRangeType == model.DeliveryRangeTypePolygon {
|
||||||
params["coordinatePoints"] = store.DeliveryRange
|
params["coordinatePoints"] = store.DeliveryRange
|
||||||
|
|||||||
Reference in New Issue
Block a user