This commit is contained in:
gazebo
2018-09-15 09:15:40 +08:00
parent da6c411c74
commit b2d365e36f
8 changed files with 72 additions and 48 deletions

View File

@@ -306,11 +306,3 @@ func UpdateStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, payload map[stri
} }
return num, err return num, err
} }
// 合并得到最终的门店状态
func mergeStoreStatus(status int, vendorStatus int) int {
if status < vendorStatus {
return status
}
return vendorStatus
}

View File

@@ -52,11 +52,9 @@ func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID int, store *model.Store,
} }
storeMapList, err := v.GetStoreMapInfo(db, store.ID) storeMapList, err := v.GetStoreMapInfo(db, store.ID)
if err == nil { if err == nil {
copiedStore := *store
for _, storeMap := range storeMapList { for _, storeMap := range storeMapList {
if (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) { // 对于门店,当前只有修改标记 if (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) { // 对于门店,当前只有修改标记
copiedStore.Status = mergeStoreStatus(store.Status, storeMap.Status) if err = GetPurchaseHandler(storeMap.VendorID).UpdateStore(store.ID); err == nil {
if err = GetPurchaseHandler(storeMap.VendorID).UpdateStore(storeMap.VendorStoreID, &copiedStore, userName); err == nil {
storeMap.SyncStatus = 0 storeMap.SyncStatus = 0
dao.UpdateEntity(db, storeMap, model.FieldSyncStatus) dao.UpdateEntity(db, storeMap, model.FieldSyncStatus)
} }

View File

@@ -0,0 +1,9 @@
package jxutils
// 合并得到最终的门店状态
func MergeStoreStatus(status int, vendorStatus int) int {
if status < vendorStatus {
return status
}
return vendorStatus
}

View File

@@ -63,7 +63,7 @@ type IPurchasePlatformHandler interface {
//////// ////////
// Store // Store
ReadStore(vendorStoreID string) (store *model.Store, err error) ReadStore(vendorStoreID string) (store *model.Store, err error)
UpdateStore(vendorStoreID string, store *model.Store, userName string) error UpdateStore(storeID int) error
// EnableAutoAcceptOrder(vendorStoreID string, isEnabled bool) error // EnableAutoAcceptOrder(vendorStoreID string, isEnabled bool) error
// OpenStore(vendorStoreID string, userName string) error // OpenStore(vendorStoreID string, userName string) error
// CloseStore(vendorStoreID, closeNotice, userName string) error // CloseStore(vendorStoreID, closeNotice, userName string) error

View File

@@ -6,7 +6,7 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error)
return nil, nil return nil, nil
} }
func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, userName string) error { func (p *PurchaseHandler) UpdateStore(storeID int) error {
return nil return nil
} }

View File

@@ -43,14 +43,12 @@ func TestReadCategories(t *testing.T) {
} }
func TestReadSku(t *testing.T) { func TestReadSku(t *testing.T) {
skuName, sellCites, sku, err := new(PurchaseHandler).ReadSku("2018544585") skuName, err := new(PurchaseHandler).ReadSku("2018544585")
if err != nil { if err != nil {
t.Fatal(err.Error()) t.Fatal(err.Error())
} }
if skuName.Name != "每日鲜*脊骨" || sellCites[0].Name != "武汉市" || sku.SpecUnit != "g" { if skuName.Name != "每日鲜*脊骨" || skuName.Places[0] != 420100 || skuName.Skus[0].SpecUnit != "g" {
t.Fatal("ReadSku return data wrong") t.Fatal("ReadSku return data wrong")
t.Log(string(utils.MustMarshal(skuName))) t.Log(string(utils.MustMarshal(skuName)))
t.Log(string(utils.MustMarshal(sellCites)))
t.Log(string(utils.MustMarshal(sku)))
} }
} }

View File

@@ -14,6 +14,15 @@ import (
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
) )
type tJdStoreInfo struct {
model.Store
JdCityCode int
JdDistrictCode int
JdStoreStatus int
VendorStoreID string `orm:"vendor_store_id"`
RealLastOperator string
}
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) { func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID) result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID)
if err == nil { if err == nil {
@@ -62,15 +71,29 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error)
return nil, err return nil, err
} }
func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, userName string) (err error) { // stoerIDs为nil表示所有
func (p *PurchaseHandler) UpdateStore(storeID int) (err error) {
db := dao.GetDB()
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,
IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator
FROM store t1
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ?
LEFT JOIN place city ON t1.city_code = city.code
LEFT JOIN place district ON t1.district_code = district.code
WHERE t1.id = ?`
if err = dao.GetRow(db, &store, sql, model.VendorIDJD, storeID); err == nil {
params := map[string]interface{}{ params := map[string]interface{}{
"outSystemId": utils.Int2Str(int(store.ID)), "outSystemId": utils.Int2Str(int(store.ID)), // todo 直接修改这个字段可能会有问题
"stationName": store.Name, "stationName": store.Name,
"stationAddress": store.Address, "stationAddress": store.Address,
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1), "serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1), "serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
"deliveryRangeType": store.DeliveryRangeType, "deliveryRangeType": store.DeliveryRangeType,
"coordinateType": 3, // 一直用高德 "coordinateType": 3, // 一直用高德
"city": store.JdCityCode,
"county": store.JdDistrictCode,
} }
if store.DeliveryRangeType == model.DeliveryRangeTypePolygon { if store.DeliveryRangeType == model.DeliveryRangeTypePolygon {
params["coordinatePoints"] = JxRange2JdRange(store.DeliveryRange) params["coordinatePoints"] = JxRange2JdRange(store.DeliveryRange)
@@ -83,10 +106,11 @@ func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store,
params["serviceTimeStart2"] = openTime2 params["serviceTimeStart2"] = openTime2
params["serviceTimeEnd2"] = JxOperationTime2JdOperationTime(store.CloseTime2) params["serviceTimeEnd2"] = JxOperationTime2JdOperationTime(store.CloseTime2)
} }
_, params["closeStatus"] = JxStoreStatus2JdStatus(store.Status) _, params["closeStatus"] = JxStoreStatus2JdStatus(jxutils.MergeStoreStatus(store.Status, store.JdStoreStatus))
// globals.SugarLogger.Debug(utils.Format4Output(params, false)) // globals.SugarLogger.Debug(utils.Format4Output(params, false))
if globals.EnableStoreWrite { if globals.EnableStoreWrite {
err = api.JdAPI.UpdateStoreInfo4Open(vendorStoreID, userName, params) err = api.JdAPI.UpdateStoreInfo4Open(store.VendorStoreID, store.RealLastOperator, params)
}
} }
return err return err
} }

View File

@@ -3,23 +3,26 @@ package jd
import ( import (
"strings" "strings"
"testing" "testing"
"git.rosy.net.cn/baseapi/utils"
) )
const ( const (
TestStoreNo = "11736989" TestStoreNo = 100164
TestJdStoreNo = "11736989"
) )
func TestReadStore(t *testing.T) { func TestReadStore(t *testing.T) {
result, err := new(PurchaseHandler).ReadStore(TestStoreNo) result, err := new(PurchaseHandler).ReadStore(TestJdStoreNo)
if err != nil { if err != nil {
t.Fatal(err.Error()) t.Fatal(err.Error())
} }
t.Log(result) t.Log(utils.Format4Output(result, false))
} }
func TestUpdateStore(t *testing.T) { func TestUpdateStore(t *testing.T) {
handler := new(PurchaseHandler) handler := new(PurchaseHandler)
result, err := handler.ReadStore(TestStoreNo) result, err := handler.ReadStore(TestJdStoreNo)
// result := &model.Store{} // result := &model.Store{}
// result.ID = 100164 // result.ID = 100164
@@ -30,20 +33,20 @@ func TestUpdateStore(t *testing.T) {
} }
result.Name += "h" result.Name += "h"
newName := result.Name newName := result.Name
err = handler.UpdateStore(TestStoreNo, result, "ttt") err = handler.UpdateStore(TestStoreNo)
if err != nil { if err != nil {
t.Fatal(err.Error()) t.Fatal(err.Error())
} }
// same // same
result, err = handler.ReadStore(TestStoreNo) result, err = handler.ReadStore(TestJdStoreNo)
if result.Name != newName { if result.Name != newName {
t.Fatalf("result is not same, desired newName:%s, newName:%s", newName, result.Name) t.Fatalf("result is not same, desired newName:%s, newName:%s", newName, result.Name)
} }
// restore // restore
result.Name = strings.Trim(result.Name, "h") result.Name = strings.Trim(result.Name, "h")
err = handler.UpdateStore(TestStoreNo, result, "ttt") err = handler.UpdateStore(TestStoreNo)
if err != nil { if err != nil {
t.Fatal(err.Error()) t.Fatal(err.Error())
} }