品牌余额不足10快发通知

This commit is contained in:
suyl
2021-08-31 14:52:49 +08:00
parent 637efdc421
commit 5a658dd646
4 changed files with 71 additions and 13 deletions

View File

@@ -3,10 +3,12 @@ package cms
import ( import (
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"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/jxutils/smsmsg"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
) )
type StoreAcctManager struct { type StoreAcctManager struct {
@@ -198,7 +200,14 @@ func (s *StoreAcctManager) InsertBrandBill(ctx *jxcontext.Context, brandID, pric
OrderID: orderID, OrderID: orderID,
} }
dao.WrapAddIDCULEntity(brandBill, ctx.GetUserName()) dao.WrapAddIDCULEntity(brandBill, ctx.GetUserName())
err = dao.CreateEntity(db, brandBill) //扣除后如果余额小于10元要发消息通知 ,每天通知一次
if err = dao.CreateEntity(db, brandBill); err == nil {
if mark := api.Cacher.Get("brandID" + utils.Int2Str(brandID)); mark == nil {
if balance, _ := s.GetBrandBalance(brandID); balance < model.BrandBalanceLimit {
smsmsg.NotifyBrandBalance(brandID)
}
}
}
}) })
return err return err
} }

View File

@@ -7,6 +7,7 @@ import (
aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate" aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
dyvmsapiclient "github.com/alibabacloud-go/dyvmsapi-20170525-2.0.2/client" dyvmsapiclient "github.com/alibabacloud-go/dyvmsapi-20170525-2.0.2/client"
"github.com/alibabacloud-go/tea/tea" "github.com/alibabacloud-go/tea/tea"
"time"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/baseapi/utils/errlist"
@@ -54,7 +55,7 @@ func SendSMSMsg(mobileList []string, signName, templateCode string, templatePara
return err return err
} }
func SendVoiceMsg(mobileList []string, templateParam map[string]interface{}) (err error) { func SendVoiceMsg(mobileList []string, templateCode string, templateParam map[string]interface{}) (err error) {
if len(mobileList) > 0 { if len(mobileList) > 0 {
errList := errlist.New() errList := errlist.New()
mobileList = jxutils.StringMap2List(jxutils.StringList2Map(mobileList)) mobileList = jxutils.StringMap2List(jxutils.StringList2Map(mobileList))
@@ -62,7 +63,7 @@ func SendVoiceMsg(mobileList []string, templateParam map[string]interface{}) (er
if mobileNum != "" { if mobileNum != "" {
request := &dyvmsapiclient.SingleCallByTtsRequest{ request := &dyvmsapiclient.SingleCallByTtsRequest{
CalledNumber: tea.String(mobileNum), CalledNumber: tea.String(mobileNum),
TtsCode: tea.String(globals.SMSVoicePickOrderTemplate), TtsCode: tea.String(templateCode),
TtsParam: tea.String(string(utils.MustMarshal(templateParam))), TtsParam: tea.String(string(utils.MustMarshal(templateParam))),
} }
res, _err := api.VoiceClient.SingleCallByTts(request) res, _err := api.VoiceClient.SingleCallByTts(request)
@@ -150,7 +151,7 @@ func NotifyPickOrder(order *model.GoodsOrder) (err error) {
store.MarketManPhone = "18048531223" store.MarketManPhone = "18048531223"
} }
if store.BrandIsOpen&model.BrandOpenVoice != 0 && balance >= model.BrandBalanceLimit { if store.BrandIsOpen&model.BrandOpenVoice != 0 && balance >= model.BrandBalanceLimit {
if err = SendVoiceMsg(mobileList, map[string]interface{}{ if err = SendVoiceMsg(mobileList, globals.SMSPickOrderTemplate, map[string]interface{}{
"tel": store.MarketManPhone, "tel": store.MarketManPhone,
}); err == nil { }); err == nil {
err = updateSth(order, store, model.BrandBillFeeTypeVoice) err = updateSth(order, store, model.BrandBillFeeTypeVoice)
@@ -300,3 +301,45 @@ func NotifyJxOrder(order *model.GoodsOrder, bill *model.Waybill) (err error) {
}, order) }, order)
return err return err
} }
//品牌余额不足发送
func NotifyBrandBalance(brandID int) (err error) {
var (
db = dao.GetDB()
)
bindUsers, err := dao.GetBrandUser(db, brandID, "")
if err != nil {
return err
}
list := errlist.New()
count := 0
for _, v := range bindUsers {
if user, err := dao.GetUserByID(db, "user_id", v.UserID); err == nil && user != nil {
if err = SendVoiceMsg([]string{*user.Mobile}, globals.SMSVoiceBrandBalanceTemplate, map[string]interface{}{
"money": model.BrandBalanceLimit,
}); err != nil {
list.AddErr(err)
} else {
count++
}
if err = SendSMSMsg([]string{*user.Mobile}, globals.SMSSignName, globals.SMSBrandBalanceTemplate, map[string]interface{}{
"money": model.BrandBalanceLimit,
}, nil); err != nil {
list.AddErr(err)
} else {
count++
}
}
}
err = list.GetErrListAsOne()
if err == nil {
//每个品牌每天通知一次用redis吧
if mark := api.Cacher.Get("brandID" + utils.Int2Str(brandID)); mark == nil {
err = api.Cacher.Set("brandID"+utils.Int2Str(brandID), 1, utils.Str2Time(time.Now().AddDate(0, 0, 1).Format("2006-01-02")+"00:00:00").Sub(time.Now()))
}
if count > 0 {
partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, brandID, 5*count, model.BrandBillTypeExpend, model.BrandBillFeeTypeSys, "", "")
}
}
return err
}

View File

@@ -144,7 +144,9 @@ smsOrderCanceledTemplate = "SMS_175573134"
smsNewUserOrderTemplate = "SMS_190284055" smsNewUserOrderTemplate = "SMS_190284055"
smsJxOrderDelivering = "SMS_217235545" smsJxOrderDelivering = "SMS_217235545"
smsPickOrderTemplate = "SMS_222861531" smsPickOrderTemplate = "SMS_222861531"
smsBrandBalanceTemplate = "SMS_223190142"
smsVoicePickOrderTemplate = "TTS_222871733" smsVoicePickOrderTemplate = "TTS_222871733"
smsVoiceBrandBalanceTemplate = "TTS_223200132"
addEvent = true addEvent = true

View File

@@ -54,7 +54,9 @@ var (
SMSNewUserOrderTemplate string SMSNewUserOrderTemplate string
SMSJxOrderDelivering string SMSJxOrderDelivering string
SMSPickOrderTemplate string SMSPickOrderTemplate string
SMSBrandBalanceTemplate string
SMSVoicePickOrderTemplate string SMSVoicePickOrderTemplate string
SMSVoiceBrandBalanceTemplate string
EnableWXAuth2 bool EnableWXAuth2 bool
DisableWXAuth1 bool DisableWXAuth1 bool
@@ -139,7 +141,9 @@ func Init() {
SMSOrderCanceledTemplate = web.AppConfig.DefaultString("smsOrderCanceledTemplate", "") SMSOrderCanceledTemplate = web.AppConfig.DefaultString("smsOrderCanceledTemplate", "")
SMSNewUserOrderTemplate = web.AppConfig.DefaultString("smsNewUserOrderTemplate", "") SMSNewUserOrderTemplate = web.AppConfig.DefaultString("smsNewUserOrderTemplate", "")
SMSJxOrderDelivering = web.AppConfig.DefaultString("smsJxOrderDelivering", "") SMSJxOrderDelivering = web.AppConfig.DefaultString("smsJxOrderDelivering", "")
SMSBrandBalanceTemplate = web.AppConfig.DefaultString("smsBrandBalanceTemplate", "")
SMSVoicePickOrderTemplate = web.AppConfig.DefaultString("smsVoicePickOrderTemplate", "") SMSVoicePickOrderTemplate = web.AppConfig.DefaultString("smsVoicePickOrderTemplate", "")
SMSVoiceBrandBalanceTemplate = web.AppConfig.DefaultString("smsVoiceBrandBalanceTemplate", "")
EnableWXAuth2 = true // web.BConfig.RunMode == "beta" EnableWXAuth2 = true // web.BConfig.RunMode == "beta"
DisableWXAuth1 = true DisableWXAuth1 = true