96 lines
1.7 KiB
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
|
|
}
|