You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
2.9 KiB
Go

1 month ago
package payment
import (
"cls/internal/domain/payment"
"cls/pkg/logger"
"cls/pkg/util/page"
"cls/pkg/xorm_engine"
"errors"
"xorm.io/builder"
)
// PaymentRepositoryORM 支付仓储实现
type PaymentRepositoryORM struct {
engine *xorm_engine.Engine
log logger.Logger
}
var _ payment.PaymentRepository = (*PaymentRepositoryORM)(nil)
// NewRepository 创建支付仓储
func NewRepository(engine *xorm_engine.Engine, log logger.New) *PaymentRepositoryORM {
return &PaymentRepositoryORM{
engine: engine,
log: log("cls:repository:payment"),
}
}
// Save 保存支付订单
func (p *PaymentRepositoryORM) Save(payment *payment.Payment) error {
_, err := p.engine.Insert(payment)
if err != nil {
p.log.Error(err)
}
return err
}
// FindByID 根据ID查找支付订单
func (p *PaymentRepositoryORM) FindByID(id uint64) (*payment.Payment, error) {
payment := &payment.Payment{}
has, err := p.engine.Where(builder.Eq{"id": id}).Get(payment)
if err != nil {
p.log.Error(err.Error())
return nil, err
}
if !has {
p.log.Errorf("未找到相关数据【%d】", id)
return nil, errors.New("记录不存在")
}
return payment, nil
}
// FindByOrderNo 根据订单号查找支付订单
func (p *PaymentRepositoryORM) FindByOrderNo(orderNo string) (*payment.Payment, error) {
payment := &payment.Payment{}
has, err := p.engine.Where(builder.Eq{"order_no": orderNo}).Get(payment)
if err != nil {
p.log.Error(err.Error())
return nil, err
}
if !has {
p.log.Errorf("未找到相关数据【%s】", orderNo)
return nil, errors.New("记录不存在")
}
return payment, nil
}
// FindByTransactionID 根据微信支付订单号查找支付订单
func (p *PaymentRepositoryORM) FindByTransactionID(transactionID string) (*payment.Payment, error) {
payment := &payment.Payment{}
has, err := p.engine.Where(builder.Eq{"transaction_id": transactionID}).Get(payment)
if err != nil {
p.log.Error(err.Error())
return nil, err
}
if !has {
p.log.Errorf("未找到相关数据【%s】", transactionID)
return nil, errors.New("记录不存在")
}
return payment, nil
}
// FindByUserID 根据用户ID查找支付订单列表
func (p *PaymentRepositoryORM) FindByUserID(userID uint64, page *page.Page) error {
return p.engine.FindAll(page, &payment.Payment{}, builder.And(builder.Eq{"user_id": userID}))
}
// FindAll 查询支付订单列表
func (p *PaymentRepositoryORM) FindAll(page *page.Page, conds []builder.Cond) error {
return p.engine.FindAll(page, &payment.Payment{}, builder.And(conds...))
}
// Update 更新支付订单
func (p *PaymentRepositoryORM) Update(payment *payment.Payment) error {
_, err := p.engine.Update(payment)
if err != nil {
p.log.Error(err)
}
return err
}
// Delete 删除支付订单
func (p *PaymentRepositoryORM) Delete(id uint64) error {
_, err := p.engine.Delete(&payment.Payment{}, "id = ?", id)
if err != nil {
p.log.Error(err)
}
return err
}