新增客户端菜单查询功能

This commit is contained in:
wanggeng 2021-09-22 16:57:48 +08:00
parent 70dd48564b
commit 1e4087bb35
3 changed files with 64 additions and 33 deletions

View File

@ -2,11 +2,9 @@ package ink.wgink.login.oauth2.client.controller.route;
import ink.wgink.common.component.SecurityComponent; import ink.wgink.common.component.SecurityComponent;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.interfaces.menu.IMenuBaseService; import ink.wgink.login.oauth2.client.service.menu.IMenuService;
import ink.wgink.interfaces.role.IRoleMenuBaseService;
import ink.wgink.pojo.bos.UserInfoBO; import ink.wgink.pojo.bos.UserInfoBO;
import ink.wgink.pojo.dtos.menu.MenuDTO; 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.OAuth2ClientProperties;
import ink.wgink.properties.oauth2.client.OAuth2ClientServerProperties; import ink.wgink.properties.oauth2.client.OAuth2ClientServerProperties;
import org.apache.commons.lang3.StringUtils; 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.ModelAndView;
import org.springframework.web.servlet.view.RedirectView; 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 * When you feel like quitting. Think about why you started
@ -37,10 +37,8 @@ public class IndexRouteController {
private OAuth2ClientServerProperties oAuth2ClientServerProperties; private OAuth2ClientServerProperties oAuth2ClientServerProperties;
@Autowired @Autowired
private OAuth2ClientProperties oAuth2ClientProperties; private OAuth2ClientProperties oAuth2ClientProperties;
@Autowired(required = false) @Autowired
private IMenuBaseService menuBaseService; private IMenuService menuService;
@Autowired(required = false)
private IRoleMenuBaseService roleMenuBaseService;
@GetMapping("index") @GetMapping("index")
public ModelAndView goIndex() { public ModelAndView goIndex() {
@ -64,32 +62,14 @@ public class IndexRouteController {
// 先加载系统短标题没有加载主标题没有加载配置文件系统标题 // 先加载系统短标题没有加载主标题没有加载配置文件系统标题
mv.addObject("systemTitle", oAuth2ClientServerProperties.getSystemTitle()); mv.addObject("systemTitle", oAuth2ClientServerProperties.getSystemTitle());
mv.addObject("ws", oAuth2ClientServerProperties.getWs()); mv.addObject("ws", oAuth2ClientServerProperties.getWs());
if (menuBaseService != null) {
List<MenuDTO> menus; List<MenuDTO> menus;
if (StringUtils.equalsIgnoreCase(ISystemConstant.ADMIN, userInfoBO.getUserUsername())) { if (StringUtils.equalsIgnoreCase(ISystemConstant.ADMIN, userInfoBO.getUserUsername())) {
// 管理员 menus = menuService.list(oAuth2ClientProperties.getClient().getClientId(), ISystemConstant.ADMIN);
List<String> menuIds = roleMenuBaseService.listMenuId(ISystemConstant.ADMIN);
if (menuIds.isEmpty()) {
menus = menuBaseService.listAllByParentId(IMenuBaseService.MENU_UNIFIED_USER);
} else { } else {
menus = menuBaseService.listAllByParentIdAndIds(IMenuBaseService.MENU_UNIFIED_USER, menuIds); menus = menuService.list(oAuth2ClientProperties.getClient().getClientId(), securityComponent.getCurrentUser().getRoles());
}
} else {
// 普通用户
List<RoleSimpleDTO> roleSimpleDTOs = securityComponent.getCurrentUser().getRoles();
if (roleSimpleDTOs.isEmpty()) {
menus = new ArrayList<>();
} else {
List<String> roleIds = new ArrayList<>();
for (RoleSimpleDTO roleSimpleDTO : roleSimpleDTOs) {
roleIds.add(roleSimpleDTO.getRoleId());
}
List<String> menuIds = roleMenuBaseService.listMenuId(roleIds);
menus = menuBaseService.listAllByParentIdAndIds(IMenuBaseService.MENU_UNIFIED_USER, menuIds);
}
} }
mv.addObject("menus", menus); mv.addObject("menus", menus);
}
return mv; return mv;
} }

View File

@ -1,5 +1,10 @@
package ink.wgink.login.oauth2.client.service.menu; 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 * @ClassName: IMenuService
* @Description: 菜单业务 * @Description: 菜单业务
@ -8,4 +13,22 @@ package ink.wgink.login.oauth2.client.service.menu;
* @Version: 1.0 * @Version: 1.0
*/ */
public interface IMenuService { public interface IMenuService {
/**
* 菜单列表
*
* @param clientId 客户端ID
* @param roleId 角色ID
* @return
*/
List<MenuDTO> list(String clientId, String roleId);
/**
* 菜单列表
*
* @param clientId 客户端ID
* @param roles 角色列表
* @return
*/
List<MenuDTO> list(String clientId, List<RoleSimpleDTO> roles);
} }

View File

@ -1,9 +1,17 @@
package ink.wgink.login.oauth2.client.service.menu.impl; package ink.wgink.login.oauth2.client.service.menu.impl;
import ink.wgink.common.base.DefaultBaseService; 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.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 org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @ClassName: MenuServiceImpl * @ClassName: MenuServiceImpl
* @Description: 菜单业务 * @Description: 菜单业务
@ -14,6 +22,26 @@ import org.springframework.stereotype.Service;
@Service @Service
public class MenuServiceImpl extends DefaultBaseService implements IMenuService { public class MenuServiceImpl extends DefaultBaseService implements IMenuService {
@Autowired
private IMenuRemoteService menuRemoteService;
@Autowired
private ApiPathProperties apiPathProperties;
@Override
public List<MenuDTO> list(String clientId, String roleId) {
return menuRemoteService.list(apiPathProperties.getUserCenter(), clientId, roleId, OAuth2ClientTokenManager.getInstance().getAccessToken().getAccessToken());
}
@Override
public List<MenuDTO> list(String clientId, List<RoleSimpleDTO> 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());
}
} }