菜单扩展
核心接口
MenuOperationProvider
java
public interface MenuOperationProvider {
/**
* 创建菜单
* @param vo 创建参数
*/
void createMenu(CreateMenuVo vo);
/**
* 更新菜单
* @param vo 更新参数
*/
void updateMenu(UpdateMenuVo vo);
/**
* 查询菜单列表
* @return 菜单列表
*/
List<MenuDto> queryMenu();
/**
* 删除菜单
* @param menuNo 菜单编号
*/
void deleteMenu(String menuNo);
}
public interface MenuOperationProvider {
/**
* 创建菜单
* @param vo 创建参数
*/
void createMenu(CreateMenuVo vo);
/**
* 更新菜单
* @param vo 更新参数
*/
void updateMenu(UpdateMenuVo vo);
/**
* 查询菜单列表
* @return 菜单列表
*/
List<MenuDto> queryMenu();
/**
* 删除菜单
* @param menuNo 菜单编号
*/
void deleteMenu(String menuNo);
}
方法说明
void createMenu(CreateMenuVo vo);
: 创建菜单- 方法入参定义如下:
java
public class CreateMenuVo {
/**
* 菜单编号
*/
private String menuNo;
/**
* 菜单名称
*/
private String menuName;
/**
* 前置菜单
*/
private String preMenuNo;
/**
* 父菜单
*/
private String parentMenuNo;
/**
* 菜单路由
*/
private String menuUrl;
/**
* 备注
*/
private String remark;
/**
* 菜单图标
*/
private String menuIcon;
/**
* 菜单类型 0:系统菜单/1:页签/2:按钮
*/
private String menuType;
}
public class CreateMenuVo {
/**
* 菜单编号
*/
private String menuNo;
/**
* 菜单名称
*/
private String menuName;
/**
* 前置菜单
*/
private String preMenuNo;
/**
* 父菜单
*/
private String parentMenuNo;
/**
* 菜单路由
*/
private String menuUrl;
/**
* 备注
*/
private String remark;
/**
* 菜单图标
*/
private String menuIcon;
/**
* 菜单类型 0:系统菜单/1:页签/2:按钮
*/
private String menuType;
}
void updateMenu(UpdateMenuVo vo);
: 更新菜单- 方法入参定义如下:
java
public class UpdateMenuVo {
/**
* 菜单编号
*/
private String menuNo;
/**
* 菜单名称
*/
private String menuName;
/**
* 菜单路由
*/
private String menuUrl;
/**
* 备注
*/
private String remark;
/**
* 菜单图标
*/
private String menuIcon;
/**
* 菜单类型 0:系统菜单/1:页签/2:按钮
*/
private String menuType;
}
public class UpdateMenuVo {
/**
* 菜单编号
*/
private String menuNo;
/**
* 菜单名称
*/
private String menuName;
/**
* 菜单路由
*/
private String menuUrl;
/**
* 备注
*/
private String remark;
/**
* 菜单图标
*/
private String menuIcon;
/**
* 菜单类型 0:系统菜单/1:页签/2:按钮
*/
private String menuType;
}
List<MenuDto> queryMenu();
: 查询菜单列表- 方法出参定义如下:
java
public class MenuDto {
/**
* 菜单编号
*/
private String menuNo;
/**
* 菜单名称
*/
private String menuName;
/**
* 菜单路由
*/
private String menuUrl;
/**
* 子菜单
*/
private List<MenuDto> children;
}
public class MenuDto {
/**
* 菜单编号
*/
private String menuNo;
/**
* 菜单名称
*/
private String menuName;
/**
* 菜单路由
*/
private String menuUrl;
/**
* 子菜单
*/
private List<MenuDto> children;
}
void deleteMenu(String menuNo);
: 删除菜单- 入参说明:菜单编号
示例
java
public class LcpMenuOperationProvider implements MenuOperationProvider {
private final List<CreateMenuVo> menuList = new ArrayList<>();
public LcpMenuOperationProvider() {
System.out.println("======================lcp menu================");
}
@Override
public void createMenu(CreateMenuVo vo) {
// todo: 新增菜单
this.menuList.add(vo);
}
@Override
public void updateMenu(UpdateMenuVo vo) {
// todo: 修改菜单
Optional<CreateMenuVo> first = this.menuList.stream().filter(e -> vo.getMenuNo().equals(e.getMenuNo())).findFirst();
if (!first.isPresent()) {
return;
}
BeanUtil.copyProperties(vo, first.get(), CopyOptions.create().setIgnoreNullValue(true));
}
@Override
public List<MenuDto> queryMenu() {
// todo:查询菜单列表
return this.menuList.stream().map(e -> BeanUtils.copyProperties(e, MenuDto.class)).collect(Collectors.toList());
}
@Override
public void deleteMenu(String menuNo) {
// todo: 删除菜单
this.menuList.removeIf(e -> menuNo.equals(e.getMenuNo()));
}
}
public class LcpMenuOperationProvider implements MenuOperationProvider {
private final List<CreateMenuVo> menuList = new ArrayList<>();
public LcpMenuOperationProvider() {
System.out.println("======================lcp menu================");
}
@Override
public void createMenu(CreateMenuVo vo) {
// todo: 新增菜单
this.menuList.add(vo);
}
@Override
public void updateMenu(UpdateMenuVo vo) {
// todo: 修改菜单
Optional<CreateMenuVo> first = this.menuList.stream().filter(e -> vo.getMenuNo().equals(e.getMenuNo())).findFirst();
if (!first.isPresent()) {
return;
}
BeanUtil.copyProperties(vo, first.get(), CopyOptions.create().setIgnoreNullValue(true));
}
@Override
public List<MenuDto> queryMenu() {
// todo:查询菜单列表
return this.menuList.stream().map(e -> BeanUtils.copyProperties(e, MenuDto.class)).collect(Collectors.toList());
}
@Override
public void deleteMenu(String menuNo) {
// todo: 删除菜单
this.menuList.removeIf(e -> menuNo.equals(e.getMenuNo()));
}
}
注册
根据项目实际情况将上述创建的bean添加到spring容器中:
在XxxConfiguration配置类中注册
java
@Configuration
public class XxxConfiguration {
@Bean
public LcpMenuOperationProvider kocaMenuOperationProvider() {
return new KocaMenuOperationProvider();
}
}
@Configuration
public class XxxConfiguration {
@Bean
public LcpMenuOperationProvider kocaMenuOperationProvider() {
return new KocaMenuOperationProvider();
}
}