From 9417179161f8d0a7c416cb5427f9567cfa88e675 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 6 Mar 2026 18:16:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E9=99=90=E9=80=9F=E5=92=8C=E5=88=87=E5=8D=A1=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=AD=97=E6=AE=B5=E8=A7=A3=E6=9E=90=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SetSpeedLimit 和 SwitchCard 的 Handler 直接解析 gateway 结构体(驼峰命名), 导致与 OpenAPI 文档(DTO 蛇形命名)不一致,前端按文档调用时参数被静默丢弃。 改为先解析 DTO,再手动映射到 gateway 结构体,使文档与实际行为一致。 Co-Authored-By: Claude Sonnet 4.6 --- internal/handler/admin/device.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/internal/handler/admin/device.go b/internal/handler/admin/device.go index c9e5531..b7b9720 100644 --- a/internal/handler/admin/device.go +++ b/internal/handler/admin/device.go @@ -279,7 +279,7 @@ func (h *DeviceHandler) SetSpeedLimit(c *fiber.Ctx) error { return errors.New(errors.CodeInvalidParam, "设备号不能为空") } - var req gateway.SpeedLimitReq + var req dto.SetSpeedLimitRequest if err := c.BodyParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } @@ -291,8 +291,11 @@ func (h *DeviceHandler) SetSpeedLimit(c *fiber.Ctx) error { } // 调用 Gateway - req.DeviceID = imei - err = h.gatewayClient.SetSpeedLimit(c.UserContext(), &req) + err = h.gatewayClient.SetSpeedLimit(c.UserContext(), &gateway.SpeedLimitReq{ + DeviceID: imei, + UploadSpeed: req.UploadSpeed, + DownloadSpeed: req.DownloadSpeed, + }) if err != nil { return err } @@ -335,7 +338,7 @@ func (h *DeviceHandler) SwitchCard(c *fiber.Ctx) error { return errors.New(errors.CodeInvalidParam, "设备号不能为空") } - var req gateway.SwitchCardReq + var req dto.SwitchCardRequest if err := c.BodyParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } @@ -347,8 +350,10 @@ func (h *DeviceHandler) SwitchCard(c *fiber.Ctx) error { } // 调用 Gateway - req.DeviceID = imei - err = h.gatewayClient.SwitchCard(c.UserContext(), &req) + err = h.gatewayClient.SwitchCard(c.UserContext(), &gateway.SwitchCardReq{ + DeviceID: imei, + TargetICCID: req.TargetICCID, + }) if err != nil { return err }