team_buying_dao.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package dao
  2. import (
  3. "errors"
  4. "gorm.io/gorm"
  5. "youngee_b_api/app/entity"
  6. )
  7. type TeamBuyingDao struct{}
  8. func (d TeamBuyingDao) CreateTeamBuying(teamBuying entity.TeamBuying) (int64, error) {
  9. err := Db.Model(&entity.TeamBuying{}).Create(&teamBuying).Error
  10. if err != nil {
  11. return 0, err
  12. }
  13. return teamBuying.TeamBuyingID, nil
  14. }
  15. func (d TeamBuyingDao) GetTeamBuyingByID(teamBuyingId int64) (*entity.TeamBuying, error) {
  16. var teamBuying entity.TeamBuying
  17. err := Db.Debug().Where("team_buying_id = ?", teamBuyingId).First(&teamBuying).Error
  18. if err != nil {
  19. if errors.Is(err, gorm.ErrRecordNotFound) {
  20. return nil, nil
  21. } else {
  22. return nil, err
  23. }
  24. }
  25. return &teamBuying, nil
  26. }
  27. func (d TeamBuyingDao) GetTeamBuyingsByStoreId(storeId int64, page int, pageSize int) ([]entity.TeamBuying, int64, error) {
  28. var teamBuyings []entity.TeamBuying
  29. var total int64
  30. query := Db.Model(&entity.TeamBuying{}).Where("store_id = ? AND is_deleted = ?", storeId, 0)
  31. query.Count(&total)
  32. // 计算偏移量
  33. offset := (page - 1) * pageSize
  34. // 分页查询
  35. err := Db.Model(&entity.TeamBuying{}).Where("store_id = ? AND is_deleted = ?", storeId, 0).Order("created_at desc").Offset(offset).Limit(pageSize).Find(&teamBuyings).Error
  36. if err != nil {
  37. return nil, 0, err
  38. }
  39. return teamBuyings, total, nil
  40. }
  41. func (d TeamBuyingDao) GetTeamBuyingsByStoreIdAndTeamBuyingTitle(storeId int64, teamBuyingTitle string, page int, pageSize int) ([]entity.TeamBuying, int64, error) {
  42. var teamBuyings []entity.TeamBuying
  43. var total int64
  44. query := Db.Model(&entity.TeamBuying{}).Where("store_id = ? AND is_deleted = ?", storeId, 0)
  45. if teamBuyingTitle != "" {
  46. query = query.Where("team_buying_name LIKE ?", "%"+teamBuyingTitle+"%")
  47. }
  48. query.Count(&total)
  49. // 计算偏移量
  50. offset := (page - 1) * pageSize
  51. // 分页查询
  52. err := Db.Model(&entity.TeamBuying{}).Where("store_id = ? AND is_deleted = ?", storeId, 0).Order("created_at desc").Offset(offset).Limit(pageSize).Find(&teamBuyings).Error
  53. if err != nil {
  54. return nil, 0, err
  55. }
  56. return teamBuyings, total, nil
  57. }