package com.blueland.dao;

/**
 * @author 代码自动生成工具
 * @version 1.0
 * @since  
 */
 
import java.util.*;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.blueland.bo.*;

import com.blueland.model.TPfMenu;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;



@Mapper
public interface MenuDao  extends BaseMapper<TPfMenu> {
	
	/**
	 * 查询所有数据列表
	 * @param appId
	 * @param parentId
	 * @return
	 * 根据appId获取菜单
	 */
	public List<MenuEntity> findAppIdMenuList(@Param("appId") String appId, @Param("parentId") String parentId);

	public List<MenuEntity> getMenu(@Param("appId")String appId,@Param("userId") String userId,@Param("menuType") String menuType, @Param("menuId")String menuId);

	public List<MenuEntity> getMenuIsOpenStatus(String appId);

	public List<MenuEntity> getMenuAll(@Param("appId")String appId, @Param("menuName")String menuName, @Param("parentName")String parentName,@Param("menuType")String menuType);

	public List<MenuEntity> getMenuTop(@Param("appId")String appId, @Param("menuName")String menuName, @Param("parentName")String parentName,@Param("menuType")String menuType);

	public List<MenuEntity> getMenuNoTop(@Param("appId")String appId, @Param("menuName")String menuName, @Param("parentName")String parentName,@Param("menuType")String menuType);

	public List<Map<String, Object>> findListByPid(String pid);

	public List<MenuEntity> getParent(@Param("menuId")String menuId,@Param("appId") String appId);

	public List<MenuEntity> listRoleMenu(String appId);

	public List<MenuEntity> getParentRole(@Param("menuId")String menuId,@Param("appId") String appId,@Param("roleId") String roleId);

	public int getMenuLevel(String menuParentId);

	public List<MenuEntity> getMenuCode(@Param("menuCode")String menuCode, @Param("userId")String userId,@Param("appId")String appId,@Param("menuType")String menuType);

	public List<MenuEntity> getButtonByMenuCode(@Param("menuCode")String menuCode);
	
	public List<MenuEntity> getMenuByRoleIdAndAppId(@Param("appId") String appId,@Param("roleId") String roleId);
	
	/**
	 * 据staffcode和appid查询改员工的一级菜单、操作权限目录
	 * @param appId
	 * @param staffCode
	 * @return
	 * @author hpp
	 * @Time 2021年5月18日 上午9:47:59
	 */
	public List<MenuEntity> getMenuTopByStaffCode(@Param("appId") String appId, @Param("staffCode") String staffCode);
	
	/**
	 * 查看该员工所拥有的下家菜单、操作权限
	 * @param menuId
	 * @param appId
	 * @param staffCode
	 * @return
	 * @author hpp
	 * @Time 2021年5月18日 上午10:29:10
	 */
	public List<MenuEntity> getParentByStaffCode(@Param("menuId")String menuId, @Param("appId")String appId, @Param("staffCode")String staffCode);


	@InterceptorIgnore(tenantLine = "true")
    List<RoleMenuRedisDTO> findListRoleMenu(@Param("appId") String appId);

	@InterceptorIgnore(tenantLine = "true")
    List<MenuEntity> findMenuList(@Param("appId") String appId);

	List<MenuEntity> findList( @Param("bo") MenuEntity bo);

	Page<MenuEntity> findPage(@Param("page")Page<MenuEntity> page,  @Param("bo") MenuEntity entity);
	// 6.0.0

	List<MenuEntity> getMenuByPostCode(@Param("appId")String appId,@Param("postCode") String postCode,@Param("menuType") String menuType, @Param("menuId")String menuId);

	List<MenuEntity> getMenuBuCode(@Param("menuCode")String menuCode, @Param("postCode")String postCode,@Param("appId")String appId,@Param("menuType")String menuType);

	@InterceptorIgnore(tenantLine = "true")
	void deleteMenuByAppId(@Param("appId") String appId);
}
