package handler import ( "strconv" "kra/internal/server/httpx" "kra/internal/service" "kra/internal/service/dto" "github.com/gin-gonic/gin" ) type Dictionary struct{ service *service.SettingsService } func NewDictionary(service *service.SettingsService) *Dictionary { return &Dictionary{service: service} } func (h *Dictionary) Create(c *gin.Context) { var req dto.DictionaryRequest if c.ShouldBindJSON(&req) != nil || req.Name == "" || req.Type == "" { httpx.Fail(c, "参数错误") return } if err := h.service.CreateDictionaryRequest(c.Request.Context(), &req); err != nil { httpx.Fail(c, "创建失败:"+err.Error()) return } httpx.OK(c) } func (h *Dictionary) Update(c *gin.Context) { var req dto.DictionaryRequest if c.ShouldBindJSON(&req) != nil || req.ID == 0 { httpx.Fail(c, "参数错误") return } if err := h.service.UpdateDictionaryRequest(c.Request.Context(), &req); err != nil { httpx.Fail(c, "更新失败") return } httpx.OK(c) } func (h *Dictionary) Delete(c *gin.Context) { var req dto.DictionaryRequest if c.ShouldBindJSON(&req) != nil || req.ID == 0 { httpx.Fail(c, "参数错误") return } if err := h.service.DeleteDictionary(c.Request.Context(), req.ID); err != nil { httpx.Fail(c, err.Error()) return } httpx.OK(c) } func (h *Dictionary) Find(c *gin.Context) { id, _ := strconv.ParseUint(c.Query("ID"), 10, 64) item, err := h.service.Dictionary(c.Request.Context(), uint(id), c.Query("type"), true) if err != nil { httpx.Fail(c, "查询失败") return } httpx.Write(c, httpx.CodeSuccess, gin.H{"reSysDictionary": item}, "查询成功") } func (h *Dictionary) List(details bool) gin.HandlerFunc { return func(c *gin.Context) { p, size := page(c) items, total, err := h.service.Dictionaries(c.Request.Context(), p, size, c.Query("name"), c.Query("type"), details) if err != nil { httpx.Fail(c, "获取失败") return } httpx.Write(c, httpx.CodeSuccess, httpx.PageResult{List: items, Total: total, Page: p, PageSize: size}, "获取成功") } } func (h *Dictionary) Export(c *gin.Context) { id, _ := strconv.ParseUint(c.Query("ID"), 10, 64) item, err := h.service.Dictionary(c.Request.Context(), uint(id), "", true) if err != nil { httpx.Fail(c, "导出失败") return } delete(item, "ID") delete(item, "CreatedAt") delete(item, "UpdatedAt") delete(item, "DeletedAt") httpx.Write(c, httpx.CodeSuccess, item, "导出成功") } func (h *Dictionary) Import(c *gin.Context) { var req dto.ImportDictionaryRequest if c.ShouldBindJSON(&req) != nil { httpx.Fail(c, "参数错误") return } if err := h.service.ImportDictionaryJSON(c.Request.Context(), req.JSON); err != nil { httpx.Fail(c, err.Error()) return } httpx.OK(c) } func (h *Dictionary) CreateDetail(c *gin.Context) { var req dto.DictionaryDetailRequest if c.ShouldBindJSON(&req) != nil || req.DictionaryID == 0 { httpx.Fail(c, "参数错误") return } if err := h.service.CreateDictionaryDetailRequest(c.Request.Context(), &req); err != nil { httpx.Fail(c, "创建失败") return } httpx.OK(c) } func (h *Dictionary) UpdateDetail(c *gin.Context) { var req dto.DictionaryDetailRequest if c.ShouldBindJSON(&req) != nil || req.ID == 0 { httpx.Fail(c, "参数错误") return } if err := h.service.UpdateDictionaryDetailRequest(c.Request.Context(), &req); err != nil { httpx.Fail(c, err.Error()) return } httpx.OK(c) } func (h *Dictionary) DeleteDetail(c *gin.Context) { var req dto.DictionaryDetailRequest if c.ShouldBindJSON(&req) != nil || req.ID == 0 { httpx.Fail(c, "参数错误") return } if err := h.service.DeleteDictionaryDetail(c.Request.Context(), req.ID); err != nil { httpx.Fail(c, err.Error()) return } httpx.OK(c) } func (h *Dictionary) FindDetail(c *gin.Context) { id, _ := strconv.ParseUint(c.Query("ID"), 10, 64) item, err := h.service.DictionaryDetail(c.Request.Context(), uint(id)) if err != nil { httpx.Fail(c, "查询失败") return } httpx.Write(c, httpx.CodeSuccess, gin.H{"reSysDictionaryDetail": item}, "查询成功") } func (h *Dictionary) Details(c *gin.Context) { p, size := page(c) dictionaryID, _ := strconv.ParseUint(c.Query("sysDictionaryID"), 10, 64) items, total, err := h.service.DictionaryDetails(c.Request.Context(), p, size, uint(dictionaryID), c.Query("label"), c.Query("value")) if err != nil { httpx.Fail(c, "获取失败") return } httpx.Write(c, httpx.CodeSuccess, httpx.PageResult{List: items, Total: total, Page: p, PageSize: size}, "获取成功") } func (h *Dictionary) Tree(byType bool) gin.HandlerFunc { return func(c *gin.Context) { id, _ := strconv.ParseUint(c.Query("sysDictionaryID"), 10, 64) typ := "" if byType { typ = c.Query("type") } items, err := h.service.DictionaryTree(c.Request.Context(), uint(id), typ) if err != nil { httpx.Fail(c, "获取失败") return } httpx.Write(c, httpx.CodeSuccess, items, "获取成功") } } func (h *Dictionary) DetailsByParent(c *gin.Context) { parentID, _ := strconv.ParseUint(c.Query("parentID"), 10, 64) dictionaryID, _ := strconv.ParseUint(c.Query("sysDictionaryID"), 10, 64) items, err := h.service.DictionaryDetailsByParent(c.Request.Context(), uint(dictionaryID), uint(parentID)) if err != nil { httpx.Fail(c, "获取失败") return } httpx.Write(c, httpx.CodeSuccess, items, "获取成功") } func (h *Dictionary) Path(c *gin.Context) { id, _ := strconv.ParseUint(c.Query("ID"), 10, 64) item, err := h.service.DictionaryDetail(c.Request.Context(), uint(id)) if err != nil { httpx.Fail(c, "获取失败") return } httpx.Write(c, httpx.CodeSuccess, gin.H{"path": item["path"]}, "获取成功") }