190 lines
4.3 KiB
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)
|
|
}
|