接口调整

This commit is contained in:
李子铭 2025-03-13 11:21:47 +08:00
parent e9c99d7542
commit 0de4d12b85
3 changed files with 28 additions and 11 deletions

View File

@ -3,6 +3,7 @@ package cmb
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"fmt"
"github.com/go-kratos/kratos/v2/log" "github.com/go-kratos/kratos/v2/log"
"time" "time"
err2 "voucher/api/err" err2 "voucher/api/err"
@ -13,6 +14,10 @@ import (
func (v *Cmb) Notify(ctx context.Context, order *bo.OrderBo) (*bo.OrderNotifyBo, error) { func (v *Cmb) Notify(ctx context.Context, order *bo.OrderBo) (*bo.OrderNotifyBo, error) {
if order.Status.IsCanNotify() {
return nil, fmt.Errorf("订单状态不允许通知,orderNo:%s,orderStatusText:%s", order.OrderNo, order.Status.GetText())
}
event, err := order.Status.GetOrderNotifyEvent() event, err := order.Status.GetOrderNotifyEvent()
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -57,7 +57,7 @@ func (s OrderStatus) IsExpired() bool {
return s == OrderStatusExpired return s == OrderStatusExpired
} }
func (s OrderStatus) CanNotify() bool { func (s OrderStatus) IsCanNotify() bool {
return s.IsSuccess() || s.IsUse() || s.IsExpired() return s.IsSuccess() || s.IsUse() || s.IsExpired()
} }

View File

@ -45,22 +45,34 @@ func (v *VoucherBiz) WechatNotifyConsumer(ctx context.Context, tag string, req *
if order.Type.IsCmb() { if order.Type.IsCmb() {
if orderNotify, err2 := v.Cmb.Notify(ctx, order); err2 != nil { return v.cmbNotify(ctx, order.ID)
if !errPb.IsNeedRetryNotify(err2) {
return err2
}
// 第一次通知失败重试入队
// 状态回调接口失败需要支持重试 重试间隔为1分钟、2分钟、12分钟、60分钟、360分钟
return v.PushNotifyRetryDelayMQ(ctx, 60, orderNotify.ID)
}
} }
return nil return nil
}) })
} }
func (v *VoucherBiz) cmbNotify(ctx context.Context, orderId uint64) error {
order, err := v.OrderRepo.GetByID(ctx, orderId)
if err != nil {
return err
}
if orderNotify, err := v.Cmb.Notify(ctx, order); err != nil {
if !errPb.IsNeedRetryNotify(err) {
return err
}
// 第一次通知失败重试入队
// 状态回调接口失败需要支持重试 重试间隔为1分钟、2分钟、12分钟、60分钟、360分钟
return v.PushNotifyRetryDelayMQ(ctx, 60, orderNotify.ID)
}
return nil
}
func (v *VoucherBiz) used(ctx context.Context, order *bo.OrderBo) error { func (v *VoucherBiz) used(ctx context.Context, order *bo.OrderBo) error {
if order.Status.IsUse() { if order.Status.IsUse() {