TreeNode (树对象)
用于页面treeview
package com.changan.cvserver.entity;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
*
* ClassName: TreeNode <br/>
* Function: treeView类封装. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2017年12月5日 上午10:42:40 <br/>
*
* @author yangjing
* @version
* @since JDK 1.7
*/
public class TreeNode implements Serializable{
private static final long serialVersionUID = -202254381099838216L;
private String id;
private String text;
private String icon;
private String href;
private String selectable;
private String backColor;
private Map<String,Object> state;
private String[] tags;
private List<TreeNode> nodes;
/**
* @return id
*/
public String getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* @return text
*/
public String getText() {
return text;
}
/**
* @param text the text to set
*/
public void setText(String text) {
this.text = text;
}
/**
* @return icon
*/
public String getIcon() {
return icon;
}
/**
* @param icon the icon to set
*/
public void setIcon(String icon) {
this.icon = icon;
}
/**
* @return href
*/
public String getHref() {
return href;
}
/**
* @param href the href to set
*/
public void setHref(String href) {
this.href = href;
}
/**
* @return selectable
*/
public String getSelectable() {
return selectable;
}
/**
* @param selectable the selectable to set
*/
public void setSelectable(String selectable) {
this.selectable = selectable;
}
/**
* @return state
*/
public Map<String, Object> getState() {
return state;
}
/**
* @param state the state to set
*/
public void setState(Map<String, Object> state) {
this.state = state;
}
/**
* @return tags
*/
public String[] getTags() {
return tags;
}
/**
* @param tags the tags to set
*/
public void setTags(String[] tags) {
this.tags = tags;
}
/**
* @return nodes
*/
public List<TreeNode> getNodes() {
return nodes;
}
/**
* @param nodes the nodes to set
*/
public void setNodes(List<TreeNode> nodes) {
this.nodes = nodes;
}
/**
* backColor.
*
* @return the backColor
* @since JDK 1.7
*/
public String getBackColor() {
return backColor;
}
/**
* backColor.
*
* @param backColor the backColor to set
* @since JDK 1.7
*/
public void setBackColor(String backColor) {
this.backColor = backColor;
}
}
菜单实体类
用于记录菜单信息
package com.changan.cvserver.entity;
import java.util.Date;
import java.util.List;
import com.changan.anywhere.persistence.entity.IdEntity;
/**
*
* ClassName: Menu <br/>
* Function: 菜单实体. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2017年12月4日 下午3:37:46 <br/>
*
* @author yangjing
* @version
* @since JDK 1.7
*/
public class Menu extends IdEntity {
/**
* 状态:0启用
*/
public static final String STATUS_0 = "0";
/**
* 状态:1禁用
*/
public static final String STATUS_1 = "1";
/**
*
*/
private static final long serialVersionUID = 3787988532621657485L;
/**
* 菜单名称
*/
private String name;
/**
* 父id
*/
private String parentId;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人id
*/
private String createUserId;
/**
* 图标
*/
private String icon;
/**
* 排序
*/
private int sqm;
/**
* 状态(0:启用 1:禁用)
*/
private String status;
/**
* 备注
*/
private String remark;
/**
* url
*/
private String url;
/**
* 查询条件扩展字段 开始时间
*/
private String beginTime;
/**
* 查询条件扩展字段 结束时间
*/
private String endTime;
/**
* 查询条件 当前登录人对应的菜单id集合
*/
private List<String> haveMenuIDList;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getCreateUserId() {
return createUserId;
}
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public int getSqm() {
return sqm;
}
public void setSqm(int sqm) {
this.sqm = sqm;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getBeginTime() {
return beginTime;
}
public void setBeginTime(String beginTime) {
this.beginTime = beginTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public List<String> getHaveMenuIDList() {
return haveMenuIDList;
}
public void setHaveMenuIDList(List<String> haveMenuIDList) {
this.haveMenuIDList = haveMenuIDList;
}
}
菜单表文件
Mysql数据库
/*DDL 信息*/------------
CREATE TABLE `menu` (
`id` varchar(36) NOT NULL COMMENT 'id',
`name` varchar(200) NOT NULL COMMENT '菜单名称',
`parent_id` varchar(36) DEFAULT NULL COMMENT '父id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(36) DEFAULT NULL COMMENT '创建人id',
`icon` varchar(50) DEFAULT NULL COMMENT '图标',
`status` int(2) NOT NULL DEFAULT '0' COMMENT '状态(0:启用 1:禁用)',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`url` varchar(500) DEFAULT NULL COMMENT '访问后端url',
`sqm` int(10) DEFAULT NULL COMMENT '排序',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统菜单表'
后端叠菜单信息(处理TreeNode)
组装TreeNode信息,由于框架的原因,TreeNodeDTO和TreeNode是一样的;只是用于转换
- 获取所有菜单信息
@Override
public List<TreeNodeDTO> getAllMenu() {
//第一步获取所有的更节点菜单
List<Menu> rootMenus = getRootMenu(new Menu());
List<Menu> menuData = getMenus(new Menu());
if (rootMenus != null && rootMenus.size() > 0) {
List<TreeNode> treeNodes = new ArrayList<TreeNode>();
for (Menu menu : rootMenus) {
TreeNode treeNode = convert(menu);
parseMenu(menuData, treeNode);
treeNodes.add(treeNode);
}
return (List<TreeNodeDTO>) BeanMapper.mapList(treeNodes, TreeNodeDTO.class);
}
return null;
}
- getRootMenu:获取所有根节点信息(父节点为空)
/**
*
* getRootMenu:获取所有根节点信息. <br/>
*
* @author yangjing
* @param menu
* @return
* @since JDK 1.7
*/
private List<Menu> getRootMenu(Menu menu) {
return menuDao.getRootMenu(menu);
}
- getMenus:获取所有菜单信息
/**
*
* getMenus:获取所有菜单信息. <br/>
*
* @author yangjing
* @return
* @since JDK 1.7
*/
public List<Menu> getMenus(Menu menu) {
return menuDao.getMenuInfos(menu);
}
- parseMenu:组装菜单,及组装TreeNode信息
/**
*
* parseMenu:组装菜单. <br/>
*
* @author yangjing
* @param menuData
* @param treeNode
* @since JDK 1.7
*/
public void parseMenu(List<Menu> menuData, TreeNode treeNode) {
List<Menu> rcms = getChildren(treeNode.getId(), menuData);
if (rcms != null && rcms.size() > 0) {
List<TreeNode> rootTreeNode = new ArrayList<TreeNode>();
for (Menu menu : rcms) {
List<Menu> cms = getChildren(menu.getId(), menuData);
TreeNode ctn = convert(menu);
rootTreeNode.add(ctn);
if (cms != null && cms.size() > 0) {
parseMenu(menuData, ctn);
}
}
treeNode.setNodes(rootTreeNode);
}
}
- getChildren: 获取子菜单信息
/**
*
* getChildren:获取子菜单信息. <br/>
*
* @author yangjing
* @param menuid
* @param menus
* @return
* @since JDK 1.7
*/
public List<Menu> getChildren(String menuid, List<Menu> menus) {
List<Menu> menuList = new ArrayList<Menu>();
for (Menu menu : menus) {
if (menuid.equals(menu.getParentId()) ) {
menuList.add(menu);
}
}
return menuList;
}
- 组装TreeNode对象信息
public TreeNode convert(Menu menu) {
TreeNode treeNode = new TreeNode();
treeNode.setId(menu.getId());
treeNode.setText(menu.getName());
treeNode.setIcon(menu.getIcon());
treeNode.setHref(menu.getUrl());
treeNode.setSelectable("true");
treeNode.setTags(new String[]{menu.getId()+"",menu.getStatus()+""});
Map<String, Object> state = new HashMap<String,Object>();
state.put("disabled",false);
state.put("expanded", false);
state.put("selected", false);
treeNode.setState(state);
return treeNode;
}