118 lines
2.9 KiB
Go
118 lines
2.9 KiB
Go
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})
|
|
}
|