Skip to content

Commit 8e499d0

Browse files
committed
feat: 修改 menu 列表为树状全部返回
1 parent 5a2b836 commit 8e499d0

5 files changed

Lines changed: 24 additions & 109 deletions

File tree

framework/framework_svc/src/main/java/com/github/cadecode/uniboot/framework/svc/bean/vo/SysMenuVo.java

Lines changed: 5 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,14 @@
1818
*/
1919
public class SysMenuVo {
2020

21-
@Data
2221
@EqualsAndHashCode(callSuper = true)
22+
@Data
2323
public static class SysMenuRolesReqVo extends PageParams {
2424
private String routeName;
2525
private String menuName;
2626
private List<Long> roleIdList;
2727
private Boolean enableFlag;
28-
private Long parentId;
29-
private Boolean hiddenFlag;
30-
}
31-
32-
@Data
33-
@EqualsAndHashCode(callSuper = true)
34-
public static class SysMenuPageReqVo extends PageParams {
35-
private String routeName;
36-
private String menuName;
37-
private Boolean enableFlag;
38-
private Long parentId;
3928
private Boolean hiddenFlag;
40-
private Boolean leafFlag;
4129
}
4230

4331
@Data
@@ -89,93 +77,56 @@ public static class SysMenuAddReqVo {
8977
@Data
9078
public static class SysMenuTreeResVo {
9179
private Long id;
92-
9380
private Long parentId;
94-
9581
private String routeName;
96-
9782
private String routePath;
98-
9983
private String componentPath;
100-
10184
private String menuName;
102-
10385
private Boolean leafFlag;
104-
10586
private Boolean hiddenFlag;
106-
10787
private Boolean cacheFlag;
108-
10988
private String icon;
110-
11189
private List<SysMenuTreeResVo> children = new ArrayList<>();
11290
}
11391

11492
@Data
11593
public static class SysMenuRolesResVo {
11694
private Long id;
117-
11895
private Long parentId;
119-
12096
private String routeName;
121-
12297
private String routePath;
123-
12498
private String componentPath;
125-
12699
private String menuName;
127-
128100
private Boolean leafFlag;
129-
130101
private String icon;
131-
132102
private Integer orderNum;
133-
134103
private Boolean enableFlag;
135-
136104
private Boolean hiddenFlag;
137-
138105
private Boolean cacheFlag;
139-
140-
private List<String> roles;
141-
142106
private Date createTime;
143-
144107
private Date updateTime;
145-
146108
private String updateUser;
109+
110+
private List<String> roles;
111+
private List<SysMenuRolesResVo> children = new ArrayList<>();
147112
}
148113

149114
@Data
150-
public static class SysMenuPageResVo {
115+
public static class SysMenuQueryResVo {
151116
private Long id;
152-
153117
private Long parentId;
154-
155118
private String routeName;
156-
157119
private String routePath;
158-
159120
private String componentPath;
160-
161121
private String menuName;
162-
163122
private Boolean leafFlag;
164-
165123
private String icon;
166-
167124
private Integer orderNum;
168-
169125
private Boolean enableFlag;
170-
171126
private Boolean hiddenFlag;
172-
173127
private Boolean cacheFlag;
174-
175128
private Date createTime;
176-
177129
private Date updateTime;
178-
179130
private String updateUser;
180131
}
181132
}

framework/framework_svc/src/main/java/com/github/cadecode/uniboot/framework/svc/controller/SysMenuController.java

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package com.github.cadecode.uniboot.framework.svc.controller;
22

3-
import cn.hutool.core.util.ObjUtil;
3+
import com.github.cadecode.uniboot.common.core.util.TreeUtil;
44
import com.github.cadecode.uniboot.common.core.web.response.PageResult;
55
import com.github.cadecode.uniboot.common.plugin.mybatis.converter.BoolToIntTypeHandler;
66
import com.github.cadecode.uniboot.framework.base.annotation.ApiFormat;
77
import com.github.cadecode.uniboot.framework.svc.bean.po.SysMenu;
88
import com.github.cadecode.uniboot.framework.svc.convert.SysMenuConvert;
99
import com.github.cadecode.uniboot.framework.svc.service.SysMenuService;
1010
import com.github.cadecode.uniboot.framework.svc.service.SysRoleService;
11-
import com.github.pagehelper.PageHelper;
1211
import com.github.pagehelper.PageInfo;
1312
import io.swagger.annotations.Api;
1413
import io.swagger.annotations.ApiOperation;
@@ -47,27 +46,13 @@ public class SysMenuController {
4746
private final SysMenuService sysMenuService;
4847
private final SysRoleService sysRoleService;
4948

50-
@ApiOperation("查询菜单列表")
51-
@PostMapping("page")
52-
public PageResult<SysMenuPageResVo> page(@RequestBody @Valid SysMenuPageReqVo reqVo) {
53-
PageInfo<SysMenu> page = PageHelper.startPage(reqVo.getPageNumber(), reqVo.getPageSize())
54-
.doSelectPageInfo(() -> sysMenuService.lambdaQuery()
55-
.eq(ObjUtil.isNotEmpty(reqVo.getParentId()), SysMenu::getParentId, reqVo.getParentId())
56-
.eq(ObjUtil.isNotEmpty(reqVo.getMenuName()), SysMenu::getMenuName, reqVo.getMenuName())
57-
.eq(ObjUtil.isNotEmpty(reqVo.getRouteName()), SysMenu::getRouteName, reqVo.getRouteName())
58-
.eq(ObjUtil.isNotEmpty(reqVo.getEnableFlag()), SysMenu::getEnableFlag, BoolToIntTypeHandler.mapping(reqVo.getEnableFlag()))
59-
.eq(ObjUtil.isNotEmpty(reqVo.getLeafFlag()), SysMenu::getLeafFlag, BoolToIntTypeHandler.mapping(reqVo.getLeafFlag()))
60-
.eq(ObjUtil.isNotEmpty(reqVo.getHiddenFlag()), SysMenu::getHiddenFlag, BoolToIntTypeHandler.mapping(reqVo.getHiddenFlag()))
61-
.list());
62-
List<SysMenuPageResVo> resVoList = SysMenuConvert.INSTANCE.poToPageVo(page.getList());
63-
return new PageResult<>((int) page.getTotal(), resVoList);
64-
}
65-
6649
@ApiOperation("查询菜单列表(带角色)")
6750
@PostMapping("page_roles_vo")
6851
public PageResult<SysMenuRolesResVo> pageRolesVo(@RequestBody @Valid SysMenuRolesReqVo reqVo) {
6952
PageInfo<SysMenuRolesResVo> rolesVoPage = sysMenuService.pageRolesVo(reqVo);
70-
return new PageResult<>((int) rolesVoPage.getTotal(), rolesVoPage.getList());
53+
List<SysMenuRolesResVo> treeRolesVoList = TreeUtil.listToTree(rolesVoPage.getList(), null,
54+
SysMenuRolesResVo::getId, SysMenuRolesResVo::getParentId, SysMenuRolesResVo::setChildren);
55+
return new PageResult<>((int) rolesVoPage.getTotal(), treeRolesVoList);
7156
}
7257

7358
@ApiOperation("更新菜单启用状态")
@@ -120,4 +105,14 @@ public boolean delete(@RequestBody @NotEmpty List<Long> menuIdList) {
120105
public List<SysMenuRolesResVo> listRolesVoByMenuIds(@RequestBody @NotEmpty List<Long> menuIdList) {
121106
return sysMenuService.listRolesVoByMenuIds(menuIdList);
122107
}
108+
109+
@ApiOperation("查询菜单列表(搜索建议)")
110+
@PostMapping("list_parent_suggest")
111+
public List<SysMenuQueryResVo> listParentSuggest() {
112+
List<SysMenu> poList = sysMenuService.lambdaQuery()
113+
.select(SysMenu::getId, SysMenu::getParentId, SysMenu::getMenuName, SysMenu::getRouteName, SysMenu::getOrderNum)
114+
.eq(SysMenu::getLeafFlag, BoolToIntTypeHandler.mapping(false))
115+
.list();
116+
return SysMenuConvert.INSTANCE.poToQueryResVo(poList);
117+
}
123118
}

framework/framework_svc/src/main/java/com/github/cadecode/uniboot/framework/svc/convert/SysMenuConvert.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.github.cadecode.uniboot.framework.svc.bean.po.SysMenu;
44
import com.github.cadecode.uniboot.framework.svc.bean.vo.SysMenuVo.SysMenuAddReqVo;
5-
import com.github.cadecode.uniboot.framework.svc.bean.vo.SysMenuVo.SysMenuPageResVo;
5+
import com.github.cadecode.uniboot.framework.svc.bean.vo.SysMenuVo.SysMenuQueryResVo;
66
import com.github.cadecode.uniboot.framework.svc.bean.vo.SysMenuVo.SysMenuTreeResVo;
77
import com.github.cadecode.uniboot.framework.svc.bean.vo.SysMenuVo.SysMenuUpdateReqVo;
88
import org.mapstruct.Mapper;
@@ -26,6 +26,7 @@ public interface SysMenuConvert {
2626
@Mapping(target = "children", ignore = true)
2727
SysMenuTreeResVo poToTreeResVo(SysMenu sysMenu);
2828

29+
@Mapping(target = "parentId", ignore = true)
2930
@Mapping(target = "hiddenFlag", ignore = true)
3031
@Mapping(target = "updateUser", ignore = true)
3132
@Mapping(target = "updateTime", ignore = true)
@@ -40,5 +41,5 @@ public interface SysMenuConvert {
4041
@Mapping(target = "createTime", ignore = true)
4142
SysMenu voToPo(SysMenuAddReqVo reqVo);
4243

43-
List<SysMenuPageResVo> poToPageVo(List<SysMenu> list);
44+
List<SysMenuQueryResVo> poToQueryResVo(List<SysMenu> list);
4445
}

framework/framework_svc/src/main/java/com/github/cadecode/uniboot/framework/svc/serviceimpl/SysMenuServiceImpl.java

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cn.hutool.core.util.ObjUtil;
44
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5+
import com.github.cadecode.uniboot.common.core.util.TreeUtil;
56
import com.github.cadecode.uniboot.framework.svc.bean.po.SysMenu;
67
import com.github.cadecode.uniboot.framework.svc.bean.vo.SysMenuVo.SysMenuRolesReqVo;
78
import com.github.cadecode.uniboot.framework.svc.bean.vo.SysMenuVo.SysMenuRolesResVo;
@@ -14,7 +15,6 @@
1415
import lombok.RequiredArgsConstructor;
1516
import org.springframework.stereotype.Service;
1617

17-
import java.util.ArrayList;
1818
import java.util.List;
1919
import java.util.stream.Collectors;
2020

@@ -42,7 +42,7 @@ public List<SysMenuTreeResVo> listTreeVoByRoles(List<String> roleCodes) {
4242
.filter(m -> ObjUtil.equal(m.getEnableFlag(), true))
4343
.map(SysMenuConvert.INSTANCE::poToTreeResVo)
4444
.collect(Collectors.toList());
45-
return generateMenuTree(menuTreeVoList, null);
45+
return TreeUtil.listToTree(menuTreeVoList, null, SysMenuTreeResVo::getId, SysMenuTreeResVo::getParentId, SysMenuTreeResVo::setChildren);
4646
}
4747

4848
@Override
@@ -60,28 +60,4 @@ public PageInfo<SysMenuRolesResVo> pageRolesVo(SysMenuRolesReqVo reqVo) {
6060
public List<SysMenuRolesResVo> listRolesVoByMenuIds(List<Long> menuIds) {
6161
return sysMenuMapper.selectRolesVoByMenuIds(menuIds);
6262
}
63-
64-
private List<SysMenuTreeResVo> generateMenuTree(List<SysMenuTreeResVo> menus, Long rootId) {
65-
List<SysMenuTreeResVo> resultList = new ArrayList<>();
66-
menus.forEach(menu -> {
67-
// 确定下父亲
68-
if (ObjUtil.notEqual(menu.getParentId(), rootId)) {
69-
return;
70-
}
71-
menus.forEach(m -> {
72-
// 比一下是不是儿子
73-
if (ObjUtil.notEqual(m.getParentId(), menu.getId())) {
74-
return;
75-
}
76-
// 拿儿子列表
77-
List<SysMenuTreeResVo> children = menu.getChildren();
78-
// 存儿子
79-
m.setChildren(generateMenuTree(menus, m.getId()));
80-
children.add(m);
81-
});
82-
resultList.add(menu);
83-
});
84-
return resultList;
85-
}
86-
8763
}

framework/framework_svc/src/main/resources/mapper/SysMenuMapper.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,6 @@
3434
LEFT JOIN sys_role sr ON srm.role_id = sr.id
3535
<if test="req != null">
3636
<where>
37-
<choose>
38-
<when test="req.parentId == null">
39-
sm.parent_id is null
40-
</when>
41-
<otherwise>
42-
sm.parent_id = #{req.parentId}
43-
</otherwise>
44-
</choose>
4537
<if test="req.routeName != null and req.routeName.length > 0">
4638
<bind name="bindRouteName" value="'%' + req.routeName + '%'"/>
4739
AND sm.route_name like #{bindRouteName}

0 commit comments

Comments
 (0)