144 lines
2.8 KiB
Go
144 lines
2.8 KiB
Go
package system
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"management/internal/erpserver/model/system"
|
|
"management/internal/erpserver/model/system/request"
|
|
"management/internal/erpserver/service/v1"
|
|
"management/internal/pkg/convertor"
|
|
"management/internal/pkg/gin/gu"
|
|
"management/internal/pkg/sqldb"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type ConfigApp struct {
|
|
configService v1.ConfigService
|
|
}
|
|
|
|
func NewConfigApp(configService v1.ConfigService) *ConfigApp {
|
|
return &ConfigApp{
|
|
configService: configService,
|
|
}
|
|
}
|
|
|
|
func (a *ConfigApp) Create(c *gin.Context) {
|
|
var req request.CreateAndUpdateConfig
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
gu.ValidatorErrors(c, err)
|
|
return
|
|
}
|
|
|
|
arg := system.Config{
|
|
Key: req.Key,
|
|
Value: []byte(req.Value),
|
|
}
|
|
if err := a.configService.Create(c, &arg); err != nil {
|
|
if errors.Is(err, sqldb.ErrDBDuplicatedEntry) {
|
|
gu.FailedWithCode(c, http.StatusConflict, "配置已存在")
|
|
return
|
|
}
|
|
|
|
gu.Failed(c, err.Error())
|
|
return
|
|
}
|
|
|
|
gu.Ok(c, "添加成功")
|
|
}
|
|
|
|
func (a *ConfigApp) Update(c *gin.Context) {
|
|
var id request.GetID
|
|
if err := c.ShouldBindUri(&id); err != nil {
|
|
gu.ValidatorErrors(c, err)
|
|
return
|
|
}
|
|
|
|
var req request.CreateAndUpdateConfig
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
gu.ValidatorErrors(c, err)
|
|
return
|
|
}
|
|
|
|
arg := system.Config{
|
|
ID: id.ID,
|
|
Key: req.Key,
|
|
Value: []byte(req.Value),
|
|
}
|
|
if err := a.configService.Update(c, &arg); err != nil {
|
|
gu.Failed(c, err.Error())
|
|
return
|
|
}
|
|
|
|
gu.Ok(c, "更新成功")
|
|
}
|
|
|
|
func (a *ConfigApp) Get(c *gin.Context) {
|
|
id := convertor.Int[int32](c.Param("id"), 0)
|
|
if id == 0 {
|
|
gu.FailedWithCode(c, http.StatusBadRequest, "ID不能为空")
|
|
return
|
|
}
|
|
|
|
config, err := a.configService.Get(c, id)
|
|
if err != nil {
|
|
if errors.Is(err, sqldb.ErrDBNotFound) {
|
|
gu.FailedWithCode(c, http.StatusNotFound, "配置不存在")
|
|
return
|
|
}
|
|
|
|
gu.Failed(c, err.Error())
|
|
return
|
|
}
|
|
|
|
gu.Ok(c, config)
|
|
}
|
|
|
|
func (a *ConfigApp) List(c *gin.Context) {
|
|
var req request.ListConfig
|
|
if err := c.ShouldBindQuery(&req); err != nil {
|
|
gu.ValidatorErrors(c, err)
|
|
return
|
|
}
|
|
|
|
res, count, err := a.configService.List(c, req)
|
|
if err != nil {
|
|
gu.Failed(c, err.Error())
|
|
return
|
|
}
|
|
|
|
gu.Ok(c, gu.NewPageData(count, req.PageID, req.PageSize, res))
|
|
}
|
|
|
|
func (a *ConfigApp) Refresh(c *gin.Context) {
|
|
key := c.PostForm("key")
|
|
err := a.configService.RefreshCache(c, strings.ToLower(key))
|
|
if err != nil {
|
|
gu.Failed(c, err.Error())
|
|
return
|
|
}
|
|
|
|
gu.Ok(c, "刷新成功")
|
|
}
|
|
|
|
func (a *ConfigApp) ResetPear(c *gin.Context) {
|
|
err := a.configService.ResetPear(c)
|
|
if err != nil {
|
|
gu.Failed(c, err.Error())
|
|
return
|
|
}
|
|
gu.Ok(c, "重置成功")
|
|
}
|
|
|
|
func (a *ConfigApp) Pear(c *gin.Context) {
|
|
pear, err := a.configService.Pear(c)
|
|
if err != nil {
|
|
gu.Failed(c, err.Error())
|
|
return
|
|
}
|
|
|
|
gu.Ok(c, pear)
|
|
}
|