Files
goalfylearning-admin/internal/api/handlers/system_config_handler.go

190 lines
4.3 KiB
Go

package handlers
import (
"goalfymax-admin/internal/models"
"goalfymax-admin/internal/services"
"goalfymax-admin/pkg/utils"
"strconv"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
// SystemConfigHandler 系统配置处理器
type SystemConfigHandler struct {
service services.SystemConfigService
response *utils.Response
logger *utils.Logger
}
// NewSystemConfigHandler 创建系统配置处理器
func NewSystemConfigHandler(service services.SystemConfigService, logger *utils.Logger) *SystemConfigHandler {
return &SystemConfigHandler{
service: service,
response: utils.NewResponse(),
logger: logger,
}
}
// Create 创建系统配置
func (h *SystemConfigHandler) Create(c *gin.Context) {
var req models.SystemConfigRequest
if err := c.ShouldBindJSON(&req); err != nil {
h.response.ValidateError(c, err)
return
}
config, err := h.service.Create(&req)
if err != nil {
h.logger.Error("创建系统配置失败", zap.Error(err))
h.response.InternalServerError(c, err.Error())
return
}
h.response.Success(c, config)
}
// GetByID 获取系统配置详情
func (h *SystemConfigHandler) GetByID(c *gin.Context) {
idStr := c.Param("id")
id, err := strconv.ParseUint(idStr, 10, 32)
if err != nil {
h.response.BadRequest(c, "无效的ID")
return
}
config, err := h.service.GetByID(uint(id))
if err != nil {
h.logger.Error("获取系统配置失败", zap.Error(err))
h.response.NotFound(c, "配置不存在")
return
}
h.response.Success(c, config)
}
// GetByKey 根据配置标识获取系统配置
func (h *SystemConfigHandler) GetByKey(c *gin.Context) {
key := c.Param("key")
if key == "" {
h.response.BadRequest(c, "配置标识不能为空")
return
}
config, err := h.service.GetByKey(key)
if err != nil {
h.logger.Error("获取系统配置失败", zap.Error(err))
h.response.NotFound(c, "配置不存在")
return
}
h.response.Success(c, config)
}
// List 获取系统配置列表
func (h *SystemConfigHandler) List(c *gin.Context) {
var req models.SystemConfigListRequest
if err := c.ShouldBindQuery(&req); err != nil {
h.response.ValidateError(c, err)
return
}
// 设置默认值
if req.Page <= 0 {
req.Page = 1
}
if req.Size <= 0 {
req.Size = 20
}
configs, total, err := h.service.List(&req)
if err != nil {
h.logger.Error("获取系统配置列表失败", zap.Error(err))
h.response.InternalServerError(c, "获取列表失败")
return
}
h.response.Page(c, configs, total, req.Page, req.Size)
}
// Update 更新系统配置
func (h *SystemConfigHandler) Update(c *gin.Context) {
idStr := c.Param("id")
id, err := strconv.ParseUint(idStr, 10, 32)
if err != nil {
h.response.BadRequest(c, "无效的ID")
return
}
var req models.SystemConfigUpdateRequest
if err := c.ShouldBindJSON(&req); err != nil {
h.response.ValidateError(c, err)
return
}
config, err := h.service.Update(uint(id), &req)
if err != nil {
h.logger.Error("更新系统配置失败", zap.Error(err))
h.response.InternalServerError(c, err.Error())
return
}
h.response.Success(c, config)
}
// Delete 删除系统配置
func (h *SystemConfigHandler) Delete(c *gin.Context) {
idStr := c.Param("id")
id, err := strconv.ParseUint(idStr, 10, 32)
if err != nil {
h.response.BadRequest(c, "无效的ID")
return
}
err = h.service.Delete(uint(id))
if err != nil {
h.logger.Error("删除系统配置失败", zap.Error(err))
h.response.InternalServerError(c, err.Error())
return
}
h.response.Success(c, nil)
}
// UpdateStatus 更新状态
func (h *SystemConfigHandler) UpdateStatus(c *gin.Context) {
idStr := c.Param("id")
id, err := strconv.ParseUint(idStr, 10, 32)
if err != nil {
h.response.BadRequest(c, "无效的ID")
return
}
var req models.SystemConfigUpdateStatusRequest
if err := c.ShouldBindJSON(&req); err != nil {
h.response.ValidateError(c, err)
return
}
err = h.service.UpdateStatus(uint(id), req.Status)
if err != nil {
h.logger.Error("更新系统配置状态失败", zap.Error(err))
h.response.InternalServerError(c, err.Error())
return
}
h.response.Success(c, nil)
}
// GetAll 获取所有系统配置
func (h *SystemConfigHandler) GetAll(c *gin.Context) {
configs, err := h.service.GetAll()
if err != nil {
h.logger.Error("获取所有系统配置失败", zap.Error(err))
h.response.InternalServerError(c, "获取配置失败")
return
}
h.response.Success(c, configs)
}