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) }