| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package admin
- import (
- "errors"
- "github.com/Wei-Shaw/sub2api/internal/pkg/response"
- "github.com/Wei-Shaw/sub2api/internal/service"
- "github.com/gin-gonic/gin"
- )
- // TieredRoutingHandler 管理分级路由规则:VIP 用户优先 premium 池账号。
- type TieredRoutingHandler struct {
- service *service.TieredRoutingService
- }
- func NewTieredRoutingHandler(svc *service.TieredRoutingService) *TieredRoutingHandler {
- return &TieredRoutingHandler{service: svc}
- }
- func (h *TieredRoutingHandler) requireService(c *gin.Context) bool {
- if h == nil || h.service == nil {
- response.ErrorFrom(c, errors.New("tiered routing service unavailable"))
- return false
- }
- return true
- }
- // GetSettings 读取分级路由规则。
- // GET /api/v1/admin/tiered-routing/settings
- func (h *TieredRoutingHandler) GetSettings(c *gin.Context) {
- if !h.requireService(c) {
- return
- }
- response.Success(c, h.service.GetSettings(c.Request.Context()))
- }
- // UpdateSettings 更新分级路由规则。
- // PUT /api/v1/admin/tiered-routing/settings
- func (h *TieredRoutingHandler) UpdateSettings(c *gin.Context) {
- if !h.requireService(c) {
- return
- }
- var req service.TieredRoutingSettings
- if err := c.ShouldBindJSON(&req); err != nil {
- response.BadRequest(c, "Invalid request: "+err.Error())
- return
- }
- out, err := h.service.UpdateSettings(c.Request.Context(), req)
- if err != nil {
- response.ErrorFrom(c, err)
- return
- }
- response.Success(c, out)
- }
|