| | |
| | | import javax.annotation.Resource; |
| | | import javax.validation.Valid; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | |
| | | public class MenuController extends BaseController { |
| | | |
| | | private static String PREFIX = "/system/menu/"; |
| | | |
| | | // 快车相关菜单(isSpe=2时过滤) |
| | | private static final List<String> SPE_MENUS = Arrays.asList( |
| | | "快车订单", "快车改派管理", "快车车型设置" |
| | | ); |
| | | |
| | | // 出租车相关菜单(isTaxi=2时过滤) |
| | | private static final List<String> TAXI_MENUS = Arrays.asList( |
| | | "出租车订单", "出租车改派管理" |
| | | ); |
| | | |
| | | // 跨城相关菜单(isCross=2时过滤) |
| | | private static final List<String> CROSS_MENUS = Arrays.asList( |
| | | "跨城出行订单", "跨城改派管理", "跨城线路管理", "开通城市管理" |
| | | ); |
| | | |
| | | // 顺风车相关菜单(isHitchRide=2时过滤) |
| | | private static final List<String> HITCH_RIDE_MENUS = Arrays.asList( |
| | | "顺风车订单", "顺风车设置", "顺风车司机审核列表", |
| | | "顺风车司机", "顺风车投诉", "顺风车评价" |
| | | ); |
| | | |
| | | @Autowired |
| | | private IMenuService menuService; |
| | |
| | | } |
| | | } |
| | | List<ZTreeNode> roleTreeList = this.menuService.menuTreeList(ids); |
| | | // 分公司(type=2)和供应商(type=3)需要根据经营范围过滤菜单 |
| | | if (tCompany.getType() == 2 || tCompany.getType() == 3) { |
| | | roleTreeList = filterMenusByBusinessScope(roleTreeList, tCompany); |
| | | } |
| | | return roleTreeList; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | List<ZTreeNode> roleTreeList = this.menuService.menuTreeList(ids); |
| | | // 分公司(type=2)和供应商(type=3)需要根据经营范围过滤菜单 |
| | | if (tCompany.getType() == 2 || tCompany.getType() == 3) { |
| | | roleTreeList = filterMenusByBusinessScope(roleTreeList, tCompany); |
| | | } |
| | | roleTreeList.add(ZTreeNode.createParent()); |
| | | return roleTreeList; |
| | | } |
| | |
| | | } |
| | | if (ToolUtil.isEmpty(menuIds)) { |
| | | List<ZTreeNode> roleTreeList = this.menuService.menuTreeList(ids); |
| | | // 分公司(type=2)和供应商(type=3)需要根据经营范围过滤菜单 |
| | | if (tCompany.getType() == 2 || tCompany.getType() == 3) { |
| | | roleTreeList = filterMenusByBusinessScope(roleTreeList, tCompany); |
| | | } |
| | | return roleTreeList; |
| | | } else { |
| | | List<ZTreeNode> roleTreeListByUserId = this.menuService.menuTreeListByMenuIds(menuIds, ids); |
| | | // 分公司(type=2)和供应商(type=3)需要根据经营范围过滤菜单 |
| | | if (tCompany.getType() == 2 || tCompany.getType() == 3) { |
| | | roleTreeListByUserId = filterMenusByBusinessScope(roleTreeListByUserId, tCompany); |
| | | } |
| | | return roleTreeListByUserId; |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据企业经营范围过滤菜单 |
| | | * @param menuList 原始菜单列表 |
| | | * @param company 企业信息 |
| | | * @return 过滤后的菜单列表 |
| | | */ |
| | | private List<ZTreeNode> filterMenusByBusinessScope(List<ZTreeNode> menuList, TCompany company) { |
| | | List<String> excludeMenuNames = new ArrayList<>(); |
| | | |
| | | // isSpe=2 不经营快车 |
| | | if (company.getIsSpe() != null && company.getIsSpe() == 2) { |
| | | excludeMenuNames.addAll(SPE_MENUS); |
| | | } |
| | | // isTaxi=2 不经营出租车 |
| | | if (company.getIsTaxi() != null && company.getIsTaxi() == 2) { |
| | | excludeMenuNames.addAll(TAXI_MENUS); |
| | | } |
| | | // isCross=2 不经营跨城 |
| | | if (company.getIsCross() != null && company.getIsCross() == 2) { |
| | | excludeMenuNames.addAll(CROSS_MENUS); |
| | | } |
| | | // isHitchRide=2 不经营顺风车 |
| | | if (company.getIsHitchRide() != null && company.getIsHitchRide() == 2) { |
| | | excludeMenuNames.addAll(HITCH_RIDE_MENUS); |
| | | } |
| | | |
| | | if (excludeMenuNames.isEmpty()) { |
| | | return menuList; |
| | | } |
| | | |
| | | return menuList.stream() |
| | | .filter(node -> !excludeMenuNames.contains(node.getName())) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | } |