Commit d95d42cc authored by Junling Bu's avatar Junling Bu
Browse files

fix[litemall-admin-api]: 权限值列表修复

parent 7dba6ce5
...@@ -13,15 +13,12 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -13,15 +13,12 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
public class PermissionUtil { public class PermissionUtil {
public static List<PermVo> listPermissions(ApplicationContext context, String basicPackage) { public static List<PermVo> listPermVo(List<Permission> permissions) {
List<PermVo> root = new ArrayList<>(); List<PermVo> root = new ArrayList<>();
List<Permission> permissions = findPermissions(context, basicPackage);
for (Permission permission : permissions) { for (Permission permission : permissions) {
RequiresPermissions requiresPermissions = permission.getRequiresPermissions(); RequiresPermissions requiresPermissions = permission.getRequiresPermissions();
RequiresPermissionsDesc requiresPermissionsDesc = permission.getRequiresPermissionsDesc(); RequiresPermissionsDesc requiresPermissionsDesc = permission.getRequiresPermissionsDesc();
...@@ -88,7 +85,7 @@ public class PermissionUtil { ...@@ -88,7 +85,7 @@ public class PermissionUtil {
return root; return root;
} }
public static List<Permission> findPermissions(ApplicationContext context, String basicPackage) { public static List<Permission> listPermission(ApplicationContext context, String basicPackage) {
Map<String, Object> map = context.getBeansWithAnnotation(Controller.class); Map<String, Object> map = context.getBeansWithAnnotation(Controller.class);
List<Permission> permissions = new ArrayList<>(); List<Permission> permissions = new ArrayList<>();
for (Map.Entry<String, Object> entry : map.entrySet()) { for (Map.Entry<String, Object> entry : map.entrySet()) {
...@@ -143,4 +140,11 @@ public class PermissionUtil { ...@@ -143,4 +140,11 @@ public class PermissionUtil {
return permissions; return permissions;
} }
public static Set<String> listPermissionString(List<Permission> permissions) {
Set<String> permissionsString = new HashSet<>();
for(Permission permission : permissions){
permissionsString.add(permission.getRequiresPermissions().value()[0]);
}
return permissionsString;
}
} }
...@@ -50,7 +50,7 @@ public class AdminCouponController { ...@@ -50,7 +50,7 @@ public class AdminCouponController {
return ResponseUtil.ok(data); return ResponseUtil.ok(data);
} }
@RequiresPermissions("admin:coupon:list") @RequiresPermissions("admin:coupon:listuser")
@RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="查询用户") @RequiresPermissionsDesc(menu={"推广管理" , "优惠券管理"}, button="查询用户")
@GetMapping("/listuser") @GetMapping("/listuser")
public Object listuser(Integer userId, Integer couponId, Short status, public Object listuser(Integer userId, Integer couponId, Short status,
......
...@@ -8,6 +8,7 @@ import org.apache.shiro.subject.Subject; ...@@ -8,6 +8,7 @@ import org.apache.shiro.subject.Subject;
import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc; import org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;
import org.linlinjava.litemall.admin.util.AdminResponseCode; import org.linlinjava.litemall.admin.util.AdminResponseCode;
import org.linlinjava.litemall.admin.util.PermVo; import org.linlinjava.litemall.admin.util.PermVo;
import org.linlinjava.litemall.admin.util.Permission;
import org.linlinjava.litemall.admin.util.PermissionUtil; import org.linlinjava.litemall.admin.util.PermissionUtil;
import org.linlinjava.litemall.core.util.JacksonUtil; import org.linlinjava.litemall.core.util.JacksonUtil;
import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.core.util.ResponseUtil;
...@@ -138,30 +139,25 @@ public class AdminRoleController { ...@@ -138,30 +139,25 @@ public class AdminRoleController {
@Autowired @Autowired
private ApplicationContext context; private ApplicationContext context;
private List<PermVo> systemPermissions = null; private List<PermVo> systemPermissions = null;
private Set<String> systemPermissionsString = null;
private List<PermVo> getSystemPermissions(){ private List<PermVo> getSystemPermissions(){
final String basicPackage = "org.linlinjava.litemall.admin"; final String basicPackage = "org.linlinjava.litemall.admin";
if(systemPermissions == null){ if(systemPermissions == null){
systemPermissions = PermissionUtil.listPermissions(context, basicPackage); List<Permission> permissions = PermissionUtil.listPermission(context, basicPackage);
systemPermissions = PermissionUtil.listPermVo(permissions);
systemPermissionsString = PermissionUtil.listPermissionString(permissions);
} }
return systemPermissions; return systemPermissions;
} }
private Set<String> getSystemPermissionsString(){
getSystemPermissions();
Set<String> permissions = new HashSet<String>();
for(PermVo permVo : systemPermissions){
permissions.add(permVo.getId());
}
return permissions;
}
private Set<String> getAssignedPermissions(Integer roleId){ private Set<String> getAssignedPermissions(Integer roleId){
// 这里需要注意的是,如果存在超级权限*,那么这里需要转化成当前所有系统权限。 // 这里需要注意的是,如果存在超级权限*,那么这里需要转化成当前所有系统权限。
// 之所以这么做,是因为前端不能识别超级权限,所以这里需要转换一下。 // 之所以这么做,是因为前端不能识别超级权限,所以这里需要转换一下。
Set<String> assignedPermissions = null; Set<String> assignedPermissions = null;
if(permissionService.checkSuperPermission(roleId)){ if(permissionService.checkSuperPermission(roleId)){
assignedPermissions = getSystemPermissionsString(); getSystemPermissions();
assignedPermissions = systemPermissionsString;
} }
else{ else{
assignedPermissions = permissionService.queryByRoleId(roleId); assignedPermissions = permissionService.queryByRoleId(roleId);
...@@ -175,7 +171,7 @@ public class AdminRoleController { ...@@ -175,7 +171,7 @@ public class AdminRoleController {
* *
* @return 系统所有权限列表和管理员已分配权限 * @return 系统所有权限列表和管理员已分配权限
*/ */
@RequiresPermissions("admin:role:permission") @RequiresPermissions("admin:role:permission:get")
@RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="权限详情") @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="权限详情")
@GetMapping("/permissions") @GetMapping("/permissions")
public Object getPermissions(Integer roleId) { public Object getPermissions(Integer roleId) {
...@@ -195,7 +191,7 @@ public class AdminRoleController { ...@@ -195,7 +191,7 @@ public class AdminRoleController {
* @param body * @param body
* @return * @return
*/ */
@RequiresPermissions("admin:role:permission") @RequiresPermissions("admin:role:permission:update")
@RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="权限变更") @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="权限变更")
@PostMapping("/permissions") @PostMapping("/permissions")
public Object updatePermissions(@RequestBody String body) { public Object updatePermissions(@RequestBody String body) {
......
...@@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin; ...@@ -3,6 +3,7 @@ package org.linlinjava.litemall.admin;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.linlinjava.litemall.admin.util.PermVo; import org.linlinjava.litemall.admin.util.PermVo;
import org.linlinjava.litemall.admin.util.Permission;
import org.linlinjava.litemall.admin.util.PermissionUtil; import org.linlinjava.litemall.admin.util.PermissionUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
...@@ -23,7 +24,8 @@ public class PermissionTest { ...@@ -23,7 +24,8 @@ public class PermissionTest {
@Test @Test
public void test() { public void test() {
final String basicPackage = "org.linlinjava.litemall.admin"; final String basicPackage = "org.linlinjava.litemall.admin";
List<PermVo> permVoList = PermissionUtil.listPermissions(context, basicPackage); List<Permission> permissionList = PermissionUtil.listPermission(context, basicPackage);
List<PermVo> permVoList = PermissionUtil.listPermVo(permissionList);
permVoList.stream().forEach(System.out::println); permVoList.stream().forEach(System.out::println);
} }
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment