mirror of
https://gitlab.52pay.top/go/easygoadmin.git
synced 2025-09-26 22:47:58 +08:00
199 lines
5.1 KiB
Go
199 lines
5.1 KiB
Go
/**
|
||
* 系统配置-控制器
|
||
* @author
|
||
* @since 2021/11/15
|
||
* @File : config_web
|
||
*/
|
||
package controller
|
||
|
||
import (
|
||
"easygoadmin/app/model"
|
||
"easygoadmin/utils"
|
||
"easygoadmin/utils/common"
|
||
"easygoadmin/utils/gconv"
|
||
"easygoadmin/utils/gstr"
|
||
"easygoadmin/utils/response"
|
||
"encoding/json"
|
||
"github.com/gin-gonic/gin"
|
||
"net/http"
|
||
"regexp"
|
||
"strings"
|
||
"time"
|
||
)
|
||
|
||
// 控制器管理对象
|
||
var ConfigWeb = new(configWebCtl)
|
||
|
||
type configWebCtl struct{}
|
||
|
||
func (c *configWebCtl) Index(ctx *gin.Context) {
|
||
if ctx.Request.Method == "POST" {
|
||
// 返回结果
|
||
if utils.AppDebug() {
|
||
ctx.JSON(http.StatusOK, common.JsonResult{
|
||
Code: -1,
|
||
Msg: "演示环境,暂无权限操作",
|
||
})
|
||
return
|
||
}
|
||
// key:string类型,value:interface{} 类型能存任何数据类型
|
||
var jsonObj map[string]interface{}
|
||
data, _ := ctx.GetRawData()
|
||
json.Unmarshal(data, &jsonObj)
|
||
// 遍历处理数据源
|
||
for key, val := range jsonObj {
|
||
// 参数处理
|
||
if key == "checkbox" {
|
||
// 复选框
|
||
|
||
item := gstr.Split(key, "__")
|
||
// KEY值
|
||
key = item[0]
|
||
} else if strings.Contains(key, "upimage") {
|
||
// 单图上传
|
||
|
||
item := gstr.Split(key, "__")
|
||
// KEY值
|
||
key = item[0]
|
||
if strings.Contains(gconv.String(val), "temp") {
|
||
image, _ := utils.SaveImage(gconv.String(val), "config")
|
||
// 赋值给参数
|
||
val = image
|
||
} else {
|
||
// 赋值给参数
|
||
val = gstr.Replace(gconv.String(val), utils.ImageUrl(), "")
|
||
}
|
||
} else if strings.Contains(key, "upimgs") {
|
||
// 多图上传
|
||
item := gstr.Split(key, "__")
|
||
// KEY值
|
||
key = item[0]
|
||
// 图片地址处理
|
||
urlArr := gstr.Split(gconv.String(val), ",")
|
||
list := make([]string, 0)
|
||
for _, v := range urlArr {
|
||
if strings.Contains(gconv.String(v), "temp") {
|
||
image, _ := utils.SaveImage(v, "config")
|
||
list = append(list, image)
|
||
} else {
|
||
image := gstr.Replace(v, utils.ImageUrl(), "")
|
||
list = append(list, image)
|
||
}
|
||
}
|
||
// 数组转字符串,逗号分隔
|
||
val = strings.Join(list, ",")
|
||
} else if strings.Contains(key, "ueditor") {
|
||
item := gstr.Split(key, "__")
|
||
// KEY值
|
||
key = item[0]
|
||
|
||
// 富文本处理(待完善)
|
||
// TODO...
|
||
}
|
||
|
||
var info model.ConfigData
|
||
has, err := utils.XormDb.Where("code=?", key).Get(&info)
|
||
if err != nil || !has {
|
||
continue
|
||
}
|
||
|
||
// 更新记录
|
||
entity := &model.ConfigData{Id: info.Id}
|
||
entity.Value = gconv.String(val)
|
||
entity.UpdateUser = utils.Uid(ctx)
|
||
entity.UpdateTime = time.Now().Unix()
|
||
entity.Update()
|
||
}
|
||
|
||
// 返回结果
|
||
ctx.JSON(http.StatusOK, common.JsonResult{
|
||
Code: 0,
|
||
Msg: "保存成功",
|
||
})
|
||
return
|
||
}
|
||
// 配置ID
|
||
configId := ctx.Query("configId")
|
||
if configId == "" {
|
||
configId = "1"
|
||
}
|
||
|
||
// 获取配置列表
|
||
configData := make([]model.Config, 0)
|
||
utils.XormDb.Where("mark=1").Find(&configData)
|
||
configList := make(map[string]string)
|
||
for _, v := range configData {
|
||
configList[gconv.String(v.Id)] = v.Name
|
||
}
|
||
|
||
// 获取配置项列表
|
||
itemData := make([]model.ConfigData, 0)
|
||
utils.XormDb.Where("config_id=? and status=1 and mark=1", configId).OrderBy("sort asc").Find(&itemData)
|
||
itemList := make([]map[string]interface{}, 0)
|
||
for _, v := range itemData {
|
||
item := make(map[string]interface{})
|
||
item["id"] = v.Id
|
||
item["title"] = v.Title
|
||
item["code"] = v.Code
|
||
item["value"] = v.Value
|
||
item["type"] = v.Type
|
||
|
||
if v.Type == "checkbox" {
|
||
// 复选框
|
||
re := regexp.MustCompile(`\r?\n`)
|
||
list := gstr.Split(re.ReplaceAllString(v.Options, "|"), "|")
|
||
optionsList := make(map[string]string)
|
||
for _, val := range list {
|
||
re2 := regexp.MustCompile(`:|:|\s+`)
|
||
item := gstr.Split(re2.ReplaceAllString(val, "|"), "|")
|
||
optionsList[item[0]] = item[1]
|
||
}
|
||
item["optionsList"] = optionsList
|
||
} else if v.Type == "radio" {
|
||
// 单选框
|
||
re := regexp.MustCompile(`\r?\n`)
|
||
list := gstr.Split(re.ReplaceAllString(v.Options, "|"), "|")
|
||
optionsList := make(map[string]string)
|
||
for _, v := range list {
|
||
re2 := regexp.MustCompile(`:|:|\s+`)
|
||
item := gstr.Split(re2.ReplaceAllString(v, "|"), "|")
|
||
optionsList[item[0]] = item[1]
|
||
}
|
||
item["optionsList"] = optionsList
|
||
|
||
} else if v.Type == "select" {
|
||
// 下拉选择框
|
||
re := regexp.MustCompile(`\r?\n`)
|
||
list := gstr.Split(re.ReplaceAllString(v.Options, "|"), "|")
|
||
optionsList := make(map[string]string)
|
||
for _, v := range list {
|
||
re2 := regexp.MustCompile(`:|:|\s+`)
|
||
item := gstr.Split(re2.ReplaceAllString(v, "|"), "|")
|
||
optionsList[item[0]] = item[1]
|
||
}
|
||
item["optionsList"] = optionsList
|
||
} else if v.Type == "image" {
|
||
// 单图片
|
||
item["value"] = utils.GetImageUrl(v.Value)
|
||
} else if v.Type == "images" {
|
||
// 多图片
|
||
list := gstr.Split(v.Value, ",")
|
||
itemList := make([]string, 0)
|
||
for _, v := range list {
|
||
// 图片地址
|
||
item := utils.GetImageUrl(v)
|
||
itemList = append(itemList, item)
|
||
}
|
||
item["value"] = itemList
|
||
}
|
||
itemList = append(itemList, item)
|
||
}
|
||
|
||
// 渲染模板
|
||
response.BuildTpl(ctx, "configweb_index.html").WriteTpl(gin.H{
|
||
"configId": configId,
|
||
"configList": configList,
|
||
"itemList": itemList,
|
||
})
|
||
}
|