Files
easygoadmin/app/controller/config_web.go
yaoyilin 1b36bd8fbe feat: 初始化项目
初始化项目
2022-10-31 22:29:16 +08:00

199 lines
5.1 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.

/**
* 系统配置-控制器
* @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
}
// keystring类型valueinterface{} 类型能存任何数据类型
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,
})
}