package com.gx.obe.server.management.menu.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.gx.obe.server.common.json.StringDeserializer;

/**
 * 
 * @author
 * @Title: AuthMenuEntity
 * @Package com.gx.obe.server.management.menu.entity
 * @Description:
 * @author: XiaoMa Pro - myzhichao@163.com
 * @date: 2019-05-09
 * @version V1.0
 * @Copyright: 2019 www.msypro.com Inc. All rights reserved.
 * 
 */

@TableName("auth_menu")
public class AuthMenuEntity extends Model<AuthMenuEntity> {
	private static final long serialVersionUID = 1L;

	/**
	 * 菜单主键
	 */
	@TableId("MENU_ID")
	@JsonDeserialize(using = StringDeserializer.class)
	private String id;
	/**
	 * 菜单简称
	 */
	@TableField("MENU_SHORT_NAME")
	@JsonDeserialize(using = StringDeserializer.class)
	private String menuShortName;
	/**
	 * 菜单名称
	 */
	@TableField("MENU_NAME")
	@JsonDeserialize(using = StringDeserializer.class)
	private String menuName;
	/**
	 * 菜单多语言编码
	 */
	@TableField("LANGUAGE_CODE")
	@JsonDeserialize(using = StringDeserializer.class)
	private String languageCode;
	/**
	 * 菜单编码
	 */
	@TableField("MENU_CODE")
	@JsonDeserialize(using = StringDeserializer.class)
	private String menuCode;
	/**
	 * 功能按钮
	 */
	@TableField("FUNCTIONS")
	private byte[] functions;
	/**
	 * 菜单类型
	 */
	@TableField("MENU_TYPE")
	@JsonDeserialize(using = StringDeserializer.class)
	private String menuType;
	/**
	 * 菜单链接RUL
	 */
	@TableField("MENU_URL")
	@JsonDeserialize(using = StringDeserializer.class)
	private String menuUrl;
	/**
	 * 菜单图标
	 */
	@TableField("MENU_ICON")
	@JsonDeserialize(using = StringDeserializer.class)
	private String menuIcon;
	/**
	 * 菜单参数
	 */
	@TableField("MENU_PARAMS")
	@JsonDeserialize(using = StringDeserializer.class)
	private String menuParams;
	/**
	 * 菜单说明
	 */
	@TableField("MENU_MEMO")
	@JsonDeserialize(using = StringDeserializer.class)
	private String menuMemo;
	/**
	 * 菜单使用状态
	 */
	@TableField("USE_STATUS")
	@JsonDeserialize(using = StringDeserializer.class)
	private String useStatus;
	/**
	 * 排序
	 */
	@TableField("SORT_NO")
	private Integer sortNo;
	/**
	 * 父级外键
	 */
	@TableField("PARENT_ID")
	@JsonDeserialize(using = StringDeserializer.class)
	private String parentId;

	@TableField(exist = false)
	private List<AuthMenuEntity> childList = new ArrayList<AuthMenuEntity>();

	@TableField(exist = false)
	private AuthMenuEntity parentMenu;
 

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getMenuShortName() {
		return menuShortName;
	}

	public void setMenuShortName(String menuShortName) {
		this.menuShortName = menuShortName;
	}

	public String getMenuName() {
		return menuName;
	}

	public void setMenuName(String menuName) {
		this.menuName = menuName;
	}

	public String getMenuCode() {
		return menuCode;
	}

	public void setMenuCode(String menuCode) {
		this.menuCode = menuCode;
	}

	public String getLanguageCode() {
		return languageCode;
	}

	public void setLanguageCode(String languageCode) {
		this.languageCode = languageCode;
	}

	public byte[] getFunctions() {
		return functions;
	}

	public void setFunctions(byte[] functions) {
		this.functions = functions;
	}

	public String getMenuType() {
		return menuType;
	}

	public void setMenuType(String menuType) {
		this.menuType = menuType;
	}

	public String getMenuUrl() {
		return menuUrl;
	}

	public void setMenuUrl(String menuUrl) {
		this.menuUrl = menuUrl;
	}

	public String getMenuIcon() {
		return menuIcon;
	}

	public void setMenuIcon(String menuIcon) {
		this.menuIcon = menuIcon;
	}

	public String getMenuParams() {
		return menuParams;
	}

	public void setMenuParams(String menuParams) {
		this.menuParams = menuParams;
	}

	public String getMenuMemo() {
		return menuMemo;
	}

	public void setMenuMemo(String menuMemo) {
		this.menuMemo = menuMemo;
	}

	public String getUseStatus() {
		return useStatus;
	}

	public void setUseStatus(String useStatus) {
		this.useStatus = useStatus;
	}

	public Integer getSortNo() {
		return sortNo;
	}

	public void setSortNo(Integer sortNo) {
		this.sortNo = sortNo;
	}

	public String getParentId() {
		return parentId;
	}

	public void setParentId(String parentId) {
		this.parentId = parentId;
	}

	public static final String MENU_ID = "MENU_ID";

	public static final String MENU_SHORT_NAME = "MENU_SHORT_NAME";

	public static final String MENU_NAME = "MENU_NAME";

	public static final String MENU_CODE = "MENU_CODE";
	
	public static final String LANGUAGE_CODE = "LANGUAGE_CODE";

	public static final String FUNCTIONS = "FUNCTIONS";

	public static final String MENU_TYPE = "MENU_TYPE";

	public static final String MENU_URL = "MENU_URL";

	public static final String MENU_ICON = "MENU_ICON";

	public static final String MENU_PARAMS = "MENU_PARAMS";

	public static final String MENU_MEMO = "MENU_MEMO";

	public static final String USE_STATUS = "USE_STATUS";

	public static final String SORT_NO = "SORT_NO";

	public static final String PARENT_ID = "PARENT_ID";

	@Override
	protected Serializable pkVal() {
		return this.id;
	}

	@Override
	public String toString() {
		return "AuthMenuEntity{" + ", id=" + id + ", menuShortName=" + menuShortName + ", menuName=" + menuName
				+ ", menuCode=" + menuCode + ", functions=" + functions + ", menuType=" + menuType + ", menuUrl="
				+ menuUrl + ", menuIcon=" + menuIcon + ", menuParams=" + menuParams + ", menuMemo=" + menuMemo
				+ ", useStatus=" + useStatus + ", sortNo=" + sortNo + ", parentId=" + parentId + "}";
	}

	public void addChild(AuthMenuEntity childMenu) {
		childList.add(childMenu);
	}
	public AuthMenuEntity getParentMenu() {
		return parentMenu;
	}

	public void setParentMenu(AuthMenuEntity parentMenu) {
		this.parentMenu = parentMenu;
	}

	public List<AuthMenuEntity> getChildList() {
		return childList;
	}

	public void setChildList(List<AuthMenuEntity> childList) {
		this.childList = childList;
	}

}