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
}
// 合并得到最终的门店状态
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)
if err == nil {
copiedStore := *store
for _, storeMap := range storeMapList {
if (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) { // 对于门店,当前只有修改标记
copiedStore.Status = mergeStoreStatus(store.Status, storeMap.Status)
if err = GetPurchaseHandler(storeMap.VendorID).UpdateStore(storeMap.VendorStoreID, &copiedStore, userName); err == nil {
if err = GetPurchaseHandler(storeMap.VendorID).UpdateStore(store.ID); err == nil {
storeMap.SyncStatus = 0
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
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
// OpenStore(vendorStoreID string, 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
}
func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, userName string) error {
func (p *PurchaseHandler) UpdateStore(storeID int) error {
return nil
}

View File

@@ -43,14 +43,12 @@ func TestReadCategories(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 {
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.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"
)
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) {
result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID)
if err == nil {
@@ -62,31 +71,46 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error)
return nil, err
}
func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, userName string) (err error) {
params := map[string]interface{}{
"outSystemId": utils.Int2Str(int(store.ID)),
"stationName": store.Name,
"stationAddress": store.Address,
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
"deliveryRangeType": store.DeliveryRangeType,
"coordinateType": 3, // 一直用高德
}
if store.DeliveryRangeType == model.DeliveryRangeTypePolygon {
params["coordinatePoints"] = JxRange2JdRange(store.DeliveryRange)
} else {
params["deliveryRangeRadius"] = utils.Str2Int64(store.DeliveryRange)
}
// 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{}{
"outSystemId": utils.Int2Str(int(store.ID)), // todo 直接修改这个字段可能会有问题
"stationName": store.Name,
"stationAddress": store.Address,
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
"deliveryRangeType": store.DeliveryRangeType,
"coordinateType": 3, // 一直用高德
"city": store.JdCityCode,
"county": store.JdDistrictCode,
}
if store.DeliveryRangeType == model.DeliveryRangeTypePolygon {
params["coordinatePoints"] = JxRange2JdRange(store.DeliveryRange)
} else {
params["deliveryRangeRadius"] = utils.Str2Int64(store.DeliveryRange)
}
openTime2 := JxOperationTime2JdOperationTime(store.OpenTime2)
if openTime2 != 0 {
params["serviceTimeStart2"] = openTime2
params["serviceTimeEnd2"] = JxOperationTime2JdOperationTime(store.CloseTime2)
}
_, params["closeStatus"] = JxStoreStatus2JdStatus(store.Status)
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
if globals.EnableStoreWrite {
err = api.JdAPI.UpdateStoreInfo4Open(vendorStoreID, userName, params)
openTime2 := JxOperationTime2JdOperationTime(store.OpenTime2)
if openTime2 != 0 {
params["serviceTimeStart2"] = openTime2
params["serviceTimeEnd2"] = JxOperationTime2JdOperationTime(store.CloseTime2)
}
_, params["closeStatus"] = JxStoreStatus2JdStatus(jxutils.MergeStoreStatus(store.Status, store.JdStoreStatus))
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
if globals.EnableStoreWrite {
err = api.JdAPI.UpdateStoreInfo4Open(store.VendorStoreID, store.RealLastOperator, params)
}
}
return err
}

View File

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