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) }