Files
baseapi/platformapi/ebaiapi/shop.go
2019-05-05 11:12:12 +08:00

220 lines
6.3 KiB
Go

package ebaiapi
import (
"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 (
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"
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
)
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"`
}
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 {
return utils.MustInterface2Int64(result.Data.(map[string]interface{})[KeyBaiduShopID]), nil
}
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) ShopUpdate(params map[string]interface{}) (err error) {
_, err = a.AccessAPI("shop.update", params)
if err == nil {
return nil
}
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
}
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", 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) {
params := a.genShopIDParams(shopID, baiduShopID, 0)
_, err = a.AccessAPI("shop.close", params)
if err == nil {
return nil
}
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
}