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

@@ -121,19 +121,32 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
}
// 重量超标减少配送费
weight := 4.9500
if utils.Int2Float64(order.Weight)/1000 >= weight {
reallyWeight := utils.Int2Float64(order.Weight) / 1000
if reallyWeight >= weight || reallyWeight <= model.NO {
parameter.GoodsWeight = weight
} else {
parameter.GoodsWeight = reallyWeight
}
var goodsList []*fnpsapi.GoodsItemsList
for _, v := range order.Skus {
if len(order.Skus) == model.NO {
goodsList = append(goodsList, &fnpsapi.GoodsItemsList{
ItemName: v.SkuName,
ItemQuantity: v.Count,
ItemAmountCent: v.SalePrice,
ItemActualAmountCent: v.SalePrice,
ItemId: utils.Int2Str(v.SkuID),
ItemName: "平台商品(本地暂无储存信息)",
ItemQuantity: model.YES,
ItemAmountCent: model.YES,
ItemActualAmountCent: model.YES,
ItemId: utils.Int2Str(9527),
})
} else {
for _, v := range order.Skus {
goodsList = append(goodsList, &fnpsapi.GoodsItemsList{
ItemName: v.SkuName,
ItemQuantity: v.Count,
ItemAmountCent: v.SalePrice,
ItemActualAmountCent: v.SalePrice,
ItemId: utils.Int2Str(v.SkuID),
})
}
}
parameter.GoodsItemList = goodsList
@@ -181,20 +194,34 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
}
// 重量超标减少配送费
weight := 4.9500
if utils.Int2Float64(order.Weight)/1000 >= weight {
reallyWeight := utils.Int2Float64(order.Weight) / 1000
if reallyWeight >= weight || reallyWeight <= model.NO {
preCreateOrder.GoodsWeight = weight
} else {
preCreateOrder.GoodsWeight = reallyWeight
}
var goodsList []*fnpsapi.GoodsItemsList
for _, v := range order.Skus {
if len(order.Skus) == model.NO {
goodsList = append(goodsList, &fnpsapi.GoodsItemsList{
ItemName: v.SkuName,
ItemQuantity: v.Count,
ItemAmountCent: v.SalePrice,
ItemActualAmountCent: v.SalePrice,
ItemId: utils.Int2Str(v.SkuID),
ItemName: "平台商品(本地暂无储存信息)",
ItemQuantity: model.YES,
ItemAmountCent: model.YES,
ItemActualAmountCent: model.YES,
ItemId: utils.Int2Str(9527),
})
} else {
for _, v := range order.Skus {
goodsList = append(goodsList, &fnpsapi.GoodsItemsList{
ItemName: v.SkuName,
ItemQuantity: v.Count,
ItemAmountCent: v.SalePrice,
ItemActualAmountCent: v.SalePrice,
ItemId: utils.Int2Str(v.SkuID),
})
}
}
preCreateOrder.GoodsItemList = goodsList
deliveryFeeInfo = &partner.WaybillFeeInfo{}

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)

View File

@@ -90,7 +90,7 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i
weight int
productDetail []*sfps2.ProductDetail
)
if order.Weight >= 49500 {
if order.Weight >= 49500 || order.Weight <= model.NO {
weight = 49500
} else {
weight = order.Weight
@@ -127,10 +127,17 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i
},
}
for _, v := range order.Skus {
if len(order.Skus) != model.NO {
for _, v := range order.Skus {
productDetail = append(productDetail, &sfps2.ProductDetail{
ProductName: v.SkuName,
ProductNum: int64(v.Count),
})
}
} else {
productDetail = append(productDetail, &sfps2.ProductDetail{
ProductName: v.SkuName,
ProductNum: int64(v.Count),
ProductName: "本地暂无商品储存信息",
ProductNum: int64(model.YES),
})
}
param.OrderDetail.ProductDetail = productDetail
@@ -192,13 +199,15 @@ func (d DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int,
func (d DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) {
var (
weight int
//productDetail []*sfps2.ProductDetail
)
if order.Weight >= 49500 {
// 默认重量
if order.Weight >= 49500 || order.Weight <= 0 {
weight = 49500
} else {
weight = order.Weight
}
store, err := dao.GetStoreDetail(dao.GetDB(), getReallyStoreID(order.StoreID, order.JxStoreID), 0, "")
if err != nil {
return nil, err