diff --git a/business/model/api_config.go b/business/model/api_config.go index 9f56f3469..3eec31ec5 100644 --- a/business/model/api_config.go +++ b/business/model/api_config.go @@ -82,6 +82,11 @@ const ( ) const BrandIdChengShan = 142 // 成山农场品牌id +const ( + DefMaxDeliveryFee = 1500 // 创建运单最高价 + AlarmFee = 1500 // 配送费报警阈值 +) + type VendorInfo struct { Name string `json:"name"` diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index 682bd9740..f908729f7 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -323,12 +323,6 @@ func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder) } if billParams.ShopNo, err = c.getDadaShopID(order, db); err == nil { if billParams.CityCode, err = c.getDataCityCodeFromOrder(order, db); err == nil { - // storeTel := "" - // storeID := jxutils.GetSaleStoreIDFromOrder(order) - // storeDeatail, _ := dao.GetStoreDetail(db, storeID, order.VendorID) - // if storeDeatail.Tel2 != "" { - // storeTel = ",门店电话:" + storeDeatail.Tel2 - // } billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType) billParams.Info = fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, utils.FilterMb4("客户电话:"+order.ConsigneeMobile+","+order.BuyerComment+"配送遇到问题,可联系18048531223取消配送单。")) billParams.CargoType = dadaapi.CargoTypeFresh @@ -339,7 +333,7 @@ func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder) return billParams, err } -// IDeliveryPlatformHandler +// CreateWaybill IDeliveryPlatformHandler func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { db := dao.GetDB() diff --git a/business/partner/delivery/delivery.go b/business/partner/delivery/delivery.go index e3d1d6ebc..8abc288cd 100644 --- a/business/partner/delivery/delivery.go +++ b/business/partner/delivery/delivery.go @@ -18,13 +18,11 @@ const ( warningWeight = 50 * 1000 // 克 // maxDiffFee2Mtps = 200 // 与美团配送最多差价 // maxAddFee = 200 // 最大增加费用,单位为分,超过不发三方配送了 - defMaxDeliveryFee = 10000 // 创建运单最高价 - alarmFee = 1500 // 配送费报警阈值 ) func CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee int64, order *model.GoodsOrder, waybillVendorID int) (err error) { - if maxDeliveryFee <= 0 || maxDeliveryFee > defMaxDeliveryFee { - maxDeliveryFee = defMaxDeliveryFee + if maxDeliveryFee <= 0 || maxDeliveryFee > model.DefMaxDeliveryFee { + maxDeliveryFee = model.DefMaxDeliveryFee } if deliveryFee > maxDeliveryFee { errStr := fmt.Sprintf("超最高限价, 所需运费:%s, 最高限价:%s", jxutils.IntPrice2StandardCurrencyString(deliveryFee), jxutils.IntPrice2StandardCurrencyString(maxDeliveryFee)) @@ -139,8 +137,8 @@ func CalculateBillDeliveryFee(bill *model.Waybill) (deliveryFee, addFee int64) { // 日志提示检查订单运费 func OnWaybillCreated(waybill *model.Waybill) { deliveryFee := int64(math.Max(float64(waybill.DesiredFee), float64(waybill.ActualFee))) - if deliveryFee > alarmFee { + if deliveryFee > model.AlarmFee { globals.SugarLogger.Infof("[运营]%s订单, orderID:%s, 成功创建%s运单:%s, 配送费:%s太高(大于%s),请知悉!", model.VendorChineseNames[waybill.OrderVendorID], waybill.VendorOrderID, - model.VendorChineseNames[waybill.WaybillVendorID], waybill.VendorWaybillID, jxutils.IntPrice2StandardCurrencyString(deliveryFee), jxutils.IntPrice2StandardCurrencyString(alarmFee)) + model.VendorChineseNames[waybill.WaybillVendorID], waybill.VendorWaybillID, jxutils.IntPrice2StandardCurrencyString(deliveryFee), jxutils.IntPrice2StandardCurrencyString(model.AlarmFee)) } } diff --git a/business/partner/delivery/fn/waybill.go b/business/partner/delivery/fn/waybill.go index 09c34caf0..42ae01deb 100644 --- a/business/partner/delivery/fn/waybill.go +++ b/business/partner/delivery/fn/waybill.go @@ -100,6 +100,15 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) } + // 获取配送费 + fee, err := c.GetWaybillFee(order) + if err != nil { + return nil, err + } + if fee.DeliveryFee >= model.DefMaxDeliveryFee { + return nil, fmt.Errorf("蜂鸟超最高限价, 所需运费:%s, 最高限价:%s", jxutils.IntPrice2StandardCurrencyString(fee.DeliveryFee), jxutils.IntPrice2StandardCurrencyString(model.DefMaxDeliveryFee)) + } + // 蜂鸟入参结构体 parameter := &fnpsapi.CreateOrderReqParam{ PartnerOrderCode: order.VendorOrderID, diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 01e7b71b7..664f5b330 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -323,7 +323,7 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { db := dao.GetDB() // 检查配送平台是否被禁用 - vendorOrgCode, err := dao.GetVendorOrgCode(db, model.VendorIDFengNiao, "", model.VendorOrgTypeDelivery) + vendorOrgCode, err := dao.GetVendorOrgCode(db, model.VendorIDMTPS, "", model.VendorOrgTypeDelivery) if err != nil { return nil, err } @@ -331,6 +331,14 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) } + fee, err := c.GetWaybillFee(order) + if err != nil { + return nil, err + } + if fee.DeliveryFee >= model.DefMaxDeliveryFee { + return nil, fmt.Errorf("美团配送超最高限价, 所需运费:%s, 最高限价:%s", jxutils.IntPrice2StandardCurrencyString(fee.DeliveryFee), jxutils.IntPrice2StandardCurrencyString(model.DefMaxDeliveryFee)) + } + // 忽略坐标转换错误,即使是转换出错,也只能当成转换成功来处理,底层会有错误日志输出 lngFloat, latFloat, _ := jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType) billParams := &mtpsapi.CreateOrderByShopParam{ diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index 393bec622..5e3b0e0b1 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -89,6 +89,14 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) } + fee, err := d.GetWaybillFee(order) + if err != nil { + return nil, err + } + if fee.DeliveryFee >= model.DefMaxDeliveryFee { + return nil, fmt.Errorf("顺丰超最高限价, 所需运费:%s, 最高限价:%s", jxutils.IntPrice2StandardCurrencyString(fee.DeliveryFee), jxutils.IntPrice2StandardCurrencyString(model.DefMaxDeliveryFee)) + } + store, err := dao.GetStoreDetail(dao.GetDB(), getReallyStoreID(order.StoreID, order.JxStoreID), 0, "") if err != nil { return nil, err diff --git a/business/partner/delivery/uupt/waybill.go b/business/partner/delivery/uupt/waybill.go index 0372576d6..58f9544d8 100644 --- a/business/partner/delivery/uupt/waybill.go +++ b/business/partner/delivery/uupt/waybill.go @@ -139,6 +139,14 @@ func (d DeliveryHandler) IsErrStoreExist(err error) bool { } func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { + fee, err := d.GetWaybillFee(order) + if err != nil { + return nil, err + } + if fee.DeliveryFee >= model.DefMaxDeliveryFee { + return nil, fmt.Errorf("顺丰超最高限价, 所需运费:%s, 最高限价:%s", jxutils.IntPrice2StandardCurrencyString(fee.DeliveryFee), jxutils.IntPrice2StandardCurrencyString(model.DefMaxDeliveryFee)) + } + //获取门店老板详情 storeOwner, err := dao.GetStoreDetail(dao.GetDB(), getReallyStoreID(order.StoreID, order.JxStoreID), 0, "") if err != nil {