package handler import ( "errors" "net/http" "github.com/freefire/jiang13-bbs/service" "github.com/gin-gonic/gin" ) // PublicSettings 公开站点设置(无需登录):前端 SSR 据此注入主题 CSS 变量 // GET /api/settings func (h *Handlers) PublicSettings(c *gin.Context) { accent, err := h.Setting.AccentColor() if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "获取站点设置失败"}) return } c.JSON(http.StatusOK, gin.H{"accent": accent}) } type updateSettingsRequest struct { // Accent 主题色 #RRGGBB;空串恢复默认 Accent string `json:"accent"` } // UpdateSettings 更新站点设置(管理员) // PUT /api/admin/settings func (h *Handlers) UpdateSettings(c *gin.Context) { var req updateSettingsRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "请求参数无效"}) return } if err := h.Setting.SetAccent(req.Accent); err != nil { if errors.Is(err, service.ErrInvalidAccent) { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusInternalServerError, gin.H{"error": "保存站点设置失败"}) return } c.JSON(http.StatusOK, gin.H{"ok": true, "accent": req.Accent}) }