This commit is contained in:
邹宗楠
2024-08-20 17:38:22 +08:00
parent 48e9a22edd
commit c4f39e6c94
6 changed files with 121 additions and 55 deletions

View File

@@ -664,54 +664,6 @@ func (a *API) GetOrderActDetail(queryData []*GetOrderActDetailParam) (orderActLi
return orderActList, err
}
func (a *API) GetOrderDaySeq(poiCode string) (daySeq int, err error) {
params := map[string]interface{}{
KeyAppPoiCode: poiCode,
}
result, err := a.AccessAPI("order/getOrderDaySeq", true, params)
if err == nil {
daySeq = int(utils.MustInterface2Int64(result.(map[string]interface{})["day_seq"]))
}
return daySeq, err
}
func (a *API) GetOrderIdByDaySeqSingle(poiCode string, dateTime time.Time, daySeq int) (vendorOrderID int64, err error) {
params := map[string]interface{}{
KeyAppPoiCode: poiCode,
"date_time": dateTime.Format("20060102"),
"day_seq": daySeq,
}
result, err := a.AccessAPI("order/getOrderIdByDaySeq", true, params)
if err == nil {
vendorOrderID = utils.ForceInterface2Int64(result.(map[string]interface{})["order_id"])
}
return vendorOrderID, err
}
// 订单流水号的开始序号门店内每日的订单流水号都是从1开始。
// 订单流水号的结束序号注意开始流水号与结束流水号的跨度需小于100即差值最大为99
// 这个函数在给定的区间范围全部没有订单时返回错误808
// 但如果有部分订单底层返回的错误是0然后被忽略vendorOrderIDs只包含有效的订单号数量少于seqEnd-seqStart+1
// 此API速度与查询的区间范围直接相关越大越慢即使订单不存在最大可到45秒级别
func (a *API) GetOrderIdByDaySeq(poiCode string, dateTime time.Time, seqStart, seqEnd int) (vendorOrderIDs []int64, err error) {
params := map[string]interface{}{
KeyAppPoiCode: poiCode,
"date_time": dateTime.Format("20060102"),
"day_seq_start": seqStart,
"day_seq_end": seqEnd,
}
result, err := a.AccessAPI("ecommerce/order/getOrderIdByDaySeq", true, params)
// 当前底层已经处理了错误0的情况了不会返回错误0了
if extErr, ok := err.(*utils.ErrorWithCode); err == nil || (ok && extErr.IntCode() == 0) {
var data GetOrderIdByDaySeqResult
if err2 := utils.UnmarshalUseNumber([]byte(utils.Interface2String(result)), &data); err2 == nil {
vendorOrderIDs = data.OrderIDs
err = nil
}
}
return vendorOrderIDs, err
}
// 众包配送单追加小费
// https://developer.waimai.meituan.com/home/docDetail/158
func (a *API) OrderUpdateTip(orderID int64, tipAmount float64) (err error) {
@@ -788,3 +740,115 @@ func (a *API) PushPrintMsg(orderId string) error {
})
return err
}
// EcommerceGetOrderIdByPage 批量获取门店订单号,下面三个被废弃(order/getOrderIdByDaySeq,ecommerce/order/getOrderIdByDaySeq,order/getOrderDaySeq)
func (a *API) EcommerceGetOrderIdByPage(poiCode string, startTime, endTime time.Time) ([]int64, error) {
var (
vernier = ""
orderIdList = make([]int64, 0, 0)
)
params := map[string]interface{}{
KeyAppPoiCode: poiCode,
"start_time": startTime.Unix(),
"end_time": endTime.Unix(),
"status_list": "1,2,4,8,9",
"page_size": 100,
}
for {
if vernier != "" {
params["vernier"] = vernier
}
result, err := a.AccessAPI2("ecommerce/order/getOrderIdByPage", false, params, "", "")
if err != nil {
return nil, err
}
resultDate, err := json.Marshal(result)
if err != nil {
return nil, err
}
orderList := &EcommerceOrder{}
if err := json.Unmarshal(resultDate, orderList); err != nil {
return nil, err
}
for _, v := range orderList.SuccessList {
orderIdList = append(orderIdList, v.OrderId)
}
if len(orderList.SuccessList) == 100 {
vernier = orderList.SuccessMap.Vernier
} else {
return orderIdList, nil
}
}
}
type EcommerceOrder struct {
ResultCode int `json:"result_code"`
SuccessMap struct {
Vernier string `json:"vernier"`
HasMore int `json:"has_more"`
} `json:"success_map"`
SuccessList []struct {
OrderId int64 `json:"order_id"`
Status int `json:"status"`
} `json:"success_list"`
ErrorList []struct {
Msg string `json:"msg"`
Code int `json:"code"`
} `json:"error_list"`
}
//
//// 下面的接口废弃了
//// GetOrderIdByDaySeqSingle 根据流水号获取订单ID
//func (a *API) GetOrderIdByDaySeqSingle(poiCode string, dateTime time.Time, daySeq int) (vendorOrderID int64, err error) {
// //params := map[string]interface{}{
// // KeyAppPoiCode: poiCode,
// // "date_time": dateTime.Format("20060102"),
// // "day_seq": daySeq,
// //}
// //result, err := a.AccessAPI("order/getOrderIdByDaySeq", true, params)
// //if err == nil {
// // vendorOrderID = utils.ForceInterface2Int64(result.(map[string]interface{})["order_id"])
// //}
// return vendorOrderID, err
//}
//
//// 订单流水号的开始序号门店内每日的订单流水号都是从1开始。(根据流水号获取订单ID废弃)
//// 订单流水号的结束序号注意开始流水号与结束流水号的跨度需小于100即差值最大为99
//// 这个函数在给定的区间范围全部没有订单时返回错误808
//// 但如果有部分订单底层返回的错误是0然后被忽略vendorOrderIDs只包含有效的订单号数量少于seqEnd-seqStart+1
//// 此API速度与查询的区间范围直接相关越大越慢即使订单不存在最大可到45秒级别
//func (a *API) GetOrderIdByDaySeq(poiCode string, dateTime time.Time, seqStart, seqEnd int) (vendorOrderIDs []int64, err error) {
// //params := map[string]interface{}{
// // KeyAppPoiCode: poiCode,
// // "date_time": dateTime.Format("20060102"),
// // "day_seq_start": seqStart,
// // "day_seq_end": seqEnd,
// //}
// //result, err := a.AccessAPI("ecommerce/order/getOrderIdByDaySeq", true, params)
// //// 当前底层已经处理了错误0的情况了不会返回错误0了
// //if extErr, ok := err.(*utils.ErrorWithCode); err == nil || (ok && extErr.IntCode() == 0) {
// // var data GetOrderIdByDaySeqResult
// // if err2 := utils.UnmarshalUseNumber([]byte(utils.Interface2String(result)), &data); err2 == nil {
// // vendorOrderIDs = data.OrderIDs
// // err = nil
// // }
// //}
// return vendorOrderIDs, err
//}
//
//// GetOrderDaySeq 获取当日最新订单流水号
//func (a *API) GetOrderDaySeq(poiCode string) (daySeq int, err error) {
// //params := map[string]interface{}{
// // KeyAppPoiCode: poiCode,
// //}
// //result, err := a.AccessAPI("order/getOrderDaySeq", true, params)
// //if err == nil {
// // daySeq = int(utils.MustInterface2Int64(result.(map[string]interface{})["day_seq"]))
// //}
// return daySeq, err
//}