| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package repository
- import (
- "gorm.io/gorm"
- "wails-app/internal/dao"
- "wails-app/internal/global"
- )
- type TicketRepository struct{}
- func (r *TicketRepository) Create(ticket *dao.DigitalTicket) error {
- return r.CreateTx(global.GVA_DB, ticket)
- }
- func (r *TicketRepository) CreateTx(db *gorm.DB, ticket *dao.DigitalTicket) error {
- return db.Create(ticket).Error
- }
- func (r *TicketRepository) GetByTicketNo(ticketNo string) (*dao.DigitalTicket, error) {
- var t dao.DigitalTicket
- err := global.GVA_DB.Where("ticket_no = ?", ticketNo).First(&t).Error
- if err != nil {
- return nil, err
- }
- return &t, nil
- }
- func (r *TicketRepository) GetByID(id uint) (*dao.DigitalTicket, error) {
- return r.GetByIDTx(global.GVA_DB, id)
- }
- func (r *TicketRepository) GetByIDTx(db *gorm.DB, id uint) (*dao.DigitalTicket, error) {
- var t dao.DigitalTicket
- err := db.First(&t, id).Error
- if err != nil {
- return nil, err
- }
- return &t, nil
- }
- func (r *TicketRepository) UpdateState(id uint, state string, updates map[string]interface{}) error {
- return r.UpdateStateTx(global.GVA_DB, id, state, updates)
- }
- func (r *TicketRepository) GetByVehicleRecordID(recordID uint) (*dao.DigitalTicket, error) {
- return r.GetByVehicleRecordIDTx(global.GVA_DB, recordID)
- }
- func (r *TicketRepository) GetByVehicleRecordIDTx(db *gorm.DB, recordID uint) (*dao.DigitalTicket, error) {
- var t dao.DigitalTicket
- err := db.Where("vehicle_record_id = ?", recordID).Order("id DESC").First(&t).Error
- if err != nil {
- return nil, err
- }
- return &t, nil
- }
- func (r *TicketRepository) UpdateStateTx(db *gorm.DB, id uint, state string, updates map[string]interface{}) error {
- updates["state"] = state
- return db.Model(&dao.DigitalTicket{}).Where("id = ?", id).Updates(updates).Error
- }
- type TicketListQuery struct {
- PlateNumber string `form:"plate_number"`
- State string `form:"state"`
- Page int `form:"page"`
- PageSize int `form:"page_size"`
- }
- func (r *TicketRepository) List(q TicketListQuery) ([]dao.DigitalTicket, int64, error) {
- db := global.GVA_DB.Model(&dao.DigitalTicket{})
- if q.PlateNumber != "" {
- db = db.Where("plate_number LIKE ?", "%"+q.PlateNumber+"%")
- }
- if q.State != "" {
- db = db.Where("state = ?", q.State)
- }
- var total int64
- db.Count(&total)
- if q.Page <= 0 {
- q.Page = 1
- }
- if q.PageSize <= 0 {
- q.PageSize = 10
- }
- var list []dao.DigitalTicket
- err := db.Order("id DESC").Offset((q.Page - 1) * q.PageSize).Limit(q.PageSize).Find(&list).Error
- return list, total, err
- }
|