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