预警14
This commit is contained in:
parent
760549de2a
commit
6f96e22f5f
|
|
@ -85,7 +85,7 @@ cron:
|
|||
command: "0 0 1 * * ?" # 每天凌晨1点执行一次
|
||||
warningBudget:
|
||||
isOpen: true #是否启动 true/false
|
||||
command: "0 */5 * * *" #cron表达式,每一分钟执行一次
|
||||
command: "0 */5 * * *" #cron表达式,每5分钟执行一次
|
||||
|
||||
rdsMQ:
|
||||
wechatQuery:
|
||||
|
|
|
|||
|
|
@ -14,6 +14,16 @@ import (
|
|||
"voucher/internal/biz/vo"
|
||||
)
|
||||
|
||||
func (this *VoucherBiz) Warning(ctx context.Context, batchNo string) error {
|
||||
|
||||
product, err := this.ProductRepo.GetByBatchNo(ctx, batchNo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return this.WarningBudget(ctx, product)
|
||||
}
|
||||
|
||||
func (this *VoucherBiz) WarningBudgetIncr(ctx context.Context, key string, ttl time.Duration) (int64, error) {
|
||||
|
||||
// 增加发送计数
|
||||
|
|
@ -57,7 +67,7 @@ func (this *VoucherBiz) WarningBudgetIncrDel(ctx context.Context, key string) er
|
|||
return nil
|
||||
}
|
||||
|
||||
func (this *VoucherBiz) WarningBudget(ctx context.Context) {
|
||||
func (this *VoucherBiz) CronWarningBudget(ctx context.Context) {
|
||||
|
||||
uid := "warningBudget"
|
||||
|
||||
|
|
@ -72,7 +82,7 @@ func (this *VoucherBiz) WarningBudget(ctx context.Context) {
|
|||
start := time.Now()
|
||||
log.Warnf("预警查询,执行开始: %s", start.Format(time.DateTime))
|
||||
|
||||
if err := this.warningBudget(ctx); err != nil {
|
||||
if err := this.cronWarningBudget(ctx); err != nil {
|
||||
log.Errorf("预警查询,执行失败: %this", err)
|
||||
}
|
||||
|
||||
|
|
@ -83,31 +93,31 @@ func (this *VoucherBiz) WarningBudget(ctx context.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
func (this *VoucherBiz) warningBudget(ctx context.Context) error {
|
||||
func (this *VoucherBiz) cronWarningBudget(ctx context.Context) error {
|
||||
|
||||
err := this.ProductRepo.FindWarningBudget(ctx, func(ctx context.Context, rows []*bo.ProductBo) error {
|
||||
return this.ProductRepo.FindWarningBudget(ctx, func(ctx context.Context, rows []*bo.ProductBo) error {
|
||||
|
||||
for _, row := range rows {
|
||||
|
||||
wxResp, err := this.WechatCpnRepo.QueryProduct(ctx, row.MchId, row.BatchNo)
|
||||
if err != nil {
|
||||
log.Context(ctx).Errorf("预警查询,查询微信券失败: %this", err)
|
||||
} else {
|
||||
if err = this.Calculate(ctx, row, wxResp); err != nil {
|
||||
if err := this.WarningBudget(ctx, row); err != nil {
|
||||
log.Context(ctx).Errorf("预警查询,处理失败: %this", err)
|
||||
}
|
||||
}
|
||||
|
||||
time.Sleep(time.Second * 2)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (this *VoucherBiz) WarningBudget(ctx context.Context, product *bo.ProductBo) error {
|
||||
|
||||
wxResp, err := this.WechatCpnRepo.QueryProduct(ctx, product.MchId, product.BatchNo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = this.Calculate(ctx, product, wxResp); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -189,6 +199,7 @@ func formatAsCard(product *bo.ProductBo, req *do.WxResp) string {
|
|||
card.WriteString("#### 🎫 基本信息\n")
|
||||
card.WriteString(fmt.Sprintf("- **批次号**: %s\n", product.BatchNo))
|
||||
card.WriteString(fmt.Sprintf("- **活动号**: %s\n", product.ProductNo))
|
||||
card.WriteString(fmt.Sprintf("- **预警值**: %d元\n", product.WarningBudget))
|
||||
card.WriteString(fmt.Sprintf("- **面额**: %d元\n", req.Amount))
|
||||
card.WriteString(fmt.Sprintf("- **总预算**: %d元\n", req.AllBudget))
|
||||
card.WriteString(fmt.Sprintf("- **总库存**: %d张\n", req.AllStock))
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ func (cs *CronServer) Start(ctx context.Context) error {
|
|||
return err
|
||||
}
|
||||
|
||||
if err := cs.VoucherService.WarningBudget(ctx); err != nil {
|
||||
if err := cs.VoucherService.CronWarningBudget(ctx); err != nil {
|
||||
log.Error("cron warning budget Start err: %v", err)
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ func NewHTTPServer(
|
|||
srv.Route("/voucher/").POST("pushWechatQuery", cmb.PushWechatQuery)
|
||||
srv.Route("/voucher/").POST("timeSliceQueryPush", cmb.TimeSliceQueryPush)
|
||||
srv.Route("/voucher/").POST("pushWechatRetry/{batch_no}", cmb.PushWechatRetry)
|
||||
srv.Route("/voucher/").POST("warningBudget/{batch_no}", cmb.WarningBudget)
|
||||
|
||||
v1.RegisterCmbHTTPServer(srv, cmb)
|
||||
|
||||
|
|
|
|||
|
|
@ -133,3 +133,20 @@ func (this *CmbService) PushWechatRetry(ctx http.Context) error {
|
|||
"data": batchNo,
|
||||
})
|
||||
}
|
||||
|
||||
func (this *CmbService) WarningBudget(ctx http.Context) error {
|
||||
|
||||
batchNo := ctx.Vars().Get("batch_no")
|
||||
if batchNo == "" {
|
||||
return fmt.Errorf("batch_no is empty")
|
||||
}
|
||||
|
||||
err := this.VoucherBiz.Warning(ctx, batchNo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return ctx.JSON(http2.StatusOK, map[string]interface{}{
|
||||
"data": batchNo,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"github.com/go-kratos/kratos/v2/log"
|
||||
)
|
||||
|
||||
func (s *VoucherService) WarningBudget(ctx context.Context) error {
|
||||
func (s *VoucherService) CronWarningBudget(ctx context.Context) error {
|
||||
|
||||
c, ok := s.bc.Cron.CommandMap["warningBudget"]
|
||||
|
||||
|
|
@ -26,7 +26,7 @@ func (s *VoucherService) WarningBudget(ctx context.Context) error {
|
|||
|
||||
return s.cron.AddFunc(c.Command, func() {
|
||||
|
||||
s.VoucherBiz.WarningBudget(ctx)
|
||||
s.VoucherBiz.CronWarningBudget(ctx)
|
||||
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue