2025-06-30 16:44:06 +08:00

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