From c5e45144c1341069b5e7b5b9c4cfcddb99199fb6 Mon Sep 17 00:00:00 2001 From: Azavax <21226881+azavaxhuman@users.noreply.github.com> Date: Sat, 19 Jul 2025 09:54:25 +0330 Subject: [PATCH] up --- web/controller/api.go | 1 + web/controller/inbound.go | 25 +++++++++++++++++++++++++ web/service/inbound.go | 26 ++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/web/controller/api.go b/web/controller/api.go index 9944e2a3..636035ba 100644 --- a/web/controller/api.go +++ b/web/controller/api.go @@ -47,6 +47,7 @@ func (a *APIController) initRouter(g *gin.RouterGroup) { {"POST", "/resetAllClientTraffics/:id", a.inboundController.resetAllClientTraffics}, {"POST", "/delDepletedClients/:id", a.inboundController.delDepletedClients}, {"POST", "/onlines", a.inboundController.onlines}, + {"POST", "/updateClientTraffic/:email", a.inboundController.updateClientTraffic}, } for _, route := range inboundRoutes { diff --git a/web/controller/inbound.go b/web/controller/inbound.go index 592a4bd0..a89f224f 100644 --- a/web/controller/inbound.go +++ b/web/controller/inbound.go @@ -339,3 +339,28 @@ func (a *InboundController) delDepletedClients(c *gin.Context) { func (a *InboundController) onlines(c *gin.Context) { jsonObj(c, a.inboundService.GetOnlineClients(), nil) } + +func (a *InboundController) updateClientTraffic(c *gin.Context) { + email := c.Param("email") + + // Define the request structure for traffic update + type TrafficUpdateRequest struct { + Upload int64 `json:"upload"` + Download int64 `json:"download"` + } + + var request TrafficUpdateRequest + err := c.ShouldBindJSON(&request) + if err != nil { + jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err) + return + } + + err = a.inboundService.UpdateClientTrafficByEmail(email, request.Upload, request.Download) + if err != nil { + jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err) + return + } + + jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundClientUpdateSuccess"), nil) +} diff --git a/web/service/inbound.go b/web/service/inbound.go index f2646dbb..209b816e 100644 --- a/web/service/inbound.go +++ b/web/service/inbound.go @@ -2060,3 +2060,29 @@ func (s *InboundService) FilterAndSortClientEmails(emails []string) ([]string, [ return validEmails, extraEmails, nil } + +func (s *InboundService) UpdateClientTrafficByEmail(email string, upload int64, download int64) error { + db := database.GetDB() + + // Find the client traffic record by email + var clientTraffic xray.ClientTraffic + err := db.Model(xray.ClientTraffic{}).Where("email = ?", email).First(&clientTraffic).Error + if err != nil { + if err == gorm.ErrRecordNotFound { + return common.NewError("Client with email not found:", email) + } + return err + } + + // Update the upload and download values + clientTraffic.Up = upload + clientTraffic.Down = download + + // Save the updated record + err = db.Save(&clientTraffic).Error + if err != nil { + return err + } + + return nil +}