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;
|
package cn.stylefeng.roses.kernel.system.api;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 菜单api
|
* 菜单api
|
||||||
*
|
*
|
||||||
|
@ -42,4 +44,12 @@ public interface MenuServiceApi {
|
||||||
*/
|
*/
|
||||||
boolean hasMenu(String appCode);
|
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;
|
private String antdvLinkUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询时传递:是否查询所有的菜单,true-所有的
|
||||||
|
*/
|
||||||
|
private Boolean totalMenus = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取主页左侧菜单列表(适配Antd Vue的版本)
|
* 获取主页左侧菜单列表(适配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.GetResource;
|
||||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
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.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 cn.stylefeng.roses.kernel.system.modular.app.service.SysAppService;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统应用控制器
|
* 系统应用控制器
|
||||||
|
@ -143,4 +145,16 @@ public class SysAppController {
|
||||||
return new SuccessResponseData();
|
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;
|
package cn.stylefeng.roses.kernel.system.modular.app.service;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
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.api.pojo.app.SysAppRequest;
|
||||||
|
import cn.stylefeng.roses.kernel.system.modular.app.entity.SysApp;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -114,4 +114,12 @@ public interface SysAppService extends IService<SysApp> {
|
||||||
*/
|
*/
|
||||||
void updateActiveFlag(SysAppRequest sysAppParam);
|
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);
|
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
|
@Override
|
||||||
public Set<SimpleDict> getAppsByAppCodes(Set<String> appCodes) {
|
public Set<SimpleDict> getAppsByAppCodes(Set<String> appCodes) {
|
||||||
HashSet<SimpleDict> simpleDicts = new HashSet<>();
|
HashSet<SimpleDict> simpleDicts = new HashSet<>();
|
||||||
|
|
|
@ -280,15 +280,19 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
@Override
|
@Override
|
||||||
public List<AntdSysMenuDTO> getLeftMenusAntdv(SysMenuRequest sysMenuRequest) {
|
public List<AntdSysMenuDTO> getLeftMenusAntdv(SysMenuRequest sysMenuRequest) {
|
||||||
|
|
||||||
String appCode = sysMenuRequest.getAppCode();
|
// 不分应用查询菜单
|
||||||
|
List<SysMenu> currentUserMenus = null;
|
||||||
// 获取默认激活的应用
|
if (sysMenuRequest.getTotalMenus() != null && sysMenuRequest.getTotalMenus()) {
|
||||||
if (ObjectUtil.isEmpty(appCode)) {
|
currentUserMenus = this.getCurrentUserMenus(null);
|
||||||
appCode = appServiceApi.getActiveAppCode();
|
}
|
||||||
|
// 根据应用查询菜单
|
||||||
|
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);
|
return AntdMenusFactory.createTotalMenus(currentUserMenus);
|
||||||
}
|
}
|
||||||
|
@ -442,6 +446,23 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
return !list.isEmpty();
|
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