配送相关接口调整
This commit is contained in:
@@ -1195,11 +1195,11 @@ func (s *DefScheduler) watchOrderWaybills(savedOrderInfo *WatchOrderInfo) {
|
|||||||
var remark string
|
var remark string
|
||||||
tipFee := getWaybillTip(order)
|
tipFee := getWaybillTip(order)
|
||||||
vendorStatus := fmt.Sprintf("设置小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee))
|
vendorStatus := fmt.Sprintf("设置小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee))
|
||||||
if curTipFee, err := handler.GetWaybillTip(jxcontext.AdminCtx, order); err == nil {
|
if curTipFee, err := handler.GetWaybillTip(jxcontext.AdminCtx, order.VendorOrgCode, order.VendorOrderID, order.VendorOrderID, ""); err == nil {
|
||||||
tipFee2Add := tipFee - curTipFee
|
tipFee2Add := tipFee - curTipFee
|
||||||
vendorStatus += fmt.Sprintf(", 本次添加:%s", jxutils.IntPrice2StandardCurrencyString(tipFee2Add))
|
vendorStatus += fmt.Sprintf(", 本次添加:%s", jxutils.IntPrice2StandardCurrencyString(tipFee2Add))
|
||||||
if false { //tipFee2Add > 0 {
|
if false { //tipFee2Add > 0 {
|
||||||
err := handler.AddWaybillTip(jxcontext.AdminCtx, order, tipFee2Add)
|
err := handler.AddWaybillTip(jxcontext.AdminCtx, order.VendorOrgCode, order.VendorOrderID, order.VendorOrderID, "", "", tipFee2Add)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
vendorStatus += "成功"
|
vendorStatus += "成功"
|
||||||
order.WaybillTipMoney += tipFee2Add
|
order.WaybillTipMoney += tipFee2Add
|
||||||
|
|||||||
@@ -69,16 +69,12 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
|||||||
order := c.callbackMsg2Waybill(msg)
|
order := c.callbackMsg2Waybill(msg)
|
||||||
switch msg.OrderStatus {
|
switch msg.OrderStatus {
|
||||||
case dadaapi.OrderStatusWaitingForAccept:
|
case dadaapi.OrderStatusWaitingForAccept:
|
||||||
if result, err := api.DadaAPI.QueryOrderInfo(msg.OrderID); err == nil {
|
if dadaOrder, err := api.DadaAPI.QueryOrderInfo2(msg.OrderID); err == nil {
|
||||||
order.ActualFee = jxutils.StandardPrice2Int(utils.Interface2Float64WithDefault(result["actualFee"], 0.0))
|
order.ActualFee = jxutils.StandardPrice2Int(dadaOrder.ActualFee)
|
||||||
order.DesiredFee = jxutils.StandardPrice2Int(utils.Interface2Float64WithDefault(result["deliveryFee"], 0.0))
|
order.DesiredFee = jxutils.StandardPrice2Int(dadaOrder.DeliveryFee)
|
||||||
}
|
}
|
||||||
order.Status = model.WaybillStatusNew
|
order.Status = model.WaybillStatusNew
|
||||||
case dadaapi.OrderStatusAccepted:
|
case dadaapi.OrderStatusAccepted:
|
||||||
// if result, err := api.DadaAPI.QueryOrderInfo(msg.OrderID); err == nil {
|
|
||||||
// order.ActualFee = jxutils.StandardPrice2Int(utils.Interface2Float64WithDefault(result["actualFee"], 0.0))
|
|
||||||
// order.DesiredFee = jxutils.StandardPrice2Int(utils.Interface2Float64WithDefault(result["deliveryFee"], 0.0))
|
|
||||||
// }
|
|
||||||
order.Status = model.WaybillStatusAccepted
|
order.Status = model.WaybillStatusAccepted
|
||||||
case dadaapi.OrderStatusDelivering:
|
case dadaapi.OrderStatusDelivering:
|
||||||
order.Status = model.WaybillStatusDelivering
|
order.Status = model.WaybillStatusDelivering
|
||||||
@@ -204,10 +200,12 @@ func (c *DeliveryHandler) IsErrStoreExist(err error) bool {
|
|||||||
func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) {
|
func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
deliveryFeeInfo = &partner.WaybillFeeInfo{}
|
deliveryFeeInfo = &partner.WaybillFeeInfo{}
|
||||||
billParams, addParams, err := c.getBillParams(db, order)
|
// billParams, addParams, err := c.getBillParams(db, order)
|
||||||
|
billParams, err := c.getBillParams2(db, order)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
var result *dadaapi.CreateOrderResponse
|
var result *dadaapi.CreateOrderResponse
|
||||||
if result, err = api.DadaAPI.QueryDeliverFee(billParams, addParams); err != nil {
|
// if result, err = api.DadaAPI.QueryDeliverFee(billParams, addParams); err != nil {
|
||||||
|
if result, err = api.DadaAPI.QueryDeliverFee2(billParams); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
deliveryFeeInfo.DeliveryFee = jxutils.StandardPrice2Int(result.Fee)
|
deliveryFeeInfo.DeliveryFee = jxutils.StandardPrice2Int(result.Fee)
|
||||||
@@ -216,9 +214,34 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
|
|||||||
return deliveryFeeInfo, err
|
return deliveryFeeInfo, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder) (billParams *dadaapi.OperateOrderRequiredParams, addParams map[string]interface{}, err error) {
|
// func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder) (billParams *dadaapi.OperateOrderRequiredParams, addParams map[string]interface{}, err error) {
|
||||||
billParams = &dadaapi.OperateOrderRequiredParams{
|
// billParams = &dadaapi.OperateOrderRequiredParams{
|
||||||
// ShopNo: utils.Int2Str(order.StoreID), // 当前达达的门店号与京西是一样的
|
// // ShopNo: utils.Int2Str(order.StoreID), // 当前达达的门店号与京西是一样的
|
||||||
|
// OriginID: jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID),
|
||||||
|
// CargoPrice: jxutils.IntPrice2Standard(limitOrderPrice(order.ActualPayPrice)),
|
||||||
|
// IsPrepay: 0,
|
||||||
|
// ReceiverName: utils.FilterMb4(order.ConsigneeName),
|
||||||
|
// ReceiverAddress: utils.FilterMb4(order.ConsigneeAddress),
|
||||||
|
// ReceiverPhone: order.ConsigneeMobile,
|
||||||
|
// }
|
||||||
|
// if billParams.ShopNo, err = c.getDadaShopID(order, db); err == nil {
|
||||||
|
// if billParams.CityCode, err = c.getDataCityCodeFromOrder(order, db); err == nil {
|
||||||
|
// billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
||||||
|
// addParams = map[string]interface{}{
|
||||||
|
// "info": fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, utils.FilterMb4(order.BuyerComment)),
|
||||||
|
// // "origin_mark": model.VendorNames[order.VendorID], // 订单来源标示(该字段可以显示在达达app订单详情页面,只支持字母,最大长度为10)
|
||||||
|
// // "origin_mark_no": fmt.Sprintf("%d", order.OrderSeq), // 订单来源编号(该字段可以显示在达达app订单详情页面,支持字母和数字,最大长度为30)
|
||||||
|
// "cargo_type": 13,
|
||||||
|
// "cargo_weight": jxutils.IntWeight2Float(limitOrderWeight(order.Weight)),
|
||||||
|
// "cargo_num": order.GoodsCount,
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return billParams, addParams, err
|
||||||
|
// }
|
||||||
|
|
||||||
|
func (c *DeliveryHandler) getBillParams2(db *dao.DaoDB, order *model.GoodsOrder) (billParams *dadaapi.OperateOrderParams, err error) {
|
||||||
|
billParams = &dadaapi.OperateOrderParams{
|
||||||
OriginID: jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID),
|
OriginID: jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID),
|
||||||
CargoPrice: jxutils.IntPrice2Standard(limitOrderPrice(order.ActualPayPrice)),
|
CargoPrice: jxutils.IntPrice2Standard(limitOrderPrice(order.ActualPayPrice)),
|
||||||
IsPrepay: 0,
|
IsPrepay: 0,
|
||||||
@@ -229,23 +252,20 @@ func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder)
|
|||||||
if billParams.ShopNo, err = c.getDadaShopID(order, db); err == nil {
|
if billParams.ShopNo, err = c.getDadaShopID(order, db); err == nil {
|
||||||
if billParams.CityCode, err = c.getDataCityCodeFromOrder(order, db); err == nil {
|
if billParams.CityCode, err = c.getDataCityCodeFromOrder(order, db); err == nil {
|
||||||
billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
||||||
addParams = map[string]interface{}{
|
billParams.Info = fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, utils.FilterMb4(order.BuyerComment))
|
||||||
"info": fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, utils.FilterMb4(order.BuyerComment)),
|
billParams.CargoType = dadaapi.CargoTypeFresh
|
||||||
// "origin_mark": model.VendorNames[order.VendorID], // 订单来源标示(该字段可以显示在达达app订单详情页面,只支持字母,最大长度为10)
|
billParams.CargoWeight = float64(jxutils.IntWeight2Float(limitOrderWeight(order.Weight)))
|
||||||
// "origin_mark_no": fmt.Sprintf("%d", order.OrderSeq), // 订单来源编号(该字段可以显示在达达app订单详情页面,支持字母和数字,最大长度为30)
|
billParams.CargoNum = order.GoodsCount
|
||||||
"cargo_type": 13,
|
|
||||||
"cargo_weight": jxutils.IntWeight2Float(limitOrderWeight(order.Weight)),
|
|
||||||
"cargo_num": order.GoodsCount,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
return billParams, err
|
||||||
return billParams, addParams, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IDeliveryPlatformHandler
|
// IDeliveryPlatformHandler
|
||||||
func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) {
|
func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
billParams, addParams, err := c.getBillParams(db, order)
|
// billParams, addParams, err := c.getBillParams(db, order)
|
||||||
|
billParams, err := c.getBillParams2(db, order)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableStoreWrite {
|
||||||
// 达达要求第二次创建运单,调用函数不同。所以查找两天内有无相同订单号的运单
|
// 达达要求第二次创建运单,调用函数不同。所以查找两天内有无相同订单号的运单
|
||||||
@@ -265,16 +285,19 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
|||||||
if err = delivery.CallCreateWaybillPolicy(waybillList[0].ActualFee, maxDeliveryFee, order, model.VendorIDDada); err != nil {
|
if err = delivery.CallCreateWaybillPolicy(waybillList[0].ActualFee, maxDeliveryFee, order, model.VendorIDDada); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
result, err = api.DadaAPI.ReaddOrder(billParams, addParams)
|
// result, err = api.DadaAPI.ReaddOrder(billParams, addParams)
|
||||||
|
result, err = api.DadaAPI.ReaddOrder2(billParams)
|
||||||
} else {
|
} else {
|
||||||
// 第一次创建
|
// 第一次创建
|
||||||
if err != nil {
|
if err != nil {
|
||||||
globals.SugarLogger.Warnf("CreateWaybill orderID:%s error:%v", order.VendorOrderID, err)
|
globals.SugarLogger.Warnf("CreateWaybill orderID:%s error:%v", order.VendorOrderID, err)
|
||||||
}
|
}
|
||||||
if false {
|
if false {
|
||||||
result, err = api.DadaAPI.AddOrder(billParams, addParams)
|
// result, err = api.DadaAPI.AddOrder(billParams, addParams)
|
||||||
|
result, err = api.DadaAPI.AddOrder2(billParams)
|
||||||
} else {
|
} else {
|
||||||
if result, err = api.DadaAPI.QueryDeliverFee(billParams, addParams); err != nil {
|
// if result, err = api.DadaAPI.QueryDeliverFee(billParams, addParams); err != nil {
|
||||||
|
if result, err = api.DadaAPI.QueryDeliverFee2(billParams); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = delivery.CallCreateWaybillPolicy(jxutils.StandardPrice2Int(result.Fee), maxDeliveryFee, order, model.VendorIDDada); err != nil {
|
if err = delivery.CallCreateWaybillPolicy(jxutils.StandardPrice2Int(result.Fee), maxDeliveryFee, order, model.VendorIDDada); err != nil {
|
||||||
@@ -368,3 +391,22 @@ func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, reson
|
|||||||
err = api.DadaAPI.ComplaintRider(bill.VendorOrderID, resonID)
|
err = api.DadaAPI.ComplaintRider(bill.VendorOrderID, resonID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *DeliveryHandler) GetWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2 string) (tipFee int64, err error) {
|
||||||
|
order, err := api.DadaAPI.QueryOrderInfo2(vendorOrderID)
|
||||||
|
if err == nil {
|
||||||
|
tipFee = jxutils.StandardPrice2Int(order.Tips)
|
||||||
|
}
|
||||||
|
return tipFee, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *DeliveryHandler) AddWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2, cityCode string, tipFee2Add int64) (err error) {
|
||||||
|
curTip, err := c.GetWaybillTip(ctx, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2)
|
||||||
|
if err == nil {
|
||||||
|
totalTip := curTip + tipFee2Add
|
||||||
|
if globals.EnableStoreWrite {
|
||||||
|
err = api.DadaAPI.AddTip(vendorOrderID, jxutils.IntPrice2Standard(totalTip), cityCode, "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -173,14 +173,18 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
|||||||
item.GoodCount += goodItem.GoodCount
|
item.GoodCount += goodItem.GoodCount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addParams := map[string]interface{}{
|
// addParams := map[string]interface{}{
|
||||||
"note": utils.FilterMb4(order.BuyerComment),
|
// "note": utils.FilterMb4(order.BuyerComment),
|
||||||
"goods_detail": string(utils.MustMarshal(goods)),
|
// "goods_detail": string(utils.MustMarshal(goods)),
|
||||||
"goods_pickup_info": fmt.Sprintf("%s第%d号单", model.VendorChineseNames[order.VendorID], order.OrderSeq),
|
// "goods_pickup_info": fmt.Sprintf("%s第%d号单", model.VendorChineseNames[order.VendorID], order.OrderSeq),
|
||||||
"poi_seq": fmt.Sprintf("#%d", order.OrderSeq),
|
// "poi_seq": fmt.Sprintf("#%d", order.OrderSeq),
|
||||||
}
|
// }
|
||||||
|
billParams.Note = utils.FilterMb4(order.BuyerComment)
|
||||||
|
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 {
|
if globals.EnableStoreWrite {
|
||||||
result, err2 := api.MtpsAPI.CreateOrderByShop(billParams, addParams)
|
result, err2 := api.MtpsAPI.CreateOrderByShop2(billParams)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
bill = &model.Waybill{
|
bill = &model.Waybill{
|
||||||
VendorOrderID: order.VendorOrderID,
|
VendorOrderID: order.VendorOrderID,
|
||||||
@@ -192,7 +196,7 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
|||||||
}
|
}
|
||||||
delivery.OnWaybillCreated(bill)
|
delivery.OnWaybillCreated(bill)
|
||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Debugf("CreateWaybill failed, orderID:%s, billParams:%v, addParams:%v, error:%v", order.VendorOrderID, billParams, addParams, err)
|
globals.SugarLogger.Debugf("CreateWaybill failed, orderID:%s, billParams:%v, error:%v", order.VendorOrderID, billParams, err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err = fmt.Errorf("测试环境不能真正创建运单")
|
err = fmt.Errorf("测试环境不能真正创建运单")
|
||||||
|
|||||||
@@ -58,6 +58,6 @@ type IPurchasePlatformOrderHandler interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type IAddWaybillTip interface {
|
type IAddWaybillTip interface {
|
||||||
GetWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder) (tipFee int64, err error)
|
GetWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2 string) (tipFee int64, err error)
|
||||||
AddWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee2Add int64) (err error)
|
AddWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2, cityCode string, tipFee2Add int64) (err error)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -487,17 +487,17 @@ func (c *PurchaseHandler) UpdateWaybillTip(ctx *jxcontext.Context, order *model.
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) GetWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder) (tipFee int64, err error) {
|
func (c *PurchaseHandler) GetWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2 string) (tipFee int64, err error) {
|
||||||
orderInfo, err := getAPI(order.VendorOrgCode).QuerySingleOrder2(order.VendorOrderID)
|
orderInfo, err := getAPI(vendorOrgCode).QuerySingleOrder2(vendorOrderID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
tipFee = int64(orderInfo.Tips)
|
tipFee = int64(orderInfo.Tips)
|
||||||
}
|
}
|
||||||
return tipFee, err
|
return tipFee, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) AddWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee2Add int64) (err error) {
|
func (c *PurchaseHandler) AddWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2, cityCode string, tipFee2Add int64) (err error) {
|
||||||
if globals.EnableJdStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
err = getAPI(order.VendorOrgCode).OrderAddTips(order.VendorOrderID, int(tipFee2Add), ctx.GetUserName())
|
err = getAPI(vendorOrgCode).OrderAddTips(vendorOrderID, int(tipFee2Add), ctx.GetUserName())
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,14 +123,6 @@ func (c *PurchaseHandler) ListOrders(ctx *jxcontext.Context, vendorOrgCode strin
|
|||||||
return vendorOrderIDs, err
|
return vendorOrderIDs, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) GetWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder) (tipFee int64, err error) {
|
|
||||||
return tipFee, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PurchaseHandler) AddWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee2Add int64) (err error) {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PurchaseHandler) ConfirmSelfTake(ctx *jxcontext.Context, vendorOrderID, selfTakeCode string) (err error) {
|
func (c *PurchaseHandler) ConfirmSelfTake(ctx *jxcontext.Context, vendorOrderID, selfTakeCode string) (err error) {
|
||||||
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDJX)
|
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDJX)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user