1
This commit is contained in:
@@ -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{}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user