diff --git a/internal/biz/cmb/consume.go b/internal/biz/cmb/consume.go index f25c521..7bd819f 100644 --- a/internal/biz/cmb/consume.go +++ b/internal/biz/cmb/consume.go @@ -92,20 +92,23 @@ func (v *Cmb) fail(ctx context.Context, order *bo.OrderBo, orderWechat *bo.Order return v.OrderRepo.Fail(ctx, order.ID) } -func (v *Cmb) NotifyConsume(ctx context.Context, order *bo.OrderBo, orderOutRequestNo string) error { - +func (v *Cmb) orderWechat(ctx context.Context, order *bo.OrderBo, orderOutRequestNo string) (*bo.OrderWechatBo, error) { orderWechat, err := v.OrderWechatRepo.GetByOutRequestNo(ctx, orderOutRequestNo) if err != nil { - return err + return nil, err } if !orderWechat.Status.CanNotify() { - return fmt.Errorf("微信订单状态错误,不能通知:%s", order.Status.GetText()) + return nil, fmt.Errorf("微信订单状态错误,不能通知:%s", order.Status.GetText()) } + return orderWechat, err +} + +func (v *Cmb) bizContent(_ context.Context, orderWechat *bo.OrderWechatBo) (string, error) { status, err := orderWechat.Status.GetCmbStatusText() if err != nil { - return err + return "", err } req := &v1.CmbNotifyRequest{ @@ -115,14 +118,30 @@ func (v *Cmb) NotifyConsume(ctx context.Context, order *bo.OrderBo, orderOutRequ OrgNo: v.bc.Cmb.OrgNo, Ext: "", } + bizJsonBytes, err := json.Marshal(req) + if err != nil { + return "", err + } + + return string(bizJsonBytes), nil +} + +func (v *Cmb) NotifyConsume(ctx context.Context, order *bo.OrderBo, orderOutRequestNo string) error { + + orderWechat, err := v.orderWechat(ctx, order, orderOutRequestNo) + if err != nil { + return err + } + + bizContent, err := v.bizContent(ctx, orderWechat) if err != nil { return err } request, err := v.CmbMixRepo.GetRequest(ctx, &bo.CmbRequestBo{ FuncName: vo.CmbNotifyFuncName, - BizContent: string(bizJsonBytes), + BizContent: bizContent, }) if err != nil { return err @@ -134,7 +153,7 @@ func (v *Cmb) NotifyConsume(ctx context.Context, order *bo.OrderBo, orderOutRequ } orderNotify, err := v.OrderNotifyRepo.Create(ctx, &bo.OrderNotifyBo{ - OrderNo: order.OrderNo, + OrderNo: orderWechat.OrderNo, OutRequestNo: orderWechat.OutRequestNo, Request: string(requestBytes), NotifyUrl: order.NotifyUrl,