periodic_traffic_reset_job.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package job
  2. import (
  3. "x-ui/logger"
  4. "x-ui/web/service"
  5. )
  6. type Period string
  7. type PeriodicTrafficResetJob struct {
  8. inboundService service.InboundService
  9. period Period
  10. }
  11. func NewPeriodicTrafficResetJob(period Period) *PeriodicTrafficResetJob {
  12. return &PeriodicTrafficResetJob{
  13. period: period,
  14. }
  15. }
  16. func (j *PeriodicTrafficResetJob) Run() {
  17. inbounds, err := j.inboundService.GetInboundsByTrafficReset(string(j.period))
  18. logger.Infof("Running periodic traffic reset job for period: %s", j.period)
  19. if err != nil {
  20. logger.Warning("Failed to get inbounds for traffic reset:", err)
  21. return
  22. }
  23. resetCount := 0
  24. for _, inbound := range inbounds {
  25. if err := j.inboundService.ResetAllClientTraffics(inbound.Id); err != nil {
  26. logger.Warning("Failed to reset traffic for inbound", inbound.Id, ":", err)
  27. continue
  28. }
  29. resetCount++
  30. logger.Infof("Reset traffic for inbound %d (%s)", inbound.Id, inbound.Remark)
  31. }
  32. if resetCount > 0 {
  33. logger.Infof("Periodic traffic reset completed: %d inbounds reset", resetCount)
  34. }
  35. }