Foxnic-Web —— 可插拔模块的菜单控制

343 阅读2分钟
Foxnic-Web —— 可插拔模块的菜单控制
概述

  Foxnic-Web 的设计就是业务模块下 Maven 依赖层面可插拔,即只要把对应的模块加入启动项目的 Maven 依赖中那么启动项目就拥有了插入模块的功能,反之亦然。因此,在 Foxnic-Web 的业务模块(Maven Module) 中需要做一些特殊处理,使业务模块插拔时同时体现在菜单上。

  本文中的示例代码均可在 gitee.com/LeeFJ/foxni… 项目中找到。

菜单控制

  Foxnic-Web 在每个业务模块组的 Service 层需要引入 ModuleAuthority 类的子类,如图所示:

  用这个类的 getAuthorities 方法返回其所在模块的菜单权限Key,代码如下所示:

@Component
public class ContractAuthority extends ModuleAuthority {
    /**
	 * 返回最顶层菜单的权限Key
	* */
    @Override
    public String[] getAuthorities() {
        return new String[] {
            // 合同管理
            "contract"
        };
    }
}

  以上代码在 getAuthorities 方法中返回一个数组,这个数组包含当前模块所涉及的菜单的最顶层菜单的权限Key,权限Key在菜单管理定义,如图所示:

  配置完毕,启动应用后就可以获得对应的菜单,如图所示:

参数配置

  然而,有些时候我们希望这种菜单按模块插拔是可控的。在非生产环境,我们希望展示所有的菜单,而在生成环境我们希望只展示已经插入的模块的菜单。

  菜单展示的位置主要有两个地方,一个是首页,另外一个是菜单管理以及角色管理选择权限时展示的菜单。所以,Foxnic-Web 通过两个参数控制这两个位置,如图所示:

  修改参数的配置值,重新登录后即可生效。

小结

  通过本节,可以了解到 Foxnic-Web 的模块是可插拔的,而且通过参数控制,菜单也可随已插入的模块动态发生改变。

相关项目

  gitee.com/LeeFJ/foxni…

  gitee.com/LeeFJ/foxni…

  gitee.com/lank/eam

  gitee.com/LeeFJ/foxni…

官方文档

  foxnicweb.com/docs/doc.ht…