Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback/jx-callback into jdshop

This commit is contained in:
rosydev
2022-03-03 16:56:46 +08:00
9 changed files with 37 additions and 9 deletions

View File

@@ -176,6 +176,7 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr
if handlerInfo != nil && handlerInfo.Use4CreateWaybill {
if model.DeliveryBrandMarkMap[platformVendorID]&storeDetail.BrandIsOpen != 0 && balance >= model.BrandBalanceLimit {
if c.IsReallyCallPlatformAPI {
// 美团配送订单生成,配送费计算
bill, err = handlerInfo.Handler.CreateWaybill(order, maxDeliveryFee)
if err != nil {
globals.SugarLogger.Infof("CreateWaybill failed orderID:%s vendorID:%d with error:%v", order.VendorOrderID, platformVendorID, err)

View File

@@ -40,6 +40,7 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order *
(excludeCourierVendorIDs == nil || excludeCourierVendorIDMap[storeCourier.VendorID] == 0) {
if handler := partner.GetDeliveryPlatformFromVendorID(storeCourier.VendorID); handler != nil && handler.Use4CreateWaybill {
courierVendorID := storeCourier.VendorID
// 创建订单
bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee)
if err = err2; err == nil {
globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d bill:%v", order.VendorOrderID, userName, courierVendorID, bill)

View File

@@ -114,8 +114,10 @@ func (s *DefScheduler) isPossibleSwitch2SelfDelivery(order *model.GoodsOrder) (e
return err
}
// 创建订单
func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Context, savedOrderInfo *WatchOrderInfo, courierVendorIDs, excludeCourierVendorIDs []int, forceCreate bool, maxDeliveryFee int64) (bills []*model.Waybill, err error) {
order := savedOrderInfo.order
// 查看订单状态是否处于可配送状态
if !forceCreate {
err = s.canOrderCreateWaybillNormally(order, nil)
}
@@ -123,6 +125,7 @@ func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Contex
if forceCreate {
maxDeliveryFee = math.MaxInt64
}
// 生成美团订单
if bills, err = s.CreateWaybillOnProviders(ctx, order, courierVendorIDs, excludeCourierVendorIDs, maxDeliveryFee, forceCreate); err == nil {
if forceCreate {
order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled
@@ -135,7 +138,9 @@ func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Contex
//门店发单开始扣钱
if order.CreateDeliveryType == model.YES {
deliveryFeeMap, _ := s.QueryOrderWaybillFeeInfoEx(ctx, order.VendorOrderID, order.VendorID)
// 运费相等为0或支出大于收入不做
isEqual, isZero, _ := partner.CurStoreAcctManager.CheckStoreAcctExpendExist(order.VendorOrderID)
// 收最贵的一个订单配送费
if !isZero && !isEqual {
var newPrice int64
if len(courierVendorIDs) == 1 {
@@ -184,6 +189,7 @@ func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Contex
return nil, err
}
// 创建三方运单
func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendorOrderID string, vendorID int, courierVendorIDs []int, forceCreate bool, maxDeliveryFee int64) (bills []*model.Waybill, errCode string, err error) {
savedOrderInfo := s.loadSavedOrderByID(vendorOrderID, vendorID, true)
if savedOrderInfo != nil {
@@ -216,6 +222,7 @@ func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendor
order := savedOrderInfo.order
order.DeliveryFlag = 0
err = partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order)
// 创建订单
if bills, err = s.CreateWaybillOnProviders4SavedOrder(ctx, savedOrderInfo, courierVendorIDs, nil, forceCreate, maxDeliveryFee); err == nil && len(bills) > 0 {
partner.CurOrderManager.OnOrderMsg(order, "手动创建运单成功", fmt.Sprintf("%s创建%s平台运单,强发:%t,最高限价:%d", ctx.GetUserName(), model.VendorChineseNames[bills[0].WaybillVendorID], forceCreate, maxDeliveryFee))
}
@@ -338,10 +345,13 @@ func (s *DefScheduler) QueryOrderWaybillFeeInfoEx(ctx *jxcontext.Context, vendor
if order.DeliveryType == model.OrderDeliveryTypeSelfTake {
return nil, fmt.Errorf("订单:%s是自提单", vendorOrderID)
}
// 获取用户送货地址
storeCourierList, err := dao.GetStoreCourierList(db, []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, model.StoreStatusAll, model.StoreAuditStatusOnline)
if err != nil {
return nil, err
}
// 美团配送订单兑现
waybillList, err := partner.CurOrderManager.GetOrderWaybillInfo(ctx, vendorOrderID, vendorID, true, false)
if err != nil {
return nil, err
@@ -371,6 +381,7 @@ func (s *DefScheduler) QueryOrderWaybillFeeInfoEx(ctx *jxcontext.Context, vendor
} else {
if handler := partner.GetDeliveryPlatformFromVendorID(storeCourier.VendorID); handler != nil {
if handler.Use4CreateWaybill {
// 获取订单配送费用
if feeInfo, err = handler.Handler.GetWaybillFee(order); err != nil {
feeInfo = &partner.WaybillFeeInfo{
ErrCode: partner.WaybillFeeErrCodeCourierOthers,

View File

@@ -136,6 +136,7 @@ func (s *StoreAcctManager) UpdateStoreAcctBalance(ctx *jxcontext.Context, storeI
return err
}
// 门店到账
func (s *StoreAcctManager) InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string, expendID int) (err error) {
utils.CallFuncAsync(func() {
if err = s.InsertStoreAcctExpend(ctx, storeID, price, acctType, vendorOrderID, expendID); err == nil {
@@ -154,6 +155,7 @@ func (s *StoreAcctManager) InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *j
return err
}
// 检查单子运费收入支出差
func (s *StoreAcctManager) CheckStoreAcctExpendExist(vendorOrderID string) (isEqual, isZero bool, err error) {
var (
expends, incomes int

View File

@@ -263,7 +263,8 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
}
billParams, err := c.getBillParams(db, order)
if err == nil {
if globals.EnableStoreWrite {
//if globals.EnableStoreWrite
{
// 达达要求第二次创建运单,调用函数不同。所以查找两天内有无相同订单号的运单
var waybillList []*model.Waybill
err2 := dao.GetRows(db, &waybillList, `
@@ -310,9 +311,10 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
}
delivery.OnWaybillCreated(bill)
}
} else {
err = fmt.Errorf("测试环境不能真正创建运单")
}
//else {
// err = fmt.Errorf("测试环境不能真正创建运单")
//}
}
return bill, err
}

View File

@@ -188,7 +188,7 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
return deliveryFeeInfo, err
}
// IDeliveryPlatformHandler
// 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 {
@@ -200,6 +200,8 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
} else {
return nil, err
}
// 自定义计算预估费用
deliveryFee, _, err := delivery.CalculateOrderDeliveryFee(order, time.Now(), db)
if err == nil {
if err = delivery.CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee, order, model.VendorIDMTPS); err != nil {
@@ -258,7 +260,9 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
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.CreateOrderByShop2(billParams)
if err = err2; err == nil {
bill = &model.Waybill{
@@ -267,15 +271,18 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
VendorWaybillID: result.MtPeisongID,
VendorWaybillID2: utils.Int64ToStr(result.DeliveryID),
WaybillVendorID: model.VendorIDMTPS,
DesiredFee: deliveryFee,
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("测试环境不能真正创建运单")
}
//else {
// err = fmt.Errorf("测试环境不能真正创建运单")
//}
}
}
}

View File

@@ -18,7 +18,7 @@ func TestCreateWaybill(t *testing.T) {
order, _ := partner.CurOrderManager.LoadOrder(orerID, model.VendorIDJD)
// globals.SugarLogger.Debug(order)
c := new(DeliveryHandler)
_, err := c.CreateWaybill(order, nil)
_, err := c.CreateWaybill(order, 0)
if err != nil {
t.Fatal(err.Error())
}

View File

@@ -324,6 +324,9 @@ func (c *Auth2Controller) AddAuthBind() {
func (c *Auth2Controller) AddAuthBindWithMobile() {
c.callAddAuthBindWithMobile(func(params *tAuth2AddAuthBindWithMobileParams) (retVal interface{}, errCode string, err error) {
newAuthInfo, err := auth2.GetTokenInfo(params.AuthToken)
if err != nil {
return retVal, "", err
}
err = auth2.AddAuthBindWithMobile(newAuthInfo, params.Mobile)
return retVal, "", err
})

View File

@@ -109,6 +109,7 @@ func (c *OrderController) QueryOrderWaybillFeeInfo() {
})
}
// todo 召唤第三方骑手配送生成订单
// @Title 创建三方运单
// @Description 创建三方运单
// @Param token header string true "认证token"