voucher/internal/data/repositoryimpl/order.go

96 lines
1.7 KiB
Go

package repositoryimpl
import (
"context"
"gorm.io/gorm"
"time"
"voucher/internal/biz/bo"
"voucher/internal/biz/repository"
"voucher/internal/data"
"voucher/internal/data/model"
)
type OrderRepoImpl struct {
Base[model.Order, bo.OrderBo]
db *data.Db
}
func NewOrderRepoImpl(db *data.Db) repository.OrderRepo {
return &OrderRepoImpl{db: db}
}
func (p *OrderRepoImpl) DB(ctx context.Context) *gorm.DB {
return p.db.DB(ctx).Model(model.Order{})
}
func (p *OrderRepoImpl) Create(ctx context.Context, req *bo.OrderBo) (*bo.OrderBo, error) {
now := time.Now()
info := &model.Order{
CreateTime: &now,
UpdateTime: &now,
}
tx := p.db.DB(ctx).Create(info)
if tx.Error != nil {
return nil, tx.Error
}
return p.ToBo(info), nil
}
func (p *OrderRepoImpl) GetByOrderNo(ctx context.Context, orderNo string) (*bo.OrderBo, error) {
info := &model.Order{}
tx := p.DB(ctx).Where(model.Order{OrderNo: orderNo}).Find(&info)
if tx.Error != nil {
return nil, tx.Error
}
if tx.RowsAffected == 0 {
return nil, gorm.ErrRecordNotFound
}
return p.ToBo(info), nil
}
func (p *OrderRepoImpl) Success(ctx context.Context, id uint32, product string) error {
now := time.Now()
res := p.db.DB(ctx).
Where(model.Order{
Id: id,
//Status: trans3.JdOrderStatusGenerating.GetValue(),
}).
Updates(model.Order{
UpdateTime: &now,
})
if res.Error != nil {
return res.Error
}
return nil
}
func (p *OrderRepoImpl) Fail(ctx context.Context, id uint32) error {
now := time.Now()
res := p.db.DB(ctx).
Where(model.Order{
Id: id,
//Status: trans3.JdOrderStatusGenerating.GetValue(),
}).
Updates(model.Order{
UpdateTime: &now,
})
if res.Error != nil {
return res.Error
}
return nil
}