202 lines
7.4 KiB
Go
202 lines
7.4 KiB
Go
package freshfood
|
|
|
|
import (
|
|
"net/http"
|
|
"net/url"
|
|
"time"
|
|
|
|
"git.rosy.net.cn/baseapi/platform/jdapi"
|
|
"git.rosy.net.cn/baseapi/platform/mtpsapi"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/jd/models"
|
|
"git.rosy.net.cn/jx-callback/globals"
|
|
)
|
|
|
|
const (
|
|
URL_FRESHFOOD_ORDER_CREATE_JDDJ = "order"
|
|
URL_FRESHFOOD_ORDER_STATUS = "order/status"
|
|
URL_FRESHFOOD_DELIVERY_STATUS = "delivery/status"
|
|
URL_FRESHFOOD_ORDER_MODIFY = "order/modify"
|
|
|
|
URL_FRESHFOOD_ELEME_TOKENUPDATE = "eleme/token/update"
|
|
URL_FRESHFOOD_ORDER_CREATE_ELEME = "order/eleme"
|
|
|
|
URL_FRESHFOOD_MTPS_DELIVERYSTATUS = "mtps/status"
|
|
URL_FRESHFOOD_MTPS_EXCEPTION = "mtps/except"
|
|
)
|
|
|
|
const (
|
|
URL_FRESHFOOD_PARA_JDORDER = "jdOrder"
|
|
|
|
URL_FRESHFOOD_PARA_VENDERID = "venderId"
|
|
URL_FRESHFOOD_PARA_ORDERID = "orderId"
|
|
URL_FRESHFOOD_PARA_ORDERSTATUS = "orderStatus"
|
|
URL_FRESHFOOD_PARA_ORDERSTATUSTIME = "orderStatusTime"
|
|
URL_FRESHFOOD_PARA_CITYNAME = "cityName"
|
|
|
|
URL_FRESHFOOD_PARA_DELIVERYSTATUS = "deliveryStatus"
|
|
URL_FRESHFOOD_PARA_DLIVERYSTATUSTIME = "deliveryStatusTime"
|
|
URL_FRESHFOOD_PARA_DELIVERYCARRIERNO = "deliveryCarrierNo"
|
|
URL_FRESHFOOD_PARA_DELIVERYCARRIERNAME = "deliveryCarrierName"
|
|
URL_FRESHFOOD_PARA_DELIVERYMANNO = "deliveryManNo"
|
|
URL_FRESHFOOD_PARA_DELIVERYMANNAME = "deliveryManName"
|
|
URL_FRESHFOOD_PARA_DELIVERYMANPHONE = "deliveryManPhone"
|
|
|
|
URL_FRESHFOOD_PARA_ELEMEORDER = "elemeOrder"
|
|
)
|
|
|
|
const (
|
|
URL_FRESHFOOD_PARA_DELIVERYID = "deliveryId"
|
|
URL_FRESHFOOD_PARA_MTPEISONID = "mtPeisongId"
|
|
// URL_FRESHFOOD_PARA_ORDERID = "orderId"
|
|
URL_FRESHFOOD_PARA_STATUS = "status"
|
|
URL_FRESHFOOD_PARA_COURIERNAME = "courierName"
|
|
URL_FRESHFOOD_PARA_COURIERPHONE = "courierPhone"
|
|
URL_FRESHFOOD_PARA_CANCELREASONID = "cancelReasonId"
|
|
URL_FRESHFOOD_PARA_CANCELREASON = "cancelReason"
|
|
URL_FRESHFOOD_PARA_APPKEY = "appkey"
|
|
URL_FRESHFOOD_PARA_TIMESTAMP = "timestamp"
|
|
URL_FRESHFOOD_PARA_SIGN = "sign"
|
|
|
|
//转发美团配送异常消息
|
|
URL_FRESHFOOD_PARA_EXCEPTIONID = "exceptionId"
|
|
URL_FRESHFOOD_PARA_EXCEPTIONCODE = "exceptionCode"
|
|
URL_FRESHFOOD_PARA_EXCEPTIONDESC = "exceptionDesc"
|
|
URL_FRESHFOOD_PARA_EXCEPTIONTIME = "exceptionTime"
|
|
)
|
|
|
|
const (
|
|
JD_VENDERID = 0
|
|
ELM_VENDERID = 2
|
|
)
|
|
|
|
const (
|
|
retryCount = 3
|
|
)
|
|
|
|
type FreshFoodAPI struct {
|
|
baseURL string
|
|
client *http.Client
|
|
}
|
|
|
|
func NewFreshFoodAPI(baseURL string) *FreshFoodAPI {
|
|
return &FreshFoodAPI{baseURL, &http.Client{Timeout: time.Second * 5}}
|
|
}
|
|
|
|
func (f *FreshFoodAPI) AccessFreshFood(apiStr string, params url.Values) error {
|
|
var err error
|
|
fullURL := f.baseURL + "/" + apiStr
|
|
for i := 0; i < retryCount; i++ {
|
|
// _, err := f.client.PostForm(fullURL, params)
|
|
err = error(nil)
|
|
globals.SugarLogger.Debug(fullURL)
|
|
globals.SugarLogger.Debug(params)
|
|
if err == nil {
|
|
break
|
|
}
|
|
}
|
|
if err != nil {
|
|
globals.SugarLogger.Warnf("Call %s error:%v", fullURL, err)
|
|
}
|
|
return err
|
|
}
|
|
|
|
// jd api
|
|
func (f *FreshFoodAPI) NewJDOrder(jdorder *models.Jdorder) error {
|
|
params := make(url.Values)
|
|
params.Set(URL_FRESHFOOD_PARA_JDORDER, string(utils.MustMarshal(jdorder)))
|
|
|
|
if jdorder.OrderStatus == utils.Str2Int(jdapi.JdOrderStatusNew) {
|
|
return f.AccessFreshFood(URL_FRESHFOOD_ORDER_CREATE_JDDJ, params)
|
|
}
|
|
return f.AccessFreshFood(URL_FRESHFOOD_ORDER_MODIFY, params)
|
|
}
|
|
|
|
// todo venderId
|
|
func (f *FreshFoodAPI) JDOrderStatus(jdorder *models.Jdorder) error {
|
|
params := make(url.Values)
|
|
params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(JD_VENDERID))
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERID, utils.Int64ToStr(jdorder.JdOrderId))
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, utils.Int2Str(jdorder.OrderStatus))
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, jdorder.OrderStatusTime)
|
|
params.Set(URL_FRESHFOOD_PARA_CITYNAME, jdorder.CityName)
|
|
|
|
return f.AccessFreshFood(URL_FRESHFOOD_ORDER_STATUS, params)
|
|
}
|
|
|
|
func (f *FreshFoodAPI) JDOrderDeliveryStatus(jdOrderDeliveryStatusMsg *jdapi.JDDeliveryStatusMsg) error {
|
|
params := make(url.Values)
|
|
cityName := "all"
|
|
|
|
params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(JD_VENDERID))
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERID, jdOrderDeliveryStatusMsg.OrderId)
|
|
params.Set(URL_FRESHFOOD_PARA_DELIVERYSTATUS, utils.Int2Str(jdOrderDeliveryStatusMsg.DeliveryStatus))
|
|
params.Set(URL_FRESHFOOD_PARA_DLIVERYSTATUSTIME, jdOrderDeliveryStatusMsg.DeliveryStatusTime)
|
|
|
|
params.Set(URL_FRESHFOOD_PARA_DELIVERYCARRIERNO, jdOrderDeliveryStatusMsg.DeliveryCarrierNo)
|
|
params.Set(URL_FRESHFOOD_PARA_DELIVERYCARRIERNAME, jdOrderDeliveryStatusMsg.DeliveryCarrierName)
|
|
params.Set(URL_FRESHFOOD_PARA_DELIVERYMANNO, jdOrderDeliveryStatusMsg.DeliveryManNo)
|
|
params.Set(URL_FRESHFOOD_PARA_DELIVERYMANNAME, jdOrderDeliveryStatusMsg.DeliveryManName)
|
|
params.Set(URL_FRESHFOOD_PARA_DELIVERYMANPHONE, jdOrderDeliveryStatusMsg.DeliveryManPhone)
|
|
|
|
params.Set(URL_FRESHFOOD_PARA_CITYNAME, cityName)
|
|
|
|
return f.AccessFreshFood(URL_FRESHFOOD_DELIVERY_STATUS, params)
|
|
}
|
|
|
|
// elm api
|
|
func (f *FreshFoodAPI) NewELMOrder(order map[string]interface{}) error {
|
|
params := make(url.Values)
|
|
params.Set(URL_FRESHFOOD_PARA_ELEMEORDER, string(utils.MustMarshal(order)))
|
|
|
|
return f.AccessFreshFood(URL_FRESHFOOD_ORDER_CREATE_ELEME, params)
|
|
}
|
|
|
|
func (f *FreshFoodAPI) ELMOrderStatus(orderId string, status int, timestamp int64) error {
|
|
params := make(url.Values)
|
|
params.Set(URL_FRESHFOOD_PARA_VENDERID, utils.Int2Str(ELM_VENDERID))
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERID, orderId)
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUS, utils.Int2Str(status))
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERSTATUSTIME, utils.Timestamp2Str(timestamp))
|
|
|
|
return f.AccessFreshFood(URL_FRESHFOOD_PARA_ORDERSTATUS, params)
|
|
}
|
|
|
|
// mtps api
|
|
func (f *FreshFoodAPI) MtpsOrderStatusChanged(order *mtpsapi.MtpsCallbackOrderMsg) error {
|
|
params := make(url.Values)
|
|
params.Set(URL_FRESHFOOD_PARA_DELIVERYID, utils.Int64ToStr(order.DeliveryId))
|
|
params.Set(URL_FRESHFOOD_PARA_MTPEISONID, order.MtPeisongId)
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERID, order.OrderId)
|
|
params.Set(URL_FRESHFOOD_PARA_STATUS, utils.Int2Str(order.Status))
|
|
params.Set(URL_FRESHFOOD_PARA_COURIERNAME, order.CourierName)
|
|
params.Set(URL_FRESHFOOD_PARA_COURIERPHONE, order.CourierPhone)
|
|
params.Set(URL_FRESHFOOD_PARA_CANCELREASONID, utils.Int2Str(order.CancelReasonId))
|
|
params.Set(URL_FRESHFOOD_PARA_CANCELREASON, order.CancelReason)
|
|
params.Set(URL_FRESHFOOD_PARA_APPKEY, order.AppKey)
|
|
params.Set(URL_FRESHFOOD_PARA_TIMESTAMP, utils.Int64ToStr(order.Timestamp))
|
|
params.Set(URL_FRESHFOOD_PARA_SIGN, order.Sign)
|
|
|
|
return f.AccessFreshFood(URL_FRESHFOOD_MTPS_DELIVERYSTATUS, params)
|
|
}
|
|
|
|
func (f *FreshFoodAPI) MtpsOrderException(order *mtpsapi.MtpsCallbackOrderExceptionMsg) error {
|
|
params := make(url.Values)
|
|
params.Set(URL_FRESHFOOD_PARA_DELIVERYID, utils.Int64ToStr(order.DeliveryId))
|
|
params.Set(URL_FRESHFOOD_PARA_MTPEISONID, order.MtPeisongId)
|
|
params.Set(URL_FRESHFOOD_PARA_ORDERID, order.OrderId)
|
|
|
|
params.Set(URL_FRESHFOOD_PARA_EXCEPTIONID, utils.Int64ToStr(order.ExceptionId))
|
|
params.Set(URL_FRESHFOOD_PARA_EXCEPTIONCODE, utils.Int2Str(order.ExceptionCode))
|
|
params.Set(URL_FRESHFOOD_PARA_EXCEPTIONDESC, order.ExceptionDescr)
|
|
params.Set(URL_FRESHFOOD_PARA_EXCEPTIONTIME, utils.Int64ToStr(order.ExceptionTime))
|
|
|
|
params.Set(URL_FRESHFOOD_PARA_COURIERNAME, order.CourierName)
|
|
params.Set(URL_FRESHFOOD_PARA_COURIERPHONE, order.CourierPhone)
|
|
params.Set(URL_FRESHFOOD_PARA_APPKEY, order.AppKey)
|
|
params.Set(URL_FRESHFOOD_PARA_TIMESTAMP, utils.Int64ToStr(order.Timestamp))
|
|
params.Set(URL_FRESHFOOD_PARA_SIGN, order.Sign)
|
|
|
|
return f.AccessFreshFood(URL_FRESHFOOD_MTPS_EXCEPTION, params)
|
|
}
|