- GetVendorStore for ebai.
This commit is contained in:
102
business/partner/purchase/ebai/store.go
Normal file
102
business/partner/purchase/ebai/store.go
Normal file
@@ -0,0 +1,102 @@
|
||||
package ebai
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
|
||||
const (
|
||||
VendorStorePrefix = "好菜鲜生"
|
||||
)
|
||||
|
||||
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
||||
baiduShopID := utils.Str2Int64(vendorStoreID)
|
||||
result, err := api.EbaiAPI.ShopGet("", baiduShopID)
|
||||
if err == nil {
|
||||
retVal := &model.Store{
|
||||
Address: utils.Interface2String(result["address"]),
|
||||
Tel1: utils.Interface2String(result["phone"]),
|
||||
}
|
||||
_, retVal.Name = jxutils.SplitStoreName(utils.Interface2String(result["name"]), partner.StoreNameSeparator, VendorStorePrefix)
|
||||
retVal.DeliveryType = EbaiDeliveryType2Jx(utils.Interface2String(result["delivery_type"]))
|
||||
|
||||
businessTime := result["business_time"].([]interface{})
|
||||
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)
|
||||
}
|
||||
|
||||
if ebaiStatus, err2 := api.EbaiAPI.ShopBusStatusGet("", baiduShopID, ebaiapi.PlatformFlagBaidu); err2 == nil {
|
||||
retVal.Status = EbaiBusStatus2JxStatus(ebaiStatus)
|
||||
}
|
||||
|
||||
tel2 := utils.Interface2String(result["ivr_phone"])
|
||||
if tel2 != "" && tel2 != retVal.Tel1 {
|
||||
retVal.Tel2 = tel2
|
||||
}
|
||||
|
||||
db := dao.GetDB()
|
||||
if city, err2 := dao.GetPlaceByName(db, utils.Interface2String(result["city"]), model.PlaceLevelCity, 0); err2 == nil {
|
||||
retVal.CityCode = city.Code
|
||||
if district, err2 := dao.GetPlaceByName(db, utils.Interface2String(result["county"]), model.PlaceLevelDistrict, city.Code); err2 == nil {
|
||||
retVal.DistrictCode = district.Code
|
||||
}
|
||||
}
|
||||
lng := utils.MustInterface2Float64(result["longitude"])
|
||||
lat := utils.MustInterface2Float64(result["latitude"])
|
||||
if utils.Interface2String(result["coord_type"]) == ebaiapi.CoordTypeBaidu {
|
||||
var err2 error
|
||||
if lng, lat, err2 = api.AutonaviAPI.CoordinateConvert(lng, lat, autonavi.CoordSysBaidu); err2 != nil {
|
||||
return nil, err2
|
||||
}
|
||||
}
|
||||
retVal.Lng = jxutils.StandardCoordinate2Int(lng)
|
||||
retVal.Lat = jxutils.StandardCoordinate2Int(lat)
|
||||
|
||||
retVal.ID = int(utils.Str2Int64WithDefault(utils.Interface2String(result["shop_id"]), 0))
|
||||
|
||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||
region := result["delivery_region"].([]interface{})[0].(map[string]interface{})["region"].([]interface{})[0].([]interface{})
|
||||
coords := make([]string, len(region))
|
||||
for k, v := range region {
|
||||
mapV := v.(map[string]interface{})
|
||||
coords[k] = fmt.Sprintf("%d,%d", jxutils.StandardCoordinate2Int(utils.MustInterface2Float64(mapV["longitude"])), jxutils.StandardCoordinate2Int(utils.MustInterface2Float64(mapV["latitude"])))
|
||||
}
|
||||
retVal.DeliveryRange = strings.Join(coords, ";")
|
||||
return retVal, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStore(storeID int, userName string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func EbaiDeliveryType2Jx(deliveryType string) int8 {
|
||||
spIndex := strings.Index(deliveryType, "|")
|
||||
baiduDeliveryType := utils.Str2Int64(deliveryType[spIndex+1:])
|
||||
switch baiduDeliveryType {
|
||||
case ebaiapi.DeliveryTypeBaiduLogistics:
|
||||
return scheduler.StoreDeliveryTypeByPlatform
|
||||
case ebaiapi.DeliveryTypeBaiduDeliveryBySelf:
|
||||
return scheduler.StoreDeliveryTypeByStore
|
||||
case ebaiapi.DeliveryTypeBaiduCrowdSourcing:
|
||||
return scheduler.StoreDeliveryTypeCrowdSourcing
|
||||
default:
|
||||
return scheduler.StoreDeliveryTypeCrowdSourcing
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user