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