product_dao.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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) UpdateProduct(product entity.Product) (int64, error) {
  60. err := Db.Model(&entity.Product{}).Where("product_id = ?", product.ProductID).Updates(product).Error
  61. if err != nil {
  62. return 0, err
  63. }
  64. return product.ProductID, nil
  65. }
  66. func (d ProductDAO) DeleteProduct(productId int64) error {
  67. err := Db.Where("product_id = ?", productId).Delete(&entity.Product{}).Error
  68. return err
  69. }
  70. func (d ProductDAO) GetProductByID(productId int64) (*entity.Product, error) {
  71. var product entity.Product
  72. err := Db.Debug().Where("product_id = ?", productId).First(&product).Error
  73. if err != nil {
  74. if errors.Is(err, gorm.ErrRecordNotFound) {
  75. return nil, nil
  76. } else {
  77. return nil, err
  78. }
  79. }
  80. return &product, nil
  81. }
  82. func (d ProductDAO) GetProductBySelectionId(selectionId string) (*entity.Product, error) {
  83. productId := 0
  84. err := Db.Model(entity.SelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
  85. if err != nil {
  86. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  87. return nil, err
  88. }
  89. productInfo := entity.Product{}
  90. err = Db.Model(entity.Product{}).Where("product_id = ?", productId).Find(&productInfo).Error
  91. if err != nil {
  92. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  93. return nil, err
  94. }
  95. return &productInfo, nil
  96. }
  97. func (d ProductDAO) GetProductByProjectId(projectId string) (*entity.Product, error) {
  98. productId := 0
  99. err := Db.Model(entity.Project{}).Select("product_id").Where("project_id = ?", projectId).Find(&productId).Error
  100. if err != nil {
  101. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  102. return nil, err
  103. }
  104. productInfo := entity.Product{}
  105. err = Db.Model(entity.Product{}).Where("product_id = ?", productId).Find(&productInfo).Error
  106. if err != nil {
  107. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  108. return nil, err
  109. }
  110. return &productInfo, nil
  111. }