3x-ui/web/job/periodic_client_traffic_reset_job.go

42 lines
1 KiB
Go

package job
import (
"x-ui/logger"
"x-ui/web/service"
)
type PeriodicClientTrafficResetJob struct {
inboundService service.InboundService
period Period
}
func NewPeriodicClientTrafficResetJob(period Period) *PeriodicClientTrafficResetJob {
return &PeriodicClientTrafficResetJob{
period: period,
}
}
func (j *PeriodicClientTrafficResetJob) Run() {
clients, err := j.inboundService.GetClientsByTrafficReset(string(j.period))
logger.Infof("Running periodic client traffic reset job for period: %s", j.period)
if err != nil {
logger.Warning("Failed to get clients for traffic reset:", err)
return
}
resetCount := 0
for _, client := range clients {
if err := j.inboundService.ResetClientTrafficByEmail(client.Email); err != nil {
logger.Warning("Failed to reset traffic for client", client.Email, ":", err)
continue
}
resetCount++
logger.Infof("Reset traffic for client %s", client.Email)
}
if resetCount > 0 {
logger.Infof("Periodic client traffic reset completed: %d clients reseted", resetCount)
}
}