|
@ -2,8 +2,10 @@ package com.yihu.jw.base.endpoint.role;
|
|
|
|
|
|
import com.yihu.jw.base.contant.CommonContant;
|
|
|
import com.yihu.jw.base.service.role.MenuService;
|
|
|
import com.yihu.jw.base.service.role.RoleMenuService;
|
|
|
import com.yihu.jw.base.util.ErrorCodeUtil;
|
|
|
import com.yihu.jw.entity.base.role.MenuDO;
|
|
|
import com.yihu.jw.entity.base.role.RoleMenuDO;
|
|
|
import com.yihu.jw.exception.code.BaseErrorCode;
|
|
|
import com.yihu.jw.restmodel.base.role.MenuVO;
|
|
|
import com.yihu.jw.restmodel.web.Envelop;
|
|
@ -38,6 +40,9 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
|
|
|
@Autowired
|
|
|
private ErrorCodeUtil errorCodeUtil;
|
|
|
|
|
|
@Autowired
|
|
|
private RoleMenuService roleMenuService;
|
|
|
|
|
|
@PostMapping(value = BaseRequestMapping.Menu.CREATE)
|
|
|
@ApiOperation(value = "创建")
|
|
|
public ObjEnvelop<MenuVO> create (
|
|
@ -170,6 +175,7 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
|
|
|
}
|
|
|
});
|
|
|
Map<String,List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
|
|
|
|
|
|
menuVOs.forEach(menu->{
|
|
|
List<MenuVO> tmp = map.get(menu.getId());
|
|
|
menu.setChildren(tmp);
|
|
@ -204,4 +210,74 @@ public class MenuEndpoint extends EnvelopRestEndpoint {
|
|
|
|
|
|
return success(menuVOs);
|
|
|
}
|
|
|
|
|
|
|
|
|
@GetMapping(value = BaseRequestMapping.Menu.findRoleMenuTree)
|
|
|
@ApiOperation(value = "获取角色菜单列表")
|
|
|
public ListEnvelop<MenuVO> findRoleMenuTree (
|
|
|
@ApiParam(name = "status", value = "状态")
|
|
|
@RequestParam(value = "status", required = false) String status,
|
|
|
@ApiParam(name = "name", value = "名称")
|
|
|
@RequestParam(value = "name", required = false) String name,
|
|
|
@ApiParam(name = "roleId", value = "角色id")
|
|
|
@RequestParam(value = "roleId", required = false)String roleId) throws Exception {
|
|
|
String filters = "";
|
|
|
if(StringUtils.isNotBlank(status)){
|
|
|
filters = "status="+status+";";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(name)){
|
|
|
filters += "name?"+name+";";
|
|
|
}
|
|
|
|
|
|
//获取所有选择树
|
|
|
List<RoleMenuDO> roleMenus = roleMenuService.findRoleMenu(roleId);
|
|
|
|
|
|
List<MenuDO> menuDOs = menuService.search(null, filters, "+sort");
|
|
|
List<MenuVO> menuVOs = convertToModels(menuDOs,new ArrayList<>(menuDOs.size()), MenuVO.class);
|
|
|
menuVOs.forEach(menuVO -> {
|
|
|
if(CommonContant.DEFAULT_PARENTID.equals(menuVO.getParentId())){
|
|
|
menuVO.setParentName(CommonContant.DEFAULT_PARENTNAME);
|
|
|
}else {
|
|
|
MenuDO menuDO = menuService.findOne(menuVO.getParentId());
|
|
|
menuVO.setParentName(menuDO.getName());
|
|
|
}
|
|
|
//对比树是否被选择
|
|
|
if(checkedTree(menuVO.getId(),roleMenus)){
|
|
|
menuVO.setChecked(true);
|
|
|
}else{
|
|
|
menuVO.setChecked(false);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
Map<String,List<MenuVO>> map = menuVOs.stream().collect(Collectors.groupingBy(MenuVO::getParentId));
|
|
|
|
|
|
menuVOs.forEach(menu->{
|
|
|
List<MenuVO> tmp = map.get(menu.getId());
|
|
|
menu.setChildren(tmp);
|
|
|
});
|
|
|
if(StringUtils.isBlank(name)){
|
|
|
menuVOs = menuVOs.stream()
|
|
|
.filter(menu -> CommonContant.DEFAULT_PARENTID.equals(menu.getParentId()))
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
return success(menuVOs);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 验证树是否被选择
|
|
|
* @param menuId
|
|
|
* @param roleMenus
|
|
|
* @return
|
|
|
*/
|
|
|
public Boolean checkedTree(String menuId,List<RoleMenuDO> roleMenus){
|
|
|
|
|
|
if(roleMenus!=null&&roleMenus.size()>0){
|
|
|
for(RoleMenuDO roleMenuDO:roleMenus){
|
|
|
if(menuId.equals(roleMenuDO.getMenuId())){
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
}
|