product_dao.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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 = ? AND is_deleted = 0", enterpriseId).Count(&total)
  13. // 计算偏移量
  14. offset := (page - 1) * pageSize
  15. // 分页查询
  16. err := Db.Where("enterprise_id = ? AND is_deleted = 0", 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) GetProductsByEnterpriseIDAndTypeTitle(enterpriseId string, productType int64, productTitle string, page int, pageSize int) ([]entity.Product, int64, error) {
  23. var products []entity.Product
  24. var total int64
  25. query := Db.Model(&entity.Product{}).Where("enterprise_id = ? AND product_type = ? AND is_deleted = 0", enterpriseId, productType)
  26. if productTitle != "" {
  27. query = query.Where("product_name LIKE ?", "%"+productTitle+"%")
  28. }
  29. query.Count(&total)
  30. // 计算偏移量
  31. offset := (page - 1) * pageSize
  32. // 分页查询
  33. err := query.Order("created_at desc").Offset(offset).Limit(pageSize).Find(&products).Error
  34. if err != nil {
  35. return nil, 0, err
  36. }
  37. return products, total, nil
  38. }
  39. func (d ProductDAO) GetProductsBySubAccountId(subAccountId int64, page int, pageSize int) ([]entity.Product, int64, error) {
  40. var products []entity.Product
  41. var total int64
  42. Db.Model(&entity.Product{}).Where("sub_account_id = ? AND is_deleted = 0", subAccountId).Count(&total)
  43. // 计算偏移量
  44. offset := (page - 1) * pageSize
  45. // 分页查询
  46. err := Db.Where("sub_account_id = ? AND is_deleted = 0", subAccountId).Order("created_at desc").Offset(offset).Limit(pageSize).Find(&products).Error
  47. if err != nil {
  48. return nil, 0, err
  49. }
  50. return products, total, nil
  51. }
  52. func (d ProductDAO) CreateProduct(product entity.Product) (int64, error) {
  53. err := Db.Create(&product).Error
  54. if err != nil {
  55. return 0, err
  56. }
  57. return product.ProductID, nil
  58. }
  59. func (d ProductDAO) GetProductByID(productId int64) (*entity.Product, error) {
  60. var product entity.Product
  61. err := Db.Debug().Where("product_id = ?", productId).First(&product).Error
  62. if err != nil {
  63. if errors.Is(err, gorm.ErrRecordNotFound) {
  64. return nil, nil
  65. } else {
  66. return nil, err
  67. }
  68. }
  69. return &product, nil
  70. }
  71. func (d ProductDAO) GetProductBySelectionId(selectionId string) (*entity.Product, error) {
  72. productId := 0
  73. err := Db.Model(entity.SelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
  74. if err != nil {
  75. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  76. return nil, err
  77. }
  78. productInfo := entity.Product{}
  79. err = Db.Model(entity.Product{}).Where("product_id = ?", productId).Find(&productInfo).Error
  80. if err != nil {
  81. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  82. return nil, err
  83. }
  84. return &productInfo, nil
  85. }
  86. func (d ProductDAO) GetProductByProjectId(projectId string) (*entity.Product, error) {
  87. productId := 0
  88. err := Db.Model(entity.Project{}).Select("product_id").Where("project_id = ?", projectId).Find(&productId).Error
  89. if err != nil {
  90. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  91. return nil, err
  92. }
  93. productInfo := entity.Product{}
  94. err = Db.Model(entity.Product{}).Where("product_id = ?", productId).Find(&productInfo).Error
  95. if err != nil {
  96. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  97. return nil, err
  98. }
  99. return &productInfo, nil
  100. }