diff --git a/business/jxcallback/scheduler/defsch/defsch_ext.go b/business/jxcallback/scheduler/defsch/defsch_ext.go index 92a20f998..2262468f1 100644 --- a/business/jxcallback/scheduler/defsch/defsch_ext.go +++ b/business/jxcallback/scheduler/defsch/defsch_ext.go @@ -157,6 +157,7 @@ func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Contex } newPrice = maxFee } + // 门店支出运费 expend, lastFee, _ := partner.CurStoreAcctManager.GetStoreAcctExpendLastCreateWayBillFee(order.VendorOrderID) if int(newPrice) > lastFee { partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), int(model.Waybill{}.DesiredFee), partner.StoreAcctTypeExpendCreateWaybill2ndMore, order.VendorOrderID, expend.ID) //int(newPrice)-lastFee diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index cd9e83d7f..8188fadcb 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -252,22 +252,26 @@ func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder) // IDeliveryPlatformHandler func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { db := dao.GetDB() - if vendorOrgCode, err := dao.GetVendorOrgCode(db, model.VendorIDDada, "", model.VendorOrgTypeDelivery); err == nil { - if len(vendorOrgCode) > 0 { - if vendorOrgCode[0].IsOpen == model.YES { - return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) - } - } - } else { + + // 判断配送平台是否被关闭 + vendorOrgCode, err := dao.GetVendorOrgCode(db, model.VendorIDDada, "", model.VendorOrgTypeDelivery) + if err != nil { return nil, err } + + if len(vendorOrgCode) > 0 && vendorOrgCode[0].IsOpen == model.YES { + return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) + } + + // 获取达达第三方订单参数 billParams, err := c.getBillParams(db, order) - if err == nil { - //if globals.EnableStoreWrite - { - // 达达要求第二次创建运单,调用函数不同。所以查找两天内有无相同订单号的运单 - var waybillList []*model.Waybill - err2 := dao.GetRows(db, &waybillList, ` + if err != nil { + return nil, err + } + + // 达达要求第二次创建运单,调用函数不同。所以查找两天内有无相同订单号的运单 + var waybillList []*model.Waybill + err = dao.GetRows(db, &waybillList, ` SELECT * FROM waybill WHERE waybill_created_at > DATE_ADD(NOW(), interval -2 day) @@ -275,47 +279,52 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee AND waybill_vendor_id = ? ORDER BY id DESC `, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID), model.VendorIDDada) - var result *dadaapi.CreateOrderResponse - if err = err2; err == nil && len(waybillList) > 0 && waybillList[0].Status != model.WaybillStatusFailed { - // 再次创建 - globals.SugarLogger.Debugf("CreateWaybill orderID:%s len(waybillList)=%d use ReaddOrder", order.VendorOrderID, len(waybillList)) - if err = delivery.CallCreateWaybillPolicy(waybillList[0].ActualFee, maxDeliveryFee, order, model.VendorIDDada); err != nil { - return nil, err - } - // result, err = api.DadaAPI.ReaddOrder(billParams, addParams) - result, err = api.DadaAPI.ReaddOrder(billParams) - } else { - // 第一次创建 - if err != nil { - globals.SugarLogger.Warnf("CreateWaybill orderID:%s error:%v", order.VendorOrderID, err) - } - if false { - result, err = api.DadaAPI.AddOrder(billParams) - } else { - if result, err = api.DadaAPI.QueryDeliverFee(billParams); err != nil { - return nil, err - } - if err = delivery.CallCreateWaybillPolicy(jxutils.StandardPrice2Int(result.Fee), maxDeliveryFee, order, model.VendorIDDada); err != nil { - return nil, err - } - err = api.DadaAPI.AddOrderAfterQuery(result.DeliveryNo) - } - } - if err == nil && result != nil { - bill = &model.Waybill{ - VendorOrderID: order.VendorOrderID, - OrderVendorID: order.VendorID, - WaybillVendorID: model.VendorIDDada, - DesiredFee: jxutils.StandardPrice2Int(result.Fee), - ActualFee: jxutils.StandardPrice2Int(result.Fee), - } - delivery.OnWaybillCreated(bill) - } - } - //else { - // err = fmt.Errorf("测试环境不能真正创建运单") - //} + if err != nil { + return nil, err } + + // 检查两天内是否有订单 + var result *dadaapi.CreateOrderResponse + if len(waybillList) > 0 && waybillList[0].Status != model.WaybillStatusFailed { + globals.SugarLogger.Debugf("CreateWaybill orderID:%s len(waybillList)=%d use ReaddOrder", order.VendorOrderID, len(waybillList)) + // 检索达达配送费阀值 + if err = delivery.CallCreateWaybillPolicy(waybillList[0].ActualFee, maxDeliveryFee, order, model.VendorIDDada); err != nil { + return nil, err + } + // 重新发送订单 + result, err = api.DadaAPI.ReaddOrder(billParams) + if err != nil { + globals.SugarLogger.Warnf("CreateWaybill orderID:%s error:%v", order.VendorOrderID, err) + return nil, err + } + } else { + // 第一次发布订单(预发布,先查询订单运费获取平台订单号,在调用查询订单后接口发布订单) + // 查询达达订单费用 + if result, err = api.DadaAPI.QueryDeliverFee(billParams); err != nil { + return nil, err + } + // 阀值警报 + if err = delivery.CallCreateWaybillPolicy(jxutils.StandardPrice2Int(result.Fee), maxDeliveryFee, order, model.VendorIDDada); err != nil { + return nil, err + } + // 真实发布订单 + if err = api.DadaAPI.AddOrderAfterQuery(result.DeliveryNo); err != nil { + globals.SugarLogger.Warnf("CreateWaybill for Dada order err , orderID:%s error:%v", order.VendorOrderID, err) + return nil, err + } + } + if result == nil { + return nil, errors.New("达达配送,平台调用错误,无订单数据返回") + } + + bill = &model.Waybill{ + VendorOrderID: order.VendorOrderID, + OrderVendorID: order.VendorID, + WaybillVendorID: model.VendorIDDada, + DesiredFee: jxutils.StandardPrice2Int(result.Fee), + ActualFee: jxutils.StandardPrice2Int(result.Fee), + } + delivery.OnWaybillCreated(bill) return bill, err } diff --git a/business/partner/delivery/delivery.go b/business/partner/delivery/delivery.go index 1a9187f6d..9fa7a9989 100644 --- a/business/partner/delivery/delivery.go +++ b/business/partner/delivery/delivery.go @@ -140,6 +140,7 @@ func CalculateBillDeliveryFee(bill *model.Waybill) (deliveryFee, addFee int64) { return deliveryFee, addFee } +// 日志提示检查订单运费 func OnWaybillCreated(waybill *model.Waybill) { deliveryFee := int64(math.Max(float64(waybill.DesiredFee), float64(waybill.ActualFee))) if deliveryFee > alarmFee { diff --git a/business/partner/delivery/fn/waybill.go b/business/partner/delivery/fn/waybill.go index 0df725eec..feb8e36c3 100644 --- a/business/partner/delivery/fn/waybill.go +++ b/business/partner/delivery/fn/waybill.go @@ -87,90 +87,99 @@ func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, reson return err } +// 创建蜂鸟配送订单 func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { - var ( - db = dao.GetDB() - ) - if vendorOrgCode, err := dao.GetVendorOrgCode(db, model.VendorIDFengNiao, "", model.VendorOrgTypeDelivery); err == nil { - if len(vendorOrgCode) > 0 { - if vendorOrgCode[0].IsOpen == model.YES { - return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) - } - } - } else { + db := dao.GetDB() + + // 检查配送平台是否被禁用 + vendorOrgCode, err := dao.GetVendorOrgCode(db, model.VendorIDFengNiao, "", model.VendorOrgTypeDelivery) + if err != nil { return nil, err } - storeDetail, err := dao.GetStoreDetail(db, order.StoreID, order.VendorID, order.VendorOrgCode) - deliveryFee, _, err := delivery.CalculateOrderDeliveryFee(order, time.Now(), db) - if err == nil { - if err = delivery.CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee, order, model.VendorIDFengNiao); err != nil { - return nil, err - } - params := &fnpsapi.CreateOrderParam{ - PartnerOrderCode: order.VendorOrderID, - NotifyURL: globals.FnNotifyURL, - ChainStoreCode: utils.Int2Str(jxutils.GetSaleStoreIDFromOrder(order)), - OrderType: 1, //即时达 - TransportInfo: &fnpsapi.TransportInfo{ - TransportName: order.StoreName, - TransportAddress: storeDetail.Address, - TransportLongitude: jxutils.IntCoordinate2Standard(storeDetail.Lng), - TransportLatitude: jxutils.IntCoordinate2Standard(storeDetail.Lat), - PositionSource: 3, - TransportTel: storeDetail.Tel1, - }, - OrderAddTime: order.OrderCreatedAt.UnixNano() / 1e6, - OrderTotalAmount: jxutils.IntPrice2Standard(order.SalePrice), - OrderActualAmount: jxutils.IntPrice2Standard(order.ActualPayPrice), - OrderWeight: float64(jxutils.IntWeight2Float(order.Weight)), - OrderRemark: utils.FilterMb4("客户电话:" + order.ConsigneeMobile + "," + order.BuyerComment + ",取货失败或配送遇到问题请联系18048531223,禁止未配送直接完成定单!"), - IsInvoiced: 0, - OrderPaymentStatus: 1, - OrderPaymentMethod: 1, - IsAgentPayment: 0, - GoodsCount: order.GoodsCount, - ReceiverInfo: &fnpsapi.ReceiverInfo{ - ReceiverName: order.ConsigneeName, - ReceiverAddress: order.ConsigneeAddress, - ReceiverLongitude: jxutils.IntCoordinate2Standard(order.ConsigneeLng), - ReceiverLatitude: jxutils.IntCoordinate2Standard(order.ConsigneeLat), - ReceiverPrimaryPhone: order.ConsigneeMobile, - ReceiverSecondPhone: order.ConsigneeMobile2, - PositionSource: 3, - }, - SerialNumber: model.VendorNames[order.VendorID] + " #" + utils.Int2Str(order.OrderSeq), - } - var skuInfo []*fnpsapi.ItemsJSON - for _, v := range order.Skus { - skuInfo = append(skuInfo, &fnpsapi.ItemsJSON{ - ItemID: utils.Int2Str(v.SkuID), - ItemName: v.SkuName, - ItemQuantity: v.Count, - ItemPrice: jxutils.IntPrice2Standard(v.SalePrice), - ItemActualPrice: jxutils.IntPrice2Standard(v.SalePrice), - }) - } - params.ItemsJSON = skuInfo - //要求饿百的订单要传来源 - if order.VendorID == model.VendorIDEBAI { - params.OrderSource = "109" - params.ChannelOrderCode = order.VendorOrderID - } - err = api.FnAPI.CreateOrder(params) - if err == nil { - bill = &model.Waybill{ - VendorOrderID: order.VendorOrderID, - OrderVendorID: order.VendorID, - VendorWaybillID: "", - VendorWaybillID2: "", - WaybillVendorID: model.VendorIDFengNiao, - DesiredFee: deliveryFee, - } - delivery.OnWaybillCreated(bill) - } else { - globals.SugarLogger.Debugf("CreateWaybill failed, orderID:%s, billParams:%v, error:%v", order.VendorOrderID, params, err) - } + if len(vendorOrgCode) > 0 && vendorOrgCode[0].IsOpen == model.YES { + return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) } + + // 购物平台信息 + storeDetail, err := dao.GetStoreDetail(db, order.StoreID, order.VendorID, order.VendorOrgCode) + // 自定义配送费 + deliveryFee, _, err := delivery.CalculateOrderDeliveryFee(order, time.Now(), db) + if err != nil { + return nil, err + } + if err = delivery.CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee, order, model.VendorIDFengNiao); err != nil { + return nil, err + } + + // 蜂鸟入参结构体 + params := &fnpsapi.CreateOrderParam{ + PartnerOrderCode: order.VendorOrderID, + NotifyURL: globals.FnNotifyURL, + ChainStoreCode: utils.Int2Str(jxutils.GetSaleStoreIDFromOrder(order)), + OrderType: 1, //即时达 + TransportInfo: &fnpsapi.TransportInfo{ + TransportName: order.StoreName, + TransportAddress: storeDetail.Address, + TransportLongitude: jxutils.IntCoordinate2Standard(storeDetail.Lng), + TransportLatitude: jxutils.IntCoordinate2Standard(storeDetail.Lat), + PositionSource: 3, + TransportTel: storeDetail.Tel1, + }, + OrderAddTime: order.OrderCreatedAt.UnixNano() / 1e6, + OrderTotalAmount: jxutils.IntPrice2Standard(order.SalePrice), + OrderActualAmount: jxutils.IntPrice2Standard(order.ActualPayPrice), + OrderWeight: float64(jxutils.IntWeight2Float(order.Weight)), + OrderRemark: utils.FilterMb4("客户电话:" + order.ConsigneeMobile + "," + order.BuyerComment + ",取货失败或配送遇到问题请联系18048531223,禁止未配送直接完成定单!"), + IsInvoiced: 0, + OrderPaymentStatus: 1, + OrderPaymentMethod: 1, + IsAgentPayment: 0, + GoodsCount: order.GoodsCount, + ReceiverInfo: &fnpsapi.ReceiverInfo{ + ReceiverName: order.ConsigneeName, + ReceiverAddress: order.ConsigneeAddress, + ReceiverLongitude: jxutils.IntCoordinate2Standard(order.ConsigneeLng), + ReceiverLatitude: jxutils.IntCoordinate2Standard(order.ConsigneeLat), + ReceiverPrimaryPhone: order.ConsigneeMobile, + ReceiverSecondPhone: order.ConsigneeMobile2, + PositionSource: 3, + }, + SerialNumber: model.VendorNames[order.VendorID] + " #" + utils.Int2Str(order.OrderSeq), + } + var skuInfo []*fnpsapi.ItemsJSON + for _, v := range order.Skus { + skuInfo = append(skuInfo, &fnpsapi.ItemsJSON{ + ItemID: utils.Int2Str(v.SkuID), + ItemName: v.SkuName, + ItemQuantity: v.Count, + ItemPrice: jxutils.IntPrice2Standard(v.SalePrice), + ItemActualPrice: jxutils.IntPrice2Standard(v.SalePrice), + }) + } + params.ItemsJSON = skuInfo + + //要求饿百的订单要传来源 + if order.VendorID == model.VendorIDEBAI { + params.OrderSource = "109" + params.ChannelOrderCode = order.VendorOrderID + } + + // 创建蜂鸟订单 + err = api.FnAPI.CreateOrder(params) + if err != nil { + globals.SugarLogger.Debugf("CreateWaybill failed, orderID:%s, billParams:%v, error:%v", order.VendorOrderID, params, err) + return nil, err + } + + bill = &model.Waybill{ + VendorOrderID: order.VendorOrderID, + OrderVendorID: order.VendorID, + VendorWaybillID: "", + VendorWaybillID2: "", + WaybillVendorID: model.VendorIDFengNiao, + DesiredFee: deliveryFee, + } + delivery.OnWaybillCreated(bill) return bill, err } diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index eefe91462..8d37e9acc 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -191,101 +191,98 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf // IDeliveryPlatformHandler(美团配送) func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { db := dao.GetDB() - if vendorOrgCode, err := dao.GetVendorOrgCode(db, model.VendorIDMTPS, "", model.VendorOrgTypeDelivery); err == nil { - if len(vendorOrgCode) > 0 { - if vendorOrgCode[0].IsOpen == model.YES { - return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) - } - } - } else { + + // 检查配送平台是否被禁用 + vendorOrgCode, err := dao.GetVendorOrgCode(db, model.VendorIDFengNiao, "", model.VendorOrgTypeDelivery) + if err != nil { return nil, err } + if len(vendorOrgCode) > 0 && vendorOrgCode[0].IsOpen == model.YES { + return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) + } // 自定义计算预估费用 - deliveryFee, _, err := delivery.CalculateOrderDeliveryFee(order, time.Now(), db) - if err == nil { - if err = delivery.CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee, order, model.VendorIDMTPS); err != nil { - return nil, err + //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{ + OrderID: jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID), + DeliveryServiceCode: mtpsapi.DeliveryServiceCodeRapid, + ReceiverName: utils.FilterMb4(order.ConsigneeName), + ReceiverAddress: utils.FilterMb4(order.ConsigneeAddress), + ReceiverPhone: order.ConsigneeMobile, + CoordinateType: model.CoordinateTypeMars, + ReceiverLng: jxutils.StandardCoordinate2Int(lngFloat), + ReceiverLat: jxutils.StandardCoordinate2Int(latFloat), + GoodsValue: jxutils.IntPrice2Standard(order.ActualPayPrice), // todo 超价处理 + GoodsWeight: float64(jxutils.IntWeight2Float(limitOrderWeight(order.Weight))), + // ExpectedDeliveryTime: order.ExpectedDeliveredTime.Unix(), + OrderType: mtpsapi.OrderTypeASAP, + } + + // 获取送货单id + if billParams.DeliveryID, err = c.getDeliveryID(order, db); err != nil { + return nil, err + } + // 获取商铺id + if billParams.ShopID, err = c.getMTPSShopID(order, db); err != nil { + return nil, err + } + + // 获取美团入参结构体 + goods := &mtpsapi.GoodsDetail{ + Goods: []*mtpsapi.GoodsItem{}, + } + goodItemMap := map[string]*mtpsapi.GoodsItem{} + for _, sku := range order.Skus { + goodItem := &mtpsapi.GoodsItem{ + GoodCount: sku.Count, + GoodPrice: jxutils.IntPrice2Standard(sku.SalePrice), } - // 忽略坐标转换错误,即使是转换出错,也只能当成转换成功来处理,底层会有错误日志输出 - lngFloat, latFloat, _ := jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType) - billParams := &mtpsapi.CreateOrderByShopParam{ - OrderID: jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID), - DeliveryServiceCode: mtpsapi.DeliveryServiceCodeRapid, - ReceiverName: utils.FilterMb4(order.ConsigneeName), - ReceiverAddress: utils.FilterMb4(order.ConsigneeAddress), - ReceiverPhone: order.ConsigneeMobile, - CoordinateType: model.CoordinateTypeMars, - ReceiverLng: jxutils.StandardCoordinate2Int(lngFloat), - ReceiverLat: jxutils.StandardCoordinate2Int(latFloat), - GoodsValue: jxutils.IntPrice2Standard(order.ActualPayPrice), // todo 超价处理 - GoodsWeight: float64(jxutils.IntWeight2Float(limitOrderWeight(order.Weight))), - // ExpectedDeliveryTime: order.ExpectedDeliveredTime.Unix(), - OrderType: mtpsapi.OrderTypeASAP, - } - if billParams.DeliveryID, err = c.getDeliveryID(order, db); err == nil { - if billParams.ShopID, err = c.getMTPSShopID(order, db); err == nil { - globals.SugarLogger.Debug(billParams.ShopID) - goods := &mtpsapi.GoodsDetail{ - Goods: []*mtpsapi.GoodsItem{}, - } - goodItemMap := map[string]*mtpsapi.GoodsItem{} - 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 - } - } - // addParams := map[string]interface{}{ - // "note": utils.FilterMb4(order.BuyerComment), - // "goods_detail": string(utils.MustMarshal(goods)), - // "goods_pickup_info": fmt.Sprintf("%s第%d号单", model.VendorChineseNames[order.VendorID], order.OrderSeq), - // "poi_seq": fmt.Sprintf("#%d", order.OrderSeq), - // } - // storeTel := "" - // storeID := jxutils.GetSaleStoreIDFromOrder(order) - // storeDeatail, _ := dao.GetStoreDetail(db, storeID, order.VendorID) - // if storeDeatail.Tel2 != "" { - // storeTel = ",门店电话:" + storeDeatail.Tel2 - // } - billParams.Note = utils.FilterMb4("客户电话:" + order.ConsigneeMobile + "," + order.BuyerComment + ",取货失败或配送遇到问题请联系18048531223,禁止未配送直接完成定单!") - billParams.GoodsDetail = string(utils.MustMarshal(goods)) - billParams.GoodsPickupInfo = fmt.Sprintf("%s第%d号单", model.VendorChineseNames[order.VendorID], order.OrderSeq) - billParams.PoiSeq = fmt.Sprintf("#%d", order.OrderSeq) - //if globals.EnableStoreWrite - { - // 通知美团订单,获取返回订单配送费 - result, err2 := api.MtpsAPI.CreateOrderByShop2(billParams) - if err = err2; err == nil { - bill = &model.Waybill{ - VendorOrderID: order.VendorOrderID, - OrderVendorID: order.VendorID, - VendorWaybillID: result.MtPeisongID, - VendorWaybillID2: utils.Int64ToStr(result.DeliveryID), - WaybillVendorID: model.VendorIDMTPS, - DesiredFee: int64(result.DeliveryFee * 100), - } - // 当前运单总费大于配送阈值15,日志打印提示 - delivery.OnWaybillCreated(bill) - globals.SugarLogger.Debug("============================================>", billParams.ShopID) - } else { - globals.SugarLogger.Debugf("CreateWaybill failed, orderID:%s, billParams:%v, error:%v", order.VendorOrderID, billParams, err) - } - } - //else { - // err = fmt.Errorf("测试环境不能真正创建运单") - //} - } + 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 } } + + billParams.Note = utils.FilterMb4("客户电话:" + order.ConsigneeMobile + "," + order.BuyerComment + ",取货失败或配送遇到问题请联系18048531223,禁止未配送直接完成定单!") + billParams.GoodsDetail = string(utils.MustMarshal(goods)) + billParams.GoodsPickupInfo = fmt.Sprintf("%s第%d号单", model.VendorChineseNames[order.VendorID], order.OrderSeq) + billParams.PoiSeq = fmt.Sprintf("#%d", order.OrderSeq) + if !globals.EnableStoreWrite { + return nil, fmt.Errorf("测试环境不能真正创建运单") + } + + // 通知美团订单,获取返回订单配送费 + result, err := api.MtpsAPI.CreateOrderByShop2(billParams) + if err != nil { + globals.SugarLogger.Debugf("CreateWaybill failed, orderID:%s, billParams:%v, error:%v", order.VendorOrderID, billParams, err) + return nil, err + } + + bill = &model.Waybill{ + VendorOrderID: order.VendorOrderID, + OrderVendorID: order.VendorID, + VendorWaybillID: result.MtPeisongID, + VendorWaybillID2: utils.Int64ToStr(result.DeliveryID), + WaybillVendorID: model.VendorIDMTPS, + DesiredFee: utils.Float64TwoInt64(result.DeliveryFee), + } + // 当前运单总费大于配送阈值15,日志打印提示 + delivery.OnWaybillCreated(bill) + return bill, err } diff --git a/conf/app.conf b/conf/app.conf index 238cc88c5..bbfdf4ac8 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -278,7 +278,7 @@ enableJdStoreWrite = true enableEbaiStoreWrite = true enableMtwmStoreWrite = true enableWscStoreWrite = true -enableYbStoreWrite = true +enableYbStoreWrite = true enableJdShopWrite = true disableWeimob = false @@ -331,7 +331,7 @@ enableStoreWrite = true enableJdStoreWrite = true enableEbaiStoreWrite = true enableMtwmStoreWrite = true -enableYbStoreWrite = true +enableYbStoreWrite = true enableJdShopWrite = true mtpsAppKey = "3c0a05d464c247c19d7ec13accc78605" diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index d7ddfc52d..790992c74 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -14,6 +14,9 @@ func Init() { orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + // 本地测试服调试 + //orm.RegisterDataBase("default", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") orm.RegisterModel(new(legacymodel.Config)) orm.RegisterModel(new(legacymodel.BlackClient))