1.数据结构:
data: [
{
id: 1,
date: '2016-05-02',
name: '王小虎1',
address: '上海市普陀区金沙江路 1518 弄'
children: [{
id: 21,
date: '2016-05-06',
name: '王小虎4',
address: '上海市普陀区金沙江路 1519 弄'
}, {
id: 22,
date: '2016-05-07',
name: '王小虎5',
address: '上海市普陀区金沙江路 1519 弄'
}]
}, {
id: 2,
date: '2016-05-04',
name: '王小虎2',
address: '上海市普陀区金沙江路 1517 弄'
children: [{
id: 23,
date: '2016-05-08',
name: '王小虎6',
address: '上海市普陀区金沙江路 1519 弄'
}, {
id: 24,
date: '2016-05-09',
name: '王小虎7',
address: '上海市普陀区金沙江路 1519 弄'
}]
}, {
id: 3,
date: '2016-05-05',
name: '王小虎3',
address: '上海市普陀区金沙江路 1519 弄',
children: [{
id: 25,
date: '2016-05-10',
name: '王小虎8',
address: '上海市普陀区金沙江路 1519 弄'
}, {
id: 26,
date: '2016-05-11',
name: '王小虎9',
address: '上海市普陀区金沙江路 1519 弄'
}]
}
]
2.实现方法
1.引入fastjson的依赖
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
@Override
public StandardResponse getMenu(GetMenuRequest menuRequest) {
// 1.查询系统信息,先查询目录然后递归查询目录下面的数据
LambdaQueryWrapper<SysMenuEntity> wrapper = new QueryWrapper<SysMenuEntity>().lambda()
.eq(SysMenuEntity::getDelFlg, Constants.ONE)
.eq(SysMenuEntity::getMenuType, Constants.MENU_TYPE)
.like(StringUtils.hasLength(menuRequest.getMenuStatus()), SysMenuEntity::getMenuStatus, menuRequest.getMenuStatus())
.like(StringUtils.hasLength(menuRequest.getMenuName()), SysMenuEntity::getMenuName, menuRequest.getMenuName());
List<SysMenuEntity> menuList = getBaseMapper().selectList(wrapper);
// 2.递归查询目录下面的数据
JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(menuList, SerializerFeature.WriteMapNullValue));
treeList(jsonArray,menuRequest);
return StandardResponse.build(Result.QUERY_SUCCESS).setData(jsonArray);
}
/**
* 递归组装树节点数据
*
* @param jsonArray
*/
public void treeList(JSONArray jsonArray,GetMenuRequest menuRequest) {
for (Object ob : jsonArray) {
JSONObject jo = (JSONObject)ob;
LambdaQueryWrapper<SysMenuEntity> queryWrapper = new QueryWrapper<SysMenuEntity>().lambda()
.eq(SysMenuEntity::getDelFlg, Constants.ONE)
.eq(SysMenuEntity::getParentId, jo.get("id"))
.like(StringUtils.hasLength(menuRequest.getMenuStatus()), SysMenuEntity::getMenuStatus, menuRequest.getMenuStatus())
.like(StringUtils.hasLength(menuRequest.getMenuName()), SysMenuEntity::getMenuName, menuRequest.getMenuName())
;
List<SysMenuEntity> childList = getBaseMapper().selectList(queryWrapper);
if (CollectionUtils.isEmpty(childList)) {
continue;
}
JSONArray childArray = JSON.parseArray(JSON.toJSONString(childList, SerializerFeature.WriteMapNullValue));
jo.put("children", childArray);
treeList(childArray,menuRequest);
}
}