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