|
|
|
@@ -55,7 +55,7 @@ public class SysMenuController extends BaseController { |
|
|
|
public ResultData nav(){ |
|
|
|
logger.debug("[" + getIpAddr() + "] MallPermissionController::nav"); |
|
|
|
MallUserInfo user = getUser(); |
|
|
|
List<MallPermission> menuList = mallPermissionService.getUserMenuList(user); |
|
|
|
List<MallPermission> menuList = mallPermissionService.getUserMenuList(user, 0L); |
|
|
|
Set<String> permissions = mallUserInfoService.getUserPermissions(user); |
|
|
|
Map map = new HashMap<>(); |
|
|
|
map.put("menuList", menuList); |
|
|
|
@@ -74,53 +74,6 @@ public class SysMenuController extends BaseController { |
|
|
|
return new ResultData(Result.SUCCESS, "查询成功", menuList); |
|
|
|
} |
|
|
|
|
|
|
|
@ApiOperation("添加菜单/权限") |
|
|
|
@PostMapping("add") |
|
|
|
//@RequiresPermissions("sys:menu:save") |
|
|
|
@SystemControllerLog(description = "用户管理-权限添加") |
|
|
|
public ResultData createPermission(MallPermission mallPermission) { |
|
|
|
logger.debug("[" + getIpAddr() + "] MallPermissionController::createPermission"); |
|
|
|
Assert.notNull(mallPermission.getName(), "用户名不能为空"); |
|
|
|
// 数据校验 |
|
|
|
verifyForm(mallPermission); |
|
|
|
|
|
|
|
mallPermissionService.saveOrUpdate(mallPermission); |
|
|
|
return new ResultData(mallPermission.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
@ApiOperation("更新菜单/权限") |
|
|
|
@PostMapping("update") |
|
|
|
//@RequiresPermissions("sys:menu:update") |
|
|
|
@SystemControllerLog(description = "用户管理-权限更新") |
|
|
|
public ResultData updatePermission(MallPermission sysPermission) { |
|
|
|
logger.debug("[" + getIpAddr() + "] MallPermissionController::updatePermission"); |
|
|
|
// 数据校验 |
|
|
|
verifyForm(sysPermission); |
|
|
|
|
|
|
|
mallPermissionService.saveOrUpdate(sysPermission); |
|
|
|
return new ResultData(); |
|
|
|
} |
|
|
|
|
|
|
|
@ApiOperation("删除菜单/权限") |
|
|
|
@GetMapping("/del") |
|
|
|
//@RequiresPermissions("sys:menu:delete") |
|
|
|
@SystemControllerLog(description = "用户管理-权限删除") |
|
|
|
public ResultData delete(Long id) { |
|
|
|
logger.debug("[" + getIpAddr() + "] MallPermissionController::delete"); |
|
|
|
if(id <= Constant.SYS_MENU_MAX) { |
|
|
|
logger.error(ErrorCode.MENU_SYS_NOT_DEL.getMessage()); |
|
|
|
return new ResultData(ErrorCode.MENU_SYS_NOT_DEL); |
|
|
|
} |
|
|
|
//判断是否有子菜单或按钮 |
|
|
|
List<MallPermission> menuList = mallPermissionService.getByParentId(id); |
|
|
|
if(menuList.size() > 0){ |
|
|
|
logger.error(ErrorCode.MENU_CHILD_NOT_DEL.getMessage()); |
|
|
|
return new ResultData(ErrorCode.MENU_CHILD_NOT_DEL); |
|
|
|
} |
|
|
|
mallPermissionService.deleteById(id); |
|
|
|
return new ResultData(Result.SUCCESS, "删除成功"); |
|
|
|
} |
|
|
|
|
|
|
|
@ApiOperation("菜单信息") |
|
|
|
@GetMapping("/findById") |
|
|
|
//@RequiresPermissions("sys:menu:info") |
|
|
|
@@ -130,85 +83,24 @@ public class SysMenuController extends BaseController { |
|
|
|
return new ResultData(Result.SUCCESS, "成功", mallPermissionService.getById(id)); |
|
|
|
} |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private RequestMappingHandlerMapping requestMappingHandlerMapping; |
|
|
|
|
|
|
|
@ApiOperation("导出菜单") |
|
|
|
@GetMapping("/export") |
|
|
|
//@RequiresPermissions("sys:menu:import") |
|
|
|
@SystemControllerLog(description = "用户管理-导出权限") |
|
|
|
public ResultData export() { |
|
|
|
logger.debug("[" + getIpAddr() + "] MallPermissionController::export"); |
|
|
|
List<Map> resourceList = new ArrayList<Map>(); |
|
|
|
//获取所有Controller的方法 |
|
|
|
Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods(); |
|
|
|
for (Map.Entry<RequestMappingInfo, HandlerMethod> m : map.entrySet()) { |
|
|
|
RequestMappingInfo info = m.getKey(); |
|
|
|
HandlerMethod method = m.getValue(); |
|
|
|
PatternsRequestCondition p = info.getPatternsCondition(); |
|
|
|
//扫描Shiro的权限资源标签 |
|
|
|
RequiresPermissions requiresPermissions = method.getMethod().getAnnotation(RequiresPermissions.class); |
|
|
|
if (requiresPermissions != null) { |
|
|
|
Map newSource = new HashMap(); |
|
|
|
String[] strArr = requiresPermissions.value(); |
|
|
|
newSource.put("permission", strArr[0]); |
|
|
|
//扫描Swagger注解 |
|
|
|
ApiOperation apiOperation = method.getMethod().getAnnotation(ApiOperation.class); |
|
|
|
if (apiOperation != null) { |
|
|
|
newSource.put("name", apiOperation.value()); |
|
|
|
Set<String> urls = p.getPatterns(); |
|
|
|
newSource.put("url", urls.toArray()[0]); |
|
|
|
} |
|
|
|
resourceList.add(newSource); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return new ResultData(resourceList); |
|
|
|
@ApiOperation("获取父子菜单ID信息") |
|
|
|
@GetMapping("/getMenuIdsById") |
|
|
|
//@RequiresPermissions("sys:menu:info") |
|
|
|
@SystemControllerLog(description = "用户管理-父子菜单查找") |
|
|
|
public ResultData getMenuIdsById(Long parentId) { |
|
|
|
logger.debug("[" + getIpAddr() + "] MallPermissionController::getMenusById"); |
|
|
|
MallUserInfo user = getUser(); |
|
|
|
return new ResultData(Result.SUCCESS, "成功", mallPermissionService.queryUserMenuIds(user, parentId)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 验证参数是否正确 |
|
|
|
*/ |
|
|
|
private void verifyForm(MallPermission menu){ |
|
|
|
if(StringUtils.isBlank(menu.getName())){ |
|
|
|
throw new MallinkException(ErrorCode.MENU_NAME_EMPTY); |
|
|
|
} |
|
|
|
|
|
|
|
if(menu.getParentId() == null){ |
|
|
|
throw new MallinkException(ErrorCode.MENU_PARENT_EMPTY); |
|
|
|
} |
|
|
|
|
|
|
|
//菜单 |
|
|
|
if(menu.getResourceType().equals(EnumPermissionType.MENU.getCode())){ |
|
|
|
if(StringUtils.isBlank(menu.getUrl())){ |
|
|
|
throw new MallinkException(ErrorCode.MENU_URL_EMPTY); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//上级菜单类型 |
|
|
|
int parentType = EnumPermissionType.CATALOG.getCode(); |
|
|
|
if(menu.getParentId() != 0){ |
|
|
|
MallPermission parentMenu = mallPermissionService.getById(menu.getParentId()); |
|
|
|
parentType = parentMenu.getResourceType(); |
|
|
|
} |
|
|
|
|
|
|
|
//目录、菜单 |
|
|
|
if(menu.getResourceType().equals(EnumPermissionType.CATALOG.getCode()) || |
|
|
|
menu.getResourceType().equals(EnumPermissionType.MENU.getCode())){ |
|
|
|
if(parentType != EnumPermissionType.CATALOG.getCode()){ |
|
|
|
throw new MallinkException(ErrorCode.MENU_PARENT_NOT_CATEGORY); |
|
|
|
} |
|
|
|
return ; |
|
|
|
} |
|
|
|
|
|
|
|
//按钮 |
|
|
|
if(menu.getResourceType().equals(EnumPermissionType.BUTTON.getCode())){ |
|
|
|
if(parentType != EnumPermissionType.MENU.getCode()){ |
|
|
|
throw new MallinkException(ErrorCode.MENU_PARENT_NOT_MENU); |
|
|
|
} |
|
|
|
return ; |
|
|
|
} |
|
|
|
@ApiOperation("获取父子菜单信息") |
|
|
|
@GetMapping("/getMenusById") |
|
|
|
//@RequiresPermissions("sys:menu:info") |
|
|
|
@SystemControllerLog(description = "用户管理-父子菜单查找") |
|
|
|
public ResultData getMenusById(Long parentId) { |
|
|
|
logger.debug("[" + getIpAddr() + "] MallPermissionController::getMenusById"); |
|
|
|
MallUserInfo user = getUser(); |
|
|
|
return new ResultData(Result.SUCCESS, "成功", mallPermissionService.getUserMenuList(user, parentId)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |