package repoimpl import ( "context" "gorm.io/gorm" err2 "voucher/api/err" "voucher/internal/biz/bo" "voucher/internal/biz/repo" "voucher/internal/data" "voucher/internal/data/model" ) // ProductRepoImpl . type ProductRepoImpl struct { Base[model.Product, bo.ProductBo] db *data.Db } // NewProductRepoImpl . func NewProductRepoImpl(db *data.Db) repo.ProductRepo { return &ProductRepoImpl{db: db} } func (p *ProductRepoImpl) DB(ctx context.Context) *gorm.DB { return p.db.DB(ctx).Model(model.Product{}) } func (r *ProductRepoImpl) GetByPNO(ctx context.Context, PNO string) (*bo.ProductBo, error) { var item model.Product tx := r.DB(ctx).Where(model.Product{ProductNo: PNO}).Find(&item) if tx.Error != nil { return nil, tx.Error } if tx.RowsAffected == 0 { return nil, err2.ErrorDbNotFound("商品数据不存在") } return r.ToBo(&item), nil }