49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package repoimpl
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
"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).WithContext(ctx).Model(model.Product{})
|
|
}
|
|
|
|
func (r *ProductRepoImpl) GetByPNO(ctx context.Context, PNO string) (*bo.ProductBo, error) {
|
|
var item model.Product
|
|
|
|
db := r.DB(ctx)
|
|
tx := db.Where(model.Product{ProductNo: PNO}).Find(&item)
|
|
|
|
if tx.Error != nil {
|
|
sqlDB, _ := db.DB()
|
|
log.Warnf("当前打开连接数: %d ,空闲连接数: ", sqlDB.Stats().OpenConnections, sqlDB.Stats().Idle)
|
|
|
|
return nil, fmt.Errorf("product db fail %w", tx.Error)
|
|
}
|
|
|
|
if tx.RowsAffected == 0 {
|
|
return nil, err2.ErrorDbNotFound("商品数据不存在")
|
|
}
|
|
|
|
return r.ToBo(&item), nil
|
|
}
|