All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m35s
- 新增不轮询清单 tb_card_polling_pause(迁移 000256 补写存量),所有改 enable_polling 的入口同事务写清单 - 卡、设备勾选批量开关轮询(单次 500,逐项结果,开启跳过风险停机与已销户)与 CSV 文件导入 - 订单套餐生效、改有效期后自动恢复轮询并按规则评估复机 - 不轮询清单查询与导出;卡、设备列表与导出增加是否轮询 - 失败告警停机被拒视图、导出与批量关闭轮询;开关轮询影响说明 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
62 lines
4.7 KiB
Go
62 lines
4.7 KiB
Go
package routes
|
||
|
||
import (
|
||
"github.com/gofiber/fiber/v2"
|
||
|
||
"github.com/break/junhong_cmp_fiber/internal/handler/admin"
|
||
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
||
"github.com/break/junhong_cmp_fiber/pkg/openapi"
|
||
)
|
||
|
||
// pollingToggleImpactDoc 开关轮询影响说明,随接口文档提供给前端确认框。
|
||
const pollingToggleImpactDoc = `
|
||
|
||
**关闭轮询的影响**:关闭后不再查询上游卡状态、流量与实名;流量用完、实名不满足时不自动停机,套餐激活、流量重置后不自动复机;
|
||
套餐到期、退款后无可用套餐时仍会自动停机;订单套餐生效、后台修改有效期后资产有生效套餐时会自动恢复轮询并按规则复机;人工停复机照常;设备关闭时设备下所有卡同样适用。
|
||
|
||
**开启轮询的影响**:按轮询配置查询上游并按规则自动停复机,人工停机不享有豁免;网关扩展状态为风险停机或已销户的卡不能开启轮询(逐项返回跳过原因,不提供强制参数)。`
|
||
|
||
// registerPollingPauseRoutes 注册批量开关轮询、不轮询清单、轮询开关导入与告警页关闭轮询接口。
|
||
func registerPollingPauseRoutes(router fiber.Router, handler *admin.PollingPauseHandler, doc *openapi.Generator, basePath string) {
|
||
tags := []string{"不轮询清单"}
|
||
Register(router, doc, basePath, "POST", "/iot-cards/batch-update-polling-status", handler.BatchCards, RouteSpec{
|
||
Summary: "勾选批量开关卡轮询",
|
||
Description: "单次最多500个;按数据权限逐项处理并返回结果,每项同事务写轮询开关、不轮询清单与审计。" + pollingToggleImpactDoc,
|
||
Tags: tags, Input: new(dto.BatchUpdatePollingStatusRequest), Output: new(dto.BatchUpdatePollingStatusResponse), Auth: true,
|
||
})
|
||
Register(router, doc, basePath, "POST", "/devices/batch-update-polling-status", handler.BatchDevices, RouteSpec{
|
||
Summary: "勾选批量开关设备轮询",
|
||
Description: "单次最多500个;设备沿用级联到设备下各卡(开启时跳过风险停机、已销户的卡)。" + pollingToggleImpactDoc,
|
||
Tags: tags, Input: new(dto.BatchUpdatePollingStatusRequest), Output: new(dto.BatchUpdatePollingStatusResponse), Auth: true,
|
||
})
|
||
Register(router, doc, basePath, "GET", "/polling-status/impact", handler.Impact, RouteSpec{
|
||
Summary: "开关轮询影响说明", Description: "供前端关闭与开启轮询的确认框展示。", Tags: tags,
|
||
Input: nil, Output: new(dto.PollingToggleImpactResponse), Auth: true,
|
||
})
|
||
Register(router, doc, basePath, "GET", "/card-polling-pauses", handler.ListPauses, RouteSpec{
|
||
Summary: "查询不轮询清单(仅平台账号)",
|
||
Description: "每个资产只有一条已关闭记录,恢复后保留历史;导出使用统一导出任务,场景 polling_pause,筛选参数同本接口。",
|
||
Tags: tags, Input: new(dto.CardPollingPauseListRequest), Output: new(dto.CardPollingPausePageResult), Auth: true,
|
||
})
|
||
imports := router.Group("/polling-status-imports")
|
||
importsPath := basePath + "/polling-status-imports"
|
||
Register(imports, doc, importsPath, "POST", "", handler.CreateImport, RouteSpec{
|
||
Summary: "创建轮询开关文件导入任务(仅平台账号)",
|
||
Description: "先调用 POST /api/admin/storage/upload-url(purpose 传 polling_status_import)上传 CSV;首行为表头,首列为 ICCID(卡)或 IMEI/虚拟号(设备)。" +
|
||
"异步逐行处理,规则同勾选批量,部分成功不回滚。" + pollingToggleImpactDoc,
|
||
Tags: tags, Input: new(dto.CreatePollingStatusImportRequest), Output: new(dto.PollingStatusImportTaskResponse), Auth: true,
|
||
})
|
||
Register(imports, doc, importsPath, "GET", "", handler.ListImports, RouteSpec{
|
||
Summary: "查询轮询开关导入任务", Tags: tags, Input: new(dto.PollingStatusImportListRequest), Output: new(dto.PollingStatusImportPageResult), Auth: true,
|
||
})
|
||
Register(imports, doc, importsPath, "GET", "/:id", handler.GetImport, RouteSpec{
|
||
Summary: "查询轮询开关导入任务详情(含逐行结果)", Tags: tags, Input: new(dto.PollingStatusImportIDPath),
|
||
Output: new(dto.PollingStatusImportTaskDetailResponse), Auth: true,
|
||
})
|
||
Register(router, doc, basePath, "POST", "/polling-failure-alerts/close-polling", handler.ClosePollingByAlerts, RouteSpec{
|
||
Summary: "告警页勾选批量关闭轮询(仅平台账号)",
|
||
Description: "单次最多500条;关闭告警对应卡的轮询,清单来源记\"停机被拒告警处理\",告警状态改为已关闭轮询。停机被拒视图:GET /polling-failure-alerts?view=stop_refused,导出场景 polling_stop_refused_alert。",
|
||
Tags: tags, Input: new(dto.ClosePollingByAlertsRequest), Output: new(dto.BatchUpdatePollingStatusResponse), Auth: true,
|
||
})
|
||
}
|