81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"github.com/cloudprint/cloudprint-backend/internal/model"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type PriceRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewPriceRepository(db *gorm.DB) *PriceRepository {
|
|
return &PriceRepository{db: db}
|
|
}
|
|
|
|
func (r *PriceRepository) Create(ctx context.Context, item *model.PriceList) error {
|
|
return r.db.WithContext(ctx).Create(item).Error
|
|
}
|
|
|
|
func (r *PriceRepository) GetByID(ctx context.Context, id int32) (*model.PriceList, error) {
|
|
var item model.PriceList
|
|
err := r.db.WithContext(ctx).First(&item, id).Error
|
|
if err != nil {
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
return &item, nil
|
|
}
|
|
|
|
func (r *PriceRepository) GetAllActive(ctx context.Context) ([]*model.PriceList, error) {
|
|
var items []*model.PriceList
|
|
err := r.db.WithContext(ctx).Where("is_active = ?", true).Order("sort_order ASC, id ASC").Find(&items).Error
|
|
return items, err
|
|
}
|
|
|
|
func (r *PriceRepository) Update(ctx context.Context, item *model.PriceList) error {
|
|
return r.db.WithContext(ctx).Save(item).Error
|
|
}
|
|
|
|
func (r *PriceRepository) Delete(ctx context.Context, id int32) error {
|
|
return r.db.WithContext(ctx).Delete(&model.PriceList{}, id).Error
|
|
}
|
|
|
|
type PaymentRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewPaymentRepository(db *gorm.DB) *PaymentRepository {
|
|
return &PaymentRepository{db: db}
|
|
}
|
|
|
|
func (r *PaymentRepository) Create(ctx context.Context, payment *model.Payment) error {
|
|
return r.db.WithContext(ctx).Create(payment).Error
|
|
}
|
|
|
|
func (r *PaymentRepository) GetByOrderNo(ctx context.Context, orderNo string) (*model.Payment, error) {
|
|
var payment model.Payment
|
|
err := r.db.WithContext(ctx).Where("order_no = ?", orderNo).First(&payment).Error
|
|
if err != nil {
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
return &payment, nil
|
|
}
|
|
|
|
func (r *PaymentRepository) UpdateStatus(ctx context.Context, orderNo string, status int8, transactionID string) error {
|
|
updates := map[string]interface{}{
|
|
"pay_status": status,
|
|
"transaction_id": transactionID,
|
|
}
|
|
return r.db.WithContext(ctx).Model(&model.Payment{}).
|
|
Where("order_no = ?", orderNo).Updates(updates).Error
|
|
}
|