88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
package panel
|
|
|
|
import (
|
|
"encoding/json"
|
|
"sun-panel/api/api_v1/common/apiReturn"
|
|
"sun-panel/api/api_v1/common/base"
|
|
"sun-panel/global"
|
|
"sun-panel/models"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gin-gonic/gin/binding"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type UserConfig struct {
|
|
}
|
|
|
|
func (a *UserConfig) Get(c *gin.Context) {
|
|
userInfo, _ := base.GetCurrentUserInfo(c)
|
|
cfg := models.UserConfig{}
|
|
if err := global.Db.First(&cfg, "user_id=?", userInfo.ID).Error; err != nil {
|
|
if err == gorm.ErrRecordNotFound {
|
|
apiReturn.ErrorDataNotFound(c)
|
|
return
|
|
} else {
|
|
apiReturn.ErrorDatabase(c, err.Error())
|
|
return
|
|
}
|
|
}
|
|
|
|
// 处理字段
|
|
if err := json.Unmarshal([]byte(cfg.PanelJson), &cfg.Panel); err != nil {
|
|
cfg.Panel = nil
|
|
}
|
|
if err := json.Unmarshal([]byte(cfg.SearchEngineJson), &cfg.SearchEngine); err != nil {
|
|
cfg.SearchEngine = nil
|
|
}
|
|
apiReturn.SuccessData(c, cfg)
|
|
|
|
}
|
|
|
|
func (a *UserConfig) Set(c *gin.Context) {
|
|
userInfo, _ := base.GetCurrentUserInfo(c)
|
|
req := models.UserConfig{}
|
|
|
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|
apiReturn.ErrorParamFomat(c, err.Error())
|
|
return
|
|
}
|
|
|
|
// 处理字段
|
|
if jb, err := json.Marshal(req.Panel); err != nil {
|
|
req.PanelJson = "{}"
|
|
} else {
|
|
req.PanelJson = string(jb)
|
|
}
|
|
|
|
if jb, err := json.Marshal(req.SearchEngine); err != nil {
|
|
req.SearchEngineJson = "{}"
|
|
} else {
|
|
req.SearchEngineJson = string(jb)
|
|
}
|
|
|
|
// 保存操作
|
|
if err := global.Db.First(&models.UserConfig{}, "user_id=?", userInfo.ID).Error; err != nil {
|
|
req.UserId = userInfo.ID
|
|
if err == gorm.ErrRecordNotFound {
|
|
// 新增
|
|
if err := global.Db.Create(&req).Error; err != nil {
|
|
apiReturn.ErrorDatabase(c, err.Error())
|
|
return
|
|
}
|
|
} else {
|
|
// 报错
|
|
apiReturn.ErrorDatabase(c, err.Error())
|
|
return
|
|
}
|
|
} else {
|
|
// 修改
|
|
if err := global.Db.Where("user_id=?", userInfo.ID).Updates(&req).Error; err != nil {
|
|
apiReturn.ErrorDatabase(c, err.Error())
|
|
return
|
|
}
|
|
}
|
|
|
|
apiReturn.Success(c)
|
|
}
|