【7.0.3】antdv获取菜单增加appCode

pull/13/head
fengshuonan 2021-04-21 15:24:27 +08:00
parent 743a922052
commit 4a632f3a7e
4 changed files with 32 additions and 34 deletions

View File

@ -37,10 +37,10 @@ import cn.stylefeng.roses.kernel.system.api.AppServiceApi;
import cn.stylefeng.roses.kernel.system.api.MenuServiceApi;
import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.api.exception.enums.app.AppExceptionEnum;
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.mapper.SysAppMapper;
import cn.stylefeng.roses.kernel.system.modular.app.service.SysAppService;
import cn.stylefeng.roses.kernel.system.api.pojo.app.SysAppRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -260,6 +260,9 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
// 根据编码模糊查询
queryWrapper.like(ObjectUtil.isNotEmpty(sysAppRequest.getAppCode()), SysApp::getAppCode, sysAppRequest.getAppCode());
// 根据激活状态
queryWrapper.eq(ObjectUtil.isNotEmpty(sysAppRequest.getStatusFlag()), SysApp::getActiveFlag, sysAppRequest.getActiveFlag());
return queryWrapper;
}

View File

@ -142,8 +142,8 @@ public class SysMenuController {
* @date 2021/1/7 15:17
*/
@GetResource(name = "获取系统所有菜单适用于登录后获取左侧菜单适配antd vue版本", path = "/sysMenu/getLeftMenusAntdv", requiredPermission = false)
public ResponseData getLeftMenusAntdv() {
List<AntdSysMenuDTO> sysMenuResponses = sysMenuService.getLeftMenusAntdv();
public ResponseData getLeftMenusAntdv(SysMenuRequest sysMenuRequest) {
List<AntdSysMenuDTO> sysMenuResponses = sysMenuService.getLeftMenusAntdv(sysMenuRequest);
return new SuccessResponseData(sysMenuResponses);
}

View File

@ -133,7 +133,7 @@ public interface SysMenuService extends IService<SysMenu> {
* @author majianguo
* @date 2021/1/7 15:24
*/
List<AntdSysMenuDTO> getLeftMenusAntdv();
List<AntdSysMenuDTO> getLeftMenusAntdv(SysMenuRequest sysMenuRequest);
/**
*

View File

@ -278,30 +278,19 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
}
@Override
public List<AntdSysMenuDTO> getLeftMenusAntdv() {
public List<AntdSysMenuDTO> getLeftMenusAntdv(SysMenuRequest sysMenuRequest) {
LambdaQueryWrapper<SysMenu> wrapper = this.createWrapper(new SysMenuRequest());
wrapper.select(SysMenu::getMenuName,
SysMenu::getAntdvIcon,
SysMenu::getAntdvRouter,
SysMenu::getAntdvComponent,
SysMenu::getVisible,
SysMenu::getAntdvUidUrl,
SysMenu::getMenuId,
SysMenu::getMenuParentId);
wrapper.eq(SysMenu::getStatusFlag, StatusEnum.ENABLE.getCode());
String appCode = sysMenuRequest.getAppCode();
// 如果是超级管理员,则获取所有的菜单
if (LoginContext.me().getSuperAdminFlag()) {
List<SysMenu> totalList = this.list(wrapper);
return AntdMenusFactory.createTotalMenus(totalList);
// 获取默认激活的应用
if (ObjectUtil.isEmpty(appCode)) {
appCode = appServiceApi.getActiveAppCode();
}
// 获取当前用户的所有菜单
List<Long> menuIdList = getCurrentUserMenuIds();
wrapper.in(SysMenu::getMenuId, menuIdList);
List<SysMenu> customList = this.list(wrapper);
return AntdMenusFactory.createTotalMenus(customList);
// 获取应用对应的菜单
List<SysMenu> currentUserMenus = this.getCurrentUserMenus(appCode);
return AntdMenusFactory.createTotalMenus(currentUserMenus);
}
@Override
@ -417,23 +406,29 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override
public List<SysMenu> getCurrentUserMenus(String appCode) {
// 获取当前用户所有的菜单id
List<Long> menuIdList = getCurrentUserMenuIds();
// 当前用户没有菜单
if (menuIdList.isEmpty()) {
throw new SystemModularException(SysUserExceptionEnum.USER_NOT_HAVE_MENUS);
}
// 获取菜单列表
// 菜单查询条件
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SysMenu::getMenuId, menuIdList).eq(SysMenu::getStatusFlag, StatusEnum.ENABLE.getCode()).eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode()).orderByAsc(SysMenu::getMenuSort);
queryWrapper.eq(SysMenu::getStatusFlag, StatusEnum.ENABLE.getCode())
.eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode())
.orderByAsc(SysMenu::getMenuSort);
// 如果应用编码不为空,则拼接应用编码
if (StrUtil.isNotBlank(appCode)) {
queryWrapper.eq(SysMenu::getAppCode, appCode);
}
// 如果是超级管理员,则获取所有的菜单
if (LoginContext.me().getSuperAdminFlag()) {
return this.list(queryWrapper);
}
// 非超级管理员获取当前用户所有的菜单id
List<Long> menuIdList = getCurrentUserMenuIds();
if (menuIdList.isEmpty()) {
throw new SystemModularException(SysUserExceptionEnum.USER_NOT_HAVE_MENUS);
}
queryWrapper.in(SysMenu::getMenuId, menuIdList);
return this.list(queryWrapper);
}