| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package repository
- import (
- "wails-app/internal/dao"
- "wails-app/internal/global"
- )
- type PaymentRepository struct{}
- func (r *PaymentRepository) Create(record *dao.PaymentRecord) error {
- return global.GVA_DB.Create(record).Error
- }
- // PaymentListQuery 收费记录查询参数
- type PaymentListQuery struct {
- PlateNumber string `form:"plate_number"`
- PaymentMethod string `form:"payment_method"`
- StartDate string `form:"start_date"`
- EndDate string `form:"end_date"`
- Page int `form:"page"`
- PageSize int `form:"page_size"`
- }
- // PaymentListResult 收费记录列表项
- type PaymentListResult struct {
- ID uint `json:"id"`
- PlateNumber string `json:"plate_number"`
- VehicleType string `json:"vehicle_type"`
- PaymentMethod string `json:"payment_method"`
- Amount float64 `json:"amount"`
- PaidAmount float64 `json:"paid_amount"`
- ChangeAmount float64 `json:"change_amount"`
- OperatorID uint `json:"operator_id"`
- PaidAt string `json:"paid_at"`
- EntryTime string `json:"entry_time"`
- ExitTime string `json:"exit_time"`
- StayTime int64 `json:"stay_time"`
- }
- // List 查询收费记录列表(关联 vehicle_record + vehicle + vehicle_type)
- func (r *PaymentRepository) List(q PaymentListQuery) ([]PaymentListResult, int64, error) {
- db := global.GVA_DB.Table("payment_record").
- Select(`payment_record.id, vehicle_record.plate_number, vehicle_type.name as vehicle_type, payment_record.payment_method,
- payment_record.amount, payment_record.paid_amount, payment_record.change_amount,
- payment_record.operator_id, payment_record.paid_at,
- vehicle_record.entry_time, vehicle_record.exit_time, vehicle_record.stay_time`).
- Joins("LEFT JOIN vehicle_record ON vehicle_record.id = payment_record.record_id").
- Joins("LEFT JOIN vehicle ON vehicle.plate_number = vehicle_record.plate_number").
- Joins("LEFT JOIN vehicle_type ON vehicle_type.id = vehicle.vehicle_type_id")
- if q.PlateNumber != "" {
- db = db.Where("vehicle_record.plate_number LIKE ?", "%"+q.PlateNumber+"%")
- }
- if q.PaymentMethod != "" {
- db = db.Where("payment_record.payment_method = ?", q.PaymentMethod)
- }
- if q.StartDate != "" {
- db = db.Where("payment_record.paid_at >= ?", q.StartDate)
- }
- if q.EndDate != "" {
- db = db.Where("payment_record.paid_at <= ?", q.EndDate+" 23:59:59")
- }
- var total int64
- db.Count(&total)
- if q.Page <= 0 {
- q.Page = 1
- }
- if q.PageSize <= 0 {
- q.PageSize = 10
- }
- offset := (q.Page - 1) * q.PageSize
- var results []PaymentListResult
- err := db.Order("payment_record.paid_at DESC").Offset(offset).Limit(q.PageSize).Scan(&results).Error
- return results, total, err
- }
|