多笔立减

This commit is contained in:
ziming 2025-08-11 17:06:08 +08:00
parent 9e39917583
commit 21163dc79a
3 changed files with 93 additions and 97 deletions

View File

@ -2,44 +2,43 @@ package biz
import ( import (
"context" "context"
"fmt"
"voucher/internal/biz/bo"
"voucher/internal/biz/vo"
) )
func (this *VoucherBiz) OrderRetry(ctx context.Context, outBizNos []string) error { func (this *VoucherBiz) OrderRetry(ctx context.Context, outBizNos []string) error {
if len(outBizNos) > 0 { return nil
for _, outBizNo := range outBizNos { //if len(outBizNos) > 0 {
//
order, err := this.OrderRepo.GetByOutBizNo(ctx, vo.OrderTypeCmb, outBizNo) // for _, outBizNo := range outBizNos {
if err != nil { //
return fmt.Errorf(fmt.Sprintf("获取订单%s异常:%v", outBizNo, err)) // order, err := this.OrderRepo.GetByOutBizNo(ctx, vo.OrderTypeCmb, outBizNo)
} // if err != nil {
// return fmt.Errorf(fmt.Sprintf("获取订单%s异常:%v", outBizNo, err))
if !order.Status.IsIng() { // }
return fmt.Errorf(fmt.Sprintf("订单%s状态异常:%s", order.OrderNo, order.Status)) //
} // if !order.Status.IsIng() {
// return fmt.Errorf(fmt.Sprintf("订单%s状态异常:%s", order.OrderNo, order.Status))
if err4 := this.orderRetry(ctx, order); err4 != nil { // }
return err4 //
} // if err4 := this.orderRetry(ctx, order); err4 != nil {
} // return err4
// }
return nil // }
} //
// return nil
return this.OrderRepo.FindIngInBatches(ctx, func(ctx context.Context, rows []*bo.OrderBo) error { //}
//
for _, order := range rows { //return this.OrderRepo.FindIngInBatches(ctx, func(ctx context.Context, rows []*bo.OrderBo) error {
//
if err4 := this.orderRetry(ctx, order); err4 != nil { // for _, order := range rows {
return err4 //
} // if err4 := this.orderRetry(ctx, order); err4 != nil {
} // return err4
// }
return nil // }
}) //
// return nil
//})
} }

View File

@ -3,9 +3,6 @@ package biz
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/go-kratos/kratos/v2/log"
"time"
"voucher/internal/biz/bo"
) )
func (this *VoucherBiz) PushWechatRetry(ctx context.Context, batchNo string) error { func (this *VoucherBiz) PushWechatRetry(ctx context.Context, batchNo string) error {
@ -30,35 +27,36 @@ func (this *VoucherBiz) PushWechatRetry(ctx context.Context, batchNo string) err
func (this *VoucherBiz) WechatRetry(ctx context.Context, batchNo string) error { func (this *VoucherBiz) WechatRetry(ctx context.Context, batchNo string) error {
start := time.Now() return nil
log.Warnf("失败订单重试开始:%s,batchNo:%s", start.String(), batchNo) //start := time.Now()
fmt.Printf("失败订单重试开始:%s,batchNo:%s", start.String(), batchNo) //log.Warnf("失败订单重试开始:%s,batchNo:%s", start.String(), batchNo)
//fmt.Printf("失败订单重试开始:%s,batchNo:%s", start.String(), batchNo)
num := 0 //
err := this.OrderRepo.FinFailByStockIdInBatches(ctx, batchNo, func(ctx context.Context, rows []*bo.OrderBo) error { //num := 0
//err := this.OrderRepo.FinFailByStockIdInBatches(ctx, batchNo, func(ctx context.Context, rows []*bo.OrderBo) error {
if len(rows) == 0 { //
log.Infof("微信查询券订单状态,batchNo[%s],已处理[%d]单,无订单,结束执行", batchNo, num) // if len(rows) == 0 {
return nil // log.Infof("微信查询券订单状态,batchNo[%s],已处理[%d]单,无订单,结束执行", batchNo, num)
} // return nil
// }
for _, order := range rows { //
// for _, order := range rows {
num += 1 //
if err := this.orderRetry(ctx, order); err != nil { // num += 1
log.Errorf("失败订单重试发生错误,batchNo:%s,orderNo:%s,appId:%s,openId:%s,err:%v", // if err := this.orderRetry(ctx, order); err != nil {
batchNo, order.OrderNo, order.AppID, order.Account, err) // log.Errorf("失败订单重试发生错误,batchNo:%s,orderNo:%s,appId:%s,openId:%s,err:%v",
} // batchNo, order.OrderNo, order.AppID, order.Account, err)
// }
} //
// }
time.Sleep(1 * time.Second) //
// time.Sleep(1 * time.Second)
return nil //
}) // return nil
//})
log.Warnf("微信券查询处理耗时:%s,batchNo:%s,处理%d单", time.Now().Sub(start).String(), batchNo, num) //
fmt.Printf("微信券查询处理耗时:%s,batchNo:%s,处理%d单", time.Now().Sub(start).String(), batchNo, num) //log.Warnf("微信券查询处理耗时:%s,batchNo:%s,处理%d单", time.Now().Sub(start).String(), batchNo, num)
//fmt.Printf("微信券查询处理耗时:%s,batchNo:%s,处理%d单", time.Now().Sub(start).String(), batchNo, num)
return err //
//return err
} }

View File

@ -2,44 +2,43 @@ package service
import ( import (
"context" "context"
"fmt"
"github.com/go-kratos/kratos/v2/log"
"voucher/internal/pkg/rdsmq" "voucher/internal/pkg/rdsmq"
) )
func (s *VoucherService) GetWechatRetryConfig() *rdsmq.ConsumeConfig { func (s *VoucherService) GetWechatRetryConfig() *rdsmq.ConsumeConfig {
queue := s.bc.RdsMQ.GetWechatRetry() return nil
if queue == nil { //queue := s.bc.RdsMQ.GetWechatRetry()
return nil //if queue == nil {
} // return nil
//}
if !queue.GetIsOpen() { //
log.Warn(fmt.Sprintf("[%s]RdsMQ is not open", queue.Name)) //if !queue.GetIsOpen() {
return nil // log.Warn(fmt.Sprintf("[%s]RdsMQ is not open", queue.Name))
} // return nil
//}
return &rdsmq.ConsumeConfig{ //
Rdb: s.rdb.Rdb, //return &rdsmq.ConsumeConfig{
QueueName: queue.Name, // Rdb: s.rdb.Rdb,
NumWorkers: queue.NumWorkers, // QueueName: queue.Name,
WaitTime: queue.GetWaitTime().AsDuration(), // NumWorkers: queue.NumWorkers,
RetryNum: queue.RetryNum, // WaitTime: queue.GetWaitTime().AsDuration(),
Fn: s.HandleWechatRetry, // RetryNum: queue.RetryNum,
Logger: s.logHelper, // Fn: s.HandleWechatRetry,
} // Logger: s.logHelper,
//}
} }
func (s *VoucherService) HandleWechatRetry(ctx context.Context, batchNo string) error { func (s *VoucherService) HandleWechatRetry(ctx context.Context, batchNo string) error {
if batchNo == "" { //if batchNo == "" {
s.logHelper.Errorf("RdsMQ keySend error: batchNo is empty") // s.logHelper.Errorf("RdsMQ keySend error: batchNo is empty")
return nil // return nil
} //}
//
if err := s.VoucherBiz.WechatRetry(ctx, batchNo); err != nil { //if err := s.VoucherBiz.WechatRetry(ctx, batchNo); err != nil {
s.logHelper.Error(err) // s.logHelper.Error(err)
} //}
return nil return nil
} }