diff --git a/business/model/order.go b/business/model/order.go index 53b2fa605..c7aa0ee06 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -27,6 +27,7 @@ type GoodsOrder struct { SalePrice int64 `json:"salePrice"` // 售卖价 ActualPayPrice int64 `json:"actualPayPrice"` // 单位为分 顾客实际支付 TotalShopMoney int64 `json:"totalShopMoney"` // 应结金额-第三方平台结算给京西的金额(包括了所有的补贴,扣除) + DiscountMoney int64 `json:"discountMoney"` // 订单级优惠金额 PmSubsidyMoney int64 `json:"pmSubsidyMoney"` // 平台活动补贴(订单主体活动补贴+订单单条sku补贴)1+ DistanceFreightMoney int64 `json:"distanceFreightMoney"` // 商户承担的远距离配送费(当前只有京东到家有值) WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费 diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index a20cf98ed..9721ff367 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -100,7 +100,9 @@ func (p *PurchaseHandler) GetOrder4PartRefund(vendorOrderID string) (order *mode order = p.Map2Order(result1) if err2 == nil { order.Skus = p.partRefund2OrderDetailSkuList(utils.Interface2String(result2["order_id"]), result2["order_detail"]) - order.Skus = append(order.Skus, getZengSkus(vendorOrderID, result1)...) + giftSkus, discountMoney := getZengSkus(vendorOrderID, result1) + order.DiscountMoney = discountMoney + order.Skus = append(order.Skus, giftSkus...) order.ActualPayPrice = utils.MustInterface2Int64(result2["user_fee"]) jxutils.RefreshOrderSkuRelated(order) } else if err2Ext, ok := err2.(*utils.ErrorWithCode); !ok || err2Ext.IntCode() != ebaiapi.ErrOrderIsNotPartRefund { @@ -112,10 +114,11 @@ func (p *PurchaseHandler) GetOrder4PartRefund(vendorOrderID string) (order *mode return order, err } -func getZengSkus(orderID string, orderMan map[string]interface{}) (skus []*model.OrderSku) { +func getZengSkus(orderID string, orderMan map[string]interface{}) (skus []*model.OrderSku, discountMoney int64) { discounts, _ := orderMan["discount"].([]interface{}) for _, v := range discounts { discount := v.(map[string]interface{}) + discountMoney += utils.Interface2Int64WithDefault(discount["fee"], 0) if utils.Interface2String(discount["type"]) == ebaiapi.OrderSkuDiscountTypeZeng { sku := &model.OrderSku{ VendorOrderID: orderID, @@ -129,7 +132,7 @@ func getZengSkus(orderID string, orderMan map[string]interface{}) (skus []*model skus = append(skus, sku) } } - return skus + return skus, discountMoney } func (p *PurchaseHandler) partRefund2OrderDetailSkuList(orderID string, orderDetail2 interface{}) (skuList []*model.OrderSku) { @@ -247,7 +250,9 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo // } order.Skus = append(order.Skus, sku) } - order.Skus = append(order.Skus, getZengSkus(vendorOrderID, orderData)...) + giftSkus, discountMoney := getZengSkus(vendorOrderID, orderData) + order.DiscountMoney = discountMoney + order.Skus = append(order.Skus, giftSkus...) jxutils.RefreshOrderSkuRelated(order) return order } diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 8829b8aae..c62f88898 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -201,7 +201,11 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo } order.ConsigneeLng = jxutils.StandardCoordinate2Int(originalLng) order.ConsigneeLat = jxutils.StandardCoordinate2Int(originalLat) - // discounts := result["discount"].(map[string]interface{}) + discounts, _ := result["discount"].(map[string]interface{}) + for _, v := range discounts { + discount := v.(map[string]interface{}) + order.DiscountMoney += utils.Interface2Int64WithDefault(discount["discountPrice"], 0) + } for _, product2 := range result["product"].([]interface{}) { product := product2.(map[string]interface{}) sku := &model.OrderSku{ diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 442bd2245..c5d78e98e 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -153,6 +153,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo panic(fmt.Sprintf("mtwm Map2Order vendorID:%s failed with error:%v", vendorOrderID, err)) } for _, extra := range extraList { + order.DiscountMoney += jxutils.StandardPrice2Int(extra.ReduceFee) if extra.Type == mtwmapi.ExtrasPromotionTypeTaoCanZeng || extra.Type == mtwmapi.ExtrasPromotionTypeManZeng { sku := &model.OrderSku{ VendorOrderID: order.VendorOrderID,