Files
junhong_cmp_fiber/internal/routes/package_traffic_alert.go
邹进 25c081fe60
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 8h37m36s
fix: 第1批 M2、M3、M16、M23 导入与展示类缺陷
- M2 批量换绑表头改为“平台登录账号”,只认手机号,细分格式、不存在、多匹配、非平台、已禁用失败原因
- M3 后台订单列表与详情返回 C 端在线购买的交易流水号、支付渠道、商户名称,详情新增全部支付单 payments
- M16 预警规则不再返回 real_data_mb,预警列表/详情新增 threshold_mb,导出末列追加“阈值流量(MB)”
- M23 设备导入 IMEI 必填,空 IMEI 行记为失败
- OpenSpec Change fix-august-iteration-follow-up-gaps:13/18,导入任务、导出任务的 Worker 端到端验证与前端/运营通知待部署后完成
2026-10-11 23:49:29 +09:00

87 lines
4.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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/constants"
"github.com/break/junhong_cmp_fiber/pkg/errors"
"github.com/break/junhong_cmp_fiber/pkg/middleware"
"github.com/break/junhong_cmp_fiber/pkg/openapi"
)
// registerPackageTrafficAlertRoutes 注册套餐真流量预警规则与达量预警路由。
// 沿用超管/平台路由组级 gate 先例:代理、企业与个人客户账号一律 403。
// gate 必须挂在功能路径组上:Fiber 的组中间件按路径前缀生效,挂在空路径组上会落到
// /api/admin 前缀,从而拦截该层其余全部接口。
func registerPackageTrafficAlertRoutes(router fiber.Router, handler *admin.PackageTrafficAlertHandler, doc *openapi.Generator, basePath string) {
gate := func(c *fiber.Ctx) error {
userType := middleware.GetUserTypeFromContext(c.UserContext())
if userType != constants.UserTypeSuperAdmin && userType != constants.UserTypePlatform {
return errors.New(errors.CodeForbidden, constants.PlatformManagementForbiddenMessage)
}
return c.Next()
}
ruleGroup := router.Group("/package-traffic-alert-rules", gate)
rulePath := basePath + "/package-traffic-alert-rules"
Register(ruleGroup, doc, rulePath, "GET", "", handler.ListRules, RouteSpec{
Summary: "查询套餐真流量预警规则列表",
Description: "返回套餐、阈值百分比、启用状态、备注与更新时间,不返回套餐流量额度:判定时按资产当前有效的主套餐与加油包真流量汇总计算,规则创建时无法得知汇总额度;仅超级管理员与平台账号可访问",
Tags: []string{"套餐管理"},
Input: new(dto.ListPackageTrafficAlertRuleRequest),
Output: new(dto.PackageTrafficAlertRuleListResponse),
Auth: true,
})
Register(ruleGroup, doc, rulePath, "POST", "", handler.CreateRule, RouteSpec{
Summary: "创建套餐真流量预警规则",
Description: "每个套餐商品至多一条当前规则;创建时校验套餐存在且商品真流量额度大于零,阈值为 1%~100% 的小数百分比",
Tags: []string{"套餐管理"},
Body: new(dto.CreatePackageTrafficAlertRuleRequest),
Output: new(dto.PackageTrafficAlertRuleItem),
Auth: true,
})
Register(ruleGroup, doc, rulePath, "PUT", "/:id", handler.UpdateRule, RouteSpec{
Summary: "修改套餐真流量预警规则",
Description: "允许修改阈值、启停与备注;修改不影响既有预警快照,停用后扫描不再创建新预警",
Tags: []string{"套餐管理"},
Input: new(dto.UpdatePackageTrafficAlertRuleParams),
Output: new(dto.PackageTrafficAlertRuleItem),
Auth: true,
})
alertGroup := router.Group("/package-traffic-alerts", gate)
alertPath := basePath + "/package-traffic-alerts"
Register(alertGroup, doc, alertPath, "GET", "", handler.ListAlerts, RouteSpec{
Summary: "查询套餐真流量达量预警列表",
Description: "先应用既有资产数据范围;资产、套餐、用量、阈值、到期时间与触发时归属均为触发快照,真流量已用量与额度为主套餐与加油包汇总,threshold_mb 为额度 × 阈值 ÷ 100;支持按触发时间闭区间与通知投递结果筛选",
Tags: []string{"套餐流量预警"},
Input: new(dto.ListPackageTrafficAlertRequest),
Output: new(dto.PackageTrafficAlertListResponse),
Auth: true,
})
Register(alertGroup, doc, alertPath, "GET", "/:id", handler.GetAlert, RouteSpec{
Summary: "查询套餐真流量达量预警详情",
Description: "越权与不存在统一按资源不可见处理;返回冻结快照、通知投递结果与通知已读展示期",
Tags: []string{"套餐流量预警"},
Input: new(dto.IDReq),
Output: new(dto.PackageTrafficAlertDetailResponse),
Auth: true,
})
Register(alertGroup, doc, alertPath, "POST", "/export", handler.ExportAlerts, RouteSpec{
Summary: "导出套餐真流量达量预警",
Description: "复用既有异步导出任务,创建时冻结操作者、筛选、时间范围与可见资产范围;归属列按执行时当前归属补充",
Tags: []string{"套餐流量预警"},
Body: new(dto.ExportPackageTrafficAlertRequest),
Output: new(dto.CreateExportTaskResponse),
Auth: true,
})
}