332 lines
11 KiB
Go
332 lines
11 KiB
Go
package ebaiapi
|
|
|
|
import (
|
|
"fmt"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
)
|
|
|
|
const (
|
|
SysStatusAll = -1
|
|
SysStatusNew = 1
|
|
SysStatusModifiedWait = 3
|
|
SysStatusFailedVerify = 4
|
|
SysStatusOpening = 6
|
|
SysStatusNewWait = 7
|
|
SysStatusOnlineRejected = 8
|
|
SysStatusPassQC = 12
|
|
)
|
|
|
|
const (
|
|
ShopBusStatusHaveRest = 1 // 表示休息中
|
|
ShopBusStatusCanBooking = 2 // 表示可预订
|
|
ShopBusStatusOpening = 3 // 表示营业中
|
|
ShopBusStatusSuspended = 4 // 表示暂停营业
|
|
ShopBusStatusBookingNextDay = 5 // 表示必须跨天预订
|
|
)
|
|
|
|
const (
|
|
ShopCheckStatusNew = 1 // 门店审核状态 : 新增
|
|
ShopCheckStatusWaitCheck = 2 // 门店审核状态 : 待审核
|
|
ShopCheckStatusGoLiveFail = 3 // 门店审核状态 : 上线驳回
|
|
ShopCheckStatusCheckSuccess = 4 // 门店审核状态 : 审核通过
|
|
ShopCheckStatusUpdateWaitCheck = 5 // 门店审核状态 : 修改待审核
|
|
ShopCheckStatusCheckFail = 6 // 门店审核状态 : 审核驳回
|
|
)
|
|
|
|
const (
|
|
PlatformFlagElm = "1"
|
|
PlatformFlagBaidu = "2"
|
|
)
|
|
|
|
const (
|
|
KeyShopID = "shop_id"
|
|
KeyBaiduShopID = "baidu_shop_id"
|
|
KeySupplierID = "supplier_id"
|
|
|
|
KeyActivityID = "activity_id"
|
|
|
|
KeyCustomSkuID = "custom_sku_id"
|
|
KeySkuID = "sku_id"
|
|
KeyUPC = "upc"
|
|
KeyCategoryID = "category_id"
|
|
|
|
KeyName = "name"
|
|
KeyPhone = "phone"
|
|
)
|
|
|
|
const (
|
|
CoordTypeBaidu = "bdll"
|
|
CoordTypeAutonavi = "amap"
|
|
)
|
|
|
|
// https://open-be.ele.me/dev/api/doc/v3/#api-Shop-shop_get
|
|
const (
|
|
DeliveryTypeElmNone = 0 // 暂无
|
|
DeliveryTypeElmXingHuoTrial = 1 // 星火计划(试用)
|
|
DeliveryTypeElmXingHuo = 4 // 星火计划
|
|
DeliveryTypeElmFengNiaoZS = 5 // 蜂鸟专送
|
|
DeliveryTypeElmFengNiaoZSKA = 6 // 蜂鸟专送,KA
|
|
DeliveryTypeElmFengNiaoKS = 9 // 蜂鸟快送
|
|
DeliveryTypeElmXingHuoZBTrial = 10 // 星火众包(试用)
|
|
DeliveryTypeElmXingHuoZB = 11 // 星火众包
|
|
DeliveryTypeElmNewRetail = 12 // 新零售
|
|
DeliveryTypeElmEBase = 13 // e基础
|
|
DeliveryTypeElmEPeiSong = 14 // e配送
|
|
DeliveryTypeElmFengNiaoHybrid = 15 // 蜂鸟混合送
|
|
DeliveryTypeElmFengNiaoNiubee = 16 // 蜂鸟质选
|
|
DeliveryTypeElmXingHuoKA = 17 // 星火计划KA
|
|
DeliveryTypeElmXingHuoZBKA = 18 // 星火众包KA
|
|
)
|
|
|
|
// https://open-be.ele.me/dev/api/doc/v3/#api-Order_Up-order_get
|
|
const (
|
|
DeliveryPartyFengNiao = 1 // 蜂鸟
|
|
DeliveryPartyFengNiaoSelf = 2 // 蜂鸟自配送
|
|
DeliveryPartyFengNiaoZB = 3 // 蜂鸟众包
|
|
DeliveryPartyFengElmZB = 4 // 饿了么众包
|
|
DeliveryPartyFengNiaoPS = 5 // 蜂鸟配送
|
|
DeliveryPartyFengElmSelf = 6 // 饿了么自配送,商家自送?
|
|
DeliveryPartyFullCity = 7 // 全城送
|
|
DeliveryPartyKuaiDiPS = 8 // 快递配送
|
|
DeliveryBusinessTypeZT = 1 //自提单
|
|
)
|
|
|
|
type ShopInfo struct {
|
|
ShopID string `json:"shop_id"`
|
|
BaiduShopID int64 `json:"baidu_shop_id"`
|
|
Name string `json:"name"`
|
|
Status int `json:"status"`
|
|
SysStatus int `json:"sys_status"`
|
|
OrderPush int `json:"order_push"`
|
|
OrderStatusPush int `json:"order_status_push"`
|
|
}
|
|
|
|
type BussinessTimeInfo struct {
|
|
End string `json:"end"`
|
|
Start string `json:"start"`
|
|
}
|
|
|
|
type ShopDetail struct {
|
|
Address string `json:"address"`
|
|
BaiduShopID int64 `json:"baidu_shop_id"`
|
|
BookAheadTime int `json:"book_ahead_time"`
|
|
Brand string `json:"brand"`
|
|
BusinessFormID string `json:"business_form_id"`
|
|
BusinessTime []*BussinessTimeInfo `json:"business_time"`
|
|
Category1 string `json:"category1"`
|
|
Category2 string `json:"category2"`
|
|
Category3 string `json:"category3"`
|
|
Categorys []struct {
|
|
Category1 string `json:"category1"`
|
|
Category2 string `json:"category2"`
|
|
} `json:"categorys"`
|
|
City string `json:"city"`
|
|
CoordType string `json:"coord_type"`
|
|
County string `json:"county"`
|
|
DeliveryParty int `json:"delivery_party"`
|
|
DeliveryRegion []interface{} `json:"delivery_region"`
|
|
DeliveryType string `json:"delivery_type"`
|
|
InvoiceSupport string `json:"invoice_support"`
|
|
IvrPhone string `json:"ivr_phone"`
|
|
Latitude float64 `json:"latitude"`
|
|
Longitude float64 `json:"longitude"`
|
|
MinOrderPrice string `json:"min_order_price"`
|
|
Name string `json:"name"`
|
|
OrderPush int `json:"order_push"`
|
|
OrderStatusPush int `json:"order_status_push"`
|
|
PackageBoxPrice int `json:"package_box_price"`
|
|
Phone string `json:"phone"`
|
|
PickTime string `json:"pick_time"`
|
|
Province string `json:"province"`
|
|
ServicePhone string `json:"service_phone"`
|
|
ServicePhones []string `json:"service_phones"`
|
|
ShopID string `json:"shop_id"`
|
|
ShopLogo string `json:"shop_logo"`
|
|
Status string `json:"status"`
|
|
SupplierID int64 `json:"supplier_id"`
|
|
SupplierName string `json:"supplier_name"`
|
|
}
|
|
|
|
func (a *API) genShopIDParams(shopID string, baiduShopID, supplierID int64) map[string]interface{} {
|
|
// if shopID == "" && baiduShopID == 0 || shopID != "" && baiduShopID != 0 {
|
|
// panic("shopID and baiduShopID can not all be empty or all not be empty")
|
|
// }
|
|
params := map[string]interface{}{}
|
|
if shopID != "" {
|
|
params[KeyShopID] = shopID
|
|
} else if baiduShopID != 0 {
|
|
params[KeyBaiduShopID] = baiduShopID
|
|
} else if supplierID != 0 {
|
|
params[KeySupplierID] = supplierID
|
|
}
|
|
return params
|
|
}
|
|
|
|
func (a *API) ShopList( /*orderPush, orderStatusPush, status, */ sysStatus int) (shopList []*ShopInfo, err error) {
|
|
body := map[string]interface{}{}
|
|
// if orderPush >= 0 {
|
|
// body["order_push"] = orderPush
|
|
// }
|
|
// if orderStatusPush >= 0 {
|
|
// body["order_status_push"] = orderStatusPush
|
|
// }
|
|
// if status >= 0 {
|
|
// body["status"] = status
|
|
// }
|
|
if sysStatus >= 0 {
|
|
body["sys_status"] = sysStatus
|
|
}
|
|
result, err := a.AccessAPI("shop.list", body)
|
|
if err == nil {
|
|
list := result.Data.([]interface{})
|
|
shopList = make([]*ShopInfo, len(list))
|
|
for k, v := range list {
|
|
mapData := v.(map[string]interface{})
|
|
shopList[k] = &ShopInfo{
|
|
ShopID: utils.Interface2String(mapData[KeyShopID]),
|
|
BaiduShopID: utils.Str2Int64(utils.Interface2String(mapData[KeyBaiduShopID])),
|
|
}
|
|
}
|
|
return shopList, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
|
|
func (a *API) ShopCreate(params map[string]interface{}) (baiduShopID int64, err error) {
|
|
result, err := a.AccessAPI("shop.create", params)
|
|
if err == nil {
|
|
if result.Data != nil {
|
|
return utils.MustInterface2Int64(result.Data.(map[string]interface{})[KeyBaiduShopID]), nil
|
|
} else {
|
|
return 0, fmt.Errorf(result.Error)
|
|
}
|
|
}
|
|
return 0, err
|
|
}
|
|
|
|
func (a *API) ShopGet(shopID string, baiduShopID int64) (shop map[string]interface{}, err error) {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
result, err := a.AccessAPI("shop.get", params)
|
|
if err == nil {
|
|
return result.Data.(map[string]interface{}), nil
|
|
}
|
|
return nil, err
|
|
}
|
|
|
|
func (a *API) ShopGet2(shopID string, baiduShopID int64) (shopDetail *ShopDetail, err error) {
|
|
result, err := a.ShopGet(shopID, baiduShopID)
|
|
if err == nil {
|
|
err = utils.Map2StructByJson(result, &shopDetail, true)
|
|
}
|
|
return shopDetail, err
|
|
}
|
|
|
|
func (a *API) ShopUpdate(params map[string]interface{}) (err error) {
|
|
_, err = a.AccessAPI("shop.update", params)
|
|
return err
|
|
}
|
|
|
|
func (a *API) ShopBusStatusGet(shopID string, baiduShopID int64, platformFlag string) (busStatus int, err error) {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
params["platformFlag"] = platformFlag
|
|
result, err := a.AccessAPI("shop.busstatus.get", params)
|
|
if err == nil {
|
|
return int(utils.MustInterface2Int64(result.Data.(map[string]interface{})["shop_busstatus"])), nil
|
|
}
|
|
return 0, err
|
|
}
|
|
|
|
// ShopStatusGet 获取门店审核状态
|
|
func (a *API) ShopStatusGet(shopID string, baiduShopID int64) (status int, err error) {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
result, err := a.AccessAPI("shop.status.get", params)
|
|
if err == nil {
|
|
return int(utils.Str2Int64(utils.Interface2String(result.Data.(map[string]interface{})["sys_status"]))), nil
|
|
}
|
|
return 0, err
|
|
}
|
|
|
|
// 相同值再次重复映射会出错
|
|
func (a *API) ShopIDBatchUpdate(baiduShopIDs []string, shopIDs []string) (err error) {
|
|
//_, err = a.AccessAPI("shop.id.batchupdate", params)
|
|
_, err = a.AccessAPI("shop.id.batchupdate", utils.Params2Map("baidu_shop_ids", baiduShopIDs, "shop_ids", shopIDs))
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
|
|
func (a *API) ShopOpen(shopID string, baiduShopID int64) (err error) {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
_, err = a.AccessAPI("shop.open", params)
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
|
|
func (a *API) ShopOffline(shopID string, baiduShopID int64) (err error) {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
_, err = a.AccessAPI("shop.offline", params)
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
|
|
func (a *API) ShopClose(shopID string, baiduShopID int64) (err error) {
|
|
//status, err := a.ShopBusStatusGet(shopID, baiduShopID, PlatformFlagElm)
|
|
//if status == ShopBusStatusOpening {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
_, err = a.AccessAPI("shop.close", params)
|
|
return err
|
|
//}
|
|
//return err
|
|
}
|
|
|
|
func (a *API) SupplierList() (supplierInfo map[string]interface{}, err error) {
|
|
result, err := a.AccessAPI("supplier.list", nil)
|
|
if err == nil {
|
|
return result.Data.(map[string]interface{}), nil
|
|
}
|
|
return nil, err
|
|
}
|
|
|
|
func (a *API) ShopAptitudeGet(shopID string, baiduShopID int64) (shopInfoList []map[string]interface{}, err error) {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
result, err := a.AccessAPI("shop.aptitude.get", params)
|
|
if err == nil {
|
|
return utils.Slice2MapSlice(result.Data.([]interface{})), nil
|
|
}
|
|
return nil, err
|
|
}
|
|
|
|
func (a *API) ShopAnnouncementSet(shopID string, baiduShopID int64, content string) (err error) {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
params["content"] = content
|
|
_, err = a.AccessAPI("shop.announcement.set", params)
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
|
|
func (a *API) ShopAptitudeUpload(shopID string, baiduShopID int64, params map[string]interface{}) (err error) {
|
|
params2 := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
_, err = a.AccessAPI("shop.aptitude.upload", utils.MergeMaps(params, params2))
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
|
|
//查询自配送物流信息
|
|
func (a *API) ShopDeliveryinfoGet(shopID string, baiduShopID int64) (shopInfoList []map[string]interface{}, err error) {
|
|
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
|
result, err := a.AccessAPI("shop.deliveryinfo.get", params)
|
|
if err == nil {
|
|
return utils.Slice2MapSlice(result.Data.([]interface{})), nil
|
|
}
|
|
return shopInfoList, err
|
|
}
|