aa
This commit is contained in:
@@ -338,7 +338,7 @@ func (c *BaseScheduler) SetOrderWaybillTipByOrder(ctx *jxcontext.Context, order
|
|||||||
} else {
|
} else {
|
||||||
//加小费成功扣钱
|
//加小费成功扣钱
|
||||||
if order.CreateDeliveryType == model.YES {
|
if order.CreateDeliveryType == model.YES {
|
||||||
if err = partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), int(tipFee), partner.StoreAcctTypeExpendCreateWaybillTip, order.VendorOrderID); err == nil {
|
if err = partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), 100, partner.StoreAcctTypeExpendCreateWaybillTip, order.VendorOrderID); err == nil {
|
||||||
flag = true
|
flag = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -374,7 +374,7 @@ func (c *BaseScheduler) SetOrderWaybillTipByOrder(ctx *jxcontext.Context, order
|
|||||||
if !flag {
|
if !flag {
|
||||||
//加小费成功扣钱
|
//加小费成功扣钱
|
||||||
if order.CreateDeliveryType == model.YES {
|
if order.CreateDeliveryType == model.YES {
|
||||||
partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), int(tipFee), partner.StoreAcctTypeExpendCreateWaybillTip, order.VendorOrderID)
|
partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), 100, partner.StoreAcctTypeExpendCreateWaybillTip, order.VendorOrderID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,33 +134,44 @@ func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Contex
|
|||||||
}
|
}
|
||||||
//门店发单开始扣钱
|
//门店发单开始扣钱
|
||||||
if order.CreateDeliveryType == model.YES {
|
if order.CreateDeliveryType == model.YES {
|
||||||
//暂时这么认为,len courierVendorIDs 为1表示是老板或者运营从小程序上点的立即发单,因为小程序上是点哪个发哪个
|
deliveryFeeMap, _ := s.QueryOrderWaybillFeeInfoEx(ctx, order.VendorOrderID, order.VendorID)
|
||||||
//京西后台则是点一下发3个,len courierVendorIDs 是0
|
isEqual, isZero, _ := partner.CurStoreAcctManager.CheckStoreAcctExpendExist(order.VendorOrderID)
|
||||||
//如果是小程序上点哪个扣哪个平台的钱
|
if !isZero && !isEqual {
|
||||||
//如果是后台,则选最高的那个扣
|
var newPrice int64
|
||||||
// var deliveryDee int64
|
if len(courierVendorIDs) == 1 {
|
||||||
// deliveryFeeMap, _ := s.QueryOrderWaybillFeeInfoEx(ctx, order.VendorOrderID, order.VendorID)
|
courierVendorID := courierVendorIDs[0]
|
||||||
// if len(courierVendorIDs) == 1 {
|
if _, ok := deliveryFeeMap[courierVendorID]; ok {
|
||||||
// courierVendorID := courierVendorIDs[0]
|
newPrice = deliveryFeeMap[courierVendorID].DeliveryFee
|
||||||
// if _, ok := deliveryFeeMap[courierVendorID]; ok {
|
}
|
||||||
// deliveryDee = deliveryFeeMap[courierVendorID].DeliveryFee
|
} else if len(courierVendorIDs) == 0 {
|
||||||
// }
|
var maxFee int64
|
||||||
// } else if len(courierVendorIDs) == 0 {
|
for _, v := range deliveryFeeMap {
|
||||||
// var maxFee int64
|
if v.DeliveryFee > maxFee {
|
||||||
// for _, v := range deliveryFeeMap {
|
v.DeliveryFee = maxFee
|
||||||
// if v.DeliveryFee > maxFee {
|
}
|
||||||
// v.DeliveryFee = maxFee
|
}
|
||||||
// }
|
newPrice = maxFee
|
||||||
// }
|
}
|
||||||
// deliveryDee = maxFee
|
lastFee, _ := partner.CurStoreAcctManager.GetStoreAcctExpendLastCreateWayBillFee(order.VendorOrderID)
|
||||||
// }
|
if int(newPrice) > lastFee {
|
||||||
// handler := partner.CurStoreAcctManager
|
partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), int(newPrice)-lastFee, partner.StoreAcctTypeExpendCreateWaybillEx, order.VendorOrderID)
|
||||||
//此订单没有因为发运单而扣除过门店账户
|
}
|
||||||
// if isExist, err := handler.CheckStoreAcctExpendExist(order.VendorOrderID); err == nil && !isExist {
|
} else {
|
||||||
// err = handler.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), int(deliveryDee), partner.StoreAcctTypeExpendCreateWaybillEx, order.VendorOrderID)
|
if len(courierVendorIDs) == 1 {
|
||||||
// } else if isExist {
|
courierVendorID := courierVendorIDs[0]
|
||||||
// globals.SugarLogger.Debugf("CreateWaybillOnProviders4SavedOrder orderID:%s userName:%s ,storeAcctExpend isExist", order.VendorOrderID, ctx.GetUserName())
|
if _, ok := deliveryFeeMap[courierVendorID]; ok {
|
||||||
// }
|
partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), int(deliveryFeeMap[courierVendorID].DeliveryFee), partner.StoreAcctTypeExpendCreateWaybillEx, order.VendorOrderID)
|
||||||
|
}
|
||||||
|
} else if len(courierVendorIDs) == 0 {
|
||||||
|
var maxFee int64
|
||||||
|
for _, v := range deliveryFeeMap {
|
||||||
|
if v.DeliveryFee > maxFee {
|
||||||
|
v.DeliveryFee = maxFee
|
||||||
|
}
|
||||||
|
}
|
||||||
|
partner.CurStoreAcctManager.InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx, jxutils.GetSaleStoreIDFromOrder(order), int(maxFee), partner.StoreAcctTypeExpendCreateWaybillEx, order.VendorOrderID)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("CreateWaybillOnProviders4SavedOrder orderID:%s userName:%s successfully", order.VendorOrderID, ctx.GetUserName())
|
globals.SugarLogger.Debugf("CreateWaybillOnProviders4SavedOrder orderID:%s userName:%s successfully", order.VendorOrderID, ctx.GetUserName())
|
||||||
return bills, err
|
return bills, err
|
||||||
@@ -253,7 +264,12 @@ func (s *DefScheduler) CheckStoreBalance(ctx *jxcontext.Context, order *model.Go
|
|||||||
}
|
}
|
||||||
newPrice = maxFee
|
newPrice = maxFee
|
||||||
}
|
}
|
||||||
fmt.Println(newPrice)
|
lastFee, _ := partner.CurStoreAcctManager.GetStoreAcctExpendLastCreateWayBillFee(order.VendorOrderID)
|
||||||
|
if int(newPrice) > lastFee {
|
||||||
|
if storeAcct.AccountBalance < int(newPrice)-lastFee {
|
||||||
|
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("门店账户余额小于[%v]元,不能发配送!", jxutils.IntPrice2Standard(newPrice-int64(lastFee)))
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if storeAcct.AccountBalance < partner.MinCreateWaybillBalance {
|
if storeAcct.AccountBalance < partner.MinCreateWaybillBalance {
|
||||||
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("门店账户余额小于[%v]元,不能发配送!", jxutils.IntPrice2Standard(partner.MinCreateWaybillBalance))
|
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("门店账户余额小于[%v]元,不能发配送!", jxutils.IntPrice2Standard(partner.MinCreateWaybillBalance))
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type StoreAcctManager struct {
|
type StoreAcctManager struct {
|
||||||
|
DB *dao.DaoDB
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -17,14 +18,17 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
FixedStoreAcctManager = &StoreAcctManager{}
|
FixedStoreAcctManager = &StoreAcctManager{
|
||||||
|
DB: dao.GetDB(),
|
||||||
|
}
|
||||||
partner.InitStoreAcctManager(FixedStoreAcctManager)
|
partner.InitStoreAcctManager(FixedStoreAcctManager)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreAcctManager) InsertStoreAcctIncome(ctx *jxcontext.Context, db *dao.DaoDB, storeID, price, acctType int, vendorOrderID string) (err error) {
|
func (s *StoreAcctManager) InsertStoreAcctIncome(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error) {
|
||||||
var (
|
var (
|
||||||
userID, userName string
|
userID, userName string
|
||||||
goodsVendorOrderID string
|
goodsVendorOrderID string
|
||||||
|
db = s.DB
|
||||||
)
|
)
|
||||||
if ctx != nil {
|
if ctx != nil {
|
||||||
userID = ctx.GetUserID()
|
userID = ctx.GetUserID()
|
||||||
@@ -53,9 +57,10 @@ func (s *StoreAcctManager) InsertStoreAcctIncome(ctx *jxcontext.Context, db *dao
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreAcctManager) InsertStoreAcctExpend(ctx *jxcontext.Context, db *dao.DaoDB, storeID, price, acctType int, vendorOrderID string) (err error) {
|
func (s *StoreAcctManager) InsertStoreAcctExpend(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error) {
|
||||||
var (
|
var (
|
||||||
userID, userName string
|
userID, userName string
|
||||||
|
db = s.DB
|
||||||
)
|
)
|
||||||
if ctx != nil {
|
if ctx != nil {
|
||||||
userID = ctx.GetUserID()
|
userID = ctx.GetUserID()
|
||||||
@@ -84,7 +89,7 @@ func (s *StoreAcctManager) InsertStoreAcctExpend(ctx *jxcontext.Context, db *dao
|
|||||||
|
|
||||||
func (s *StoreAcctManager) UpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price int, isIncome bool) (err error) {
|
func (s *StoreAcctManager) UpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price int, isIncome bool) (err error) {
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = s.DB
|
||||||
)
|
)
|
||||||
globals.SugarLogger.Debugf("UpdateStoreAcctBalance storeID: [%v] , price :[%v] ,", storeID, price)
|
globals.SugarLogger.Debugf("UpdateStoreAcctBalance storeID: [%v] , price :[%v] ,", storeID, price)
|
||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
@@ -127,11 +132,8 @@ func (s *StoreAcctManager) UpdateStoreAcctBalance(ctx *jxcontext.Context, storeI
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreAcctManager) InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error) {
|
func (s *StoreAcctManager) InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error) {
|
||||||
var (
|
|
||||||
db = dao.GetDB()
|
|
||||||
)
|
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
if err = s.InsertStoreAcctExpend(ctx, db, storeID, price, acctType, vendorOrderID); err == nil {
|
if err = s.InsertStoreAcctExpend(ctx, storeID, price, acctType, vendorOrderID); err == nil {
|
||||||
s.UpdateStoreAcctBalance(ctx, storeID, price, false)
|
s.UpdateStoreAcctBalance(ctx, storeID, price, false)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -139,11 +141,8 @@ func (s *StoreAcctManager) InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx *j
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreAcctManager) InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error) {
|
func (s *StoreAcctManager) InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error) {
|
||||||
var (
|
|
||||||
db = dao.GetDB()
|
|
||||||
)
|
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
if err = s.InsertStoreAcctIncome(ctx, db, storeID, price, acctType, vendorOrderID); err == nil {
|
if err = s.InsertStoreAcctIncome(ctx, storeID, price, acctType, vendorOrderID); err == nil {
|
||||||
s.UpdateStoreAcctBalance(ctx, storeID, price, true)
|
s.UpdateStoreAcctBalance(ctx, storeID, price, true)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -152,12 +151,11 @@ func (s *StoreAcctManager) InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *j
|
|||||||
|
|
||||||
func (s *StoreAcctManager) CheckStoreAcctExpendExist(vendorOrderID string) (isEqual, isZero bool, err error) {
|
func (s *StoreAcctManager) CheckStoreAcctExpendExist(vendorOrderID string) (isEqual, isZero bool, err error) {
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
|
||||||
expends, incomes int
|
expends, incomes int
|
||||||
)
|
)
|
||||||
globals.SugarLogger.Debugf("CheckStoreAcctExpendExist orderID:[%v]", vendorOrderID)
|
globals.SugarLogger.Debugf("CheckStoreAcctExpendExist orderID:[%v]", vendorOrderID)
|
||||||
expends, err = dao.GetStoreAcctExpendTotal(db, 0, []int{partner.StoreAcctTypeExpendCreateWaybillEx, partner.StoreAcctTypeRealFeeExpend}, vendorOrderID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
expends, err = dao.GetStoreAcctExpendTotal(s.DB, 0, []int{partner.StoreAcctTypeExpendCreateWaybillEx, partner.StoreAcctTypeRealFeeExpend}, vendorOrderID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
incomes, err = dao.GetStoreAcctIncomeTotal(db, 0, []int{partner.StoreAcctTypeRealFeeIncome, partner.StoreAcctTypeIncomeCancelTemp, partner.StoreAcctTypeIncomeCancelReal}, vendorOrderID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
incomes, err = dao.GetStoreAcctIncomeTotal(s.DB, 0, []int{partner.StoreAcctTypeRealFeeIncome, partner.StoreAcctTypeIncomeCancelTemp, partner.StoreAcctTypeIncomeCancelReal}, vendorOrderID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
if expends != incomes {
|
if expends != incomes {
|
||||||
if expends > incomes {
|
if expends > incomes {
|
||||||
return false, false, err
|
return false, false, err
|
||||||
@@ -173,3 +171,7 @@ func (s *StoreAcctManager) CheckStoreAcctExpendExist(vendorOrderID string) (isEq
|
|||||||
}
|
}
|
||||||
return false, false, err
|
return false, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *StoreAcctManager) GetStoreAcctExpendLastCreateWayBillFee(vendorOrderID string) (lastFee int, err error) {
|
||||||
|
return dao.GetStoreAcctExpendLastCreateWayBillFee(s.DB, vendorOrderID)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1169,5 +1169,12 @@ func GetStoreAcctExpendLastCreateWayBillFee(db *DaoDB, vendorOrderID string) (la
|
|||||||
LIMIT 1
|
LIMIT 1
|
||||||
`
|
`
|
||||||
err = GetRow(db, &expend, sql, sqlParams)
|
err = GetRow(db, &expend, sql, sqlParams)
|
||||||
return expend.ExpendPrice, err
|
lastFee = expend.ExpendPrice
|
||||||
|
if expend.ExpID != 0 {
|
||||||
|
lastFee += expend.MulitExpendPrice
|
||||||
|
}
|
||||||
|
if expend.IncID != 0 {
|
||||||
|
lastFee -= expend.MulitIncomePrice
|
||||||
|
}
|
||||||
|
return lastFee, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package partner
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -13,7 +12,7 @@ const (
|
|||||||
StoreAcctTypeIncomeCancelReal = 19 //运单取消,回退的真实运费
|
StoreAcctTypeIncomeCancelReal = 19 //运单取消,回退的真实运费
|
||||||
|
|
||||||
//账户支出类型
|
//账户支出类型
|
||||||
StoreAcctTypeExpendCreateWaybillEx = 20 //手动发单扣除的临时运费
|
StoreAcctTypeExpendCreateWaybillEx = 20 //发单扣除的临时运费
|
||||||
StoreAcctTypeExpendCreateWaybillTip = 21 //手动加小费扣除
|
StoreAcctTypeExpendCreateWaybillTip = 21 //手动加小费扣除
|
||||||
StoreAcctTypeRealFeeExpend = 25 //真实运费 > 临时运费, 真实运费的值 - 临时运费的值
|
StoreAcctTypeRealFeeExpend = 25 //真实运费 > 临时运费, 真实运费的值 - 临时运费的值
|
||||||
)
|
)
|
||||||
@@ -32,12 +31,13 @@ func InitStoreAcctManager(curStoreManager IStoreAcctManager) {
|
|||||||
|
|
||||||
type IStoreAcctManager interface {
|
type IStoreAcctManager interface {
|
||||||
//增加一条收入流水
|
//增加一条收入流水
|
||||||
InsertStoreAcctIncome(ctx *jxcontext.Context, db *dao.DaoDB, storeID, price, acctType int, vendorOrderID string) (err error)
|
InsertStoreAcctIncome(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error)
|
||||||
//增加一条支出流水
|
//增加一条支出流水
|
||||||
InsertStoreAcctExpend(ctx *jxcontext.Context, db *dao.DaoDB, storeID, price, acctType int, vendorOrderID string) (err error)
|
InsertStoreAcctExpend(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error)
|
||||||
//更新门店账户
|
//更新门店账户
|
||||||
UpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price int, isIncome bool) (err error)
|
UpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price int, isIncome bool) (err error)
|
||||||
InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error)
|
InsertStoreAcctExpendAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error)
|
||||||
InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error)
|
InsertStoreAcctIncomeAndUpdateStoreAcctBalance(ctx *jxcontext.Context, storeID, price, acctType int, vendorOrderID string) (err error)
|
||||||
CheckStoreAcctExpendExist(vendorOrderID string) (isEqual, isZero bool, err error)
|
CheckStoreAcctExpendExist(vendorOrderID string) (isEqual, isZero bool, err error)
|
||||||
|
GetStoreAcctExpendLastCreateWayBillFee(vendorOrderID string) (lastFee int, err error)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user