调整代码结构,修改美团配送
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user