
# 业务背景
### 诉求:
期望按照特定规则隐藏左侧菜单项
### 痛点分析:
通常情况下,我们是通过配置单据权限来实现菜单的显隐。但是这样会遇到几个问题:
1. 针对全员应用不验权的单据,虽然我们也有方法配置全员应用指定单据验权功能,但是配置麻烦;
2. 只有实体才可以配置权限,有些菜单并非实体表单,所以在权限配置界面选不到;
3. 有些场景下,需要限制普通用户对各功能模块的基础资料的修改,那么在权限配置的时候,需要去各个云节点下授权,工作量太大
# 效果预览
1. 开发平台菜单配置情况:

2. 页面原始显示效果如图:

3. 最终想要实现的效果:隐藏【测试单据一】

# 实现步骤
1. 访问路径:【开发服务云】--【扩展平台】--【业务扩展点】--【业务扩展场景】
2. 搜索编码BOS_SVC_PORTAL_MENU_PERM,如图:

3. 点击【绑定插件】按钮,然后在详情页注册我们自己写的插件,如图:

4. 插件代码如下:
```
package kd.hr.hrt.dada.demo.LicenseCheck;
import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.db.DB;
import kd.bos.db.DBRoute;
import kd.bos.portal.service.IPortalAppMenuExtService;
import java.util.*;
public class PortalAppMenuExtDemoservice implements IPortalAppMenuExtService {
@Override
public Map<String, Set<String>> getHideMenuIdsByBizAppIds(Long userId, Map<String, Set<String>> appIdAndMenuIdMap) {
Map<String, Set<String>> map = new HashMap<>();
//获取对应表单挂载的应用下的菜单id列表;
String sql = "select fid from t_meta_menuruntime tmm where fformid = ?";
Object[] params = new Object[]{"testone"};
DataSet dataSet = DB.quer