This commit is contained in:
邹宗楠
2023-06-28 11:24:09 +08:00
parent 1952a934f8
commit 10036ef262
7 changed files with 430 additions and 396 deletions

View File

@@ -270,7 +270,7 @@ func (c *DeliveryHandler) callbackMsg2Waybill(msg *mtpsapi.CallbackOrderMsg) (re
// return deliveryFeeInfo, err
//}
// 新方法平台返回
// GetWaybillFee 新方法平台返回(预下单)
func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) {
shopWeight := float64(order.Weight) / float64(order.Weight)
if shopWeight > 50 {
@@ -285,7 +285,7 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
return nil, err
}
deliveryFeeInfo.RefDeliveryFee, deliveryFeeInfo.RefAddFee, err = api.MtpsAPI.PreCreateByShop(&mtpsapi.PreCreateByShopParam{
param := &mtpsapi.PreCreateByShopParam{
DeliveryID: deliveryID,
OrderID: order.VendorOrderID,
ShopID: shopId,
@@ -300,13 +300,19 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
PayTypeCode: 0,
ExpectedDeliveryTime: mtpsapi.DeliveryServiceCodeRapid, // 4002飞速达,4011快速达,4012及时达,4013集中送
OuterOrderSourceDesc: "101",
})
}
if param.GoodsWidth <= model.NO {
param.GoodsWidth = model.YES
}
deliveryFeeInfo.RefDeliveryFee, deliveryFeeInfo.RefAddFee, err = api.MtpsAPI.PreCreateByShop(param)
deliveryFeeInfo.DeliveryFee = deliveryFeeInfo.RefDeliveryFee
return deliveryFeeInfo, err
}
// IDeliveryPlatformHandler(美团配送)
// CreateWaybill(美团配送)
func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) {
db := dao.GetDB()
// 检查配送平台是否被禁用
@@ -318,16 +324,6 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment)
}
// 自定义计算预估费用
//deliveryFee, _, err := delivery.CalculateOrderDeliveryFee(order, time.Now(), db)
//if err != nil {
// return nil, err
//}
// 运费预警
//if err = delivery.CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee, order, model.VendorIDMTPS); err != nil {
// return nil, err
//}
// 忽略坐标转换错误,即使是转换出错,也只能当成转换成功来处理,底层会有错误日志输出
lngFloat, latFloat, _ := jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
billParams := &mtpsapi.CreateOrderByShopParam{
@@ -344,6 +340,9 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
// ExpectedDeliveryTime: order.ExpectedDeliveredTime.Unix(),
OrderType: mtpsapi.OrderTypeASAP,
}
if billParams.GoodsWidth <= model.NO {
billParams.GoodsWidth = model.YES
}
// 获取送货单id
billParams.DeliveryID = c.getDeliveryID(order)
@@ -357,12 +356,27 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
Goods: []*mtpsapi.GoodsItem{},
}
goodItemMap := map[string]*mtpsapi.GoodsItem{}
for _, sku := range order.Skus {
goodItem := &mtpsapi.GoodsItem{
GoodCount: sku.Count,
GoodPrice: jxutils.IntPrice2Standard(sku.SalePrice),
if len(order.Skus) > model.NO {
for _, sku := range order.Skus {
goodItem := &mtpsapi.GoodsItem{
GoodCount: sku.Count,
GoodPrice: jxutils.IntPrice2Standard(sku.SalePrice),
}
goodItem.GoodName, goodItem.GoodUnit = jxutils.GetNameAndUnitFromSkuName(sku.SkuName)
// 好像SKU名不能重复否则会报错尝试处理一下
if item, ok := goodItemMap[goodItem.GoodName]; !ok {
goods.Goods = append(goods.Goods, goodItem)
goodItemMap[goodItem.GoodName] = goodItem
} else {
item.GoodCount += goodItem.GoodCount
}
}
goodItem.GoodName, goodItem.GoodUnit = jxutils.GetNameAndUnitFromSkuName(sku.SkuName)
} else {
goodItem := &mtpsapi.GoodsItem{
GoodCount: model.YES,
GoodPrice: jxutils.IntPrice2Standard(model.YES),
}
goodItem.GoodName, goodItem.GoodUnit = jxutils.GetNameAndUnitFromSkuName("本地暂无商品信息 500g/份")
// 好像SKU名不能重复否则会报错尝试处理一下
if item, ok := goodItemMap[goodItem.GoodName]; !ok {
goods.Goods = append(goods.Goods, goodItem)