From dc21f419327dce4bdb2e8b1f2ce37b2e19cb5e10 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Tue, 16 Sep 2025 18:28:02 +0200 Subject: bug fix: del Depleted --- web/service/inbound.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'web/service') diff --git a/web/service/inbound.go b/web/service/inbound.go index d19668af..4abc88c3 100644 --- a/web/service/inbound.go +++ b/web/service/inbound.go @@ -1837,8 +1837,14 @@ func (s *InboundService) DelDepletedClients(id int) (err error) { whereText += "= ?" } + // Only consider truly depleted clients: expired OR traffic exhausted + now := time.Now().Unix() * 1000 depletedClients := []xray.ClientTraffic{} - err = db.Model(xray.ClientTraffic{}).Where(whereText+" and enable = ?", id, false).Select("inbound_id, GROUP_CONCAT(email) as email").Group("inbound_id").Find(&depletedClients).Error + err = db.Model(xray.ClientTraffic{}). + Where(whereText+" and ((total > 0 and up + down >= total) or (expiry_time > 0 and expiry_time <= ?))", id, now). + Select("inbound_id, GROUP_CONCAT(email) as email"). + Group("inbound_id"). + Find(&depletedClients).Error if err != nil { return err } @@ -1889,7 +1895,8 @@ func (s *InboundService) DelDepletedClients(id int) (err error) { } } - err = tx.Where(whereText+" and enable = ?", id, false).Delete(xray.ClientTraffic{}).Error + // Delete stats only for truly depleted clients + err = tx.Where(whereText+" and ((total > 0 and up + down >= total) or (expiry_time > 0 and expiry_time <= ?))", id, now).Delete(xray.ClientTraffic{}).Error if err != nil { return err } -- cgit v1.2.3