package handler import ( "strconv" "kra/internal/server/httpx" "kra/internal/service" "kra/internal/service/dto" "github.com/gin-gonic/gin" ) type Parameter struct { service *service.SettingsService } func NewParameter(service *service.SettingsService) *Parameter { return &Parameter{service: service} } func (h *Parameter) Create(c *gin.Context) { var req dto.SystemParameterRequest if err := c.ShouldBindJSON(&req); err != nil { httpx.Fail(c, err.Error()) return } if err := h.service.CreateParameterRequest(c.Request.Context(), &req); err != nil { httpx.Fail(c, "创建失败:"+err.Error()) return } httpx.Write(c, httpx.CodeSuccess, gin.H{}, "创建成功") } func (h *Parameter) Update(c *gin.Context) { var req dto.SystemParameterRequest if err := c.ShouldBindJSON(&req); err != nil { httpx.Fail(c, err.Error()) return } if err := h.service.UpdateParameterRequest(c.Request.Context(), &req); err != nil { httpx.Fail(c, "更新失败:"+err.Error()) return } httpx.Write(c, httpx.CodeSuccess, gin.H{}, "更新成功") } func (h *Parameter) Delete(c *gin.Context) { id, _ := strconv.ParseUint(c.Query("ID"), 10, 64) if err := h.service.DeleteParameters(c.Request.Context(), []uint{uint(id)}); err != nil { httpx.Fail(c, "删除失败:"+err.Error()) return } httpx.Write(c, httpx.CodeSuccess, gin.H{}, "删除成功") } func (h *Parameter) DeleteMany(c *gin.Context) { ids := IDsFromQuery(c) if err := h.service.DeleteParameters(c.Request.Context(), ids); err != nil { httpx.Fail(c, "批量删除失败:"+err.Error()) return } httpx.Write(c, httpx.CodeSuccess, gin.H{}, "批量删除成功") } func (h *Parameter) Find(c *gin.Context) { id, _ := strconv.ParseUint(c.Query("ID"), 10, 64) item, err := h.service.Parameter(c.Request.Context(), uint(id), "") if err != nil { httpx.Fail(c, "查询失败:"+err.Error()) return } httpx.OKWithData(c, item) } func (h *Parameter) Get(c *gin.Context) { item, err := h.service.Parameter(c.Request.Context(), 0, c.Query("key")) if err != nil { httpx.Fail(c, "获取失败:"+err.Error()) return } httpx.Write(c, httpx.CodeSuccess, item, "获取成功") } func (h *Parameter) List(c *gin.Context) { p, size := page(c) start, startErr := parseTime(c.Query("startCreatedAt")) end, endErr := parseTime(c.Query("endCreatedAt")) if startErr != nil || endErr != nil { httpx.Fail(c, "参数错误") return } items, total, err := h.service.ParametersFilter(c.Request.Context(), p, size, c.Query("name"), c.Query("key"), start, end) if err != nil { httpx.Fail(c, "获取失败:"+err.Error()) return } httpx.Write(c, httpx.CodeSuccess, httpx.PageResult{List: items, Total: total, Page: p, PageSize: size}, "获取成功") }