Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -3,6 +3,7 @@ package mtwm
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
|
||||
"math"
|
||||
"net/url"
|
||||
"regexp"
|
||||
@@ -395,6 +396,15 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
|
||||
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
|
||||
}
|
||||
})
|
||||
// 美团订单完成时,获取跑腿费用
|
||||
if fee, feeErr := partner.GetPurchasePlatformFromVendorID(order.VendorID).GetPlatformLogisticsFee(order); feeErr != nil {
|
||||
bill, err := partner.CurOrderManager.LoadWaybill(order.VendorOrderID, model.VendorIDMTWM)
|
||||
if bill == nil && err == nil {
|
||||
bill.ActualFee = fee
|
||||
bill.DesiredFee = fee
|
||||
dao.UpdateEntity(dao.GetDB(), bill, "ActualFee", "DesiredFee")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -514,13 +524,36 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) {
|
||||
isSelfDelivery = model.IsOrderDeliveryByStore(order) || model.IsOrderDeliveryBySelf(order)
|
||||
if isSelfDelivery {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").PreparationMealComplete(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "")
|
||||
orderDetail, err := api.OrderGetOrderDetail(utils.Str2Int64(order.VendorOrderID), false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err == nil || strings.Contains(err.Error(), "808") { // 配送类型只能为美团配送或美团企客配送 level:0, code:808
|
||||
|
||||
// 美团专送、快送、混合送、美团企客
|
||||
logisticsCode := utils.Interface2String(orderDetail["logistics_code"])
|
||||
isSelfDelivery = logisticsCode == mtwmapi.PeiSongTypeMTZSJM || logisticsCode == mtwmapi.PeiSongTypeMTZSZJ || logisticsCode == mtwmapi.PeiSongTypeKuaiDi || logisticsCode == mtwmapi.PeiSongTypeMixed || logisticsCode == mtwmapi.PeiSongTypeQiKe
|
||||
//1001-专送(加盟);1002-专送(自建)
|
||||
//2002-快送;3001-混合送(专送+快送)
|
||||
//4015-企客远距离配送
|
||||
//此接口适用于美团专送、快送、混合送、美团企客的订单确认备货完成
|
||||
//PeiSongTypeSelf = "0000" // 商家自配
|
||||
//PeiSongTypeQuHuo = "0002" // 趣活
|
||||
//PeiSongTypeDada = "0016" // 达达
|
||||
//PeiSongTypeE = "0033" // E代送
|
||||
//PeiSongTypeMTZSJM = "1001" // 美团专送-加盟
|
||||
//PeiSongTypeMTZSZJ = "1002" // 美团专送-自建
|
||||
//PeiSongTypeMTZSPT = "1003" // 美团跑腿(原众包)
|
||||
//PeiSongTypeMTZSDL = "1004" // 美团专送-城市代理
|
||||
//PeiSongTypeJiaoMa = "2001" // 角马
|
||||
//PeiSongTypeKuaiDi = "2002" // 快送
|
||||
//PeiSongTypeWholeCity = "2010" // 全城送
|
||||
//PeiSongTypeMixed = "3001" // 混合送(即美团专送+快送)
|
||||
if isSelfDelivery {
|
||||
err = api.PreparationMealComplete(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
if err == nil || strings.Contains(err.Error(), "808") {
|
||||
// 配送类型只能为美团配送或美团企客配送 level:0, code:808
|
||||
c.postFakeMsg(order.VendorOrderID, FakeMsgType, fakeFinishedPickup)
|
||||
return nil
|
||||
}
|
||||
@@ -569,8 +602,42 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam
|
||||
|
||||
// SelfDeliverDelivered 自配送订单送达
|
||||
func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderArrived(utils.Str2Int64(order.VendorOrderID))
|
||||
api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "")
|
||||
db := dao.GetDB()
|
||||
|
||||
err = api.OrderArrived(utils.Str2Int64(order.VendorOrderID))
|
||||
if err == nil {
|
||||
riderInfo := &mtpsapi.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
CourierName: "",
|
||||
CourierPhone: "",
|
||||
LogisticsProviderCode: "10015", // 商家自建配送
|
||||
LogisticsStatus: utils.Str2Int(mtwmapi.WaybillStatusDelivered),
|
||||
Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(order.ConsigneeLat)), // 送达即为客户坐标
|
||||
Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(order.ConsigneeLng)),
|
||||
}
|
||||
waybills, _ := dao.GetWaybills(db, order.VendorOrderID, nil)
|
||||
if len(waybills) == model.NO {
|
||||
store, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, order.VendorOrgCode)
|
||||
riderInfo.CourierName = "老板"
|
||||
riderInfo.CourierPhone = store.Tel1
|
||||
} else {
|
||||
for _, v := range waybills {
|
||||
if v.Status >= model.OrderStatusDelivering && v.Status <= model.OrderStatusFinished {
|
||||
riderInfo.CourierName = v.CourierName
|
||||
riderInfo.CourierPhone = v.CourierMobile
|
||||
}
|
||||
}
|
||||
}
|
||||
if riderInfo.CourierName == "" || riderInfo.CourierPhone == "" {
|
||||
riderInfo.CourierName = "老板"
|
||||
riderInfo.CourierPhone = "18048531223"
|
||||
}
|
||||
err = c.GetOrderRider(order.VendorOrgCode, order.VendorStoreID, utils.Struct2Map(riderInfo, "", true))
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -849,7 +916,17 @@ func (c *PurchaseHandler) CancelLogisticsByWmOrderId(order *model.GoodsOrder, re
|
||||
|
||||
// 获取订单配送状态
|
||||
func (c *PurchaseHandler) OrderLogisticsStatus(orderId int64) (int64, error) {
|
||||
return 0, nil
|
||||
orderInfo, err := dao.GetSimpleOrder(dao.GetDB(), utils.Int64ToStr(orderId))
|
||||
if err != nil {
|
||||
return 0, errors.New("获取本地门店账号信息失败,请重试")
|
||||
}
|
||||
|
||||
status, err := getAPI(orderInfo.VendorOrgCode, 0, "").OrderLogisticsStatus(orderId)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return status, nil
|
||||
}
|
||||
|
||||
// GetOrderSettleAccounts 获取订单结算信息
|
||||
@@ -868,3 +945,13 @@ func (c *PurchaseHandler) GetOrderSettleAccounts(order *model.GoodsOrder) (int64
|
||||
}
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
// GetPlatformLogisticsFee 获取美团自配送订单的配送费
|
||||
func (c *PurchaseHandler) GetPlatformLogisticsFee(order *model.GoodsOrder) (int64, error) {
|
||||
fee, err := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), order.VendorStoreID).OrderLogisticsFee(utils.Str2Int64(order.VendorOrderID))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return utils.Float64TwoInt64(fee * 100), nil
|
||||
}
|
||||
|
||||
@@ -55,10 +55,12 @@ func (c *PurchaseHandler) callbackMsg2Waybill(msg *mtwmapi.CallbackMsg) (retVal
|
||||
retVal.StatusTime = getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("timestamp")))
|
||||
}
|
||||
|
||||
//if vendorStatus == "4" || vendorStatus == "8" { // 4:美团推送已经(确认骑手)订单 8:美团推送(骑手完成)订单
|
||||
// retVal.DesiredFee = utils.Float64TwoInt64(utils.Str2Float64WithDefault(msg.FormData.Get("shipping_fee"), 0)) // 订单优惠前的总费用
|
||||
// partner.CurOrderManager
|
||||
//}
|
||||
order, err := partner.CurOrderManager.LoadOrder(orderID, model.VendorIDMTWM)
|
||||
if err == nil && order != nil {
|
||||
fee, _ := partner.GetPurchasePlatformFromVendorID(order.VendorID).GetPlatformLogisticsFee(order)
|
||||
retVal.ActualFee = fee
|
||||
retVal.DesiredFee = fee
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user