| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package service
- import (
- "fmt"
- "time"
- "wails-app/internal/dao"
- "wails-app/internal/global"
- "wails-app/internal/modules/payment/repository"
- )
- // Payment method constants — add new methods here for POS/Wechat/Alipay
- const (
- PaymentCash = "cash"
- PaymentFree = "free"
- PaymentPOS = "pos"
- PaymentWechat = "wechat"
- PaymentAlipay = "alipay"
- )
- type PaymentService struct {
- repo *repository.PaymentRepository
- }
- func NewPaymentService() *PaymentService {
- return &PaymentService{repo: &repository.PaymentRepository{}}
- }
- // ProcessPayment creates a payment_record and updates vehicle_record payment status
- func (s *PaymentService) ProcessPayment(recordID uint, paymentMethod string, amount float64, paidAmount float64, operatorID uint) (*dao.PaymentRecord, error) {
- changeAmount := 0.0
- if paymentMethod == PaymentCash && paidAmount > amount {
- changeAmount = paidAmount - amount
- }
- now := time.Now()
- pr := &dao.PaymentRecord{
- RecordID: recordID,
- PaymentMethod: paymentMethod,
- Amount: amount,
- PaidAmount: paidAmount,
- ChangeAmount: changeAmount,
- OperatorID: operatorID,
- PaidAt: now,
- }
- if err := s.repo.Create(pr); err != nil {
- return nil, fmt.Errorf("创建支付记录失败: %w", err)
- }
- // Update vehicle_record payment status
- global.GVA_DB.Model(&dao.VehicleRecord{}).Where("id = ?", recordID).Updates(map[string]interface{}{
- "payment_status": "paid",
- "payment_method": paymentMethod,
- })
- return pr, nil
- }
- // QueryPayments 查询收费记录列表
- func (s *PaymentService) QueryPayments(q repository.PaymentListQuery) ([]repository.PaymentListResult, int64, error) {
- return s.repo.List(q)
- }
- // GetTodaySummary 获取当日收费汇总
- func (s *PaymentService) GetTodaySummary() (repository.TodaySummary, error) {
- return s.repo.GetTodaySummary()
- }
|