diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index c2cd374c9..eaf09ffbf 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -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) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index aec104550..0a9a74f7c 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -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) diff --git a/business/jxcallback/scheduler/defsch/defsch_ext.go b/business/jxcallback/scheduler/defsch/defsch_ext.go index 1bb09b0f3..92a20f998 100644 --- a/business/jxcallback/scheduler/defsch/defsch_ext.go +++ b/business/jxcallback/scheduler/defsch/defsch_ext.go @@ -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, diff --git a/business/jxstore/cms/store_acct.go b/business/jxstore/cms/store_acct.go index bd38d8641..c5cb95404 100644 --- a/business/jxstore/cms/store_acct.go +++ b/business/jxstore/cms/store_acct.go @@ -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 diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index 3302639d2..cd9e83d7f 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -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 } diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index b3105e0d2..eefe91462 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -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("测试环境不能真正创建运单") + //} } } } diff --git a/business/partner/delivery/mtps/waybill_test.go b/business/partner/delivery/mtps/waybill_test.go index ea4e191c0..25b6406a8 100644 --- a/business/partner/delivery/mtps/waybill_test.go +++ b/business/partner/delivery/mtps/waybill_test.go @@ -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()) } diff --git a/controllers/auth2.go b/controllers/auth2.go index d195230d1..b1213ce08 100644 --- a/controllers/auth2.go +++ b/controllers/auth2.go @@ -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 }) diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 010db0d65..60f1340ae 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -109,6 +109,7 @@ func (c *OrderController) QueryOrderWaybillFeeInfo() { }) } +// todo 召唤第三方骑手配送生成订单 // @Title 创建三方运单 // @Description 创建三方运单 // @Param token header string true "认证token"