Files
yunzerwebsiteallinone/go/controllers/platform_website_setting.go
T
2026-09-15 00:08:36 +08:00

108 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package controllers
import (
"encoding/json"
"io"
"strings"
"server/models"
beego "github.com/beego/beego/v2/server/web"
)
// PlatformWebsiteSettingController 平台官网站点设置(平台端专用)
// 对应前端 views/website/setting/index.vue:
// - GET /platform/website/setting/info
// - POST /platform/website/setting/save
//
// 数据落在 yz_platform_site_setting(通用键值结构:title/value/tag/remark)。
// 该表完全数据驱动:表里插一行就是一个新的设置项,模板即可用 {yz:tag} 输出,
// platform 端界面也会自动出现该项,无需改动后端代码。
type PlatformWebsiteSettingController struct {
beego.Controller
}
func (c *PlatformWebsiteSettingController) jsonErr(httpStatus, bizCode int, msg string) {
c.Ctx.Output.SetStatus(httpStatus)
c.Data["json"] = map[string]any{"code": bizCode, "msg": msg}
_ = c.ServeJSON()
}
// Info GET /platform/website/setting/info
// 直接把表里所有设置项返回,前端按行渲染(新增设置项无需改代码):
// data.list = [{ id, title, value, tag, remark }]
// data.values = { "sitename": "云泽科技", ... }(key 即标签名,方便直接使用)
func (c *PlatformWebsiteSettingController) Info() {
if _, err := requirePlatform(&c.Controller); err != nil {
c.jsonErr(401, 401, err.Error())
return
}
rows := models.GetPlatformSiteSettingRows()
list := make([]map[string]any, 0, len(rows))
for _, r := range rows {
list = append(list, map[string]any{
"id": r.ID,
"title": r.Title,
"value": r.Value,
"tag": r.Tag,
"remark": r.Remark,
})
}
c.Data["json"] = map[string]any{
"code": 200,
"msg": "success",
"data": map[string]any{
"list": list,
"values": models.GetPlatformSiteTagMap(),
},
}
_ = c.ServeJSON()
}
// Save POST /platform/website/setting/save
// 入参 { "sitename": "云泽科技", "subtitle": "...", ... },key 为标签名,按标签逐项 upsert。
// 通用:表里已存在或新增的任意合法标签都可写入,不需要登记。
func (c *PlatformWebsiteSettingController) Save() {
if _, err := requirePlatform(&c.Controller); err != nil {
c.jsonErr(401, 401, err.Error())
return
}
raw, err := io.ReadAll(c.Ctx.Request.Body)
if err != nil {
c.jsonErr(400, 400, "参数错误")
return
}
var payload map[string]string
if uerr := json.Unmarshal(raw, &payload); uerr != nil {
c.jsonErr(400, 400, "参数错误")
return
}
if len(payload) == 0 {
c.jsonErr(400, 400, "参数错误")
return
}
if strings.TrimSpace(payload["sitename"]) == "" {
c.jsonErr(400, 400, "站点名称不能为空")
return
}
// 统一去掉首尾空格,避免模板里输出多余空白
values := make(map[string]string, len(payload))
for k, v := range payload {
values[k] = strings.TrimSpace(v)
}
if err = models.SavePlatformSiteSettings(values); err != nil {
c.jsonErr(500, 500, "保存失败: "+err.Error())
return
}
c.Data["json"] = map[string]any{"code": 200, "msg": "保存成功"}
_ = c.ServeJSON()
}