调整代码结构,修改美团配送

This commit is contained in:
邹宗楠
2022-03-04 09:49:12 +08:00
parent 9b9c44fd5d
commit 896f5d68b1
7 changed files with 243 additions and 223 deletions

View File

@@ -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
}