预警7
This commit is contained in:
parent
819f92484d
commit
f9d5511a91
|
|
@ -12,26 +12,29 @@ import (
|
|||
"voucher/internal/biz/vo"
|
||||
)
|
||||
|
||||
func (s *VoucherBiz) WarningBudgetIncr(ctx context.Context, uid string) (int64, error) {
|
||||
|
||||
func (s *VoucherBiz) WarningBudgetIncrKv(uid string) (string, time.Duration) {
|
||||
v := vo.WarningBudgetSendIncr.BuildCache([]string{uid})
|
||||
return v.Key, v.TTL
|
||||
}
|
||||
|
||||
func (s *VoucherBiz) WarningBudgetIncr(ctx context.Context, key string, TTL time.Duration) (int64, error) {
|
||||
|
||||
// 增加发送计数
|
||||
count, err := s.rdb.Rdb.IncrBy(ctx, v.Key, 1).Result()
|
||||
count, err := s.rdb.Rdb.IncrBy(ctx, key, 1).Result()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 如果是第一次发送,设置 过期时间
|
||||
if count == 1 {
|
||||
if err = s.rdb.Rdb.Expire(ctx, v.Key, v.TTL).Err(); err != nil {
|
||||
if err = s.rdb.Rdb.Expire(ctx, key, TTL).Err(); err != nil {
|
||||
return 0, fmt.Errorf("设置过期时间失败: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// 如果发送次数超过 “指定” 条,清除再来
|
||||
if count > 24 { // 大约2小时
|
||||
return 0, s.WarningBudgetIncrDel(ctx, v.Key)
|
||||
return 0, s.WarningBudgetIncrDel(ctx, key)
|
||||
}
|
||||
|
||||
return count, nil
|
||||
|
|
@ -110,7 +113,9 @@ func (v *VoucherBiz) Calculate(ctx context.Context, product *bo.ProductBo, wxRes
|
|||
|
||||
if product.WarningBudget >= w.AvailableBudget {
|
||||
|
||||
count, err2 := v.WarningBudgetIncr(ctx, product.BatchNo)
|
||||
k, t := v.WarningBudgetIncrKv(product.BatchNo)
|
||||
|
||||
count, err2 := v.WarningBudgetIncr(ctx, k, t)
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
|
|
@ -122,8 +127,7 @@ func (v *VoucherBiz) Calculate(ctx context.Context, product *bo.ProductBo, wxRes
|
|||
}
|
||||
|
||||
if w.AllBudget > product.AllBudget {
|
||||
cv := vo.WarningBudgetSendIncr.BuildCache([]string{product.BatchNo})
|
||||
if err := v.WarningBudgetIncrDel(ctx, cv.Key); err != nil {
|
||||
if err := v.WarningBudgetIncrDel(ctx, k); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ func TestWarningSend(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
err = smsService.SendSMS(context.Background(), []string{"18666173766"}, "SMS_489660721", params)
|
||||
err = smsService.SendSMS(context.Background(), []string{"18666173766", "18900966383"}, "SMS_489660721", params)
|
||||
if err != nil {
|
||||
t.Errorf("发送短信失败: %v", err)
|
||||
return
|
||||
|
|
|
|||
Loading…
Reference in New Issue