190 lines
5.5 KiB
Go
190 lines
5.5 KiB
Go
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"]}, "获取成功")
|
|
}
|