product_dao.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package dao
  2. import (
  3. "errors"
  4. "github.com/sirupsen/logrus"
  5. "gorm.io/gorm"
  6. "youngee_b_api/app/entity"
  7. )
  8. type ProductDAO struct{}
  9. func (d ProductDAO) GetProductsByEnterpriseID(enterpriseId string, page int, pageSize int) ([]entity.Product, int64, error) {
  10. var products []entity.Product
  11. var total int64
  12. Db.Model(&entity.Product{}).Where("enterprise_id = ?", enterpriseId).Count(&total)
  13. // 计算偏移量
  14. offset := (page - 1) * pageSize
  15. // 分页查询
  16. err := Db.Where("enterprise_id = ?", enterpriseId).Order("created_at desc").Offset(offset).Limit(pageSize).Find(&products).Error
  17. if err != nil {
  18. return nil, 0, err
  19. }
  20. return products, total, nil
  21. }
  22. func (d ProductDAO) GetProductsBySubAccountId(subAccountId int64, page int, pageSize int) ([]entity.Product, int64, error) {
  23. var products []entity.Product
  24. var total int64
  25. Db.Model(&entity.Product{}).Where("sub_account_id = ?", subAccountId).Count(&total)
  26. // 计算偏移量
  27. offset := (page - 1) * pageSize
  28. // 分页查询
  29. err := Db.Where("sub_account_id = ?", subAccountId).Order("created_at desc").Offset(offset).Limit(pageSize).Find(&products).Error
  30. if err != nil {
  31. return nil, 0, err
  32. }
  33. return products, total, nil
  34. }
  35. func (d ProductDAO) CreateProduct(product entity.Product) (int64, error) {
  36. err := Db.Create(&product).Error
  37. if err != nil {
  38. return 0, err
  39. }
  40. return product.ProductID, nil
  41. }
  42. func (d ProductDAO) GetProductByID(productId int64) (*entity.Product, error) {
  43. var product entity.Product
  44. err := Db.Where("product_id = ?", productId).First(&product).Error
  45. if err != nil {
  46. if errors.Is(err, gorm.ErrRecordNotFound) {
  47. return nil, nil
  48. } else {
  49. return nil, err
  50. }
  51. }
  52. return &product, nil
  53. }
  54. func (d ProductDAO) GetProductBySelectionId(selectionId string) (*entity.Product, error) {
  55. productId := 0
  56. err := Db.Model(entity.SelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
  57. if err != nil {
  58. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  59. return nil, err
  60. }
  61. productInfo := entity.Product{}
  62. err = Db.Model(entity.Product{}).Where("product_id = ?", productId).Find(&productInfo).Error
  63. if err != nil {
  64. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  65. return nil, err
  66. }
  67. return &productInfo, nil
  68. }