From c7b677fd076345dc3f1e415cc838e25221e96576 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Tue, 31 Aug 2021 11:34:41 +0800 Subject: [PATCH] aa --- .../jxcallback/scheduler/basesch/basesch.go | 20 ++++++++++------ .../jxcallback/scheduler/defsch/defsch.go | 16 ++++++++++--- business/jxstore/cms/store_acct.go | 23 +++++++++++++++++++ business/model/store.go | 5 ++++ business/partner/partner_store_acct.go | 3 +++ 5 files changed, 57 insertions(+), 10 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index 1fb05974b..bf1e09818 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -1,6 +1,7 @@ package basesch import ( + "fmt" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -164,16 +165,21 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr // return nil, fmt.Errorf("转商家自送的订单只允许有一个有效运单,当前已经有%s运单", jxutils.GetVendorName(waybillList[0].WaybillVendorID)) // } // } + storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, order.VendorOrgCode) handlerInfo := partner.GetDeliveryPlatformFromVendorID(platformVendorID) if handlerInfo != nil && handlerInfo.Use4CreateWaybill { - 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) - } else { - order.DeliveryFlag |= model.WaybillVendorID2Mask(platformVendorID) - err = partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order) + if model.DeliveryBrandMarkMap[platformVendorID]&storeDetail.BrandIsOpen != 0 { + 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) + } else { + order.DeliveryFlag |= model.WaybillVendorID2Mask(platformVendorID) + err = partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order) + } } + } else { + err = fmt.Errorf("CreateWaybill failed brand is close orderID: %s, isOpen: %d", order.VendorOrderID, storeDetail.BrandIsOpen) } } else { err = scheduler.ErrDeliverProviderWrong diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 649fa3f93..3c07d894c 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -598,10 +598,12 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo // smsmsg.NotifyJxOrder(order, bill) //} //门店发单的门店,需要根据实际运费更新账户(多退少补) + //扣除品牌费用 if storeDetail, err2 := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, ""); err2 == nil { if storeDetail.CreateDeliveryType == model.YES { s.updateStoreAccount(order, bill) } + s.updateBrandAccount(storeDetail, bill) } //针对快送的订单(订单接单后会立马召唤骑手,不会到自动拣货完成) //如果骑手已接单,没有通知过的门店,需要发送通知 @@ -886,9 +888,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf //1表示为门店发单,需要验证门店账户余额情况 _, err = s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs) //TODO 2021-02-19 增加品牌配送开关 - if storeDetail.BrandIsOpen == model.YES { - err = fmt.Errorf("此品牌已关闭配送! [%v]", storeDetail.BrandName) - } + //TODO 2021-08-31 修改为每个平台的开关 + //if storeDetail.BrandIsOpen == model.YES { + // err = fmt.Errorf("此品牌已关闭配送! [%v]", storeDetail.BrandName) + //} if err == nil { if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { savedOrderInfo.retryCount++ @@ -1365,6 +1368,13 @@ func (s *DefScheduler) updateStoreAccount(order *model.GoodsOrder, bill *model.W } } +func (s *DefScheduler) updateBrandAccount(store *dao.StoreDetail, bill *model.Waybill) { + realDesiredFee := bill.DesiredFee + if balance, err := partner.CurStoreAcctManager.GetBrandBalance(store.BrandID); err == nil { + + } +} + func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (isBillExist bool) { if savedOrderInfo != nil { if savedBill := savedOrderInfo.waybills[bill.WaybillVendorID]; savedBill != nil { diff --git a/business/jxstore/cms/store_acct.go b/business/jxstore/cms/store_acct.go index 0cd8b11a2..434107fb8 100644 --- a/business/jxstore/cms/store_acct.go +++ b/business/jxstore/cms/store_acct.go @@ -179,3 +179,26 @@ func (s *StoreAcctManager) CheckStoreAcctExpendExist(vendorOrderID string) (isEq func (s *StoreAcctManager) GetStoreAcctExpendLastCreateWayBillFee(vendorOrderID string) (expend *dao.GetStoreAcctExpendLastCreateWayBillFeeResult, lastFee int, err error) { return dao.GetStoreAcctExpendLastCreateWayBillFee(dao.GetDB(), vendorOrderID) } + +func (s *StoreAcctManager) GetBrandBalance(brandID int) (balance int, err error) { + return dao.GetBrandBalance(dao.GetDB(), brandID) +} + +func (s *StoreAcctManager) InsertBrandBill(ctx *jxcontext.Context, brandID, price, billType, feeType int, vendorOrderID string, orderID string) (err error) { + utils.CallFuncAsync(func() { + var ( + db = dao.GetDB() + ) + brandBill := &model.BrandBill{ + BrandID: brandID, + Price: price, + BillType: billType, + FeeType: feeType, + VendorOrderID: vendorOrderID, + OrderID: orderID, + } + dao.WrapAddIDCULEntity(brandBill, ctx.GetUserName()) + dao.CreateEntity(db, brandBill) + }) + return err +} diff --git a/business/model/store.go b/business/model/store.go index dc123490d..676c2d157 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -289,6 +289,11 @@ var ( AutoReplyGoodComment: "禁止差评自动回复", AutoReplyDisabled: "禁止自动回复", } + DeliveryBrandMarkMap = map[int]int{ + VendorIDMTPS: BrandOpenMTPS, + VendorIDDada: BrandOpenDaDa, + VendorIDFengNiao: BrandOpenFN, + } ) type Store struct { diff --git a/business/partner/partner_store_acct.go b/business/partner/partner_store_acct.go index 7114ed348..42a57270d 100644 --- a/business/partner/partner_store_acct.go +++ b/business/partner/partner_store_acct.go @@ -42,4 +42,7 @@ type IStoreAcctManager interface { InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string, expendID int) (err error) CheckStoreAcctExpendExist(vendorOrderID string) (isEqual, isZero bool, err error) GetStoreAcctExpendLastCreateWayBillFee(vendorOrderID string) (expend *dao.GetStoreAcctExpendLastCreateWayBillFeeResult, lastFee int, err error) + + //品牌账户 + GetBrandBalance(brandID int) (balance int, err error) }