【7.0.3】更新获取菜单逻辑

pull/13/head
fengshuonan 2021-04-21 18:15:49 +08:00
parent 4a632f3a7e
commit ce6e6f1194
6 changed files with 86 additions and 9 deletions

View File

@ -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();
}

View File

@ -140,6 +140,11 @@ public class SysMenuRequest extends BaseRequest {
*/
private String antdvLinkUrl;
/**
* true-
*/
private Boolean totalMenus = false;
/**
* Antd Vue
*/

View File

@ -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);
}
}

View File

@ -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();
}

View File

@ -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<>();

View File

@ -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());
}
/**
*
*