diff --git a/service/meituan/generate_link.go b/service/meituan/generate_link.go index 3745ac2d..b8262b56 100644 --- a/service/meituan/generate_link.go +++ b/service/meituan/generate_link.go @@ -5,16 +5,25 @@ import ( "net/http" ) -// GenerateLinkResult 返回参数 -type GenerateLinkResult struct { +type GenerateLinkResponse struct { Status int `json:"status"` // 状态值,0为成功,非0为异常 Des string `json:"des,omitempty"` // 异常描述信息 Data string `json:"data,omitempty"` // 最终的推广链接 } -// GenerateLink 自助取链接口 https://union.meituan.com/v2/apiDetail?id=25 -func (app *App) GenerateLink(actId int64, sid string, linkType, shortLink int) (result GenerateLinkResult, err error) { +type GenerateLinkResult struct { + Result GenerateLinkResponse // 结果 + Body []byte // 内容 + Err error // 错误 +} + +func NewGenerateLinkResult(result GenerateLinkResponse, body []byte, err error) *GenerateLinkResult { + return &GenerateLinkResult{Result: result, Body: body, Err: err} +} +// GenerateLink 自助取链接口 +// https://union.meituan.com/v2/apiDetail?id=25 +func (app *App) GenerateLink(actId int64, sid string, linkType, shortLink int) *GenerateLinkResult { // 参数 param := NewParams() param.Set("appkey", app.AppKey) @@ -22,20 +31,13 @@ func (app *App) GenerateLink(actId int64, sid string, linkType, shortLink int) ( param.Set("sid", sid) param.Set("linkType", linkType) param.Set("shortLink", shortLink) - // 转换 params := app.NewParamsWith(param) params["sign"] = app.getSign(app.Secret, params) - // 请求 body, err := app.request("https://openapi.meituan.com/api/generateLink", params, http.MethodGet) - if err != nil { - return - } - - // 解析 - if err = json.Unmarshal(body, &result); err != nil { - return - } - return + // 定义 + var response GenerateLinkResponse + err = json.Unmarshal(body, &response) + return NewGenerateLinkResult(response, body, err) } diff --git a/service/meituan/mini_code.go b/service/meituan/mini_code.go index c25dca04..6a5e0ffc 100644 --- a/service/meituan/mini_code.go +++ b/service/meituan/mini_code.go @@ -5,35 +5,37 @@ import ( "net/http" ) -// MiniCodeResult 返回参数 -type MiniCodeResult struct { +type MiniCodeResponse struct { Status int `json:"status"` // 状态值,0为成功,非0为异常 Des string `json:"des,omitempty"` // 异常描述信息 Data string `json:"data,omitempty"` // 小程序二维码图片地址 } -// MiniCode 小程序二维码生成 https://union.meituan.com/v2/apiDetail?id=26 -func (app *App) MiniCode(actId int64, sid string) (result MiniCodeResult, err error) { +type MiniCodeResult struct { + Result MiniCodeResponse // 结果 + Body []byte // 内容 + Err error // 错误 +} + +func NewMiniCodeResult(result MiniCodeResponse, body []byte, err error) *MiniCodeResult { + return &MiniCodeResult{Result: result, Body: body, Err: err} +} +// MiniCode 小程序二维码生成 +// https://union.meituan.com/v2/apiDetail?id=26 +func (app *App) MiniCode(actId int64, sid string) *MiniCodeResult { // 参数 param := NewParams() param.Set("appkey", app.AppKey) param.Set("sid", sid) param.Set("actId", actId) - // 转换 params := app.NewParamsWith(param) params["sign"] = app.getSign(app.Secret, params) - // 请求 body, err := app.request("https://openapi.meituan.com/api/miniCode", params, http.MethodGet) - if err != nil { - return - } - - // 解析 - if err = json.Unmarshal(body, &result); err != nil { - return - } - return + // 定义 + var response MiniCodeResponse + err = json.Unmarshal(body, &response) + return NewMiniCodeResult(response, body, err) } diff --git a/service/meituan/openapi.poi.go b/service/meituan/openapi.poi.go deleted file mode 100644 index a4e93c51..00000000 --- a/service/meituan/openapi.poi.go +++ /dev/null @@ -1,121 +0,0 @@ -package meituan - -import ( - "encoding/json" - "net/http" -) - -type OpenapiPoiCategoryResult struct { - Code int `json:"code"` - Data []struct { - Name string `json:"name"` - Subcate []struct { - Name string `json:"name"` // 品类名称 - ID int `json:"id"` // 品类id - } `json:"subcate"` - ID int `json:"id"` - } `json:"data"` -} - -// OpenapiPoiCategory 基础数据 - 品类接口 https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiDistrictCityid1 -func (app *App) OpenapiPoiCategory(cityID int) (result OpenapiPoiCategoryResult, err error) { - - param := NewParams() - param.Set("cityid", cityID) - - // 参数 - params := app.NewParamsWith(param) - - // 请求 - body, err := app.request("https://openapi.meituan.com/poi/category", params, http.MethodGet) - if err != nil { - return - } - if err = json.Unmarshal(body, &result); err != nil { - return - } - return -} - -type OpenapiPoiAreaResult struct { - Code int `json:"code"` - Data []struct { - Area []struct { - Name string `json:"name"` // 商圈名称 - ID int `json:"id"` // 商圈id - } `json:"area"` - Name string `json:"name"` // 行政区名称 - ID int `json:"id"` // 行政区id - } `json:"data"` -} - -// OpenapiPoiArea 基础数据 - 商圈接口 https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiAreaCityid1 -func (app *App) OpenapiPoiArea(cityID int) (result OpenapiPoiAreaResult, err error) { - - param := NewParams() - param.Set("cityid", cityID) - - // 参数 - params := app.NewParamsWith(param) - - // 请求 - body, err := app.request("https://openapi.meituan.com/poi/area", params, http.MethodGet) - if err != nil { - return - } - if err = json.Unmarshal(body, &result); err != nil { - return - } - return -} - -type OpenapiPoiDistrictResult struct { - Code int `json:"code"` // 状态码 0表示请求正常 - Data []struct { - Name string `json:"name"` // 行政区名称 - ID int `json:"id"` // 行政区id - } `json:"data"` // 返回行政区列表 -} - -// OpenapiPoiDistrict 基础数据 - 城市的行政区接口 https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiDistrictCityid1 -func (app *App) OpenapiPoiDistrict(cityID int) (result OpenapiPoiDistrictResult, err error) { - - param := NewParams() - param.Set("cityid", cityID) - - // 参数 - params := app.NewParamsWith(param) - - // 请求 - body, err := app.request("https://openapi.meituan.com/poi/district", params, http.MethodGet) - if err != nil { - return - } - if err = json.Unmarshal(body, &result); err != nil { - return - } - return -} - -type OpenapiPoiCityResult struct { - Code int `json:"code"` // 状态码 0表示请求正常 - Data []struct { - Pinyin string `json:"pinyin"` // 城市拼音 - Name string `json:"name"` // 城市名称 - ID int `json:"id"` // 城市id - } `json:"data"` // 返回城市列表 -} - -// OpenapiPoiCity 基础数据 - 开放城市接口 https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiCity -func (app *App) OpenapiPoiCity() (result OpenapiPoiCityResult, err error) { - - // 请求 - body, err := app.request("https://openapi.meituan.com/poi/city", map[string]interface{}{}, http.MethodGet) - if err != nil { - return - } - if err = json.Unmarshal(body, &result); err != nil { - return - } - return -} diff --git a/service/meituan/order_list.go b/service/meituan/order_list.go index 1cb7cabd..1455a9f4 100644 --- a/service/meituan/order_list.go +++ b/service/meituan/order_list.go @@ -16,8 +16,7 @@ type OrderList struct { QueryTimeType string `json:"queryTimeType,omitempty"` // 查询时间类型,枚举值 1 按订单支付时间查询 2 按订单发生修改时间查询 } -// OrderListResult 返回参数 -type OrderListResult struct { +type OrderListResponse struct { DataList []struct { Orderid string `json:"orderid"` // 订单id Paytime string `json:"paytime"` // 订单支付时间,10位时间戳 @@ -39,35 +38,28 @@ type OrderListResult struct { Total int `json:"total"` // 查询条件命中的总数据条数,用于计算分页参数 } -// OrderList 订单列表查询(新) https://union.meituan.com/v2/apiDetail?id=1 -func (app *App) OrderList(param OrderList) (result OrderListResult, err error) { - // 处理默认数据 - if param.Page == "" { - param.Page = "1" - } - if param.Limit == "" { - param.Limit = "100" - } - // 接口参数 - params := map[string]interface{}{} - b, _ := json.Marshal(¶m) - var m map[string]interface{} - _ = json.Unmarshal(b, &m) - for k, v := range m { - params[k] = v - } +type OrderListResult struct { + Result OrderListResponse // 结果 + Body []byte // 内容 + Err error // 错误 +} + +func NewOrderListResult(result OrderListResponse, body []byte, err error) *OrderListResult { + return &OrderListResult{Result: result, Body: body, Err: err} +} + +// OrderList 订单列表查询(新) +// https://union.meituan.com/v2/apiDetail?id=1 +func (app *App) OrderList(notMustParams ...Params) *OrderListResult { + // 参数 + params := app.NewParamsWith(notMustParams...) // 请求时刻10位时间戳(秒级),有效期60s params["ts"] = gotime.Current().Timestamp() params["key"] = app.AppKey params["sign"] = app.getSign(app.Secret, params) body, err := app.request("https://runion.meituan.com/api/orderList", params, http.MethodGet) - - if err != nil { - return - } - - if err = json.Unmarshal(body, &result); err != nil { - return - } - return + // 定义 + var response OrderListResponse + err = json.Unmarshal(body, &response) + return NewOrderListResult(response, body, err) } diff --git a/service/meituan/poi.area.go b/service/meituan/poi.area.go new file mode 100644 index 00000000..89817822 --- /dev/null +++ b/service/meituan/poi.area.go @@ -0,0 +1,43 @@ +package meituan + +import ( + "encoding/json" + "net/http" +) + +type PoiAreaResponse struct { + Code int `json:"code"` + Data []struct { + Area []struct { + Name string `json:"name"` // 商圈名称 + ID int `json:"id"` // 商圈id + } `json:"area"` + Name string `json:"name"` // 行政区名称 + ID int `json:"id"` // 行政区id + } `json:"data"` +} + +type PoiAreaResult struct { + Result PoiAreaResponse // 结果 + Body []byte // 内容 + Err error // 错误 +} + +func NewPoiAreaResult(result PoiAreaResponse, body []byte, err error) *PoiAreaResult { + return &PoiAreaResult{Result: result, Body: body, Err: err} +} + +// PoiArea 基础数据 - 商圈接口 +// https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiAreaCityid1 +func (app *App) PoiArea(cityID int) *PoiAreaResult { + // 参数 + param := NewParams() + param.Set("cityid", cityID) + params := app.NewParamsWith(param) + // 请求 + body, err := app.request("https://openapi.meituan.com/poi/area", params, http.MethodGet) + // 定义 + var response PoiAreaResponse + err = json.Unmarshal(body, &response) + return NewPoiAreaResult(response, body, err) +} diff --git a/service/meituan/poi.category.go b/service/meituan/poi.category.go new file mode 100644 index 00000000..03dba6bb --- /dev/null +++ b/service/meituan/poi.category.go @@ -0,0 +1,43 @@ +package meituan + +import ( + "encoding/json" + "net/http" +) + +type PoiCategoryResponse struct { + Code int `json:"code"` + Data []struct { + Name string `json:"name"` + Subcate []struct { + Name string `json:"name"` // 品类名称 + ID int `json:"id"` // 品类id + } `json:"subcate"` + ID int `json:"id"` + } `json:"data"` +} + +type PoiCategoryResult struct { + Result PoiCategoryResponse // 结果 + Body []byte // 内容 + Err error // 错误 +} + +func NewPoiCategoryResult(result PoiCategoryResponse, body []byte, err error) *PoiCategoryResult { + return &PoiCategoryResult{Result: result, Body: body, Err: err} +} + +// PoiCategory 基础数据 - 品类接口 +// https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiDistrictCityid1 +func (app *App) PoiCategory(cityID int) *PoiCategoryResult { + // 参数 + param := NewParams() + param.Set("cityid", cityID) + params := app.NewParamsWith(param) + // 请求 + body, err := app.request("https://openapi.meituan.com/poi/category", params, http.MethodGet) + // 定义 + var response PoiCategoryResponse + err = json.Unmarshal(body, &response) + return NewPoiCategoryResult(response, body, err) +} diff --git a/service/meituan/poi.city.go b/service/meituan/poi.city.go new file mode 100644 index 00000000..8f3c909b --- /dev/null +++ b/service/meituan/poi.city.go @@ -0,0 +1,36 @@ +package meituan + +import ( + "encoding/json" + "net/http" +) + +type PoiCityResponse struct { + Code int `json:"code"` // 状态码 0表示请求正常 + Data []struct { + Pinyin string `json:"pinyin"` // 城市拼音 + Name string `json:"name"` // 城市名称 + ID int `json:"id"` // 城市id + } `json:"data"` // 返回城市列表 +} + +type PoiCityResult struct { + Result PoiCityResponse // 结果 + Body []byte // 内容 + Err error // 错误 +} + +func NewPoiCityResult(result PoiCityResponse, body []byte, err error) *PoiCityResult { + return &PoiCityResult{Result: result, Body: body, Err: err} +} + +// PoiCity 基础数据 - 开放城市接口 +// https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiCity +func (app *App) PoiCity() *PoiCityResult { + // 请求 + body, err := app.request("https://openapi.meituan.com/poi/city", map[string]interface{}{}, http.MethodGet) + // 定义 + var response PoiCityResponse + err = json.Unmarshal(body, &response) + return NewPoiCityResult(response, body, err) +} diff --git a/service/meituan/poi.district.go b/service/meituan/poi.district.go new file mode 100644 index 00000000..c481bcd7 --- /dev/null +++ b/service/meituan/poi.district.go @@ -0,0 +1,39 @@ +package meituan + +import ( + "encoding/json" + "net/http" +) + +type PoiDistrictResponse struct { + Code int `json:"code"` // 状态码 0表示请求正常 + Data []struct { + Name string `json:"name"` // 行政区名称 + ID int `json:"id"` // 行政区id + } `json:"data"` // 返回行政区列表 +} + +type PoiDistrictResult struct { + Result PoiDistrictResponse // 结果 + Body []byte // 内容 + Err error // 错误 +} + +func NewPoiDistrictResult(result PoiDistrictResponse, body []byte, err error) *PoiDistrictResult { + return &PoiDistrictResult{Result: result, Body: body, Err: err} +} + +// PoiDistrict 基础数据 - 城市的行政区接口 +// https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiDistrictCityid1 +func (app *App) PoiDistrict(cityID int) *PoiDistrictResult { + // 参数 + param := NewParams() + param.Set("cityid", cityID) + params := app.NewParamsWith(param) + // 请求 + body, err := app.request("https://openapi.meituan.com/poi/district", params, http.MethodGet) + // 定义 + var response PoiDistrictResponse + err = json.Unmarshal(body, &response) + return NewPoiDistrictResult(response, body, err) +}