repo.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package repository
  2. import (
  3. "wails-app/internal/dao"
  4. "wails-app/internal/global"
  5. )
  6. type TicketRepository struct{}
  7. func (r *TicketRepository) Create(ticket *dao.DigitalTicket) error {
  8. return global.GVA_DB.Create(ticket).Error
  9. }
  10. func (r *TicketRepository) GetByTicketNo(ticketNo string) (*dao.DigitalTicket, error) {
  11. var t dao.DigitalTicket
  12. err := global.GVA_DB.Where("ticket_no = ?", ticketNo).First(&t).Error
  13. if err != nil {
  14. return nil, err
  15. }
  16. return &t, nil
  17. }
  18. func (r *TicketRepository) GetByID(id uint) (*dao.DigitalTicket, error) {
  19. var t dao.DigitalTicket
  20. err := global.GVA_DB.First(&t, id).Error
  21. if err != nil {
  22. return nil, err
  23. }
  24. return &t, nil
  25. }
  26. func (r *TicketRepository) UpdateState(id uint, state string, updates map[string]interface{}) error {
  27. updates["state"] = state
  28. return global.GVA_DB.Model(&dao.DigitalTicket{}).Where("id = ?", id).Updates(updates).Error
  29. }
  30. type TicketListQuery struct {
  31. PlateNumber string `form:"plate_number"`
  32. State string `form:"state"`
  33. Page int `form:"page"`
  34. PageSize int `form:"page_size"`
  35. }
  36. func (r *TicketRepository) List(q TicketListQuery) ([]dao.DigitalTicket, int64, error) {
  37. db := global.GVA_DB.Model(&dao.DigitalTicket{})
  38. if q.PlateNumber != "" {
  39. db = db.Where("plate_number LIKE ?", "%"+q.PlateNumber+"%")
  40. }
  41. if q.State != "" {
  42. db = db.Where("state = ?", q.State)
  43. }
  44. var total int64
  45. db.Count(&total)
  46. if q.Page <= 0 {
  47. q.Page = 1
  48. }
  49. if q.PageSize <= 0 {
  50. q.PageSize = 10
  51. }
  52. var list []dao.DigitalTicket
  53. err := db.Order("id DESC").Offset((q.Page - 1) * q.PageSize).Limit(q.PageSize).Find(&list).Error
  54. return list, total, err
  55. }