From 637efdc4215dfded1f636268af50364f3423a67e Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Tue, 31 Aug 2021 14:05:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E9=80=81=E5=92=8C=E5=8F=91=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=93=81=E7=89=8C=E4=BD=99=E9=A2=9D=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/basesch/basesch.go | 3 ++- .../jxcallback/scheduler/defsch/defsch.go | 2 +- business/jxstore/cms/store_acct.go | 2 +- business/jxutils/smsmsg/smsmsg.go | 19 +++++++++++++------ business/model/dao/store.go | 2 +- business/model/store.go | 2 ++ business/partner/partner_store_acct.go | 1 + 7 files changed, 21 insertions(+), 10 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index bf1e09818..9c3c72973 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -166,9 +166,10 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr // } // } storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, order.VendorOrgCode) + balance, _ := partner.CurStoreAcctManager.GetBrandBalance(storeDetail.BrandID) handlerInfo := partner.GetDeliveryPlatformFromVendorID(platformVendorID) if handlerInfo != nil && handlerInfo.Use4CreateWaybill { - if model.DeliveryBrandMarkMap[platformVendorID]&storeDetail.BrandIsOpen != 0 { + if model.DeliveryBrandMarkMap[platformVendorID]&storeDetail.BrandIsOpen != 0 && balance >= model.BrandBalanceLimit { if c.IsReallyCallPlatformAPI { bill, err = handlerInfo.Handler.CreateWaybill(order, maxDeliveryFee) if err != nil { diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 3c07d894c..b71817a79 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -1371,7 +1371,7 @@ 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 { - + partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, store.BrandID, balance-int(realDesiredFee), model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery, bill.VendorOrderID, "") } } diff --git a/business/jxstore/cms/store_acct.go b/business/jxstore/cms/store_acct.go index 434107fb8..f80416b7b 100644 --- a/business/jxstore/cms/store_acct.go +++ b/business/jxstore/cms/store_acct.go @@ -198,7 +198,7 @@ func (s *StoreAcctManager) InsertBrandBill(ctx *jxcontext.Context, brandID, pric OrderID: orderID, } dao.WrapAddIDCULEntity(brandBill, ctx.GetUserName()) - dao.CreateEntity(db, brandBill) + err = dao.CreateEntity(db, brandBill) }) return err } diff --git a/business/jxutils/smsmsg/smsmsg.go b/business/jxutils/smsmsg/smsmsg.go index e3ed5a2fb..b5c6a08ea 100644 --- a/business/jxutils/smsmsg/smsmsg.go +++ b/business/jxutils/smsmsg/smsmsg.go @@ -2,6 +2,7 @@ package smsmsg import ( "fmt" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/partner" aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate" dyvmsapiclient "github.com/alibabacloud-go/dyvmsapi-20170525-2.0.2/client" @@ -125,14 +126,21 @@ func NotifyPickOrder(order *model.GoodsOrder) (err error) { if store.Tel2 != "" { mobileList = append(mobileList, store.Tel2) } + updateSth := func(order *model.GoodsOrder, store *dao.StoreDetail, feeType int) (err error) { + order.NotifyType = int(store.SMSNotify) + err = partner.CurOrderManager.UpdateOrderFields(order, []string{"NotifyType"}) + //品牌余额, 一条5分 + err = partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, store.BrandID, 5, model.BrandBillTypeExpend, feeType, order.VendorOrderID, "") + return err + } + balance, _ := partner.CurStoreAcctManager.GetBrandBalance(store.BrandID) if order.NotifyType == 0 && store.SMSNotify != 0 && store.IsOrder == model.NO && store.ID != model.MatterStoreID && store.ID != model.JdShopMainStoreID && len(mobileList) > 0 { globals.SugarLogger.Debugf("NotifyPickOrder orderID: %s , smsNotify :%d", order.VendorOrderID, store.SMSNotify) switch store.SMSNotify { case model.NotifyTypeSMS: - if store.BrandIsOpen&model.BrandOpenSMS != 0 { + if store.BrandIsOpen&model.BrandOpenSMS != 0 && balance >= model.BrandBalanceLimit { if err = SendSMSMsg(mobileList, globals.SMSSignName, globals.SMSPickOrderTemplate, nil, order); err == nil { - order.NotifyType = int(store.SMSNotify) - partner.CurOrderManager.UpdateOrderFields(order, []string{"NotifyType"}) + err = updateSth(order, store, model.BrandBillFeeTypeSms) } } else { globals.SugarLogger.Debugf("NotifyPickOrder sms brand is close , orderID: %s ,isOpen: %d", order.VendorOrderID, store.BrandIsOpen) @@ -141,12 +149,11 @@ func NotifyPickOrder(order *model.GoodsOrder) (err error) { if store.MarketManPhone == "" { store.MarketManPhone = "18048531223" } - if store.BrandIsOpen&model.BrandOpenVoice != 0 { + if store.BrandIsOpen&model.BrandOpenVoice != 0 && balance >= model.BrandBalanceLimit { if err = SendVoiceMsg(mobileList, map[string]interface{}{ "tel": store.MarketManPhone, }); err == nil { - order.NotifyType = int(store.SMSNotify) - partner.CurOrderManager.UpdateOrderFields(order, []string{"NotifyType"}) + err = updateSth(order, store, model.BrandBillFeeTypeVoice) } } else { globals.SugarLogger.Debugf("NotifyPickOrder voice brand is close , orderID: %s ,isOpen: %d", order.VendorOrderID, store.BrandIsOpen) diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 422959d4d..62ad3e3e0 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1353,7 +1353,7 @@ func GetBrandBalance(db *DaoDB, brandID int) (result int, err error) { sql := ` SELECT a.balance - b.balance balance FROM ( - SELECT SUM(price) balance + SELECT IFNULL(SUM(price),0) balance FROM brand_bill WHERE brand_id = ? AND bill_type = ? diff --git a/business/model/store.go b/business/model/store.go index 676c2d157..bfc29ee8c 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -33,6 +33,8 @@ const ( BrandOpenFN = 4 //蜂鸟 BrandOpenSMS = 8 //短信 BrandOpenVoice = 16 //语音 + + BrandBalanceLimit = 1000 ) const ( diff --git a/business/partner/partner_store_acct.go b/business/partner/partner_store_acct.go index 42a57270d..081d7494c 100644 --- a/business/partner/partner_store_acct.go +++ b/business/partner/partner_store_acct.go @@ -45,4 +45,5 @@ type IStoreAcctManager interface { //品牌账户 GetBrandBalance(brandID int) (balance int, err error) + InsertBrandBill(ctx *jxcontext.Context, brandID, price, billType, feeType int, vendorOrderID string, orderID string) (err error) }