Files
jx-callback/business/freshfood/freshfood.go
2018-06-14 17:50:58 +08:00

124 lines
4.1 KiB
Go

package freshfood
import (
"net/http"
"net/url"
"time"
"git.rosy.net.cn/baseapi/platform/jdapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jd/models"
"go.uber.org/zap"
)
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 (
JD_VENDERID = 0
ELM_VENDERID = 2
)
const (
retryCount = 3
)
type FreshFoodAPI struct {
baseURL string
sugarLogger *zap.SugaredLogger
client *http.Client
}
func NewFreshFoodAPI(baseURL string, sugarredLogger *zap.SugaredLogger) *FreshFoodAPI {
return &FreshFoodAPI{baseURL, sugarredLogger, &http.Client{Timeout: time.Second * 5}}
}
func (f *FreshFoodAPI) AccessFreshFodd(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)
f.sugarLogger.Debug(fullURL)
if err != nil {
f.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)))
return f.AccessFreshFodd("order", 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.AccessFreshFodd("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.AccessFreshFodd("delivery/status", params)
}
// elm api
func (f *FreshFoodAPI) NewELMOrder(order map[string]interface{}) error {
str := string(utils.MustMarshal(order))
params := make(url.Values)
params.Set(URL_FRESHFOOD_PARA_ELEMEORDER, str)
return f.AccessFreshFodd("order/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.AccessFreshFodd("order/status", params)
}