- rf.
This commit is contained in:
@@ -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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
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
|
// 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
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,31 +71,46 @@ 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表示所有
|
||||||
params := map[string]interface{}{
|
func (p *PurchaseHandler) UpdateStore(storeID int) (err error) {
|
||||||
"outSystemId": utils.Int2Str(int(store.ID)),
|
db := dao.GetDB()
|
||||||
"stationName": store.Name,
|
var store tJdStoreInfo
|
||||||
"stationAddress": store.Address,
|
sql := `
|
||||||
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
|
SELECT t1.*, city.jd_code jd_city_code, district.jd_code jd_district_code, t2.status jd_store_status, t2.vendor_store_id,
|
||||||
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
|
IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator
|
||||||
"deliveryRangeType": store.DeliveryRangeType,
|
FROM store t1
|
||||||
"coordinateType": 3, // 一直用高德
|
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ?
|
||||||
}
|
LEFT JOIN place city ON t1.city_code = city.code
|
||||||
if store.DeliveryRangeType == model.DeliveryRangeTypePolygon {
|
LEFT JOIN place district ON t1.district_code = district.code
|
||||||
params["coordinatePoints"] = JxRange2JdRange(store.DeliveryRange)
|
WHERE t1.id = ?`
|
||||||
} else {
|
if err = dao.GetRow(db, &store, sql, model.VendorIDJD, storeID); err == nil {
|
||||||
params["deliveryRangeRadius"] = utils.Str2Int64(store.DeliveryRange)
|
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)
|
openTime2 := JxOperationTime2JdOperationTime(store.OpenTime2)
|
||||||
if openTime2 != 0 {
|
if openTime2 != 0 {
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user