Files
baseapi/platformapi/ebaiapi/shop.go
苏尹岚 ae08a80cd4 aa
2021-03-09 11:03:48 +08:00

324 lines
10 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 (
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)
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
}
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
}