- rf.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
9
business/jxutils/jxutils_cms.go
Normal file
9
business/jxutils/jxutils_cms.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package jxutils
|
||||
|
||||
// 合并得到最终的门店状态
|
||||
func MergeStoreStatus(status int, vendorStatus int) int {
|
||||
if status < vendorStatus {
|
||||
return status
|
||||
}
|
||||
return vendorStatus
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user