diff --git a/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/controller/route/IndexRouteController.java b/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/controller/route/IndexRouteController.java index 8864cb35..c773df79 100644 --- a/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/controller/route/IndexRouteController.java +++ b/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/controller/route/IndexRouteController.java @@ -2,11 +2,9 @@ package ink.wgink.login.oauth2.client.controller.route; import ink.wgink.common.component.SecurityComponent; import ink.wgink.interfaces.consts.ISystemConstant; -import ink.wgink.interfaces.menu.IMenuBaseService; -import ink.wgink.interfaces.role.IRoleMenuBaseService; +import ink.wgink.login.oauth2.client.service.menu.IMenuService; import ink.wgink.pojo.bos.UserInfoBO; import ink.wgink.pojo.dtos.menu.MenuDTO; -import ink.wgink.pojo.dtos.role.RoleSimpleDTO; import ink.wgink.properties.oauth2.client.OAuth2ClientProperties; import ink.wgink.properties.oauth2.client.OAuth2ClientServerProperties; import org.apache.commons.lang3.StringUtils; @@ -16,7 +14,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.RedirectView; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * When you feel like quitting. Think about why you started @@ -37,10 +37,8 @@ public class IndexRouteController { private OAuth2ClientServerProperties oAuth2ClientServerProperties; @Autowired private OAuth2ClientProperties oAuth2ClientProperties; - @Autowired(required = false) - private IMenuBaseService menuBaseService; - @Autowired(required = false) - private IRoleMenuBaseService roleMenuBaseService; + @Autowired + private IMenuService menuService; @GetMapping("index") public ModelAndView goIndex() { @@ -64,32 +62,14 @@ public class IndexRouteController { // 先加载系统短标题,没有加载主标题,没有加载配置文件系统标题 mv.addObject("systemTitle", oAuth2ClientServerProperties.getSystemTitle()); mv.addObject("ws", oAuth2ClientServerProperties.getWs()); - if (menuBaseService != null) { - List menus; - if (StringUtils.equalsIgnoreCase(ISystemConstant.ADMIN, userInfoBO.getUserUsername())) { - // 管理员 - List menuIds = roleMenuBaseService.listMenuId(ISystemConstant.ADMIN); - if (menuIds.isEmpty()) { - menus = menuBaseService.listAllByParentId(IMenuBaseService.MENU_UNIFIED_USER); - } else { - menus = menuBaseService.listAllByParentIdAndIds(IMenuBaseService.MENU_UNIFIED_USER, menuIds); - } - } else { - // 普通用户 - List roleSimpleDTOs = securityComponent.getCurrentUser().getRoles(); - if (roleSimpleDTOs.isEmpty()) { - menus = new ArrayList<>(); - } else { - List roleIds = new ArrayList<>(); - for (RoleSimpleDTO roleSimpleDTO : roleSimpleDTOs) { - roleIds.add(roleSimpleDTO.getRoleId()); - } - List menuIds = roleMenuBaseService.listMenuId(roleIds); - menus = menuBaseService.listAllByParentIdAndIds(IMenuBaseService.MENU_UNIFIED_USER, menuIds); - } - } - mv.addObject("menus", menus); + + List menus; + if (StringUtils.equalsIgnoreCase(ISystemConstant.ADMIN, userInfoBO.getUserUsername())) { + menus = menuService.list(oAuth2ClientProperties.getClient().getClientId(), ISystemConstant.ADMIN); + } else { + menus = menuService.list(oAuth2ClientProperties.getClient().getClientId(), securityComponent.getCurrentUser().getRoles()); } + mv.addObject("menus", menus); return mv; } diff --git a/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/service/menu/IMenuService.java b/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/service/menu/IMenuService.java index 8b54787b..bbe8b076 100644 --- a/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/service/menu/IMenuService.java +++ b/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/service/menu/IMenuService.java @@ -1,5 +1,10 @@ package ink.wgink.login.oauth2.client.service.menu; +import ink.wgink.pojo.dtos.menu.MenuDTO; +import ink.wgink.pojo.dtos.role.RoleSimpleDTO; + +import java.util.List; + /** * @ClassName: IMenuService * @Description: 菜单业务 @@ -8,4 +13,22 @@ package ink.wgink.login.oauth2.client.service.menu; * @Version: 1.0 */ public interface IMenuService { + + /** + * 菜单列表 + * + * @param clientId 客户端ID + * @param roleId 角色ID + * @return + */ + List list(String clientId, String roleId); + + /** + * 菜单列表 + * + * @param clientId 客户端ID + * @param roles 角色列表 + * @return + */ + List list(String clientId, List roles); } diff --git a/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/service/menu/impl/MenuServiceImpl.java b/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/service/menu/impl/MenuServiceImpl.java index 9d689fbf..2e414ed3 100644 --- a/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/service/menu/impl/MenuServiceImpl.java +++ b/login-oauth2-client/src/main/java/ink/wgink/login/oauth2/client/service/menu/impl/MenuServiceImpl.java @@ -1,9 +1,17 @@ package ink.wgink.login.oauth2.client.service.menu.impl; import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.login.oauth2.client.remote.menu.IMenuRemoteService; import ink.wgink.login.oauth2.client.service.menu.IMenuService; +import ink.wgink.module.oauth2.manager.OAuth2ClientTokenManager; +import ink.wgink.pojo.dtos.menu.MenuDTO; +import ink.wgink.pojo.dtos.role.RoleSimpleDTO; +import ink.wgink.properties.ApiPathProperties; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * @ClassName: MenuServiceImpl * @Description: 菜单业务 @@ -14,6 +22,26 @@ import org.springframework.stereotype.Service; @Service public class MenuServiceImpl extends DefaultBaseService implements IMenuService { + @Autowired + private IMenuRemoteService menuRemoteService; + @Autowired + private ApiPathProperties apiPathProperties; + @Override + public List list(String clientId, String roleId) { + return menuRemoteService.list(apiPathProperties.getUserCenter(), clientId, roleId, OAuth2ClientTokenManager.getInstance().getAccessToken().getAccessToken()); + } + + @Override + public List list(String clientId, List roles) { + StringBuilder roleIdsSB = new StringBuilder(); + for (RoleSimpleDTO role : roles) { + if (roleIdsSB.length() > 0) { + roleIdsSB.append(","); + } + roleIdsSB.append(role.getRoleId()); + } + return menuRemoteService.list(apiPathProperties.getUserCenter(), clientId, roleIdsSB.toString(), OAuth2ClientTokenManager.getInstance().getAccessToken().getAccessToken()); + } }