Browse Source

[菜单权限][修改]:基础api修改

release_toaliyun_real
Stormeye Wu 7 years ago
parent
commit
60c416f365
4 changed files with 58 additions and 132 deletions
  1. +17
    -125
      mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java
  2. +8
    -1
      mallinkService/src/main/java/com/iformall/service/MallPermissionService.java
  3. +32
    -5
      mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java
  4. +1
    -1
      mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java

+ 17
- 125
mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java View File

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


}

+ 8
- 1
mallinkService/src/main/java/com/iformall/service/MallPermissionService.java View File

@@ -35,7 +35,14 @@ public interface MallPermissionService {
* @param userInfo
* @return
*/
List<MallPermission> getUserMenuList(MallUserInfo userInfo);
List<MallPermission> getUserMenuList(MallUserInfo userInfo, Long parentId);

/**
* 用户菜单ID List
* @param userInfo
* @return
*/
List<Long> queryUserMenuIds(MallUserInfo userInfo, Long parentId);

/**
* 根据实体查询分页列表


+ 32
- 5
mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java View File

@@ -70,20 +70,40 @@ public class MallPermissionServiceImpl implements MallPermissionService {
}

@Override
public List<MallPermission> getUserMenuList(MallUserInfo userInfo) {
public List<Long> queryUserMenuIds(MallUserInfo userInfo, Long parentId) {
List<Long> mpList = new ArrayList<Long>();
if(userInfo.isFmSuperAdmin() ||
userInfo.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) {
List<MallPermission> mps = getAllMenuListByParentId(parentId, null);
mps.stream().forEach(mp->{
mpList.add(mp.getId());
});
return mpList;
} else {
List<Long> menuIdList = mallUserInfoMapper.queryAllMenuId(userInfo.getId());
List<MallPermission> mps = getAllMenuListByParentId(parentId, menuIdList);
mps.stream().forEach(mp->{
mpList.add(mp.getId());
});
return mpList;
}
}

@Override
public List<MallPermission> getUserMenuList(MallUserInfo userInfo, Long parentId) {
if(userInfo.isFmSuperAdmin()) {
// 富茂超级管理员,返回所有菜单
return getAllMenuList(null);
return getAllMenuListByParentId(parentId, null);
}
else if(userInfo.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) {
// 租户超管
String menus = wxMallMapper.queryMenusByTenantId(userInfo.getTenantId());
JSONArray menuIdList = JSON.parseArray(menus);
return getAllMenuList(menuIdList.toJavaList(Long.class));
return getAllMenuListByParentId(0L, menuIdList.toJavaList(Long.class));
} else {
//用户菜单列表
List<Long> menuIdList = mallUserInfoMapper.queryAllMenuId(userInfo.getId());
return getAllMenuList(menuIdList);
return getAllMenuListByParentId(0L, menuIdList);
}
}

@@ -91,8 +111,15 @@ public class MallPermissionServiceImpl implements MallPermissionService {
* 获取所有菜单列表
*/
private List<MallPermission> getAllMenuList(List<Long> menuIdList){
return getAllMenuListByParentId(0L, menuIdList);
}

/**
* 获取所有菜单列表
*/
private List<MallPermission> getAllMenuListByParentId(Long parentId, List<Long> menuIdList){
//查询根菜单列表
List<MallPermission> menuList = queryListParentId(0L, menuIdList);
List<MallPermission> menuList = queryListParentId(parentId, menuIdList);
//递归获取子菜单
getMenuTreeList(menuList, menuIdList);



+ 1
- 1
mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java View File

@@ -62,7 +62,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);


Loading…
Cancel
Save