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 }