- GetOrderActDetail and sku_benefit_detail

This commit is contained in:
gazebo
2019-06-13 17:59:51 +08:00
parent b5eeaab6f0
commit ebd50aa6a5
4 changed files with 172 additions and 68 deletions

View File

@@ -399,13 +399,7 @@ func (a *API) QueryKeyWordDicInfo(pageNo, pageSize int, keyValue string) (values
// 商家商品状态同步接口 // 商家商品状态同步接口
// https://opendj.jd.com/staticnew/widgets/resources.html?groupid=180&apiid=5e29d6c9317847e58b8cbcc70702fd52 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=180&apiid=5e29d6c9317847e58b8cbcc70702fd52
func (a *API) SyncProduct(storeId, skuId string) (retVal bool, err error) { func (a *API) SyncProduct(storeId, skuId string) (retVal bool, err error) {
result, err := a.AccessAPINoPage("search/syncProduct", utils.Params2Map(KeyStoreId, storeId, KeySkuId, skuId), nil, nil, func(data map[string]interface{}) (interface{}, error) { result, err := a.AccessAPINoPage("search/syncProduct", utils.Params2Map(KeyStoreId, storeId, KeySkuId, skuId), nil, nil, genNoPageResultParser("status", "message", "synchronized", "200"))
status := utils.MustInterface2Int64(data["status"])
if status == 200 {
return data["synchronized"].(bool), nil
}
return nil, utils.NewErrorIntCode(data["message"].(string), int(status))
})
if err == nil { if err == nil {
return result.(bool), nil return result.(bool), nil
} }

View File

@@ -95,32 +95,32 @@ func TestQueryKeyWordDicInfo(t *testing.T) {
} }
func TestSyncProduct(t *testing.T) { func TestSyncProduct(t *testing.T) {
result, err := api.SyncProduct("11732425", "2015717812") result, err := api.SyncProduct(mustExistStoreID, "2022250244")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
baseapi.SugarLogger.Debug(result) baseapi.SugarLogger.Debug(result)
result, err = api.SyncProduct("wrongstoreid", "2015717812") result, err = api.SyncProduct("wrongstoreid", "2022250244")
if err == nil { if err == nil {
t.Fatal("SyncProduct should return error") t.Fatal("SyncProduct should return error")
} }
result, err = api.SyncProduct("11732425", "wrongskuid") result, err = api.SyncProduct(mustExistStoreID, "wrongskuid")
if err == nil { if err == nil {
t.Fatal("SyncProduct should return error") t.Fatal("SyncProduct should return error")
} }
} }
func TestGetProductStatust(t *testing.T) { func TestGetProductStatust(t *testing.T) {
result, err := api.GetProductStatus("11732425", "2015717812") result, err := api.GetProductStatus(mustExistStoreID, "2022250244")
if err != nil || result == nil { if err != nil || result == nil {
t.Fatal(err) t.Fatal(err)
} }
// baseapi.SugarLogger.Debug(result) // baseapi.SugarLogger.Debug(result)
result, err = api.GetProductStatus("wrongstoreid", "2015717812") result, err = api.GetProductStatus("wrongstoreid", "2022250244")
if err == nil { if err == nil {
t.Fatal("GetProductStatus should return error") t.Fatal("GetProductStatus should return error")
} }
result, err = api.GetProductStatus("11732425", "wrongskuid") result, err = api.GetProductStatus(mustExistStoreID, "wrongskuid")
if err == nil { if err == nil {
t.Fatal("GetProductStatus should return error") t.Fatal("GetProductStatus should return error")
} }

View File

@@ -157,58 +157,126 @@ type CanRefundFoodInfo struct {
SkuID string `json:"sku_id"` SkuID string `json:"sku_id"`
} }
type WmAppOrderActDetailInfo struct {
ActID int64 `json:"act_id"`
Count int `json:"count"`
MtCharge float64 `json:"mtCharge"`
PoiCharge float64 `json:"poiCharge"`
Remark string `json:"remark"`
Type int `json:"type"`
}
type SkuBenefitDetailInfo struct {
ActivityPrice float64 `json:"activityPrice"`
AppFoodCode string `json:"app_food_code"`
BoxNumber float64 `json:"boxNumber"`
BoxPrice float64 `json:"boxPrice"`
Count int `json:"count"`
Name string `json:"name"`
OriginPrice float64 `json:"originPrice"`
SkuID string `json:"sku_id"`
TotalActivityPrice float64 `json:"totalActivityPrice"`
TotalBoxPrice float64 `json:"totalBoxPrice"`
TotalMtCharge float64 `json:"totalMtCharge"`
TotalOriginPrice float64 `json:"totalOriginPrice"`
TotalPoiCharge float64 `json:"totalPoiCharge"`
TotalReducePrice float64 `json:"totalReducePrice"`
WmAppOrderActDetails []*WmAppOrderActDetailInfo `json:"wmAppOrderActDetails"`
}
type OrderInfo struct { type OrderInfo struct {
AppOrderCode string `json:"app_order_code"` AppOrderCode string `json:"app_order_code"`
AppPoiCode string `json:"app_poi_code"` AppPoiCode string `json:"app_poi_code"`
AvgSendTime int `json:"avg_send_time"` AvgSendTime int `json:"avg_send_time"`
BackupRecipientPhone string `json:"backup_recipient_phone"` BackupRecipientPhone string `json:"backup_recipient_phone"`
Caution string `json:"caution"` Caution string `json:"caution"`
CityID int `json:"city_id"` CityID int `json:"city_id"`
Ctime int64 `json:"ctime"` Ctime int64 `json:"ctime"`
DaySeq int `json:"day_seq"` DaySeq int `json:"day_seq"`
DeliveryTime int `json:"delivery_time"` DeliveryTime int `json:"delivery_time"`
Detail string `json:"detail"` Detail string `json:"detail"`
DetailList []*FoodInfo `json:"detailList"` DetailList []*FoodInfo `json:"detailList"`
DinnersNumber int `json:"dinners_number"` DinnersNumber int `json:"dinners_number"`
ExpectDeliverTime int `json:"expect_deliver_time"` ExpectDeliverTime int `json:"expect_deliver_time"`
Extras string `json:"extras"` Extras string `json:"extras"`
ExtraList []*OrderExtraInfo `json:"extraList"` ExtraList []*OrderExtraInfo `json:"extraList"`
HasInvoiced int `json:"has_invoiced"` HasInvoiced int `json:"has_invoiced"`
InvoiceTitle string `json:"invoice_title"` InvoiceTitle string `json:"invoice_title"`
IsFavorites bool `json:"is_favorites"` IsFavorites bool `json:"is_favorites"`
IsPoiFirstOrder bool `json:"is_poi_first_order"` IsPoiFirstOrder bool `json:"is_poi_first_order"`
IsPre int `json:"is_pre"` IsPre int `json:"is_pre"`
IsThirdShipping int `json:"is_third_shipping"` IsThirdShipping int `json:"is_third_shipping"`
Latitude float64 `json:"latitude"` Latitude float64 `json:"latitude"`
LogisticsCode string `json:"logistics_code"` LogisticsCode string `json:"logistics_code"`
Longitude float64 `json:"longitude"` Longitude float64 `json:"longitude"`
OrderCompletedTime int `json:"order_completed_time"` OrderCompletedTime int `json:"order_completed_time"`
OrderConfirmTime int `json:"order_confirm_time"` OrderConfirmTime int `json:"order_confirm_time"`
OrderID int64 `json:"order_id"` OrderID int64 `json:"order_id"`
OrderSendTime int `json:"order_send_time"` OrderSendTime int `json:"order_send_time"`
OriginalPrice float64 `json:"original_price"` OriginalPrice float64 `json:"original_price"`
PackageBagMoney int `json:"package_bag_money"` PackageBagMoney int `json:"package_bag_money"`
PayType int `json:"pay_type"` PayType int `json:"pay_type"`
PickType int `json:"pick_type"` PickType int `json:"pick_type"`
PoiReceiveDetail string `json:"poi_receive_detail"` PoiReceiveDetail string `json:"poi_receive_detail"`
RecipientAddress string `json:"recipient_address"` RecipientAddress string `json:"recipient_address"`
RecipientName string `json:"recipient_name"` RecipientName string `json:"recipient_name"`
RecipientPhone string `json:"recipient_phone"` RecipientPhone string `json:"recipient_phone"`
Remark string `json:"remark"` Remark string `json:"remark"`
Result string `json:"result"` Result string `json:"result"`
ShipperPhone string `json:"shipper_phone"` ShipperPhone string `json:"shipper_phone"`
ShippingFee float64 `json:"shipping_fee"` ShippingFee float64 `json:"shipping_fee"`
ShippingType int `json:"shipping_type"` ShippingType int `json:"shipping_type"`
SourceID int `json:"source_id"` SkuBenefitDetail string `json:"sku_benefit_detail"`
Status int `json:"status"` SkuBenefitDetailList []*SkuBenefitDetailInfo `json:"sku_benefit_detail_list"`
TaxpayerID string `json:"taxpayer_id"` SourceID int `json:"source_id"`
Total float64 `json:"total"` Status int `json:"status"`
Utime int64 `json:"utime"` TaxpayerID string `json:"taxpayer_id"`
WmOrderIDView int64 `json:"wm_order_id_view"` Total float64 `json:"total"`
WmPoiAddress string `json:"wm_poi_address"` Utime int64 `json:"utime"`
WmPoiID int `json:"wm_poi_id"` WmOrderIDView int64 `json:"wm_order_id_view"`
WmPoiName string `json:"wm_poi_name"` WmPoiAddress string `json:"wm_poi_address"`
WmPoiPhone string `json:"wm_poi_phone"` WmPoiID int `json:"wm_poi_id"`
WmPoiName string `json:"wm_poi_name"`
WmPoiPhone string `json:"wm_poi_phone"`
}
type GetOrderActDetailParamAct struct {
Type int `json:"type,omitempty"`
ActID int64 `json:"act_id,omitempty"`
}
type GetOrderActDetailParam struct {
OrderID int64 `json:"order_id_view"`
ActParam []*GetOrderActDetailParamAct `json:"act_param,omitempty"`
}
type OrderActInfo struct {
OrderID int64 `json:"order_id_view"`
ActDetailList []*struct {
ActID int64 `json:"act_id"`
CouponDetail interface{} `json:"coupon_detail"`
EndTime int64 `json:"end_time"`
GiftsDetail interface{} `json:"gifts_detail"`
PoiDetail interface{} `json:"poi_detail"`
ProductDetail struct {
AppFoodCode string `json:"app_food_code"`
CategorySeqence int `json:"category_seqence"`
Charge string `json:"charge"`
DayLimit int `json:"day_limit"`
Name string `json:"name"`
OrderLimit int `json:"order_limit"`
Period string `json:"period"`
Policy string `json:"policy"`
SettingType int `json:"setting_type"`
UserType int `json:"user_type"`
WeeksTime string `json:"weeks_time"`
} `json:"product_detail"`
Remark string `json:"remark"`
StartTime int64 `json:"start_time"`
Status int `json:"status"`
Type int `json:"type"`
TypeName string `json:"type_name"`
} `json:"act_detail_list"`
} }
func (a *API) OrderReceived(orderID int64) (err error) { func (a *API) OrderReceived(orderID int64) (err error) {
@@ -301,9 +369,23 @@ func (a *API) OrderGetOrderDetail2(orderID int64, isMTLogistics bool) (orderInfo
orderMap, err := a.OrderGetOrderDetail(orderID, isMTLogistics) orderMap, err := a.OrderGetOrderDetail(orderID, isMTLogistics)
if err == nil { if err == nil {
if err = utils.Map2StructByJson(orderMap, &orderInfo, false); err == nil { if err = utils.Map2StructByJson(orderMap, &orderInfo, false); err == nil {
if err = utils.UnmarshalUseNumber([]byte(orderInfo.Detail), &orderInfo.DetailList); err == nil && orderInfo.Extras != "" { if orderInfo.Detail != "" {
err = utils.UnmarshalUseNumber([]byte(orderInfo.Detail), &orderInfo.DetailList)
}
if err != nil {
return nil, err
}
if orderInfo.Extras != "" {
err = utils.UnmarshalUseNumber([]byte(orderInfo.Extras), &orderInfo.ExtraList) err = utils.UnmarshalUseNumber([]byte(orderInfo.Extras), &orderInfo.ExtraList)
} }
if err != nil {
return nil, err
}
if orderInfo.SkuBenefitDetail != "" {
err = utils.UnmarshalUseNumber([]byte(orderInfo.SkuBenefitDetail), &orderInfo.SkuBenefitDetailList)
}
} }
} }
return orderInfo, err return orderInfo, err
@@ -381,3 +463,14 @@ func (a *API) GetOrderRefundDetail(orderID int64, refundType int) (refundOrderDe
} }
return refundOrderDetailList, err return refundOrderDetailList, err
} }
func (a *API) GetOrderActDetail(queryData []*GetOrderActDetailParam) (orderActList []*OrderActInfo, err error) {
params := map[string]interface{}{
"query_data": string(utils.MustMarshal(queryData)),
}
result, err := a.AccessAPI("ecommerce/order/getOrderActDetail", true, params)
if err == nil {
err = utils.Map2StructByJson(result, &orderActList, false)
}
return orderActList, err
}

View File

@@ -15,7 +15,7 @@ func TestOrderViewStatus(t *testing.T) {
} }
func TestOrderGetOrderDetail(t *testing.T) { func TestOrderGetOrderDetail(t *testing.T) {
result, err := api.OrderGetOrderDetail(69299961008767093, false) result, err := api.OrderGetOrderDetail(69760842061320598, false)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -26,7 +26,7 @@ func TestOrderGetOrderDetail(t *testing.T) {
} }
func TestOrderGetOrderDetail2(t *testing.T) { func TestOrderGetOrderDetail2(t *testing.T) {
result, err := api.OrderGetOrderDetail2(68689721416501384, false) result, err := api.OrderGetOrderDetail2(69760842061320598, false)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -90,7 +90,24 @@ func TestOrderBatchPullPhoneNumber(t *testing.T) {
} }
func TestGetOrderRefundDetail(t *testing.T) { func TestGetOrderRefundDetail(t *testing.T) {
result, err := api.GetOrderRefundDetail(25236872989387976, RefundTypePart) result, err := api.GetOrderRefundDetail(25236870166465610, RefundTypePart)
if err != nil {
t.Fatal(err)
}
t.Log(utils.Format4Output(result, false))
}
func TestGetOrderActDetaill(t *testing.T) {
result, err := api.GetOrderActDetail([]*GetOrderActDetailParam{
&GetOrderActDetailParam{
OrderID: 69760842061320598,
// ActParam: []*GetOrderActDetailParamAct{
// &GetOrderActDetailParamAct{
// Type: 1,
// },
// },
},
})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }