Files
baseapi/platformapi/mtwmapi/bill_list.go
邹宗楠 fe68387bf9 1
2023-08-22 16:20:36 +08:00

198 lines
16 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 mtwmapi
import (
"git.rosy.net.cn/baseapi/utils"
)
const (
BillChargeTypeOrder = 1 // 外卖订单
BillChargeTypeWayBillFee = 3 // 配送费
BillChargeTypeTimingFee = 10 // 定时宝,保险费
)
//#region 获取门店订单的结算信息 bill/list
type Bill struct {
AppPoiCode string `json:"app_poi_code"` // APP方门店id传商家中台系统里门店的编码。如商家在操作绑定门店至开放平台应用中时未绑定三方门店id信息则默认APP方门店id与美团门店id相同。
StartDate int64 `json:"start_date"` // 秒级时间戳
EndDate int64 `json:"end_date"` // 秒级时间戳
Offset int64 `json:"offset"`
Limit int64 `json:"limit"`
AccessToken string `json:"access_token"`
}
// GetStoreBillList 获取门店的订单账单
/*
1.金额类字段单位使用“分”
2.当日10点前不能查询昨日账单。
3.开始日期和结束日期相隔不能超过7天。
4.仅支持查询90天内的账单。
5.如订单在状态完成之前取消了,则该订单不会记账,本接口不会查询到该订单的账单信息。
6.商家如需对接,请按如下流程申请开通接口权限:请商家发送邮件至 MT.lingshou.open@meituan.com邮件标题【appid+appname】开通日账单接口权限申请 邮件内容:需包括但不限于以下几点:
1需开通账单接口调用权限的应用appid、appname
2开通的目的或背景
3想要实现的效果
4预计开发周期和上线时间
5商家公司授权开通日账单接口的证明。点击下载授权证明模板授权证明以附件形式提供。*/
func (a *API) GetStoreBillList(param *Bill) (map[string]*SettleOrderList, int64, error) {
// 门店订单结算信息(配送费和定时保险费)
orderSettle := make(map[string]*SettleOrderList, 0)
// 门店订单的结算id
var settleID int64 = 0
for {
result, err := a.AccessAPI3("bill/list", true, utils.Struct2Map(param, "", false))
if err != nil {
return nil, 0, err
}
var data *StoreBillListRes
if err := utils.Map2StructByJson(result, &data, false); err != nil {
return nil, 0, err
}
if len(data.Data) > 0 && param.Offset == 0 {
settleID = utils.Str2Int64(data.Data[0].SettleSettingId)
}
for _, v := range data.Data {
settle, ok := orderSettle[v.WmOrderViewId]
if !ok {
settle = &SettleOrderList{OrderId: v.WmOrderViewId}
}
switch v.BillChargeType {
case BillChargeTypeOrder: // 平台结算
settle.PlatformSettlement = v.SettleAmount
case BillChargeTypeWayBillFee: // 运费
settle.DeliveryFee = v.SettleAmount
case BillChargeTypeTimingFee: // 定时宝
settle.TimingFee = v.SettleAmount
default:
continue
}
orderSettle[v.WmOrderViewId] = settle
}
if int64(data.ExtraInfo.TotalCount) >= (param.Offset * param.Limit) {
param.Offset += param.Limit
} else {
break
}
}
return orderSettle, settleID, nil
}
// StoreBillListReq 门店结算查询条件
type StoreBillListReq struct {
AppPoiCode string `json:"app_poi_code"` // APP方门店id
StartDate int64 `json:"start_date"` // 开始时间
EndDate int64 `json:"end_date"` // 结束时间
Offset int64 `json:"offset"` // 偏移量
Limit int64 `json:"limit"` // 最大返回条数 (200)
}
// StoreBillListRes 门店结算返回值
type StoreBillListRes struct {
ExtraInfo ExtraInfoData `json:"extra_info"`
Data []BillListData `json:"data"`
}
type ExtraInfoData struct {
TotalCount int `json:"total_count"` // 当前查询时间条件下返回的账单数据总条数
SettleSum string `json:"settle_sum"` // 当前查询时间条件下返回的账单数据总结算金额settleMilli汇总,单位分
}
type BillListData struct {
Id string `json:"id"` // 账单的唯一标识id
WmPoiName string `json:"wmPoiName"` // 门店名称
BillChargeType int `json:"billChargeType"` // 结算类型
ChargeFeeDesc string `json:"chargeFeeDesc"` // 结算类型描述
UserPayType int `json:"userPayType"` // 用户支付方式
WmPoiOrderPushDayseq string `json:"wmPoiOrderPushDayseq"` // 订单流水号
WmOrderViewId string `json:"wmOrderViewId"` // 订单展示ID
OrderTime string `json:"orderTime"` // 下单时间
FinishTime string `json:"finishTime"` // 完成时间
RefundTime string `json:"refundTime"` // 退款时间
OrderState int `json:"orderState"` // 订单当前状态
ShippingType int `json:"shippingType"` // 订单配送方式以订单完成时刻的配送方式为准。参考值10-商家自配20-美团快送30-美团跑腿40-美团专送50-代理商配送60-到店取餐70-聚合配送80-企客光速达90-企客快速达100-企客及时达120-企客全城送。
ShippingStatus int `json:"shippingStatus"` // 配送状态参考值0-未知1-已推单10-已抢单15-已取餐20-派送中40-已送达100-已取消。如为自配送订单则配送状态默认为0。
AccountState int `json:"accountState"` // 结算状态参考值0-已入账1-未入账。
DaliyBillDate string `json:"daliyBillDate"` // 账单日期
SettleBillDesc string `json:"settleBillDesc"` // 归账日期返回结算周期。商家在美团平台上建店时与美团协议约定的门店结算周期自外卖信息首次发布之日起算。如订单未入账accountState=1此字段返回null。
SettleAmount int64 `json:"settleAmount"` // 商家应收款,单位分。
TotalFoodAmount int64 `json:"totalFoodAmount"` // 商品总价(不含商品包装盒费),单位分。公式:商品总价=商品原价+赠品原价
BoxAmount int64 `json:"boxAmount"` // 商品包装盒费总价,单位分。
ActivityPoiAmount int64 `json:"activityPoiAmount"` // 商家活动总支出金额(含赠品成本),单位分。
ActivityMeituanAmount int64 `json:"activityMeituanAmount"` // 美团活动补贴总金额,单位分。
ActivityAgentAmount int64 `json:"activityAgentAmount"` // 代理商活动承担金额,单位分。
PlatformChargeFee int64 `json:"platformChargeFee"` // 平台服务费,单位分。
PerformanceServiceFee int64 `json:"performanceServiceFee"` // 订单履约服务费金额单位分。如订单无履约服务费则返回0。订单履约服务费金额=基础价格+距离收费+重量收费+节假日收费+品类收费+时段收费)
BaseShippingAmount int64 `json:"baseShippingAmount"` // 履约服务费-基础价格,单位分
Distance int64 `json:"distance"` // 履约服务费-导航距离,获取的导航距离,单位米
DistanceFee int64 `json:"distanceFee"` // 履约服务费-距离收费,距离加价费用,单位分
WeightChargeFee int64 `json:"weightChargeFee"` // 履约服务费-重量收费,重量加价费用,单位分
HolidayChargeFee int64 `json:"holidayChargeFee"` // 履约服务费-节假日收费,单位分
CategoryChargeFee int64 `json:"categoryChargeFee"` // 履约服务费-品类收费,单位分
SlaFee int64 `json:"slaFee"` // 履约服务费-时段收费,时段加价费用,单位分
UserPayShippingAmount int64 `json:"userPayShippingAmount"` // 用户支付配送费,为运费优惠前的金额,单位分。
UserOnlinePayAmount int64 `json:"userOnlinePayAmount"` // 用户在线支付金额,为用户实际支付的订单总金额,单位分。
UserOfflinePayAmount int64 `json:"userOfflinePayAmount"` // 用户线下支付金额,单位分。目前美团订单仅支持在线支付。
Rate int64 `json:"rate"` // 平台服务费的费率,单位百分比(%)。是商家在美团平台建店时,与美团协议约定的每单抽佣比例。
Bottom int64 `json:"bottom"` // 保底金额,单位元。是商家在美团平台建店时,与美团协议约定的每单保底抽佣金额。
RefundId int64 `json:"refund_id"` // 退款id与订单退款消息接口中退款id的值相对应。 目前只有在结算类型(billChargeType)为2,6,7,26,27时该字段会有合法值其他结算类型下该字段值无意义。当billChargeType=2时该字段的取值与订单ID相同。
Discount int64 `json:"discount"` // 分成折扣目前默认返回100。
SettleMilli int64 `json:"settleMilli"` // 结算金额,单位毫。
SettleSettingId string `json:"settleSettingId"` // 结算id表示账期等信息的结算设置id。同一门店的结算设置不变的情况下结算id不变。
WmDonationAmount int64 `json:"wmDonationAmount"` // 青山计划-公益捐赠金额,单位分。
WmDoggyBagAmount int64 `json:"wmDoggyBagAmount"` // 商超-打包袋金额,单位分。注意,打包袋费用规则为: (1)订单打包袋如由美团提供给商家费用结算美团平台则打包袋字段wmDoggyBagAmount为0 (2)订单打包袋如由商家自己提供费用结算给商家则打包袋字段wmDoggyBagAmount为商家设置金额。
DealTip int64 `json:"dealTip"` // 配送小费,单位分。
ProductPreferences float64 `json:"productPreferences"` // 商家活动支出分摊到商品上的优惠总金额,单位分。
NotProductPreferences float64 `json:"notProductPreferences"` // 商家活动支出的未分摊到商品上的总金额,单位分。
WmAppOrderSkuBenefitDetailList []WmAppOrderSkuBenefitDetailList `json:"wmAppOrderSkuBenefitDetailList"` // 商家承担成本的商品优惠分摊明细json格式数组。
WmAppOrderSkuShippingDetailList []MedicalInsuranceFee `json:"wmAppOrderSkuShippingDetailList"` // 商家承担配送费活动分摊明细。
ChargeFeeType int64 `json:"chargeFeeType"` // 用来标识退款是部分退还是退差价,billChargeType为26时该值为1代表 退差价0为部分退。billChargeType为其他值得情况忽略该字段
MedicalInsuranceFee string `json:"medicalInsuranceFee"` // 医保报销费用字段(单位分),只有医保报销的商家这个字段有值
}
type WmAppOrderSkuBenefitDetailList struct {
AppSpuCode string `json:"app_spu_code"` // 原app_food_code字段APP方商品的id即商家中台系统里商品的编码(1) 同一门店内商品id不允许重复(2)字段信息限定长度不超过128个字符。
Name string `json:"name"` // 商品名称。
SkuId string `json:"sku_id"` // 商品sku的规格编码SKU码/货号。
Count int `json:"count"` // 商品数量 注当字段count=0时此账单记录为商家发起的按重量退差价但结算类型仍为“26-闪购品类订单部分退款”billChargeType=26
TotalOriginPrice float64 `json:"totalOriginPrice"` // 商品原价总价(含商品包装盒费),单位分。
TotalActivityPrice float64 `json:"totalActivityPrice"` //商品优惠总金额,包括商家承担金额和美团承担金额,单位分。
TotalReducePrice float64 `json:"totalReducePrice"` // 商品优惠总金额,包括商家承担金额和美团承担金额,单位分。
WmAppOrderActDetails []wmAppOrderActDetails // 商品参与活动详情json格式数组。
}
type wmAppOrderActDetails struct {
ActId int64 `json:"act_id"` // 商品参与活动的活动id
MTType int `json:"type"` // 参与活动的活动类型参考值1-首单立减2-满减优惠4-套餐惠赠优惠9-美团红包11-提前下单减优惠17-折扣商品18-美团专送再减20-第二份半价优惠22-门店新客立减27-指定商品满减40-加价购43-X元M件46-超值换购66-会员折扣商品101-商家代金券优惠117-商品优惠券118-商品折扣券900-首单红包优惠。
PoiCharge float64 `json:"poiCharge"` // 本活动id及活动类型下商家承担的金额单位分。
}
type MedicalInsuranceFee struct {
Name string `json:"name"` // 商品名称。
SkuId string `json:"sku_id"` // 商品sku的规格编码SKU码/货号。
Count int `json:"count"` // 商品数量 注当字段count=0时此账单记录为商家发起的按重量退差价但结算类型仍为“26-闪购品类订单部分退款”billChargeType=26
TotalOriginPrice float64 `json:"totalOriginPrice"` // 商品原价总价(含商品包装盒费),单位分。
TotalPoiCharge float64 `json:"totalPoiCharge"` // 配送费优惠商家承担总金额,单位分。
WmAppOrderShippingActDetailList []wmAppOrderShippingActDetailList `json:"wmAppOrderShippingActDetailList"` // sku商品参与的配送费活动详情。
}
type wmAppOrderShippingActDetailList struct {
MTType int `json:"type"` // 参与配送费活动的活动类型参考值9-美团红包21-会员免配送费25-立减配送费30-满减配送费36-新人减配送费54-新客专享减配送费59-新客专享减配送费300-商家会员减配送费302-预订单减配送费304-减免运费券101-商家代金券优惠305-津贴优惠。
PoiCharge float64 `json:"poiCharge"` // 商家承担金额,单位分。
}
// SettleOrderList 返回值
type SettleOrderList struct {
OrderId string `json:"order_id"` // 订单id
TimingFee int64 `json:"timing_fee"` // 准时保险费
DeliveryFee int64 `json:"delivery_fee"` // 配送费
PlatformSettlement int64 `json:"platform_settlement"` // 平台结算金额
}
//#endregion