This commit is contained in:
suyl
2021-08-31 11:34:41 +08:00
parent 2e2a636228
commit c7b677fd07
5 changed files with 57 additions and 10 deletions

View File

@@ -1,6 +1,7 @@
package basesch package basesch
import ( import (
"fmt"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
"git.rosy.net.cn/jx-callback/business/jxutils" "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)) // 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) handlerInfo := partner.GetDeliveryPlatformFromVendorID(platformVendorID)
if handlerInfo != nil && handlerInfo.Use4CreateWaybill { if handlerInfo != nil && handlerInfo.Use4CreateWaybill {
if c.IsReallyCallPlatformAPI { if model.DeliveryBrandMarkMap[platformVendorID]&storeDetail.BrandIsOpen != 0 {
bill, err = handlerInfo.Handler.CreateWaybill(order, maxDeliveryFee) if c.IsReallyCallPlatformAPI {
if err != nil { bill, err = handlerInfo.Handler.CreateWaybill(order, maxDeliveryFee)
globals.SugarLogger.Infof("CreateWaybill failed orderID:%s vendorID:%d with error:%v", order.VendorOrderID, platformVendorID, err) if err != nil {
} else { globals.SugarLogger.Infof("CreateWaybill failed orderID:%s vendorID:%d with error:%v", order.VendorOrderID, platformVendorID, err)
order.DeliveryFlag |= model.WaybillVendorID2Mask(platformVendorID) } else {
err = partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order) 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 { } else {
err = scheduler.ErrDeliverProviderWrong err = scheduler.ErrDeliverProviderWrong

View File

@@ -598,10 +598,12 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
// smsmsg.NotifyJxOrder(order, bill) // smsmsg.NotifyJxOrder(order, bill)
//} //}
//门店发单的门店,需要根据实际运费更新账户(多退少补) //门店发单的门店,需要根据实际运费更新账户(多退少补)
//扣除品牌费用
if storeDetail, err2 := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, ""); err2 == nil { if storeDetail, err2 := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, ""); err2 == nil {
if storeDetail.CreateDeliveryType == model.YES { if storeDetail.CreateDeliveryType == model.YES {
s.updateStoreAccount(order, bill) s.updateStoreAccount(order, bill)
} }
s.updateBrandAccount(storeDetail, bill)
} }
//针对快送的订单(订单接单后会立马召唤骑手,不会到自动拣货完成) //针对快送的订单(订单接单后会立马召唤骑手,不会到自动拣货完成)
//如果骑手已接单,没有通知过的门店,需要发送通知 //如果骑手已接单,没有通知过的门店,需要发送通知
@@ -886,9 +888,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
//1表示为门店发单需要验证门店账户余额情况 //1表示为门店发单需要验证门店账户余额情况
_, err = s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs) _, err = s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs)
//TODO 2021-02-19 增加品牌配送开关 //TODO 2021-02-19 增加品牌配送开关
if storeDetail.BrandIsOpen == model.YES { //TODO 2021-08-31 修改为每个平台的开关
err = fmt.Errorf("此品牌已关闭配送! [%v]", storeDetail.BrandName) //if storeDetail.BrandIsOpen == model.YES {
} // err = fmt.Errorf("此品牌已关闭配送! [%v]", storeDetail.BrandName)
//}
if err == nil { if err == nil {
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
savedOrderInfo.retryCount++ 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) { func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (isBillExist bool) {
if savedOrderInfo != nil { if savedOrderInfo != nil {
if savedBill := savedOrderInfo.waybills[bill.WaybillVendorID]; savedBill != nil { if savedBill := savedOrderInfo.waybills[bill.WaybillVendorID]; savedBill != nil {

View File

@@ -179,3 +179,26 @@ func (s *StoreAcctManager) CheckStoreAcctExpendExist(vendorOrderID string) (isEq
func (s *StoreAcctManager) GetStoreAcctExpendLastCreateWayBillFee(vendorOrderID string) (expend *dao.GetStoreAcctExpendLastCreateWayBillFeeResult, lastFee int, err error) { func (s *StoreAcctManager) GetStoreAcctExpendLastCreateWayBillFee(vendorOrderID string) (expend *dao.GetStoreAcctExpendLastCreateWayBillFeeResult, lastFee int, err error) {
return dao.GetStoreAcctExpendLastCreateWayBillFee(dao.GetDB(), vendorOrderID) 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
}

View File

@@ -289,6 +289,11 @@ var (
AutoReplyGoodComment: "禁止差评自动回复", AutoReplyGoodComment: "禁止差评自动回复",
AutoReplyDisabled: "禁止自动回复", AutoReplyDisabled: "禁止自动回复",
} }
DeliveryBrandMarkMap = map[int]int{
VendorIDMTPS: BrandOpenMTPS,
VendorIDDada: BrandOpenDaDa,
VendorIDFengNiao: BrandOpenFN,
}
) )
type Store struct { type Store struct {

View File

@@ -42,4 +42,7 @@ type IStoreAcctManager interface {
InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string, expendID int) (err error) InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string, expendID int) (err error)
CheckStoreAcctExpendExist(vendorOrderID string) (isEqual, isZero bool, err error) CheckStoreAcctExpendExist(vendorOrderID string) (isEqual, isZero bool, err error)
GetStoreAcctExpendLastCreateWayBillFee(vendorOrderID string) (expend *dao.GetStoreAcctExpendLastCreateWayBillFeeResult, lastFee int, err error) GetStoreAcctExpendLastCreateWayBillFee(vendorOrderID string) (expend *dao.GetStoreAcctExpendLastCreateWayBillFeeResult, lastFee int, err error)
//品牌账户
GetBrandBalance(brandID int) (balance int, err error)
} }