品牌余额不足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

@@ -46,15 +46,17 @@ var (
StoreNameEbai string StoreNameEbai string
StoreNameEbai2 string StoreNameEbai2 string
SMSSignName string SMSSignName string
SMSMobileVerifyTemplate string SMSMobileVerifyTemplate string
SMSNewOrderTemplate string SMSNewOrderTemplate string
SMSNewOrderTemplateQ string SMSNewOrderTemplateQ string
SMSOrderCanceledTemplate string SMSOrderCanceledTemplate string
SMSNewUserOrderTemplate string SMSNewUserOrderTemplate string
SMSJxOrderDelivering string SMSJxOrderDelivering string
SMSPickOrderTemplate string SMSPickOrderTemplate string
SMSVoicePickOrderTemplate string SMSBrandBalanceTemplate 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