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" ) // UserLevelConfigHandler 用户等级配置处理器 type UserLevelConfigHandler struct { service services.UserLevelConfigService response *utils.Response logger *utils.Logger } // NewUserLevelConfigHandler 创建用户等级配置处理器 func NewUserLevelConfigHandler(service services.UserLevelConfigService, logger *utils.Logger) *UserLevelConfigHandler { return &UserLevelConfigHandler{ service: service, response: utils.NewResponse(), logger: logger, } } // Create 创建用户等级配置 func (h *UserLevelConfigHandler) Create(c *gin.Context) { var req models.UserLevelConfigCreateRequest 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 *UserLevelConfigHandler) 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) } // List 获取用户等级配置列表 func (h *UserLevelConfigHandler) List(c *gin.Context) { var req models.UserLevelConfigListRequest 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 *UserLevelConfigHandler) 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.UserLevelConfigUpdateRequest 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 *UserLevelConfigHandler) 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 *UserLevelConfigHandler) 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.UserLevelConfigUpdateStatusRequest 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 *UserLevelConfigHandler) 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) }