package handlers import ( "github.com/gin-gonic/gin" "goalfymax-admin/internal/models" "goalfymax-admin/internal/services" "goalfymax-admin/pkg/utils" ) // QuotaHandler 配额处理器 type QuotaHandler struct { quotaService services.QuotaService response *utils.Response } // NewQuotaHandler 创建配额处理器 func NewQuotaHandler(quotaService services.QuotaService) *QuotaHandler { return &QuotaHandler{ quotaService: quotaService, response: utils.NewResponse(), } } // GetQuotaHistory 获取配额历史数据 func (h *QuotaHandler) GetQuotaHistory(c *gin.Context) { var req models.QuotaHistoryRequest if err := c.ShouldBindJSON(&req); err != nil { h.response.ValidateError(c, err) return } // 调用服务层 response, err := h.quotaService.GetQuotaHistory(&req) if err != nil { h.response.InternalServerError(c, err.Error()) return } // 返回响应 if response.Success { h.response.Success(c, response.Data) } else { h.response.BadRequest(c, response.Message) } } // HealthCheck 健康检查 func (h *QuotaHandler) HealthCheck(c *gin.Context) { err := h.quotaService.HealthCheck() if err != nil { h.response.InternalServerError(c, "配额服务健康检查失败") return } h.response.Success(c, gin.H{"status": "ok", "service": "quota"}) } // GetQuotaRules 获取配额规则列表(透传网关) func (h *QuotaHandler) GetQuotaRules(c *gin.Context) { resp, err := h.quotaService.GetQuotaRules() if err != nil { h.response.InternalServerError(c, err.Error()) return } if resp.Success { // 透传 data c.JSON(200, gin.H{ "code": 200, "message": "操作成功", "data": resp.Data, }) return } h.response.BadRequest(c, resp.Message) } // CreateQuotaRule 创建配额规则(代理网关) func (h *QuotaHandler) CreateQuotaRule(c *gin.Context) { var body map[string]any if err := c.ShouldBindJSON(&body); err != nil { h.response.ValidateError(c, err) return } resp, err := h.quotaService.CreateQuotaRule(body) if err != nil { h.response.InternalServerError(c, err.Error()) return } c.JSON(200, gin.H{"code": 200, "message": "操作成功", "data": resp.Data}) } // UpdateQuotaRule 更新配额规则(代理网关) func (h *QuotaHandler) UpdateQuotaRule(c *gin.Context) { id := c.Param("id") var body map[string]any if err := c.ShouldBindJSON(&body); err != nil { h.response.ValidateError(c, err) return } resp, err := h.quotaService.UpdateQuotaRule(id, body) if err != nil { h.response.InternalServerError(c, err.Error()) return } c.JSON(200, gin.H{"code": 200, "message": "操作成功", "data": resp.Data}) } // DeleteQuotaRule 删除配额规则(代理网关) func (h *QuotaHandler) DeleteQuotaRule(c *gin.Context) { id := c.Param("id") resp, err := h.quotaService.DeleteQuotaRule(id) if err != nil { h.response.InternalServerError(c, err.Error()) return } c.JSON(200, gin.H{"code": 200, "message": "操作成功", "data": resp.Data}) }