feat(routes): 注册 7 个设备 Gateway 路由

This commit is contained in:
2026-02-02 17:33:39 +08:00
parent 246ea6e287
commit 543c454f16
7 changed files with 1499 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
# Execution Status
## Completed Tasks
### ✅ Task 1: Bootstrap Dependency Injection
- **Status**: COMPLETED AND VERIFIED
- **Verification**:
- LSP diagnostics: CLEAN
- Build: SUCCESS
- Changes verified in files:
- `internal/handler/admin/iot_card.go` - Added gatewayClient field and updated constructor
- `internal/handler/admin/device.go` - Added gatewayClient field and updated constructor
- `internal/bootstrap/handlers.go` - Updated handler instantiation to pass deps.GatewayClient
- **Commit**: `修改 Bootstrap 注入 Gateway Client 依赖到 IotCardHandler 和 DeviceHandler`
- **Session**: ses_3e2531368ffes11sTWCVuBm9XX
## Next Wave (Wave 2 - PARALLEL)
### Task 2: IotCardHandler - Add 6 Gateway Methods
**Blocked By**: Task 1 ✅ (unblocked)
**Blocks**: Task 4
**Can Run In Parallel**: YES (with Task 3)
Methods to add:
- GetGatewayStatus (GET /:iccid/gateway-status)
- GetGatewayFlow (GET /:iccid/gateway-flow)
- GetGatewayRealname (GET /:iccid/gateway-realname)
- GetRealnameLink (GET /:iccid/realname-link)
- StopCard (POST /:iccid/stop)
- StartCard (POST /:iccid/start)
### Task 3: DeviceHandler - Add 7 Gateway Methods
**Blocked By**: Task 1 ✅ (unblocked)
**Blocks**: Task 5
**Can Run In Parallel**: YES (with Task 2)
Methods to add:
- GetGatewayInfo (GET /by-imei/:imei/gateway-info)
- GetGatewaySlots (GET /by-imei/:imei/gateway-slots)
- SetSpeedLimit (PUT /by-imei/:imei/speed-limit)
- SetWiFi (PUT /by-imei/:imei/wifi)
- SwitchCard (POST /by-imei/:imei/switch-card)
- RebootDevice (POST /by-imei/:imei/reboot)
- ResetDevice (POST /by-imei/:imei/reset)
## Implementation Notes
### Handler Method Pattern
```go
func (h *IotCardHandler) GetGatewayStatus(c *fiber.Ctx) error {
iccid := c.Params("iccid")
if iccid == "" {
return errors.New(errors.CodeInvalidParam, "ICCID不能为空")
}
// 1. Validate permission: Query DB to confirm ownership
card, err := h.service.GetByICCID(c.UserContext(), iccid)
if err != nil {
return errors.New(errors.CodeNotFound, "卡不存在或无权限访问")
}
// 2. Call Gateway
resp, err := h.gatewayClient.QueryCardStatus(c.UserContext(), &gateway.CardStatusReq{
CardNo: iccid,
})
if err != nil {
return err
}
return response.Success(c, resp)
}
```
### Gateway Param Conversion
- ICCID (path param) = CardNo (Gateway param)
- IMEI (path param) = DeviceID (Gateway param)