product_dao.go 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. }
  69. func (d ProductDAO) GetProductByProjectId(projectId string) (*entity.Product, error) {
  70. productId := 0
  71. err := Db.Model(entity.Project{}).Select("product_id").Where("project_id = ?", projectId).Find(&productId).Error
  72. if err != nil {
  73. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  74. return nil, err
  75. }
  76. productInfo := entity.Product{}
  77. err = Db.Model(entity.Product{}).Where("product_id = ?", productId).Find(&productInfo).Error
  78. if err != nil {
  79. logrus.Errorf("[GetProductInfo] error query mysql, err:%+v", err)
  80. return nil, err
  81. }
  82. return &productInfo, nil
  83. }