64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
package handler
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
"soul-api/internal/database"
|
|
"soul-api/internal/model"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// GetConfig GET /api/config 从 system_config 读取并合并(与 app/api/config 结构一致)
|
|
func GetConfig(c *gin.Context) {
|
|
var list []model.SystemConfig
|
|
if err := database.DB().Order("config_key ASC").Find(&list).Error; err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true, "paymentMethods": gin.H{}, "liveQRCodes": []interface{}{},
|
|
"siteConfig": gin.H{}, "menuConfig": gin.H{}, "pageConfig": gin.H{},
|
|
})
|
|
return
|
|
}
|
|
out := gin.H{
|
|
"success": true, "paymentMethods": gin.H{}, "liveQRCodes": []interface{}{},
|
|
"siteConfig": gin.H{}, "menuConfig": gin.H{}, "pageConfig": gin.H{},
|
|
"authorInfo": gin.H{}, "marketing": gin.H{}, "system": gin.H{},
|
|
}
|
|
for _, row := range list {
|
|
var val interface{}
|
|
_ = json.Unmarshal(row.ConfigValue, &val)
|
|
switch row.ConfigKey {
|
|
case "site_config", "siteConfig":
|
|
if m, ok := val.(map[string]interface{}); ok {
|
|
out["siteConfig"] = m
|
|
}
|
|
case "menu_config", "menuConfig":
|
|
out["menuConfig"] = val
|
|
case "page_config", "pageConfig":
|
|
if m, ok := val.(map[string]interface{}); ok {
|
|
out["pageConfig"] = m
|
|
}
|
|
case "payment_methods", "paymentMethods":
|
|
if m, ok := val.(map[string]interface{}); ok {
|
|
out["paymentMethods"] = m
|
|
}
|
|
case "live_qr_codes", "liveQRCodes":
|
|
out["liveQRCodes"] = val
|
|
case "author_info", "authorInfo":
|
|
if m, ok := val.(map[string]interface{}); ok {
|
|
out["authorInfo"] = m
|
|
}
|
|
case "marketing":
|
|
if m, ok := val.(map[string]interface{}); ok {
|
|
out["marketing"] = m
|
|
}
|
|
case "system":
|
|
if m, ok := val.(map[string]interface{}); ok {
|
|
out["system"] = m
|
|
}
|
|
}
|
|
}
|
|
c.JSON(http.StatusOK, out)
|
|
}
|