- 整理partner.ReadStore

This commit is contained in:
gazebo
2019-07-22 15:04:07 +08:00
parent 71f6d0809a
commit a4470e5fb5
13 changed files with 92 additions and 84 deletions

View File

@@ -178,7 +178,7 @@ type IPurchasePlatformHandler interface {
////////
// Store
ReadStore(vendorStoreID string) (store *model.Store, err error)
ReadStore(ctx *jxcontext.Context, vendorStoreID string) (store *dao.StoreDetail, err error)
UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error)
GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error)
// EnableAutoAcceptOrder(vendorStoreID string, isEnabled bool) error

View File

@@ -71,33 +71,22 @@ func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName strin
return "", err
}
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorStoreID string) (*dao.StoreDetail, error) {
baiduShopID := utils.Str2Int64(vendorStoreID)
result, err := api.EbaiAPI.ShopGet("", baiduShopID)
if err == nil {
// globals.SugarLogger.Debug(utils.Format4Output(result, false))
retVal := &model.Store{
Address: utils.Interface2String(result["address"]),
Tel1: utils.Interface2String(result["phone"]),
globals.SugarLogger.Debug(utils.Format4Output(result, false))
retVal := &dao.StoreDetail{
Store: model.Store{
Address: utils.Interface2String(result["address"]),
Tel1: utils.Interface2String(result["phone"]),
},
}
retVal.OriginalName = utils.Interface2String(result["name"])
_, retVal.Name = jxutils.SplitStoreName(retVal.OriginalName, partner.StoreNameSeparator, VendorStorePrefix)
retVal.DeliveryType = EbaiDeliveryType2Jx(utils.Interface2String(result["delivery_type"]))
if result["business_time"] != nil {
businessTime := result["business_time"].([]interface{})
if len(businessTime) > 0 {
btime := businessTime[0].(map[string]interface{})
retVal.OpenTime1 = jxutils.StrTime2JxOperationTime(utils.Interface2String(btime["start"].(string)), 700)
retVal.CloseTime1 = jxutils.StrTime2JxOperationTime(utils.Interface2String(btime["end"].(string)), 2000)
if len(businessTime) > 1 {
btime = businessTime[1].(map[string]interface{})
retVal.OpenTime2 = jxutils.StrTime2JxOperationTime(utils.Interface2String(btime["start"].(string)), 700)
retVal.CloseTime2 = jxutils.StrTime2JxOperationTime(utils.Interface2String(btime["end"].(string)), 2000)
}
}
}
retVal.SetOpTime(ebaiOpTime2Jx(result["business_time"]))
if ebaiStatus, err2 := api.EbaiAPI.ShopBusStatusGet("", baiduShopID, ebaiapi.PlatformFlagElm); err2 == nil {
retVal.Status = EbaiBusStatus2JxStatus(ebaiStatus)
}
@@ -165,7 +154,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
if store.SyncStatus&model.SyncFlagDeletedMask == 0 {
shopID = store.ID
}
store2, err2 := p.ReadStore(store.VendorStoreID)
store2, err2 := p.ReadStore(jxcontext.AdminCtx, store.VendorStoreID)
// globals.SugarLogger.Debugf("ebai UpdateStore2 store2:%s, err2:%v", utils.Format4Output(store2, true), err2)
if err = err2; err == nil {
if store2.ID == store.ID {
@@ -359,8 +348,18 @@ func fillOpTimeParams(params map[string]interface{}, opTimeList []int16) map[str
return params
}
func ebaiOpTime2Jx(businessTime interface{}) (opTimeList []int16) {
businessTimeList, _ := businessTime.([]interface{})
for _, v := range businessTimeList {
vMap := v.(map[string]interface{})
opTimeList = append(opTimeList, jxutils.StrTime2JxOperationTime(utils.Interface2String(vMap["start"])+":00", 700),
jxutils.StrTime2JxOperationTime(utils.Interface2String(vMap["end"])+":00", 2000))
}
return opTimeList
}
func genStoreMapFromStore(store *tEbaiStoreInfo) map[string]interface{} {
params := fillOpTimeParams(nil, []int16{store.OpenTime1, store.CloseTime1, store.OpenTime2, store.CloseTime2})
params := fillOpTimeParams(nil, store.GetOpTimeList())
// if store.Tel2 != "" {
// params["ivr_phone"] = store.Tel2
// }
@@ -431,7 +430,7 @@ func (c *PurchaseHandler) GetShopHealthInfo(vendorShopID string) (shopHealthInfo
}
func (c *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string, status int) (err error) {
store, err := c.ReadStore(vendorStoreID)
store, err := c.ReadStore(ctx, vendorStoreID)
if err != nil {
return err
}

View File

@@ -3,12 +3,14 @@ package ebai
import (
"testing"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model/dao"
)
func TestReadStore(t *testing.T) {
result, err := new(PurchaseHandler).ReadStore(testShopBaiduID)
result, err := CurPurchaseHandler.ReadStore(jxcontext.AdminCtx, testShopBaiduID)
if err != nil {
t.Fatal(err.Error())
}
@@ -17,7 +19,7 @@ func TestReadStore(t *testing.T) {
func TestUpdateStore(t *testing.T) {
db := dao.GetDB()
err := new(PurchaseHandler).UpdateStore(db, testShopID, "autotest")
err := CurPurchaseHandler.UpdateStore(db, testShopID, "autotest")
if err != nil {
t.Fatal(err.Error())
}
@@ -25,7 +27,7 @@ func TestUpdateStore(t *testing.T) {
func TestCreateStore(t *testing.T) {
db := dao.GetDB()
_, err := new(PurchaseHandler).CreateStore(db, 1, "autotest")
_, err := CurPurchaseHandler.CreateStore(db, 1, "autotest")
if err != nil {
t.Fatal(err.Error())
}

View File

@@ -5,11 +5,10 @@ import (
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"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/dao"
)
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorStoreID string) (*dao.StoreDetail, error) {
return nil, errors.New("饿了么还没实现")
}

View File

@@ -32,17 +32,19 @@ type tJdStoreInfo struct {
SyncStatus int
}
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorStoreID string) (*dao.StoreDetail, error) {
result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID)
if err == nil {
retVal := &model.Store{
Address: utils.Interface2String(result["stationAddress"]),
OpenTime1: JdOperationTime2JxOperationTime(result["serviceTimeStart1"]),
CloseTime1: JdOperationTime2JxOperationTime(result["serviceTimeEnd1"]),
OpenTime2: JdOperationTime2JxOperationTime(result["serviceTimeStart2"]),
CloseTime2: JdOperationTime2JxOperationTime(result["serviceTimeEnd2"]),
Status: JdStoreStatus2JxStatus(result["yn"], result["closeStatus"]),
Tel1: utils.Interface2String(result["phone"]),
retVal := &dao.StoreDetail{
Store: model.Store{
Address: utils.Interface2String(result["stationAddress"]),
OpenTime1: JdOperationTime2JxOperationTime(result["serviceTimeStart1"]),
CloseTime1: JdOperationTime2JxOperationTime(result["serviceTimeEnd1"]),
OpenTime2: JdOperationTime2JxOperationTime(result["serviceTimeStart2"]),
CloseTime2: JdOperationTime2JxOperationTime(result["serviceTimeEnd2"]),
Status: JdStoreStatus2JxStatus(result["yn"], result["closeStatus"]),
Tel1: utils.Interface2String(result["phone"]),
},
}
retVal.OriginalName = utils.Interface2String(result["stationName"])
_, retVal.Name = jxutils.SplitStoreName(retVal.OriginalName, partner.StoreNameSeparator, VendorStorePrefix)
@@ -118,7 +120,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
"phone": store.Tel1,
"mobile": store.Tel2,
}
fillOpTimeParams(params, []int16{store.OpenTime1, store.CloseTime1, store.OpenTime2, store.CloseTime2})
fillOpTimeParams(params, store.GetOpTimeList())
if store.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 {
params["stationName"] = jxutils.ComposeStoreName(store.Name, model.VendorIDJD)
}
@@ -192,9 +194,9 @@ func (p *PurchaseHandler) GetAllStoresFromRemote() ([]*model.Store, error) {
if err == nil {
retVal := make([]*model.Store, len(ids))
for index, id := range ids {
store, err2 := p.ReadStore(id)
store, err2 := p.ReadStore(jxcontext.AdminCtx, id)
if err2 == nil {
retVal[index] = store
retVal[index] = &store.Store
} else {
return nil, err2
}

View File

@@ -4,6 +4,8 @@ import (
"strings"
"testing"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model/dao"
)
@@ -14,7 +16,7 @@ const (
)
func TestReadStore(t *testing.T) {
result, err := new(PurchaseHandler).ReadStore(TestJdStoreNo)
result, err := new(PurchaseHandler).ReadStore(jxcontext.AdminCtx, TestJdStoreNo)
if err != nil {
t.Fatal(err.Error())
}
@@ -23,7 +25,7 @@ func TestReadStore(t *testing.T) {
func TestUpdateStore(t *testing.T) {
handler := new(PurchaseHandler)
result, err := handler.ReadStore(TestJdStoreNo)
result, err := handler.ReadStore(jxcontext.AdminCtx, TestJdStoreNo)
// result := &model.Store{}
// result.ID = 100164
@@ -40,7 +42,7 @@ func TestUpdateStore(t *testing.T) {
}
// same
result, err = handler.ReadStore(TestJdStoreNo)
result, err = handler.ReadStore(jxcontext.AdminCtx, TestJdStoreNo)
if result.Name != newName {
t.Fatalf("result is not same, desired newName:%s, newName:%s", newName, result.Name)
}

View File

@@ -113,23 +113,21 @@ func rangeJX2Mtwm(coords string) string {
return ""
}
func openTimeMtwm2JX(vendorOpenTime string) [][2]int16 {
func openTimeMtwm2JX(vendorOpenTime string) (opTimeList []int16) {
timePairs := strings.Split(vendorOpenTime, ",")
jxOpenTimers := make([][2]int16, len(timePairs))
for k, v := range timePairs {
for _, v := range timePairs {
times := strings.Split(v, "-")
jxOpenTimers[k][0] = jxutils.StrTime2JxOperationTime(times[0], 700)
jxOpenTimers[k][1] = jxutils.StrTime2JxOperationTime(times[1], 2000)
opTimeList = append(opTimeList, jxutils.StrTime2JxOperationTime(times[0]+":00", 700), jxutils.StrTime2JxOperationTime(times[1]+":00", 2000))
}
return jxOpenTimers
return opTimeList
}
func openTimeJX2Mtwm(times []int16) string {
timesLen := len(times) / 2 * 2
func openTimeJX2Mtwm(opTimeList []int16) string {
timesLen := len(opTimeList) / 2 * 2
var strPairs []string
for i := 0; i < timesLen; i += 2 {
if times[i] != 0 {
strPairs = append(strPairs, jxutils.JxOperationTime2StrTime(times[i])+"-"+jxutils.JxOperationTime2StrTime(times[i+1]))
if opTimeList[i] != 0 {
strPairs = append(strPairs, jxutils.JxOperationTime2StrTime(opTimeList[i])+"-"+jxutils.JxOperationTime2StrTime(opTimeList[i+1]))
} else {
break
}

View File

@@ -33,26 +33,20 @@ type tEbaiStoreInfo struct {
DistrictID int `orm:"column(district_id)"`
}
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (retVal *model.Store, err error) {
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorStoreID string) (retVal *dao.StoreDetail, err error) {
result, err := api.MtwmAPI.PoiGet(vendorStoreID)
if err == nil {
// globals.SugarLogger.Debug(utils.Format4Output(result, false))
retVal = &model.Store{
Address: result.Address,
Tel1: result.Phone,
retVal = &dao.StoreDetail{
Store: model.Store{
Address: result.Address,
Tel1: result.Phone,
},
}
retVal.OriginalName = result.Name
_, retVal.Name = jxutils.SplitStoreName(retVal.OriginalName, partner.StoreNameSeparator, VendorStorePrefix)
openTimes := openTimeMtwm2JX(result.ShippingTime)
if len(openTimes) > 0 {
retVal.OpenTime1 = openTimes[0][0]
retVal.CloseTime1 = openTimes[0][1]
if len(openTimes) > 1 {
retVal.OpenTime2 = openTimes[1][0]
retVal.CloseTime2 = openTimes[1][1]
}
}
retVal.SetOpTime(openTimeMtwm2JX(result.ShippingTime))
retVal.Status = bizStatusMtwm2JX(result.OpenLevel, result.IsOnline)
tel2 := result.StandbyTel
@@ -128,7 +122,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
// err = api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params)
// }
errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus)))
errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, []int16{storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2}))
errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, storeDetail.GetOpTimeList()))
return errList.GetErrListAsOne()
}

View File

@@ -3,12 +3,14 @@ package mtwm
import (
"testing"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/baseapi/utils"
// _ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
)
func TestReadStore(t *testing.T) {
store, err := new(PurchaseHandler).ReadStore("4351018")
store, err := new(PurchaseHandler).ReadStore(jxcontext.AdminCtx, "4351018")
if err != nil {
t.Fatal(err)
}

View File

@@ -5,11 +5,10 @@ import (
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"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/dao"
)
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorStoreID string) (*dao.StoreDetail, error) {
return nil, errors.New("微盟微商城还没实现")
}