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