返回Json的层级结构

简介: 返回Json的层级结构

上回说到


需求:机构信息 - 左侧添加组织架构,按系统-父机构-子机构-部门-用户显示



从需求可以看出返回的Json对象必须是具有层级结构的,解决这个需求首先要思考的是返回Json的层级结构及包含关系


提出猜想



因为是层级的包含关系


1、所有父机构所在的系统子机构必在其中

2、同理,子机构包含的部门,父机构必然包含


因为,向上我们只需要找出顶级父辈的所在系统

向下我们只需找出底级子辈所在的部门


这样思路就清晰了,我们只需要递归找出机构表,所有机构的层级结构即可


对应的返回层级:

系统{
    系统信息
    顶级父辈机构{
        机构信息
            ...
                底级子辈机构{
                    机构信息
                    部门{
                        员工信息
                    }
                    部门{
                        员工信息
                    }
                    ...
                }
    }
}

验证猜想



使用SQL递归查询数据(这个地方只是验证过程,后面并不需要使用递归SQL,无需担心)

id       instid  instCode    instName    parentId                        

1        1111     0001        白虎队        0

131    2222    0002        灰狼队        1111

132    3333    0003        青龙队        2222

164    4444    0004        赤蛇队        3333



查询机构角色表,找到机构对应的角色Id

instid    role_id
1111    root
2222    null
3333     null
4444    null


在这里就可以看出我们的第一个猜想是正确的,因为只有顶级父节点才有角色ID,

也就证明了其他子节点是无法通过角色ID查询到对应的系统信息,即系统信息只有顶级父节点才有



查询角色表,找到对应的系统Name


select sys_name from role where role_id = "root";

查询系统表,找到对应的系统信息


select * from t_ims_auth_sys where sys_name = "炒鸡特工队";

经过验证发现猜想1在数据库中的映射关系正是这样,而猜想2却在数据库中的映射关系和我们猜想的并不同,

这也证明了当有解决问题的想法出现时,一定要查询数据库验证,保证理论正确,才可以得出正确的操作步骤



那让我们来看一下猜想2哪里出错了


select * from t_ims_auth_user where inst_name ="白虎队";

经过查询数据库我们发现,使用机构名称查询用户表时,即使是顶级父辈也有对应的用户信息

(实际上经查询是每级都有用户信息和部门信息的),即用户信息并不仅仅保留在底级子辈机构中


层级结构



OK,但这并不妨碍我们解决问题


上述证明我们设想的层级结构其实是有一点问题的,进行修改后,我们的层级结构终于出现了

(累の不行,真事   注:真事=真的是这样)


系统{
    系统信息
    机构{
        机构信息
            部门信息{
                员工信息
                员工信息
                ...
            }
            部门信息{
                员工信息
                员工信息
                ...
            }
            ...
            子机构{
                ...
            }
    }
}


细节处理



部门和员工之间的关系可以通过Map进行关系处理


先根据机构名称,查询所有的对应的user

select * from t_ims_auth_user where inst_name ="白虎队";

遍历用户,写入Map,Key为部门名称  Value为user信息


List<User> list = ...
Map<String,object> map = ...
for(User user:list){
    //如部门name无,写入暂无
    if(){
    }
    map.put(user.getDeptName,user)
}


这样我们整个业务流程就算是捋清了


相关文章
|
6月前
|
编解码 JavaScript 前端开发
TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
314 0
|
8天前
|
JSON 关系型数据库 MySQL
MySQL JSON数据存储结构与操作
通过本文的介绍,我们了解了MySQL中JSON数据类型的基本操作、常用JSON函数、以及如何通过索引和优化来提高查询性能。JSON数据类型为存储和操作结构化数据提供了灵活性和便利性,在现代数据库应用中具有广泛的应用前景。希望本文对您在MySQL中使用JSON数据类型有所帮助。
22 0
|
2月前
|
JSON API 数据格式
使用Python发送包含复杂JSON结构的POST请求
使用Python发送包含复杂JSON结构的POST请求
|
3月前
|
JSON 数据处理 数据格式
Python中JSON结构数据的高效增删改操作
Python中JSON结构数据的高效增删改操作
|
6月前
|
JSON JavaScript 数据格式
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
901 2
|
JSON JavaScript 前端开发
37jqGrid 数据结构 - JSON结构
37jqGrid 数据结构 - JSON结构
60 0
|
XML 存储 JSON
【工作中问题解决实践 四】动态解析Json结构最佳实践(下)
【工作中问题解决实践 四】动态解析Json结构最佳实践(下)
273 0
|
XML 存储 JSON
【工作中问题解决实践 四】动态解析Json结构最佳实践(上)
【工作中问题解决实践 四】动态解析Json结构最佳实践(上)
421 0
|
数据采集 XML JSON
如何使用Python对嵌套结构的JSON进行遍历获取链接并下载文件
JSON(JavaScript Object Notation)是一种基于JavaScript语言的轻量级数据交换格式,它用键值对的方式来表示各种数据类型,包括字符串、数字、布尔值、空值、数组和对象,本文展示如何使用Python对嵌套结构的JSON进行遍历获取链接并下载文件。
256 0
如何使用Python对嵌套结构的JSON进行遍历获取链接并下载文件
|
JSON Linux API
windows python flask返回json数据
windows python flask返回json数据
windows python flask返回json数据