voucher/internal/biz/consume.go

57 lines
1.1 KiB
Go

package biz
import (
"context"
"fmt"
"time"
"voucher/internal/pkg/lock"
)
func (v *VoucherBiz) OrderConsume(ctx context.Context, orderNo string) (err error) {
err = lock.NewMutex(v.rdb.Rdb, time.Second*30).Lock(ctx, fmt.Sprintf("order_consume_%s", orderNo), func(ctx context.Context) error {
order, err := v.OrderRepo.GetByOrderNo(ctx, orderNo)
if err != nil {
return err
}
if order.Type.IsCmb() {
return v.Cmb.OrderConsume(ctx, order)
}
return nil
})
return
}
func (v *VoucherBiz) QueryConsume(ctx context.Context, orderNo string) (err error) {
err = lock.NewMutex(v.rdb.Rdb, time.Second*30).Lock(ctx, fmt.Sprintf("query_consume_%s", orderNo), func(ctx context.Context) error {
order, err := v.OrderRepo.GetByOrderNo(ctx, orderNo)
if err != nil {
return err
}
if order.Type.IsCmb() {
return v.Cmb.QueryConsume(ctx, order)
}
return nil
})
return
}
func (v *VoucherBiz) NotifyConsume(ctx context.Context, orderNo string) (err error) {
err = lock.NewMutex(v.rdb.Rdb, time.Second*30).Lock(ctx, fmt.Sprintf("notify_consume_%s", orderNo), func(ctx context.Context) error {
return nil
})
return
}