zwpanel/service/api/api_v1/panel/userConfig.go
2023-11-08 21:53:07 +08:00

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)
}