diff options
| author | mhsanaei <ho3ein.sanaei@gmail.com> | 2025-09-16 19:28:02 +0300 |
|---|---|---|
| committer | mhsanaei <ho3ein.sanaei@gmail.com> | 2025-09-16 19:28:02 +0300 |
| commit | dc21f419327dce4bdb2e8b1f2ce37b2e19cb5e10 (patch) | |
| tree | 529e7d45b17545f6ec5e2eb092eb49b8c95db50f /web/service/inbound.go | |
| parent | f137b1af76c0a6206ea792a39467646f73b043cb (diff) | |
bug fix: del Depleted
Diffstat (limited to 'web/service/inbound.go')
| -rw-r--r-- | web/service/inbound.go | 11 |
1 files changed, 9 insertions, 2 deletions
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 } |
