voucher/internal/biz/order_notify_retry.go

57 lines
1.1 KiB
Go

package biz
import (
"context"
"encoding/json"
"fmt"
"github.com/go-kratos/kratos/v2/transport/http"
"time"
"voucher/internal/biz/do"
)
func (this *VoucherBiz) PushOrderNotifyRetry(ctx http.Context, req *do.OrderNotifyRetry) error {
queue := this.bc.RdsMQ.GetOrderNotifyRetry()
if queue == nil {
return fmt.Errorf("队列不存在")
}
msg, err := json.Marshal(req)
if err != nil {
return err
}
strMsg := string(msg)
_, err = this.rdb.Rdb.RPush(ctx, queue.Name, strMsg).Result()
if err != nil {
return fmt.Errorf("添加到队列失败:%v", err)
}
return nil
}
func (this *VoucherBiz) OrderNotifyRetry(ctx context.Context, msg string) error {
var req *do.OrderNotifyRetry
if err := json.Unmarshal([]byte(msg), &req); err != nil {
return err
}
if req.StartTime == "" || req.EndTime == "" {
return fmt.Errorf("start_time or end_time is empty")
}
start, err := time.Parse(time.DateTime, req.StartTime)
if err != nil {
return err
}
end, err := time.Parse(time.DateTime, req.EndTime)
if err != nil {
return err
}
return this.timeSliceQuery(ctx, start, end)
}