品牌余额不足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 (
"git.rosy.net.cn/baseapi/utils"
"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/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
)
type StoreAcctManager struct {
@@ -198,7 +200,14 @@ func (s *StoreAcctManager) InsertBrandBill(ctx *jxcontext.Context, brandID, pric
OrderID: orderID,
}
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
}

View File

@@ -7,6 +7,7 @@ import (
aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
dyvmsapiclient "github.com/alibabacloud-go/dyvmsapi-20170525-2.0.2/client"
"github.com/alibabacloud-go/tea/tea"
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/baseapi/utils/errlist"
@@ -54,7 +55,7 @@ func SendSMSMsg(mobileList []string, signName, templateCode string, templatePara
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 {
errList := errlist.New()
mobileList = jxutils.StringMap2List(jxutils.StringList2Map(mobileList))
@@ -62,7 +63,7 @@ func SendVoiceMsg(mobileList []string, templateParam map[string]interface{}) (er
if mobileNum != "" {
request := &dyvmsapiclient.SingleCallByTtsRequest{
CalledNumber: tea.String(mobileNum),
TtsCode: tea.String(globals.SMSVoicePickOrderTemplate),
TtsCode: tea.String(templateCode),
TtsParam: tea.String(string(utils.MustMarshal(templateParam))),
}
res, _err := api.VoiceClient.SingleCallByTts(request)
@@ -150,7 +151,7 @@ func NotifyPickOrder(order *model.GoodsOrder) (err error) {
store.MarketManPhone = "18048531223"
}
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,
}); err == nil {
err = updateSth(order, store, model.BrandBillFeeTypeVoice)
@@ -300,3 +301,45 @@ func NotifyJxOrder(order *model.GoodsOrder, bill *model.Waybill) (err error) {
}, order)
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"
smsJxOrderDelivering = "SMS_217235545"
smsPickOrderTemplate = "SMS_222861531"
smsBrandBalanceTemplate = "SMS_223190142"
smsVoicePickOrderTemplate = "TTS_222871733"
smsVoiceBrandBalanceTemplate = "TTS_223200132"
addEvent = true

View File

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