package net.wicp.tams.app.duckula.controller.service.cas;

import java.util.List;
import java.util.Set;

import net.wicp.tams.app.duckula.controller.bean.models.SysResource;
import net.wicp.tams.app.duckula.controller.bean.models.SysRole;
import net.wicp.tams.common.apiext.json.easyuibean.EasyUINode;
import net.wicp.tams.common.callback.IConvertValue;

/****
 * 菜单相关服务
 * 
 * @author Administrator
 * 
 */
public interface IMenuService {
	/****
	 * 跟据角色查到所拥有的节点，由于要查孙子节点，不能传入moduleId进行查询
	 * 
	 * @param roles
	 * @param isRoot true:只查询模块 false:查询模块以下的所有菜单
	 * @return
	 */
	public List<SysResource> findAllModule(List<SysRole> roles, boolean isRoot);

	/**
	 * 找出所有超级用户才能访问的资源
	 * 
	 * @return
	 */
	public Set<Long> findSuperResId();

	/***
	 * 查询指定模块下面指定角色所有子节节点
	 * 
	 * @param moduleId
	 * @param roles
	 * @param I18NConvert
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public List<EasyUINode> findModuleMenuForRoles(int moduleId, List<SysRole> roles, IConvertValue I18NConvert);

	/*****
	 * 查询所有模块及其子菜单，
	 * 
	 * @param i18NConvert
	 * @param hasUnallot      是否需要“未分配的资源”虚拟模块
	 * @param hasDataResource 是否包含数据资源
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public List<EasyUINode> findAllModuleMenu(IConvertValue i18NConvert, boolean hasUnallot, boolean hasDataResource,
			boolean isSuper);

	/**
	 * 查找需要同步的资源
	 * 
	 * @return
	 */
	public List<SysResource> findSyncRes();

}
