Files
hfb_sys/backend/internal/modules/order/repository.go
T

52 lines
1.3 KiB
Go

package order
import (
"context"
"gorm.io/gorm"
)
// RefundStarter 由支付模块适配实现,避免 order 直接依赖 payment。
type RefundStarter interface {
StartRefund(ctx context.Context, orderID uint64, refundAmountCent int64, bizType string, remark string) (status string, err error)
}
type RefundStarterFunc func(ctx context.Context, orderID uint64, refundAmountCent int64, bizType string, remark string) (status string, err error)
func (fn RefundStarterFunc) StartRefund(ctx context.Context, orderID uint64, refundAmountCent int64, bizType string, remark string) (string, error) {
return fn(ctx, orderID, refundAmountCent, bizType, remark)
}
type OrderChatNotifier interface {
NotifyNewConversation(conversationID uint64)
}
type Dependencies struct {
ChatNotifier OrderChatNotifier
RefundStarter RefundStarter
}
type refundAction struct {
OrderID uint64
RefundAmountCent int64
BizType string
Remark string
}
type Repository struct {
db *gorm.DB
chatNotifier OrderChatNotifier
refundStarter RefundStarter
}
const defaultPendingPaymentTimeoutMinutes = 15
func NewRepository(db *gorm.DB, deps ...Dependencies) *Repository {
repo := &Repository{db: db}
if len(deps) > 0 {
repo.chatNotifier = deps[0].ChatNotifier
repo.refundStarter = deps[0].RefundStarter
}
return repo
}