130 lines
4.7 KiB
Go
130 lines
4.7 KiB
Go
package mtwm
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
|
"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/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"
|
|
"git.rosy.net.cn/jx-callback/business/partner"
|
|
"git.rosy.net.cn/jx-callback/globals"
|
|
"git.rosy.net.cn/jx-callback/globals/api"
|
|
)
|
|
|
|
const (
|
|
VendorStorePrefix = "美好菜市"
|
|
)
|
|
|
|
type tEbaiStoreInfo struct {
|
|
model.Store
|
|
VendorStoreID string `orm:"column(vendor_store_id)"`
|
|
RealLastOperator string
|
|
EbaiStoreStatus int
|
|
SyncStatus int
|
|
|
|
ProvinceID int `orm:"column(province_id)"`
|
|
CityID int `orm:"column(city_id)"`
|
|
DistrictID int `orm:"column(district_id)"`
|
|
}
|
|
|
|
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (retVal *model.Store, err error) {
|
|
result, err := api.MtwmAPI.PoiGet(vendorStoreID)
|
|
if err == nil {
|
|
// globals.SugarLogger.Debug(utils.Format4Output(result, false))
|
|
retVal = &model.Store{
|
|
Address: utils.Interface2String(result["address"]),
|
|
Tel1: utils.Interface2String(result["phone"]),
|
|
}
|
|
_, retVal.Name = jxutils.SplitStoreName(utils.Interface2String(result["name"]), partner.StoreNameSeparator, VendorStorePrefix)
|
|
|
|
openTimes := openTimeMtwm2JX(result["shipping_time"].(string))
|
|
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.Status = bizStatusMtwm2JX(int(utils.MustInterface2Int64(result["open_level"])), int(utils.MustInterface2Int64(result["is_online"])))
|
|
|
|
tel2 := utils.Interface2String(result["standby_tel"])
|
|
if tel2 != "" && tel2 != retVal.Tel1 {
|
|
retVal.Tel2 = tel2
|
|
}
|
|
|
|
retVal.Lng = int(utils.MustInterface2Float64(result["longitude"]))
|
|
retVal.Lat = int(utils.MustInterface2Float64(result["latitude"]))
|
|
|
|
lng := jxutils.IntCoordinate2Standard(retVal.Lng)
|
|
lat := jxutils.IntCoordinate2Standard(retVal.Lat)
|
|
db := dao.GetDB()
|
|
retVal.DistrictCode = api.AutonaviAPI.GetCoordinateDistrictCode(lng, lat)
|
|
if district, err := dao.GetPlaceByCode(db, retVal.DistrictCode); err == nil {
|
|
retVal.CityCode = district.ParentCode
|
|
}
|
|
poiCode := utils.Interface2String(result["app_poi_code"])
|
|
retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
|
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
|
var deliveryRangeInfo []map[string]interface{}
|
|
deliveryRangeInfo, err = api.MtwmAPI.ShippingList(poiCode)
|
|
if err != nil {
|
|
deliveryRangeInfo, err = api.MtwmAPI.ShippingFetch(poiCode)
|
|
}
|
|
if err == nil {
|
|
if len(deliveryRangeInfo) > 0 {
|
|
retVal.DeliveryRange = rangeMtwm2JX(deliveryRangeInfo[0]["area"].(string))
|
|
if utils.Interface2String(deliveryRangeInfo[0]["logistics_code"]) == mtwmapi.PeiSongTypeSelf {
|
|
retVal.DeliveryType = scheduler.StoreDeliveryTypeByStore
|
|
} else {
|
|
retVal.DeliveryType = scheduler.StoreDeliveryTypeCrowdSourcing
|
|
}
|
|
}
|
|
}
|
|
return retVal, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
|
return p.UpdateStore(db, storeID, userName)
|
|
}
|
|
|
|
func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
|
if db == nil {
|
|
db = dao.GetDB()
|
|
}
|
|
storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDMTWM)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
openTime := [][2]int16{[2]int16{storeDetail.OpenTime1, storeDetail.CloseTime1}}
|
|
if storeDetail.OpenTime2 > 0 {
|
|
openTime = append(openTime, [2]int16{storeDetail.OpenTime2, storeDetail.CloseTime2})
|
|
}
|
|
params := map[string]interface{}{
|
|
// "name": jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM),
|
|
"address": storeDetail.Address,
|
|
"longitude": jxutils.IntCoordinate2Standard(storeDetail.Lng),
|
|
"latitude": jxutils.IntCoordinate2Standard(storeDetail.Lat),
|
|
"phone": storeDetail.Tel1,
|
|
"shipping_fee": jxutils.IntPrice2Standard(int64(storeDetail.DeliveryFee)),
|
|
"shipping_time": openTimeJX2Mtwm(openTime),
|
|
"third_tag_name": "蔬菜",
|
|
}
|
|
params["open_level"], params["is_online"] = bizStatusJX2Mtwm(jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus))
|
|
globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
|
if globals.EnableStoreWrite && globals.EnableMtwmStoreWrite {
|
|
err = api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
|
|
return "", errors.New("美团外卖不支持此操作")
|
|
}
|