package com.qianwen.smartman.modules.system.controller;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import java.lang.invoke.SerializedLambda;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
import javax.validation.Valid;
|
import com.qianwen.smartman.common.cache.RegionCache;
|
import com.qianwen.smartman.common.constant.ExtCacheConstant;
|
import com.qianwen.smartman.common.constant.MenuConstant;
|
import com.qianwen.smartman.common.enums.MenuCategoryEnum;
|
import com.qianwen.core.boot.ctrl.BladeController;
|
import com.qianwen.core.cache.utils.CacheUtil;
|
import com.qianwen.core.mp.support.Condition;
|
import com.qianwen.core.scanner.modular.annotation.GetResource;
|
import com.qianwen.core.scanner.modular.annotation.PostResource;
|
import com.qianwen.core.scanner.modular.stereotype.ApiResource;
|
import com.qianwen.core.secure.BladeUser;
|
import com.qianwen.core.secure.annotation.PreAuth;
|
import com.qianwen.core.tenant.annotation.NonDS;
|
import com.qianwen.core.tool.api.R;
|
import com.qianwen.core.tool.support.Kv;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.modules.system.entity.Menu;
|
import com.qianwen.smartman.modules.system.entity.TopMenu;
|
import com.qianwen.smartman.modules.system.service.IMenuService;
|
import com.qianwen.smartman.modules.system.service.ITopMenuService;
|
import com.qianwen.smartman.modules.system.vo.CheckedTreeVO;
|
import com.qianwen.smartman.modules.system.vo.GrantTreeVO;
|
import com.qianwen.smartman.modules.system.vo.MenuVO;
|
import com.qianwen.smartman.modules.system.wrapper.MenuWrapper;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
import springfox.documentation.annotations.ApiIgnore;
|
|
@Api(value = "菜单", tags = {"菜单"})
|
@RestController
|
@ApiResource({"blade-system/menu"})
|
@NonDS
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/system/controller/MenuController.class */
|
public class MenuController extends BladeController {
|
private final IMenuService menuService;
|
private final ITopMenuService topMenuService;
|
|
private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) {
|
String implMethodName = lambda.getImplMethodName();
|
boolean z = true;
|
switch (implMethodName.hashCode()) {
|
case -75145708:
|
if (implMethodName.equals("getSort")) {
|
z = false;
|
break;
|
}
|
break;
|
case 2128411252:
|
if (implMethodName.equals("getCategory")) {
|
z = true;
|
break;
|
}
|
break;
|
}
|
switch (z) {
|
case false:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Menu") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getSort();
|
};
|
}
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Menu") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getSort();
|
};
|
}
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/TopMenu") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getSort();
|
};
|
}
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Menu") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getSort();
|
};
|
}
|
break;
|
case true:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Menu") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getCategory();
|
};
|
}
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Menu") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getCategory();
|
};
|
}
|
break;
|
}
|
throw new IllegalArgumentException("Invalid lambda deserialization");
|
}
|
|
public MenuController(final IMenuService menuService, final ITopMenuService topMenuService) {
|
this.menuService = menuService;
|
this.topMenuService = topMenuService;
|
}
|
|
@ApiOperationSupport(order = 1)
|
@GetResource({"/detail"})
|
@ApiOperation(value = "详情", notes = "传入menu")
|
@PreAuth
|
public R<MenuVO> detail(Menu menu) {
|
Menu detail = (Menu) this.menuService.getOne(Condition.getQueryWrapper(menu));
|
return R.data(MenuWrapper.build().entityVO(detail));
|
}
|
|
@ApiOperationSupport(order = 2)
|
@ApiImplicitParams({@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")})
|
@GetResource({"/list"})
|
@ApiOperation(value = "列表", notes = "传入menu")
|
public R<List<MenuVO>> list(@RequestParam @ApiIgnore Map<String, Object> menu) {
|
List<Menu> list = this.menuService.list((Wrapper) Condition.getQueryWrapper(menu, Menu.class).lambda().orderByAsc((v0) -> {
|
return v0.getSort();
|
}));
|
return R.data(MenuWrapper.build().listNodeVO(list));
|
}
|
|
@ApiOperationSupport(order = 3)
|
@ApiImplicitParams({@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "belongApplication", value = "所属应用 CPS:FMS:VISION", paramType = "query", dataType = "string")})
|
@GetResource({"/lazy-list"})
|
@ApiOperation(value = "懒加载列表", notes = "传入menu")
|
public R<List<MenuVO>> lazyList(Long parentId, @RequestParam @ApiIgnore Map<String, Object> menu) {
|
List<MenuVO> list = this.menuService.lazyList(parentId, menu);
|
return R.data(MenuWrapper.build().listNodeLazyVO(list));
|
}
|
|
@ApiOperationSupport(order = 4)
|
@ApiImplicitParams({@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")})
|
@GetResource({"/menu-list"})
|
@ApiOperation(value = "菜单列表", notes = "传入menu")
|
public R<List<MenuVO>> menuList(@RequestParam @ApiIgnore Map<String, Object> menu) {
|
List<Menu> list = this.menuService.list((Wrapper) ((LambdaQueryWrapper) Condition.getQueryWrapper(menu, Menu.class).lambda().eq((v0) -> {
|
return v0.getCategory();
|
}, 1)).orderByAsc((v0) -> {
|
return v0.getSort();
|
}));
|
return R.data(MenuWrapper.build().listNodeVO(list));
|
}
|
|
@ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL)
|
@ApiImplicitParams({@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "belongApplication", value = "所属应用 CPS:FMS:VISION", paramType = "query", dataType = "string")})
|
@GetResource({"/lazy-menu-list"})
|
@ApiOperation(value = "懒加载菜单列表", notes = "传入menu")
|
public R<List<MenuVO>> lazyMenuList(Long parentId, @RequestParam @ApiIgnore Map<String, Object> menu) {
|
List<MenuVO> list = this.menuService.lazyMenuList(parentId, menu);
|
return R.data(MenuWrapper.build().listNodeLazyVO(list));
|
}
|
|
@ApiOperationSupport(order = 6)
|
@PostResource({"/submit"})
|
@ApiOperation(value = "新增或修改", notes = "传入menu")
|
@PreAuth
|
public R submit(@Valid @RequestBody Menu menu) {
|
if (this.menuService.submit(menu)) {
|
CacheUtil.clear("blade:menu", ExtCacheConstant.TENANT_MODE);
|
Kv kv = Kv.create().set("id", String.valueOf(menu.getId()));
|
return R.data(kv);
|
}
|
return R.fail("操作失败");
|
}
|
|
@ApiOperationSupport(order = 7)
|
@PostResource({"/remove"})
|
@ApiOperation(value = "删除", notes = "传入ids")
|
@PreAuth
|
public R remove(@RequestParam @ApiParam(value = "主键集合", required = true) String ids) {
|
CacheUtil.clear("blade:menu", ExtCacheConstant.TENANT_MODE);
|
return R.status(this.menuService.removeMenu(ids));
|
}
|
|
@ApiOperationSupport(order = 8)
|
@GetResource({"/routes"})
|
@ApiOperation(value = "前端菜单数据", notes = "前端菜单数据")
|
public R<List<MenuVO>> routes(BladeUser user, Long topMenuId, String appCode) {
|
List<MenuVO> list = this.menuService.routes(user == null ? null : user.getRoleId(), topMenuId);
|
List<MenuVO> vos = (List) list.stream().filter(menu -> {
|
return MenuConstant.DESK.equals(menu.getCode()) || Func.isNotEmpty(menu.getChildren());
|
}).collect(Collectors.toList());
|
if (Func.isNotEmpty(appCode)) {
|
vos = (List) vos.stream().filter(menuVO -> {
|
return appCode.equals(menuVO.getBelongApplication());
|
}).collect(Collectors.toList());
|
}
|
return R.data(vos);
|
}
|
|
@ApiOperationSupport(order = 9)
|
@GetResource({"/routes-ext"})
|
@ApiOperation(value = "前端菜单数据", notes = "前端菜单数据")
|
public R<List<MenuVO>> routesExt(BladeUser user, Long topMenuId) {
|
List<MenuVO> list = this.menuService.routesExt(user.getRoleId(), topMenuId);
|
return R.data(list);
|
}
|
|
@ApiOperationSupport(order = 10)
|
@GetResource({"/buttons"})
|
@ApiOperation(value = "前端按钮数据", notes = "前端按钮数据")
|
public R<List<MenuVO>> buttons(BladeUser user) {
|
List<MenuVO> list = this.menuService.buttons(user.getRoleId());
|
return R.data(list);
|
}
|
|
@ApiOperationSupport(order = 11)
|
@GetResource({"/tree"})
|
@ApiOperation(value = "树形结构", notes = "树形结构")
|
public R<List<MenuVO>> tree() {
|
List<MenuVO> tree = this.menuService.tree();
|
return R.data(tree);
|
}
|
|
@ApiOperationSupport(order = 12)
|
@GetResource({"/grant-tree"})
|
@ApiOperation(value = "权限分配树形结构", notes = "权限分配树形结构")
|
public R<GrantTreeVO> grantTree(BladeUser user) {
|
GrantTreeVO vo = new GrantTreeVO();
|
vo.setDataScope(this.menuService.grantDataScopeTree(user));
|
vo.setApiScope(this.menuService.grantApiScopeTree(user));
|
vo.setMenu(this.menuService.grantTreeByCategory(user, MenuCategoryEnum.getMenusOutofCard()));
|
vo.setCard(this.menuService.grantTreeByCategory(user, MenuCategoryEnum.getMenusWithCard()));
|
return R.data(vo);
|
}
|
|
@ApiOperationSupport(order = 13)
|
@GetResource({"/role-tree-keys"})
|
@ApiOperation(value = "角色所分配的树", notes = "角色所分配的树")
|
public R<CheckedTreeVO> roleTreeKeys(String roleIds) {
|
CheckedTreeVO vo = new CheckedTreeVO();
|
vo.setMenu(this.menuService.getRoleMenuByCondition(roleIds, MenuCategoryEnum.getMenusOutofCard()));
|
vo.setCard(this.menuService.getRoleMenuByCondition(roleIds, MenuCategoryEnum.getMenusWithCard()));
|
vo.setDataScope(this.menuService.dataScopeTreeKeys(roleIds));
|
vo.setApiScope(this.menuService.apiScopeTreeKeys(roleIds));
|
return R.data(vo);
|
}
|
|
@ApiOperationSupport(order = 14)
|
@GetResource({"/grant-top-tree"})
|
@ApiOperation(value = "顶部菜单树形结构", notes = "顶部菜单树形结构")
|
public R<GrantTreeVO> grantTopTree(BladeUser user) {
|
GrantTreeVO vo = new GrantTreeVO();
|
vo.setMenu(this.menuService.grantTopTree(user));
|
return R.data(vo);
|
}
|
|
@ApiOperationSupport(order = 15)
|
@GetResource({"/top-tree-keys"})
|
@ApiOperation(value = "顶部菜单所分配的树", notes = "顶部菜单所分配的树")
|
public R<CheckedTreeVO> topTreeKeys(String topMenuIds) {
|
CheckedTreeVO vo = new CheckedTreeVO();
|
vo.setMenu(this.menuService.topTreeKeys(topMenuIds));
|
return R.data(vo);
|
}
|
|
@ApiOperationSupport(order = 16)
|
@GetResource({"/top-menu"})
|
@ApiOperation(value = "顶部菜单数据", notes = "顶部菜单数据")
|
public R<List<TopMenu>> topMenu(BladeUser user) {
|
if (Func.isEmpty(user)) {
|
return null;
|
}
|
List<TopMenu> list = this.topMenuService.list((Wrapper) Wrappers.query().lambda().orderByAsc((v0) -> {
|
return v0.getSort();
|
}));
|
return R.data(list);
|
}
|
|
@ApiOperationSupport(order = 17)
|
@GetResource({"auth-routes"})
|
@ApiOperation("菜单的角色权限")
|
public R<List<Kv>> authRoutes(BladeUser user) {
|
if (Func.isEmpty(user)) {
|
return null;
|
}
|
return R.data(this.menuService.authRoutes(user));
|
}
|
|
@ApiOperationSupport(order = 2)
|
@ApiImplicitParams({@ApiImplicitParam(name = "code", value = "菜单编号", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "string")})
|
@GetResource({"/list-not-radio"})
|
@ApiOperation(value = "列表(无按钮)", notes = "传入menu")
|
public R<List<MenuVO>> listNotRadio(@RequestParam @ApiIgnore Map<String, Object> menu) {
|
List<Menu> list = this.menuService.list((Wrapper) ((LambdaQueryWrapper) Condition.getQueryWrapper(menu, Menu.class).lambda().in((v0) -> {
|
return v0.getCategory();
|
}, MenuCategoryEnum.getMenus())).orderByAsc((v0) -> {
|
return v0.getSort();
|
}));
|
return R.data(MenuWrapper.build().listNodeVO(list));
|
}
|
|
@GetResource({"/grant-tree-card"})
|
@ApiOperation(value = "权限分配树形结构(卡片)", notes = "权限分配树形结构(卡片)")
|
public R<GrantTreeVO> grantTreeCard(BladeUser user) {
|
GrantTreeVO vo = new GrantTreeVO();
|
vo.setCard(this.menuService.grantTreeCard(user, MenuCategoryEnum.getMenusWithCard()));
|
return R.data(vo);
|
}
|
}
|