feat():learning后台管理项目初始化
This commit is contained in:
117
internal/api/handlers/quota_handler.go
Normal file
117
internal/api/handlers/quota_handler.go
Normal file
@@ -0,0 +1,117 @@
|
||||
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})
|
||||
}
|
||||
Reference in New Issue
Block a user