mirror of https://gitee.com/stylefeng/roses
【7.0.3】更新获取菜单逻辑
parent
4a632f3a7e
commit
ce6e6f1194
|
@ -24,6 +24,8 @@
|
|||
*/
|
||||
package cn.stylefeng.roses.kernel.system.api;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 菜单api
|
||||
*
|
||||
|
@ -42,4 +44,12 @@ public interface MenuServiceApi {
|
|||
*/
|
||||
boolean hasMenu(String appCode);
|
||||
|
||||
/**
|
||||
* 获取当前用户所拥有菜单对应的appCode列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/4/21 15:40
|
||||
*/
|
||||
List<String> getUserAppCodeList();
|
||||
|
||||
}
|
||||
|
|
|
@ -140,6 +140,11 @@ public class SysMenuRequest extends BaseRequest {
|
|||
*/
|
||||
private String antdvLinkUrl;
|
||||
|
||||
/**
|
||||
* 查询时传递:是否查询所有的菜单,true-所有的
|
||||
*/
|
||||
private Boolean totalMenus = false;
|
||||
|
||||
/**
|
||||
* 获取主页左侧菜单列表(适配Antd Vue的版本)
|
||||
*/
|
||||
|
|
|
@ -30,12 +30,14 @@ import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
|
|||
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.app.SysAppRequest;
|
||||
import cn.stylefeng.roses.kernel.system.modular.app.entity.SysApp;
|
||||
import cn.stylefeng.roses.kernel.system.modular.app.service.SysAppService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 系统应用控制器
|
||||
|
@ -143,4 +145,16 @@ public class SysAppController {
|
|||
return new SuccessResponseData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取应用列表,用于顶部应用列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/4/21 15:31
|
||||
*/
|
||||
@GetResource(name = "获取应用列表,用于顶部应用列表", path = "/sysMenu/getTopAppList")
|
||||
public ResponseData getTopAppList() {
|
||||
List<SysApp> userTopAppList = sysAppService.getUserTopAppList();
|
||||
return new SuccessResponseData(userTopAppList);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
package cn.stylefeng.roses.kernel.system.modular.app.service;
|
||||
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.system.modular.app.entity.SysApp;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.app.SysAppRequest;
|
||||
import cn.stylefeng.roses.kernel.system.modular.app.entity.SysApp;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -114,4 +114,12 @@ public interface SysAppService extends IService<SysApp> {
|
|||
*/
|
||||
void updateActiveFlag(SysAppRequest sysAppParam);
|
||||
|
||||
/**
|
||||
* 获取用户的顶部app导航列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/4/21 15:34
|
||||
*/
|
||||
List<SysApp> getUserTopAppList();
|
||||
|
||||
}
|
||||
|
|
|
@ -166,6 +166,25 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
|
|||
this.updateById(currentApp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysApp> getUserTopAppList() {
|
||||
|
||||
// 获取用户拥有的appCode列表
|
||||
List<String> userAppCodeList = menuApi.getUserAppCodeList();
|
||||
|
||||
// 根据appCode获取对应的app详情
|
||||
LambdaQueryWrapper<SysApp> wrapper = this.createWrapper(null);
|
||||
wrapper.in(SysApp::getAppCode, userAppCodeList);
|
||||
|
||||
// 仅查询code和name
|
||||
wrapper.select(SysApp::getAppName, SysApp::getAppCode);
|
||||
|
||||
// 根据激活顺序排序
|
||||
wrapper.orderByDesc(SysApp::getActiveFlag);
|
||||
|
||||
return this.list(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<SimpleDict> getAppsByAppCodes(Set<String> appCodes) {
|
||||
HashSet<SimpleDict> simpleDicts = new HashSet<>();
|
||||
|
|
|
@ -280,15 +280,19 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
@Override
|
||||
public List<AntdSysMenuDTO> getLeftMenusAntdv(SysMenuRequest sysMenuRequest) {
|
||||
|
||||
String appCode = sysMenuRequest.getAppCode();
|
||||
|
||||
// 获取默认激活的应用
|
||||
if (ObjectUtil.isEmpty(appCode)) {
|
||||
appCode = appServiceApi.getActiveAppCode();
|
||||
// 不分应用查询菜单
|
||||
List<SysMenu> currentUserMenus = null;
|
||||
if (sysMenuRequest.getTotalMenus() != null && sysMenuRequest.getTotalMenus()) {
|
||||
currentUserMenus = this.getCurrentUserMenus(null);
|
||||
}
|
||||
// 根据应用查询菜单
|
||||
else {
|
||||
String appCode = sysMenuRequest.getAppCode();
|
||||
if (ObjectUtil.isEmpty(appCode)) {
|
||||
appCode = appServiceApi.getActiveAppCode();
|
||||
}
|
||||
currentUserMenus = this.getCurrentUserMenus(appCode);
|
||||
}
|
||||
|
||||
// 获取应用对应的菜单
|
||||
List<SysMenu> currentUserMenus = this.getCurrentUserMenus(appCode);
|
||||
|
||||
return AntdMenusFactory.createTotalMenus(currentUserMenus);
|
||||
}
|
||||
|
@ -442,6 +446,23 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
return !list.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getUserAppCodeList() {
|
||||
|
||||
LambdaQueryWrapper<SysMenu> queryWrapper = createWrapper(null);
|
||||
queryWrapper.select(SysMenu::getAppCode);
|
||||
queryWrapper.groupBy(SysMenu::getAppCode);
|
||||
|
||||
// 非超级管理员获取自己的菜单
|
||||
if (!LoginContext.me().getSuperAdminFlag()) {
|
||||
List<Long> currentUserMenuIds = this.getCurrentUserMenuIds();
|
||||
queryWrapper.in(SysMenu::getMenuId, currentUserMenuIds);
|
||||
}
|
||||
|
||||
List<SysMenu> list = this.list(queryWrapper);
|
||||
return list.stream().map(SysMenu::getAppCode).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统菜单
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue