mirror of
				https://github.com/MHSanaei/3x-ui.git
				synced 2025-10-27 10:30:08 +00:00 
			
		
		
		
	 9623e87511
			
		
	
	
		9623e87511
		
			
		
	
	
	
	
		
			
			* Add periodic traffic reset feature model and ui with localization support * Remove periodic traffic reset fields from client * fix: add periodicTrafficReset field to inbound data structure * feat: implement periodic traffic reset job and integrate with cron scheduler * feat: enhance periodic traffic reset functionality with scheduling and inbound filtering * refactor: rename periodicTrafficReset to trafficReset and add lastTrafficResetTime field * feat: add periodic client traffic reset job and schedule tasks * Update web/job/periodic_traffic_reset_job.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update web/job/periodic_client_traffic_reset_job.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update web/service/inbound.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor: rename periodicTrafficReset to trafficReset and add lastTrafficResetTime * feat: add last traffic reset time display and update logic in inbound service * fix: correct log message for completed periodic traffic reset * refactor: update traffic reset fields in Inbound model and remove unused client traffic reset job * refactor: remove unused traffic reset logic and clean up client model fields * cleanup comments * fix
		
			
				
	
	
		
			44 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package job
 | |
| 
 | |
| import (
 | |
| 	"x-ui/logger"
 | |
| 	"x-ui/web/service"
 | |
| )
 | |
| 
 | |
| type Period string
 | |
| 
 | |
| type PeriodicTrafficResetJob struct {
 | |
| 	inboundService service.InboundService
 | |
| 	period         Period
 | |
| }
 | |
| 
 | |
| func NewPeriodicTrafficResetJob(period Period) *PeriodicTrafficResetJob {
 | |
| 	return &PeriodicTrafficResetJob{
 | |
| 		period: period,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (j *PeriodicTrafficResetJob) Run() {
 | |
| 	inbounds, err := j.inboundService.GetInboundsByTrafficReset(string(j.period))
 | |
| 	logger.Infof("Running periodic traffic reset job for period: %s", j.period)
 | |
| 	if err != nil {
 | |
| 		logger.Warning("Failed to get inbounds for traffic reset:", err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	resetCount := 0
 | |
| 
 | |
| 	for _, inbound := range inbounds {
 | |
| 		if err := j.inboundService.ResetAllClientTraffics(inbound.Id); err != nil {
 | |
| 			logger.Warning("Failed to reset traffic for inbound", inbound.Id, ":", err)
 | |
| 			continue
 | |
| 		}
 | |
| 
 | |
| 		resetCount++
 | |
| 		logger.Infof("Reset traffic for inbound %d (%s)", inbound.Id, inbound.Remark)
 | |
| 	}
 | |
| 
 | |
| 	if resetCount > 0 {
 | |
| 		logger.Infof("Periodic traffic reset completed: %d inbounds reset", resetCount)
 | |
| 	}
 | |
| }
 |