592 lines
20 KiB
Go
592 lines
20 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"kra/internal/biz/system"
|
|
|
|
"github.com/go-kratos/kratos/v2/errors"
|
|
"github.com/go-kratos/kratos/v2/transport/http"
|
|
)
|
|
|
|
// DictionaryService 字典服务
|
|
type DictionaryService struct {
|
|
uc *system.DictionaryUsecase
|
|
}
|
|
|
|
// NewDictionaryService 创建字典服务
|
|
func NewDictionaryService(uc *system.DictionaryUsecase) *DictionaryService {
|
|
return &DictionaryService{uc: uc}
|
|
}
|
|
|
|
// DictionaryInfo 字典信息
|
|
type DictionaryInfo struct {
|
|
ID uint `json:"ID"`
|
|
Name string `json:"name"`
|
|
Type string `json:"type"`
|
|
Status *bool `json:"status"`
|
|
Desc string `json:"desc"`
|
|
ParentID *uint `json:"parentId,omitempty"`
|
|
Children []*DictionaryInfo `json:"children,omitempty"`
|
|
}
|
|
|
|
// DictionaryDetailInfo 字典详情信息
|
|
type DictionaryDetailInfo struct {
|
|
ID uint `json:"ID"`
|
|
Label string `json:"label"`
|
|
Value string `json:"value"`
|
|
Extend string `json:"extend"`
|
|
Status *bool `json:"status"`
|
|
Sort int `json:"sort"`
|
|
SysDictionaryID uint `json:"sysDictionaryID"`
|
|
ParentID *uint `json:"parentId,omitempty"`
|
|
Level int `json:"level"`
|
|
Path string `json:"path"`
|
|
Disabled bool `json:"disabled"`
|
|
Children []*DictionaryDetailInfo `json:"children,omitempty"`
|
|
}
|
|
|
|
// CreateDictionaryRequest 创建字典请求
|
|
type CreateDictionaryRequest struct {
|
|
Name string `json:"name"`
|
|
Type string `json:"type"`
|
|
Status *bool `json:"status"`
|
|
Desc string `json:"desc"`
|
|
ParentID *uint `json:"parentId"`
|
|
}
|
|
|
|
// CreateDictionary 创建字典
|
|
func (s *DictionaryService) CreateDictionary(ctx context.Context, req *CreateDictionaryRequest) error {
|
|
dict := &system.Dictionary{
|
|
Name: req.Name,
|
|
Type: req.Type,
|
|
Status: req.Status,
|
|
Desc: req.Desc,
|
|
ParentID: req.ParentID,
|
|
}
|
|
return s.uc.CreateDictionary(ctx, dict)
|
|
}
|
|
|
|
// UpdateDictionaryRequest 更新字典请求
|
|
type UpdateDictionaryRequest struct {
|
|
ID uint `json:"ID"`
|
|
Name string `json:"name"`
|
|
Type string `json:"type"`
|
|
Status *bool `json:"status"`
|
|
Desc string `json:"desc"`
|
|
ParentID *uint `json:"parentId"`
|
|
}
|
|
|
|
// UpdateDictionary 更新字典
|
|
func (s *DictionaryService) UpdateDictionary(ctx context.Context, req *UpdateDictionaryRequest) error {
|
|
dict := &system.Dictionary{
|
|
ID: req.ID,
|
|
Name: req.Name,
|
|
Type: req.Type,
|
|
Status: req.Status,
|
|
Desc: req.Desc,
|
|
ParentID: req.ParentID,
|
|
}
|
|
return s.uc.UpdateDictionary(ctx, dict)
|
|
}
|
|
|
|
// DeleteDictionary 删除字典
|
|
func (s *DictionaryService) DeleteDictionary(ctx context.Context, id uint) error {
|
|
return s.uc.DeleteDictionary(ctx, id)
|
|
}
|
|
|
|
// GetDictionaryRequest 获取字典请求
|
|
type GetDictionaryRequest struct {
|
|
Type string `json:"type"`
|
|
ID uint `json:"ID"`
|
|
Status *bool `json:"status"`
|
|
}
|
|
|
|
// GetDictionary 获取字典
|
|
func (s *DictionaryService) GetDictionary(ctx context.Context, req *GetDictionaryRequest) (*DictionaryInfo, error) {
|
|
dict, err := s.uc.GetDictionary(ctx, req.Type, req.ID, req.Status)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return toDictionaryInfo(dict), nil
|
|
}
|
|
|
|
// GetDictionaryListRequest 获取字典列表请求
|
|
type GetDictionaryListRequest struct {
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
// GetDictionaryList 获取字典列表
|
|
func (s *DictionaryService) GetDictionaryList(ctx context.Context, req *GetDictionaryListRequest) ([]*DictionaryInfo, error) {
|
|
list, err := s.uc.GetDictionaryList(ctx, req.Name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := make([]*DictionaryInfo, len(list))
|
|
for i, d := range list {
|
|
result[i] = toDictionaryInfo(d)
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// ExportDictionary 导出字典
|
|
func (s *DictionaryService) ExportDictionary(ctx context.Context, id uint) (map[string]interface{}, error) {
|
|
return s.uc.ExportDictionary(ctx, id)
|
|
}
|
|
|
|
// ImportDictionaryRequest 导入字典请求
|
|
type ImportDictionaryRequest struct {
|
|
JsonStr string `json:"jsonStr"`
|
|
}
|
|
|
|
// ImportDictionary 导入字典
|
|
func (s *DictionaryService) ImportDictionary(ctx context.Context, req *ImportDictionaryRequest) error {
|
|
return s.uc.ImportDictionary(ctx, req.JsonStr)
|
|
}
|
|
|
|
// CreateDictionaryDetailRequest 创建字典详情请求
|
|
type CreateDictionaryDetailRequest struct {
|
|
Label string `json:"label"`
|
|
Value string `json:"value"`
|
|
Extend string `json:"extend"`
|
|
Status *bool `json:"status"`
|
|
Sort int `json:"sort"`
|
|
SysDictionaryID uint `json:"sysDictionaryID"`
|
|
ParentID *uint `json:"parentId"`
|
|
}
|
|
|
|
// CreateDictionaryDetail 创建字典详情
|
|
func (s *DictionaryService) CreateDictionaryDetail(ctx context.Context, req *CreateDictionaryDetailRequest) error {
|
|
detail := &system.DictionaryDetail{
|
|
Label: req.Label,
|
|
Value: req.Value,
|
|
Extend: req.Extend,
|
|
Status: req.Status,
|
|
Sort: req.Sort,
|
|
SysDictionaryID: req.SysDictionaryID,
|
|
ParentID: req.ParentID,
|
|
}
|
|
return s.uc.CreateDictionaryDetail(ctx, detail)
|
|
}
|
|
|
|
// UpdateDictionaryDetailRequest 更新字典详情请求
|
|
type UpdateDictionaryDetailRequest struct {
|
|
ID uint `json:"ID"`
|
|
Label string `json:"label"`
|
|
Value string `json:"value"`
|
|
Extend string `json:"extend"`
|
|
Status *bool `json:"status"`
|
|
Sort int `json:"sort"`
|
|
SysDictionaryID uint `json:"sysDictionaryID"`
|
|
ParentID *uint `json:"parentId"`
|
|
}
|
|
|
|
// UpdateDictionaryDetail 更新字典详情
|
|
func (s *DictionaryService) UpdateDictionaryDetail(ctx context.Context, req *UpdateDictionaryDetailRequest) error {
|
|
detail := &system.DictionaryDetail{
|
|
ID: req.ID,
|
|
Label: req.Label,
|
|
Value: req.Value,
|
|
Extend: req.Extend,
|
|
Status: req.Status,
|
|
Sort: req.Sort,
|
|
SysDictionaryID: req.SysDictionaryID,
|
|
ParentID: req.ParentID,
|
|
}
|
|
return s.uc.UpdateDictionaryDetail(ctx, detail)
|
|
}
|
|
|
|
// DeleteDictionaryDetail 删除字典详情
|
|
func (s *DictionaryService) DeleteDictionaryDetail(ctx context.Context, id uint) error {
|
|
return s.uc.DeleteDictionaryDetail(ctx, id)
|
|
}
|
|
|
|
// GetDictionaryDetail 获取字典详情
|
|
func (s *DictionaryService) GetDictionaryDetail(ctx context.Context, id uint) (*DictionaryDetailInfo, error) {
|
|
detail, err := s.uc.GetDictionaryDetail(ctx, id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return toDictionaryDetailInfo(detail), nil
|
|
}
|
|
|
|
// GetDictionaryDetailListRequest 获取字典详情列表请求
|
|
type GetDictionaryDetailListRequest struct {
|
|
Page int `json:"page"`
|
|
PageSize int `json:"pageSize"`
|
|
Label string `json:"label"`
|
|
Value string `json:"value"`
|
|
Status *bool `json:"status"`
|
|
SysDictionaryID uint `json:"sysDictionaryID"`
|
|
ParentID *uint `json:"parentId"`
|
|
Level *int `json:"level"`
|
|
}
|
|
|
|
// GetDictionaryDetailListResponse 获取字典详情列表响应
|
|
type GetDictionaryDetailListResponse struct {
|
|
List []*DictionaryDetailInfo `json:"list"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"pageSize"`
|
|
}
|
|
|
|
// GetDictionaryDetailList 获取字典详情列表
|
|
func (s *DictionaryService) GetDictionaryDetailList(ctx context.Context, req *GetDictionaryDetailListRequest) (*GetDictionaryDetailListResponse, error) {
|
|
filters := make(map[string]interface{})
|
|
if req.Label != "" {
|
|
filters["label"] = req.Label
|
|
}
|
|
if req.Value != "" {
|
|
filters["value"] = req.Value
|
|
}
|
|
if req.Status != nil {
|
|
filters["status"] = req.Status
|
|
}
|
|
if req.SysDictionaryID != 0 {
|
|
filters["sys_dictionary_id"] = req.SysDictionaryID
|
|
}
|
|
if req.ParentID != nil {
|
|
filters["parent_id"] = req.ParentID
|
|
}
|
|
if req.Level != nil {
|
|
filters["level"] = req.Level
|
|
}
|
|
|
|
list, total, err := s.uc.GetDictionaryDetailList(ctx, req.Page, req.PageSize, filters)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result := make([]*DictionaryDetailInfo, len(list))
|
|
for i, d := range list {
|
|
result[i] = toDictionaryDetailInfo(d)
|
|
}
|
|
|
|
return &GetDictionaryDetailListResponse{
|
|
List: result,
|
|
Total: total,
|
|
Page: req.Page,
|
|
PageSize: req.PageSize,
|
|
}, nil
|
|
}
|
|
|
|
// GetDictionaryTreeList 获取字典树形列表
|
|
func (s *DictionaryService) GetDictionaryTreeList(ctx context.Context, dictionaryID uint) ([]*DictionaryDetailInfo, error) {
|
|
list, err := s.uc.GetDictionaryTreeList(ctx, dictionaryID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return toDictionaryDetailInfoList(list), nil
|
|
}
|
|
|
|
// GetDictionaryDetailsByParentRequest 根据父级获取字典详情请求
|
|
type GetDictionaryDetailsByParentRequest struct {
|
|
SysDictionaryID uint `json:"sysDictionaryID"`
|
|
ParentID *uint `json:"parentId"`
|
|
IncludeChildren bool `json:"includeChildren"`
|
|
}
|
|
|
|
// GetDictionaryDetailsByParent 根据父级获取字典详情
|
|
func (s *DictionaryService) GetDictionaryDetailsByParent(ctx context.Context, req *GetDictionaryDetailsByParentRequest) ([]*DictionaryDetailInfo, error) {
|
|
list, err := s.uc.GetDictionaryDetailsByParent(ctx, req.SysDictionaryID, req.ParentID, req.IncludeChildren)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return toDictionaryDetailInfoList(list), nil
|
|
}
|
|
|
|
// GetDictionaryListByType 根据类型获取字典列表
|
|
func (s *DictionaryService) GetDictionaryListByType(ctx context.Context, typ string) ([]*DictionaryDetailInfo, error) {
|
|
list, err := s.uc.GetDictionaryListByType(ctx, typ)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return toDictionaryDetailInfoList(list), nil
|
|
}
|
|
|
|
// GetDictionaryTreeListByType 根据类型获取字典树形列表
|
|
func (s *DictionaryService) GetDictionaryTreeListByType(ctx context.Context, typ string) ([]*DictionaryDetailInfo, error) {
|
|
list, err := s.uc.GetDictionaryTreeListByType(ctx, typ)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return toDictionaryDetailInfoList(list), nil
|
|
}
|
|
|
|
// 转换函数
|
|
func toDictionaryInfo(d *system.Dictionary) *DictionaryInfo {
|
|
info := &DictionaryInfo{
|
|
ID: d.ID,
|
|
Name: d.Name,
|
|
Type: d.Type,
|
|
Status: d.Status,
|
|
Desc: d.Desc,
|
|
ParentID: d.ParentID,
|
|
}
|
|
if len(d.Children) > 0 {
|
|
info.Children = make([]*DictionaryInfo, len(d.Children))
|
|
for i, c := range d.Children {
|
|
info.Children[i] = toDictionaryInfo(c)
|
|
}
|
|
}
|
|
return info
|
|
}
|
|
|
|
func toDictionaryDetailInfo(d *system.DictionaryDetail) *DictionaryDetailInfo {
|
|
info := &DictionaryDetailInfo{
|
|
ID: d.ID,
|
|
Label: d.Label,
|
|
Value: d.Value,
|
|
Extend: d.Extend,
|
|
Status: d.Status,
|
|
Sort: d.Sort,
|
|
SysDictionaryID: d.SysDictionaryID,
|
|
ParentID: d.ParentID,
|
|
Level: d.Level,
|
|
Path: d.Path,
|
|
Disabled: d.Disabled,
|
|
}
|
|
if len(d.Children) > 0 {
|
|
info.Children = make([]*DictionaryDetailInfo, len(d.Children))
|
|
for i, c := range d.Children {
|
|
info.Children[i] = toDictionaryDetailInfo(c)
|
|
}
|
|
}
|
|
return info
|
|
}
|
|
|
|
func toDictionaryDetailInfoList(list []*system.DictionaryDetail) []*DictionaryDetailInfo {
|
|
result := make([]*DictionaryDetailInfo, len(list))
|
|
for i, d := range list {
|
|
result[i] = toDictionaryDetailInfo(d)
|
|
}
|
|
return result
|
|
}
|
|
|
|
// RegisterRoutes 注册路由
|
|
func (s *DictionaryService) RegisterRoutes(rg *RouterGroup) {
|
|
// 字典接口 - 写操作(带操作记录)
|
|
rg.PrivateWithRecord.POST("/sysDictionary/createSysDictionary", s.handleCreateDictionary)
|
|
rg.PrivateWithRecord.DELETE("/sysDictionary/deleteSysDictionary", s.handleDeleteDictionary)
|
|
rg.PrivateWithRecord.PUT("/sysDictionary/updateSysDictionary", s.handleUpdateDictionary)
|
|
rg.PrivateWithRecord.POST("/sysDictionary/importSysDictionary", s.handleImportDictionary)
|
|
rg.PrivateWithRecord.GET("/sysDictionary/exportSysDictionary", s.handleExportDictionary)
|
|
|
|
// 字典接口 - 读操作(不记录)
|
|
rg.Private.GET("/sysDictionary/findSysDictionary", s.handleGetDictionary)
|
|
rg.Private.GET("/sysDictionary/getSysDictionaryList", s.handleGetDictionaryList)
|
|
|
|
// 字典详情接口 - 写操作(带操作记录)
|
|
rg.PrivateWithRecord.POST("/sysDictionaryDetail/createSysDictionaryDetail", s.handleCreateDictionaryDetail)
|
|
rg.PrivateWithRecord.DELETE("/sysDictionaryDetail/deleteSysDictionaryDetail", s.handleDeleteDictionaryDetail)
|
|
rg.PrivateWithRecord.PUT("/sysDictionaryDetail/updateSysDictionaryDetail", s.handleUpdateDictionaryDetail)
|
|
|
|
// 字典详情接口 - 读操作(不记录)
|
|
rg.Private.GET("/sysDictionaryDetail/findSysDictionaryDetail", s.handleGetDictionaryDetail)
|
|
rg.Private.GET("/sysDictionaryDetail/getSysDictionaryDetailList", s.handleGetDictionaryDetailList)
|
|
rg.Private.GET("/sysDictionaryDetail/getDictionaryTreeList", s.handleGetDictionaryTreeList)
|
|
rg.Private.GET("/sysDictionaryDetail/getDictionaryTreeListByType", s.handleGetDictionaryTreeListByType)
|
|
rg.Private.GET("/sysDictionaryDetail/getDictionaryDetailsByParent", s.handleGetDictionaryDetailsByParent)
|
|
rg.Private.GET("/sysDictionaryDetail/getDictionaryPath", s.handleGetDictionaryPath)
|
|
}
|
|
|
|
// HTTP Handlers - Dictionary
|
|
func (s *DictionaryService) handleCreateDictionary(ctx http.Context) error {
|
|
var req CreateDictionaryRequest
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
if err := s.CreateDictionary(ctx, &req); err != nil {
|
|
return errors.BadRequest("CREATE_FAILED", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "创建成功"})
|
|
}
|
|
|
|
func (s *DictionaryService) handleDeleteDictionary(ctx http.Context) error {
|
|
var req struct {
|
|
ID uint `json:"ID"`
|
|
}
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
if err := s.DeleteDictionary(ctx, req.ID); err != nil {
|
|
return errors.BadRequest("DELETE_FAILED", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "删除成功"})
|
|
}
|
|
|
|
func (s *DictionaryService) handleUpdateDictionary(ctx http.Context) error {
|
|
var req UpdateDictionaryRequest
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
if err := s.UpdateDictionary(ctx, &req); err != nil {
|
|
return errors.BadRequest("UPDATE_FAILED", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "更新成功"})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionary(ctx http.Context) error {
|
|
var req GetDictionaryRequest
|
|
if err := ctx.BindQuery(&req); err != nil {
|
|
return err
|
|
}
|
|
resp, err := s.GetDictionary(ctx, &req)
|
|
if err != nil {
|
|
return errors.NotFound("NOT_FOUND", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": map[string]any{"reSysDictionary": resp}})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionaryList(ctx http.Context) error {
|
|
var req GetDictionaryListRequest
|
|
if err := ctx.BindQuery(&req); err != nil {
|
|
return err
|
|
}
|
|
resp, err := s.GetDictionaryList(ctx, &req)
|
|
if err != nil {
|
|
return errors.InternalServer("LIST_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": map[string]any{"list": resp}})
|
|
}
|
|
|
|
func (s *DictionaryService) handleExportDictionary(ctx http.Context) error {
|
|
idStr := ctx.Query().Get("id")
|
|
id, _ := parseUint(idStr)
|
|
resp, err := s.ExportDictionary(ctx, id)
|
|
if err != nil {
|
|
return errors.InternalServer("EXPORT_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "导出成功", "data": resp})
|
|
}
|
|
|
|
func (s *DictionaryService) handleImportDictionary(ctx http.Context) error {
|
|
var req ImportDictionaryRequest
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
if err := s.ImportDictionary(ctx, &req); err != nil {
|
|
return errors.BadRequest("IMPORT_FAILED", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "导入成功"})
|
|
}
|
|
|
|
// HTTP Handlers - DictionaryDetail
|
|
func (s *DictionaryService) handleCreateDictionaryDetail(ctx http.Context) error {
|
|
var req CreateDictionaryDetailRequest
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
if err := s.CreateDictionaryDetail(ctx, &req); err != nil {
|
|
return errors.BadRequest("CREATE_FAILED", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "创建成功"})
|
|
}
|
|
|
|
func (s *DictionaryService) handleDeleteDictionaryDetail(ctx http.Context) error {
|
|
var req struct {
|
|
ID uint `json:"ID"`
|
|
}
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
if err := s.DeleteDictionaryDetail(ctx, req.ID); err != nil {
|
|
return errors.BadRequest("DELETE_FAILED", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "删除成功"})
|
|
}
|
|
|
|
func (s *DictionaryService) handleUpdateDictionaryDetail(ctx http.Context) error {
|
|
var req UpdateDictionaryDetailRequest
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
if err := s.UpdateDictionaryDetail(ctx, &req); err != nil {
|
|
return errors.BadRequest("UPDATE_FAILED", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "更新成功"})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionaryDetail(ctx http.Context) error {
|
|
idStr := ctx.Query().Get("ID")
|
|
id, _ := parseUint(idStr)
|
|
resp, err := s.GetDictionaryDetail(ctx, id)
|
|
if err != nil {
|
|
return errors.NotFound("NOT_FOUND", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": map[string]any{"reSysDictionaryDetail": resp}})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionaryDetailList(ctx http.Context) error {
|
|
var req GetDictionaryDetailListRequest
|
|
if err := ctx.BindQuery(&req); err != nil {
|
|
return err
|
|
}
|
|
resp, err := s.GetDictionaryDetailList(ctx, &req)
|
|
if err != nil {
|
|
return errors.InternalServer("LIST_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": resp})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionaryTreeList(ctx http.Context) error {
|
|
idStr := ctx.Query().Get("sysDictionaryID")
|
|
id, _ := parseUint(idStr)
|
|
resp, err := s.GetDictionaryTreeList(ctx, id)
|
|
if err != nil {
|
|
return errors.InternalServer("LIST_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": map[string]any{"list": resp}})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionaryDetailsByParent(ctx http.Context) error {
|
|
var req GetDictionaryDetailsByParentRequest
|
|
if err := ctx.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
resp, err := s.GetDictionaryDetailsByParent(ctx, &req)
|
|
if err != nil {
|
|
return errors.InternalServer("LIST_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": map[string]any{"list": resp}})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionaryListByType(ctx http.Context) error {
|
|
typ := ctx.Query().Get("type")
|
|
resp, err := s.GetDictionaryListByType(ctx, typ)
|
|
if err != nil {
|
|
return errors.InternalServer("LIST_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": map[string]any{"list": resp}})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionaryTreeListByType(ctx http.Context) error {
|
|
typ := ctx.Query().Get("type")
|
|
resp, err := s.GetDictionaryTreeListByType(ctx, typ)
|
|
if err != nil {
|
|
return errors.InternalServer("LIST_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": map[string]any{"list": resp}})
|
|
}
|
|
|
|
func (s *DictionaryService) handleGetDictionaryPath(ctx http.Context) error {
|
|
idStr := ctx.Query().Get("id")
|
|
id, _ := parseUint(idStr)
|
|
resp, err := s.uc.GetDictionaryPath(ctx, id)
|
|
if err != nil {
|
|
return errors.InternalServer("PATH_ERROR", err.Error())
|
|
}
|
|
return ctx.Result(200, map[string]any{"code": 0, "msg": "获取成功", "data": map[string]any{"path": toDictionaryDetailInfoList(resp)}})
|
|
}
|
|
|
|
// parseUint 解析uint
|
|
func parseUint(s string) (uint, error) {
|
|
if s == "" {
|
|
return 0, nil
|
|
}
|
|
var id uint
|
|
_, err := fmt.Sscanf(s, "%d", &id)
|
|
return id, err
|
|
}
|