Files
baseapi/platformapi/weimobapi/order.go
2025-11-21 09:09:09 +08:00

380 lines
19 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package weimobapi
import "git.rosy.net.cn/baseapi/utils"
const (
OrderStatusWait4Pay = 0 // 待支付
OrderStatusPayed = 1 // 已付款,待发货
OrderStatusDelivering = 2 // 已发货
OrderStatusFinished = 3 // 已完成
OrderStatusCanceled = 4 // 已取消
)
const (
QueryOrdersListPageSize = 10
)
type DeliveryOrderItem struct {
ItemID int64 `json:"itemId"`
SkuID int64 `json:"skuId"`
SkuNum int `json:"skuNum"`
}
type DeliveryOrder struct {
OrderNo int64 `json:"orderNo"`
DeliveryNo string `json:"deliveryNo"`
DeliveryCompanyCode string `json:"deliveryCompanyCode"`
DeliveryCompanyName string `json:"deliveryCompanyName"`
IsNeedLogistics bool `json:"isNeedLogistics"`
IsSplitPackage bool `json:"isSplitPackage"`
DeliveryRemark string `json:"deliveryRemark"`
DeliveryOrderItemList []*DeliveryOrderItem `json:"deliveryOrderItemList"`
}
type OrderDetail struct {
AutoCancelTime int `json:"autoCancelTime"`
BizInfo struct {
BizType int `json:"bizType"`
BizTypeName string `json:"bizTypeName"`
} `json:"bizInfo"`
BizSourceType int `json:"bizSourceType"`
BuyerInfo struct {
UserNickname string `json:"userNickname"`
Wid int `json:"wid"`
} `json:"buyerInfo"`
BuyerRemark string `json:"buyerRemark"`
ChannelTypeName string `json:"channelTypeName"`
CreateTime int64 `json:"createTime"`
DeliveryAmount float64 `json:"deliveryAmount"`
DeliveryDetail struct {
DeliveryType int `json:"deliveryType"`
DeliveryTypeName string `json:"deliveryTypeName"`
LogisticsDeliveryDetail struct {
ExpectDeliveryTime string `json:"expectDeliveryTime"`
ExpectDeliveryType int `json:"expectDeliveryType"`
LogisticsOrderList []interface{} `json:"logisticsOrderList"`
ReceiverAddress string `json:"receiverAddress"`
ReceiverArea string `json:"receiverArea"`
ReceiverCity string `json:"receiverCity"`
ReceiverCounty string `json:"receiverCounty"`
ReceiverLatitude string `json:"receiverLatitude"`
ReceiverLongitude string `json:"receiverLongitude"`
ReceiverMobile string `json:"receiverMobile"`
ReceiverName string `json:"receiverName"`
ReceiverProvince string `json:"receiverProvince"`
ReceiverZip string `json:"receiverZip"`
} `json:"logisticsDeliveryDetail"`
} `json:"deliveryDetail"`
DeliveryPaymentAmount float64 `json:"deliveryPaymentAmount"`
DiscountInfo struct {
MerchantDiscountAmount int `json:"merchantDiscountAmount"`
} `json:"discountInfo"`
EnableDelivery int `json:"enableDelivery"`
ExistingInvoice bool `json:"existingInvoice"`
ExpandLabelInfo struct {
VirtualWid bool `json:"virtualWid"`
} `json:"expandLabelInfo"`
GoodsAmount float64 `json:"goodsAmount"`
GoodsPromotionInfo struct {
CycleOrderInfo struct {
CyclePackageList []interface{} `json:"cyclePackageList"`
} `json:"cycleOrderInfo"`
GoodsDistributionType int `json:"goodsDistributionType"`
PromotionType int `json:"promotionType"`
} `json:"goodsPromotionInfo"`
GoodsSellMode int `json:"goodsSellMode"`
GoodsSourceType int `json:"goodsSourceType"`
GuideInfo struct {
GoodsGuideType int `json:"goodsGuideType"`
} `json:"guideInfo"`
InvoiceTexAmount int `json:"invoiceTexAmount"`
InvoiceTexDiscountAmount int `json:"invoiceTexDiscountAmount"`
InvoiceTexPaymentAmount int `json:"invoiceTexPaymentAmount"`
ItemList []struct {
BaseDiscountInfo struct {
} `json:"baseDiscountInfo"`
BizInfo struct {
} `json:"bizInfo"`
CostPrice float64 `json:"costPrice"`
GoodsDiscountInfo struct {
} `json:"goodsDiscountInfo"`
GoodsCode string `json:"goodsCode"`
GoodsID int64 `json:"goodsId"`
GoodsSellMode int `json:"goodsSellMode"`
GoodsSourceType int `json:"goodsSourceType"`
GoodsTitle string `json:"goodsTitle"`
GoodsType int `json:"goodsType"`
HadDeliveryItemNum int `json:"hadDeliveryItemNum"`
ID int `json:"id"`
ImageURL string `json:"imageUrl"`
OriginalPrice float64 `json:"originalPrice"`
PaymentAmount float64 `json:"paymentAmount"`
PointDeductRatio int `json:"pointDeductRatio"`
Price float64 `json:"price"`
PrimaryCategory string `json:"primaryCategory"`
SecondaryCategory string `json:"secondaryCategory"`
ShouldPaymentAmount float64 `json:"shouldPaymentAmount"`
SkuAmount float64 `json:"skuAmount"`
SkuCode string `json:"skuCode"`
SkuID int64 `json:"skuId"`
SkuNum int `json:"skuNum"`
TagInfo struct {
ActivityTag []interface{} `json:"activityTag"`
GoodsBizTag []interface{} `json:"goodsBizTag"`
} `json:"tagInfo"`
TotalAmount float64 `json:"totalAmount"`
WarehouseID int `json:"warehouseId"`
WarehouseName string `json:"warehouseName"`
WarehouseType int `json:"warehouseType"`
} `json:"itemList"`
MerchantInfo struct {
MerchantTitle string `json:"merchantTitle"`
Pid int64 `json:"pid"`
ProcessStoreID int `json:"processStoreId"`
ProcessStoreTitle string `json:"processStoreTitle"`
StoreID int `json:"storeId"`
StoreTitle string `json:"storeTitle"`
} `json:"merchantInfo"`
OperationList []struct {
Name string `json:"name"`
OperationType int `json:"operationType"`
PermissionCode string `json:"permissionCode"`
} `json:"operationList"`
OrderNo int64 `json:"orderNo"`
OrderStatus int `json:"orderStatus"`
OrderStatusName string `json:"orderStatusName"`
OrderType int `json:"orderType"`
PaymentAmount float64 `json:"paymentAmount"`
PaymentInfo struct {
PaymentStatus int `json:"paymentStatus"`
PaymentType int `json:"paymentType"`
PaymentTypeName string `json:"paymentTypeName"`
} `json:"paymentInfo"`
ProcessStoreID int `json:"processStoreId"`
ProcessStoreTitle string `json:"processStoreTitle"`
ShouldPaymentAmount float64 `json:"shouldPaymentAmount"`
StoreTitle string `json:"storeTitle"`
TotalAmount float64 `json:"totalAmount"`
TransferStatus int `json:"transferStatus"`
TransferType int `json:"transferType"`
UpdateTime int64 `json:"updateTime"`
}
type QueryOrdersListParam struct {
PageNum int `json:"pageNum"`
PageSize int `json:"pageSize"`
EcBizStoreId int64 `json:"ecBizStoreId,omitempty"`
QueryParameter *MerchantOrderListQueryParameter `json:"queryParameter,omitempty"`
}
type MerchantOrderListQueryParameter struct {
CreateStartTime int64 `json:"createStartTime,omitempty"` //下单起始时间
CreateEndTime int64 `json:"createEndTime,omitempty"` //下单结束时间
UpdateStartTime int64 `json:"updateStartTime,omitempty"` //更新开始时间
UpdateEndTime int64 `json:"updateEndTime,omitempty"` //更新结束时间
OrderTypes []int `json:"orderTypes,omitempty"` //订单类型: 1、B2C订单 99、充值订单 97、直接消费订单 不传默认为 1 (建议只传一种类型)
OrderStatuses []int `json:"orderStatuses"` //订单状态 (空为不限,0-待支付,1-待发货,2-已发货,3-已完成,4-已取消)
ChannelTypes []int `json:"channelTypes"` //渠道类型 (空为不限,0-公众号,1-小程序,2-H5,3-QQ,4-微博,5-头条,6-支付宝,7-线下)
DeliveryStatuses []int `json:"deliveryStatuses"` //发货状态 (空为不限,0未发货1为部分发货2为已发货)
PaymentTypes []int `json:"paymentTypes"` //支付类型(空为不限,1-线上支付(包括微信、支付宝、银行卡、购物卡等),2-线下支付(包括现金、欠条等,默认是现金),3-混合支付(网上支付和线下支付混合))
PaymentMethods []int `json:"paymentMethods"` //支付方式 (空为不限,1-支付宝,2-微信,3-银行卡,4-现金,5-货到付款,6-无需支付)
DeliveryTypes []int `json:"deliveryTypes"` //配送类型 (空为不限,1-物流配送(走快递发货流程),2-同城限时达(走即时物流流程),3-到店自提(走自提流程))
FlagRanks []int `json:"flagRanks"` //订单标记 (空为不限,等级1到5)
BizTypes []int `json:"bizTypes"` //业务类型 (空为不限,0-普通,3-限时折扣,4-砍价, 5-拼团)
GoodsDistributionTypes []int `json:"goodsDistributionTypes,omitempty"` //分销类型1、普通商品2、分销商品
TransferStatus int `json:"transferStatus,omitempty"` //转单状态 : 0未转单,1已转单,2转单失败 不传代表全部
GoodsPromotionTypes []int `json:"goodsPromotionTypes ,omitempty"` //商品销售类型1为普通2为周期购3、积分订单
}
type OrderInfo struct {
BizOrderID string `json:"bizOrderId"`
BizType int `json:"bizType"`
BuyerRemark string `json:"buyerRemark"`
ChannelType int `json:"channelType"`
ChannelTypeName string `json:"channelTypeName"`
ConfirmReceivedTime interface{} `json:"confirmReceivedTime"`
CreateTime int64 `json:"createTime"`
DeliveryAmount float64 `json:"deliveryAmount"`
DeliveryOrderID interface{} `json:"deliveryOrderId"`
DeliveryTime interface{} `json:"deliveryTime"`
DeliveryType int `json:"deliveryType"`
DeliveryTypeName string `json:"deliveryTypeName"`
EnableDelivery int `json:"enableDelivery"`
ExpectDeliveryTime string `json:"expectDeliveryTime"`
FlagContent interface{} `json:"flagContent"`
FlagRank interface{} `json:"flagRank"`
GoodsAmount float64 `json:"goodsAmount"`
GoodsPromotionInfo GoodsPromotionInfo `json:"goodsPromotionInfo"`
ItemList []ItemList `json:"itemList"`
OrderNo int64 `json:"orderNo"`
OrderStatus int `json:"orderStatus"`
OrderStatusName string `json:"orderStatusName"`
PaymentAmount float64 `json:"paymentAmount"`
PaymentMethodName string `json:"paymentMethodName"`
PaymentStatus int `json:"paymentStatus"`
PaymentTime interface{} `json:"paymentTime"`
PaymentType int `json:"paymentType"`
PaymentTypeName string `json:"paymentTypeName"`
Pid int64 `json:"pid"`
ProcessStoreID int `json:"processStoreId"`
ProcessStoreTitle string `json:"processStoreTitle"`
ReceiverAddress string `json:"receiverAddress"`
ReceiverArea string `json:"receiverArea"`
ReceiverCity string `json:"receiverCity"`
ReceiverCounty string `json:"receiverCounty"`
ReceiverMobile string `json:"receiverMobile"`
ReceiverName string `json:"receiverName"`
ReceiverProvince string `json:"receiverProvince"`
SelfPickupSiteName interface{} `json:"selfPickupSiteName"`
SelfPickupStatus interface{} `json:"selfPickupStatus"`
StoreID int `json:"storeId"`
StoreTitle string `json:"storeTitle"`
SubBizType interface{} `json:"subBizType"`
TotalPoint interface{} `json:"totalPoint"`
TransferFailReason interface{} `json:"transferFailReason"`
TransferStatus int `json:"transferStatus"`
TransferType int `json:"transferType"`
UpdateTime int64 `json:"updateTime"`
UserNickname string `json:"userNickname"`
Wid int `json:"wid"`
}
type CycleOrderInfo struct {
CurrentCycleNum interface{} `json:"currentCycleNum"`
CycleDeliveryTime interface{} `json:"cycleDeliveryTime"`
CycleItemList interface{} `json:"cycleItemList"`
CyclePackageList interface{} `json:"cyclePackageList"`
CycleSize interface{} `json:"cycleSize"`
CycleType interface{} `json:"cycleType"`
CycleTypeName interface{} `json:"cycleTypeName"`
FirstTime interface{} `json:"firstTime"`
}
type GoodsPromotionInfo struct {
CycleOrderInfo CycleOrderInfo `json:"cycleOrderInfo"`
GoodsDistributionType interface{} `json:"goodsDistributionType"`
PromotionID interface{} `json:"promotionId"`
PromotionOrderID interface{} `json:"promotionOrderId"`
PromotionType int `json:"promotionType"`
}
type BaseDiscountInfo struct {
BalanceDiscountAmount interface{} `json:"balanceDiscountAmount"`
BalanceDiscountDeliveryAmount interface{} `json:"balanceDiscountDeliveryAmount"`
CouponCodeDiscountAmount interface{} `json:"couponCodeDiscountAmount"`
CouponCodeDiscountInfo interface{} `json:"couponCodeDiscountInfo"`
CouponDiscountAmount interface{} `json:"couponDiscountAmount"`
CouponDiscountInfo interface{} `json:"couponDiscountInfo"`
DeliveryUsedPoints interface{} `json:"deliveryUsedPoints"`
MemberPointsDiscountAmount interface{} `json:"memberPointsDiscountAmount"`
MembershipDiscountAmount interface{} `json:"membershipDiscountAmount"`
MembershipDiscountInfo interface{} `json:"membershipDiscountInfo"`
MerchantDiscountAmount interface{} `json:"merchantDiscountAmount"`
NynjDiscountAmount interface{} `json:"nynjDiscountAmount"`
PointsDiscountDeliveryAmount interface{} `json:"pointsDiscountDeliveryAmount"`
PromotionDiscountAmount int `json:"promotionDiscountAmount"`
UsedMemberPoints interface{} `json:"usedMemberPoints"`
}
type BizInfo struct {
BizID interface{} `json:"bizId"`
BizOrderID interface{} `json:"bizOrderId"`
BizType interface{} `json:"bizType"`
SubBizType interface{} `json:"subBizType"`
}
type TagInfo struct {
ActivityTag interface{} `json:"activityTag"`
AdvancedActivityTagList interface{} `json:"advancedActivityTagList"`
AllActivityTagList interface{} `json:"allActivityTagList"`
AllTagList interface{} `json:"allTagList"`
BizTagList interface{} `json:"bizTagList"`
CouponTag interface{} `json:"couponTag"`
CustomizedTag interface{} `json:"customizedTag"`
GeneralActivityTagList interface{} `json:"generalActivityTagList"`
GoodsBizTag []interface{} `json:"goodsBizTag"`
GoodsUserTag interface{} `json:"goodsUserTag"`
IndustryTagList interface{} `json:"industryTagList"`
MerchantTag interface{} `json:"merchantTag"`
UserTag interface{} `json:"userTag"`
}
type ItemList struct {
BaseDiscountInfo BaseDiscountInfo `json:"baseDiscountInfo"`
BizInfo BizInfo `json:"bizInfo"`
CommentStatus interface{} `json:"commentStatus"`
GoodsCategoryID interface{} `json:"goodsCategoryId"`
GoodsCode interface{} `json:"goodsCode"`
GoodsID int64 `json:"goodsId"`
GoodsTitle string `json:"goodsTitle"`
GoodsType int `json:"goodsType"`
HadDeliveryItemNum int `json:"hadDeliveryItemNum"`
ID int `json:"id"`
ImageURL string `json:"imageUrl"`
OriginalPrice float64 `json:"originalPrice"`
PaymentAmount float64 `json:"paymentAmount"`
Point interface{} `json:"point"`
Price float64 `json:"price"`
RightsOrderID interface{} `json:"rightsOrderId"`
RightsStatus interface{} `json:"rightsStatus"`
RightsStatusName interface{} `json:"rightsStatusName"`
ShouldPaymentAmount interface{} `json:"shouldPaymentAmount"`
SkuAmount float64 `json:"skuAmount"`
SkuCode interface{} `json:"skuCode"`
SkuID int64 `json:"skuId"`
SkuName interface{} `json:"skuName"`
SkuNum int `json:"skuNum"`
TagInfo TagInfo `json:"tagInfo"`
TotalAmount float64 `json:"totalAmount"`
TotalPoint interface{} `json:"totalPoint"`
}
//查询微盟订单
func (a *API) QueryOrdersList(queryParam *QueryOrdersListParam) (orderList []*OrderInfo, totalCount int, err error) {
param := make(map[string]interface{})
if queryParam != nil {
param = utils.Struct2FlatMap(queryParam)
}
result, err := a.AccessAPI("order/queryOrderList", param)
if err == nil {
data := result.(map[string]interface{})
totalCount = int(utils.MustInterface2Int64(data["totalCount"]))
err = utils.Map2StructByJson(data["pageList"], &orderList, false)
}
return orderList, totalCount, err
}
func (a *API) QueryOrderDetail(orderNo int64, needInvoiceInfo bool) (retVal map[string]interface{}, err error) {
result, err := a.AccessAPI("order/queryOrderDetail", map[string]interface{}{
"orderNo": orderNo,
"needInvoiceInfo": needInvoiceInfo,
})
if err == nil {
return result.(map[string]interface{}), nil
}
return nil, err
}
func (a *API) QueryOrderDetail2(orderNo int64, needInvoiceInfo bool) (order *OrderDetail, err error) {
result, err := a.AccessAPI("order/queryOrderDetail", map[string]interface{}{
"orderNo": orderNo,
"needInvoiceInfo": needInvoiceInfo,
})
if err == nil {
err = utils.Map2StructByJson(result, &order, false)
}
return order, err
}
func (a *API) CancelOrder(orderNo int64, specificCancelReason string) (err error) {
apiParams := map[string]interface{}{
"orderNo": orderNo,
}
if specificCancelReason != "" {
apiParams["specificCancelReason"] = specificCancelReason
}
_, err = a.AccessAPI("order/cancelOrder", apiParams)
return err
}
func (a *API) DeliveryOrder(orderDeliveryInfo *DeliveryOrder) (err error) {
apiParams := utils.Struct2MapByJson(orderDeliveryInfo)
// baseapi.SugarLogger.Debug(utils.Format4Output(apiParams, false))
_, err = a.AccessAPI("order/deliveryOrder", apiParams)
return err
}