cutego/modules/core/api/v1/config_api.go

158 lines
3.7 KiB
Go

package v1
import (
"cutego/modules/core/api/v1/request"
cache2 "cutego/modules/core/cache"
"cutego/modules/core/dataobject"
service2 "cutego/modules/core/service"
"cutego/pkg/cache"
"cutego/pkg/excels"
"cutego/pkg/file"
"cutego/pkg/page"
"cutego/pkg/resp"
"cutego/pkg/util"
"github.com/druidcaesa/gotool"
"github.com/gin-gonic/gin"
"net/http"
"strconv"
"strings"
)
type ConfigApi struct {
configService service2.ConfigService
logService service2.LogService
}
// GetConfigValue 根据参数键名查询参数值
func (a ConfigApi) GetConfigValue(c *gin.Context) {
param := c.Query("key")
if !gotool.StrUtils.HasEmpty(param) {
key := a.configService.GetConfigKey(param)
c.JSON(http.StatusOK, resp.Success(key.ConfigValue, ""))
} else {
c.JSON(http.StatusInternalServerError, resp.ErrorResp("参数不合法"))
}
}
// List 查询设置列表
func (a ConfigApi) List(c *gin.Context) {
a.logService.LogStart(c)
a.logService.LogToDB(c, "日志测试 start")
query := request.ConfigQuery{}
if c.Bind(&query) != nil {
resp.ParamError(c)
return
}
find, i := a.configService.FindPage(query)
resp.OK(c, page.Page{
List: find,
Total: i,
Size: query.PageSize,
})
a.logService.LogToDB(c, "日志测试 end")
}
// Add 添加数据
func (a ConfigApi) Add(c *gin.Context) {
config := dataobject.SysConfig{}
if c.Bind(&config) != nil {
resp.ParamError(c)
return
}
// 检验key是否存在
if a.configService.CheckConfigKeyUnique(config) {
resp.Error(c, "新增参数'"+config.ConfigName+"'失败, 参数键名已存在")
}
config.CreateBy = util.GetUserInfo(c).UserName
if a.configService.Save(config) > 0 {
// 进行缓存数据添加
cache2.SetRedisConfig(config)
resp.OK(c)
} else {
resp.Error(c)
}
}
// Get 查询数据
func (a ConfigApi) Get(c *gin.Context) {
param := c.Param("configId")
configId, _ := strconv.ParseInt(param, 10, 64)
resp.OK(c, a.configService.GetInfo(configId))
}
// Edit 修改数据
func (a ConfigApi) Edit(c *gin.Context) {
config := dataobject.SysConfig{}
if c.Bind(&config) != nil {
resp.ParamError(c)
return
}
// 检验key是否存在
if a.configService.CheckConfigKeyUnique(config) {
resp.Error(c, "修改参数'"+config.ConfigName+"'失败, 参数键名已存在")
}
config.UpdateBy = util.GetUserInfo(c).UserName
if a.configService.Edit(config) > 0 {
cache2.SetRedisConfig(config)
resp.OK(c)
} else {
resp.Error(c)
}
}
// Delete 删除数据
func (a ConfigApi) Delete(c *gin.Context) {
ids := strings.Split(c.Param("ids"), ",")
list := make([]int64, 0)
for _, id := range ids {
parseInt, _ := strconv.ParseInt(id, 10, 64)
list = append(list, parseInt)
}
// 进行校验, 查看是否可以删除
byIds := a.configService.CheckConfigByIds(list)
for _, config := range *byIds {
if config.ConfigType == "Y" {
resp.Error(c, "内置参数"+config.ConfigName+"不能删除")
return
}
}
// 进行删除
if a.configService.Remove(list) {
// 刷新缓存
strs := make([]string, 0)
for _, config := range *byIds {
strs = append(strs, config.ConfigKey)
}
cache.RemoveList(strs)
resp.OK(c)
} else {
resp.Error(c)
}
}
// RefreshCache 刷新缓存
func (a ConfigApi) RefreshCache(c *gin.Context) {
all := a.configService.FindAll()
for _, sysConfig := range *all {
cache2.RemoveRedisConfig(sysConfig.ConfigKey)
cache2.SetRedisConfig(sysConfig)
}
}
// Export 导出数据
func (a ConfigApi) Export(c *gin.Context) {
query := request.ConfigQuery{}
if c.Bind(&query) != nil {
resp.ParamError(c)
return
}
find, _ := a.configService.FindPage(query)
items := make([]interface{}, 0)
for _, config := range *find {
items = append(items, config)
}
_, files := excels.ExportExcel(items, "配置表")
file.DownloadExcel(c, files)
}