liuyc 2 жил өмнө
parent
commit
d373b03d51

+ 6 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleMenu.java

@@ -61,5 +61,11 @@ public class RoleMenu implements Serializable {
 	@ApiModelProperty(value = "角色id")
 	private Long roleId;
 
+	/**
+	 * 勾选状态
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty(value = "勾选状态")
+	private String status;
 
 }

+ 2 - 2
blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/GrantVO.java

@@ -19,10 +19,10 @@ public class GrantVO implements Serializable {
     private List<Long> roleIds;
 
     @ApiModelProperty(value = "menuIds集合")
-    private List<Long> menuIds;
+    private List<String> menuIds;
 
     @ApiModelProperty(value = "menuClientIds集合")
-    private List<Long> menuClientIds;
+    private List<String> menuClientIds;
 
     @ApiModelProperty(value = "topMenuIds集合")
     private List<Long> topMenuIds;

+ 1 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.xml

@@ -7,6 +7,7 @@
         <id column="id" property="id"/>
         <result column="menu_id" property="menuId"/>
         <result column="role_id" property="roleId"/>
+        <result column="status" property="status"/>
     </resultMap>
 
     <select id="selectRoleMenuPage" resultMap="roleMenuResultMap">

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java

@@ -64,7 +64,7 @@ public interface IRoleService extends IService<Role> {
      * @param apiScopeIds  接口权限id集合
      * @return 是否成功
      */
-    boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> menuClientIds, List<Long> dataScopeIds, List<Long> apiScopeIds, List<Long> tableOwners);
+    boolean grant(@NotEmpty List<Long> roleIds, List<String> menuIds, List<String> menuClientIds, List<Long> dataScopeIds, List<Long> apiScopeIds, List<Long> tableOwners);
 
     /**
      * 获取角色ID

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/service/ITopMenuService.java

@@ -36,6 +36,6 @@ public interface ITopMenuService extends BaseService<TopMenu> {
 	 * @param menuIds    菜单id集合
 	 * @return 是否成功
 	 */
-	boolean grant(@NotEmpty List<Long> topMenuIds, @NotEmpty List<Long> menuIds);
+	boolean grant(@NotEmpty List<Long> topMenuIds, @NotEmpty List<String> menuIds);
 
 }

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java

@@ -214,7 +214,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
     @Override
     public List<String> roleTreeKeys(String roleIds) {
         List<RoleMenu> roleMenus = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().in(RoleMenu::getRoleId, Func.toLongList(roleIds)));
-        return roleMenus.stream().map(roleMenu -> Func.toStr(roleMenu.getMenuId())).collect(Collectors.toList());
+        return roleMenus.stream().map(roleMenu -> Func.toStr(roleMenu.getMenuId() + "---" + roleMenu.getStatus())).collect(Collectors.toList());
     }
 
     @Override

+ 15 - 6
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java

@@ -87,11 +87,11 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> menuClientIds, List<Long> dataScopeIds, List<Long> apiScopeIds, List<Long> tableOwners) {
+    public boolean grant(@NotEmpty List<Long> roleIds, List<String> menuIds, List<String> menuClientIds, List<Long> dataScopeIds, List<Long> apiScopeIds, List<Long> tableOwners) {
         return grantRoleMenu(roleIds, menuIds, menuClientIds) && grantDataScope(roleIds, dataScopeIds) && grantApiScope(roleIds, apiScopeIds) && submitRoleAndTableOwner(roleIds, tableOwners);
     }
 
-    private boolean grantRoleMenu(List<Long> roleIds, List<Long> menuIds, List<Long> menuClientIds) {
+    private boolean grantRoleMenu(List<Long> roleIds, List<String> menuIds, List<String> menuClientIds) {
         // 防止越权配置超管角色
         Long administratorCount = baseMapper.selectCount(Wrappers.<Role>query().lambda().eq(Role::getRoleAlias, RoleConstant.ADMINISTRATOR).in(Role::getId, roleIds));
         if (!AuthUtil.isAdministrator() && administratorCount > 0L) {
@@ -110,7 +110,8 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
         roleIds.forEach(roleId -> menuIds.forEach(menuId -> {
             RoleMenu roleMenu = new RoleMenu();
             roleMenu.setRoleId(roleId);
-            roleMenu.setMenuId(menuId);
+            roleMenu.setMenuId(Long.valueOf(menuId.split("---")[0]));
+            roleMenu.setStatus(menuId.split("---")[1]);
             roleMenus.add(roleMenu);
         }));
 
@@ -118,7 +119,8 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
         roleIds.forEach(roleId -> menuClientIds.forEach(menuIdC -> {
             RoleMenu roleMenu = new RoleMenu();
             roleMenu.setRoleId(roleId);
-            roleMenu.setMenuId(menuIdC);
+            roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
+            roleMenu.setStatus(menuIdC.split("---")[1]);
             roleMenus.add(roleMenu);
         }));
 
@@ -132,7 +134,14 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
         return true;
     }
 
-    private void recursionRoleMenu(List<Long> roleIds, List<Long> menuIds) {
+    private void recursionRoleMenu(List<Long> roleIds, List<String> menuIdsAll) {
+        //解析menuIds
+        List<Long> menuIds = new ArrayList<>();
+        for (String menuId : menuIdsAll) {
+            String[] split = menuId.split("---");
+            String id = split[0]; //id
+            menuIds.add(Long.valueOf(id));
+        }
         roleIds.forEach(roleId -> baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getParentId, roleId)).forEach(role -> {
             List<RoleMenu> roleMenuList = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().eq(RoleMenu::getRoleId, role.getId()));
             // 子节点过滤出父节点删除的菜单集合
@@ -141,7 +150,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
                 // 删除子节点权限外的菜单集合
                 roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().eq(RoleMenu::getRoleId, role.getId()).in(RoleMenu::getMenuId, collectRoleMenuIds));
                 // 递归设置下属角色菜单集合
-                recursionRoleMenu(Collections.singletonList(role.getId()), menuIds);
+                recursionRoleMenu(Collections.singletonList(role.getId()), menuIdsAll);
             }
         }));
     }

+ 18 - 18
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TopMenuServiceImpl.java

@@ -40,24 +40,24 @@ import java.util.List;
 @AllArgsConstructor
 public class TopMenuServiceImpl extends BaseServiceImpl<TopMenuMapper, TopMenu> implements ITopMenuService {
 
-	private final ITopMenuSettingService topMenuSettingService;
+    private final ITopMenuSettingService topMenuSettingService;
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public boolean grant(@NotEmpty List<Long> topMenuIds, @NotEmpty List<Long> menuIds) {
-		// 删除顶部菜单配置的菜单集合
-		topMenuSettingService.remove(Wrappers.<TopMenuSetting>update().lambda().in(TopMenuSetting::getTopMenuId, topMenuIds));
-		// 组装配置
-		List<TopMenuSetting> menuSettings = new ArrayList<>();
-		topMenuIds.forEach(topMenuId -> menuIds.forEach(menuId -> {
-			TopMenuSetting menuSetting = new TopMenuSetting();
-			menuSetting.setTopMenuId(topMenuId);
-			menuSetting.setMenuId(menuId);
-			menuSettings.add(menuSetting);
-		}));
-		// 新增配置
-		topMenuSettingService.saveBatch(menuSettings);
-		return true;
-	}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean grant(@NotEmpty List<Long> topMenuIds, @NotEmpty List<String> menuIds) {
+        // 删除顶部菜单配置的菜单集合
+        topMenuSettingService.remove(Wrappers.<TopMenuSetting>update().lambda().in(TopMenuSetting::getTopMenuId, topMenuIds));
+        // 组装配置
+        List<TopMenuSetting> menuSettings = new ArrayList<>();
+        topMenuIds.forEach(topMenuId -> menuIds.forEach(menuId -> {
+            TopMenuSetting menuSetting = new TopMenuSetting();
+            menuSetting.setTopMenuId(topMenuId);
+            menuSetting.setMenuId(Long.valueOf(menuId));
+            menuSettings.add(menuSetting);
+        }));
+        // 新增配置
+        topMenuSettingService.saveBatch(menuSettings);
+        return true;
+    }
 
 }