57 lines
1.1 KiB
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)
|
|
}
|