package api import ( "net/http" "opencatd-open/internal/store" "github.com/gin-gonic/gin" ) // AdminGetConfig GET /api/admin/config — 获取系统配置。 func (h *Handler) AdminGetConfig(c *gin.Context) { configs := map[string]string{} var rows []store.SystemConfig h.db.Find(&rows) for _, r := range rows { configs[r.Key] = r.Value } c.JSON(http.StatusOK, gin.H{"data": configs}) } // AdminUpdateConfig PUT /api/admin/config — 更新系统配置。 func (h *Handler) AdminUpdateConfig(c *gin.Context) { var req map[string]string if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "invalid input"}) return } for key, value := range req { var sc store.SystemConfig result := h.db.Where("key = ?", key).First(&sc) if result.Error == nil { sc.Value = value h.db.Save(&sc) } else { sc = store.SystemConfig{Key: key, Value: value} h.db.Create(&sc) } } c.JSON(http.StatusOK, gin.H{"ok": true}) } // AdminGetRegistration GET /api/admin/config/registration — 获取注册配置。 func (h *Handler) AdminGetRegistration(c *gin.Context) { var sc store.SystemConfig enabled := "true" if err := h.db.Where("key = ?", "registration_enabled").First(&sc).Error; err == nil { enabled = sc.Value } c.JSON(http.StatusOK, gin.H{"data": gin.H{"enabled": enabled == "true"}}) } // AdminUpdateRegistration PUT /api/admin/config/registration — 更新注册配置。 func (h *Handler) AdminUpdateRegistration(c *gin.Context) { var req struct { Enabled bool `json:"enabled"` } if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "invalid input"}) return } value := "false" if req.Enabled { value = "true" } var sc store.SystemConfig if err := h.db.Where("key = ?", "registration_enabled").First(&sc).Error; err == nil { sc.Value = value h.db.Save(&sc) } else { sc = store.SystemConfig{Key: "registration_enabled", Value: value} h.db.Create(&sc) } c.JSON(http.StatusOK, gin.H{"ok": true}) } // AdminGetPasswordLogin GET /api/admin/config/password-login — 获取密码登录配置。 func (h *Handler) AdminGetPasswordLogin(c *gin.Context) { var sc store.SystemConfig enabled := "true" if err := h.db.Where("key = ?", "password_login_enabled").First(&sc).Error; err == nil { enabled = sc.Value } c.JSON(http.StatusOK, gin.H{"data": gin.H{"enabled": enabled == "true"}}) } // AdminUpdatePasswordLogin PUT /api/admin/config/password-login — 更新密码登录配置。 func (h *Handler) AdminUpdatePasswordLogin(c *gin.Context) { var req struct { Enabled bool `json:"enabled"` } if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "invalid input"}) return } value := "false" if req.Enabled { value = "true" } var sc store.SystemConfig if err := h.db.Where("key = ?", "password_login_enabled").First(&sc).Error; err == nil { sc.Value = value h.db.Save(&sc) } else { sc = store.SystemConfig{Key: "password_login_enabled", Value: value} h.db.Create(&sc) } c.JSON(http.StatusOK, gin.H{"ok": true}) }