package com.zcloud.service.system;

import java.util.List;

import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.entity.system.Role;

/**
 * 说明：角色服务接口
 * 作者：luoxiaobao
 * 官网：www.qdkjchina.com
 */
public interface RoleService {

	/**通过角色ID获取数据
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findById(PageData pd)throws Exception;

	/**通过id查找(返回角色对象)
	 * @param roleId
	 * @return
	 * @throws Exception
	 */
	public Role getRoleById(String ROLE_ID) throws Exception;

	/**通过组ID获取组下级角色列表
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<Role> listAllRolesByPId(PageData pd) throws Exception;
	public List<Role> listAllRolesById(PageData pd) throws Exception;
	public PageData findByName(String name ,String PARENT_ID)throws Exception;

	/**通过角色编码查找
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData getRoleByRnumber(PageData pd) throws Exception;

	/**添加
	 * @param pd
	 * @throws Exception
	 */
	public void add(PageData pd) throws Exception;

	/**保存修改
	 * @param pd
	 * @throws Exception
	 */
	public void edit(PageData pd) throws Exception;

	/**删除角色
	 * @param ROLE_ID
	 * @throws Exception
	 */
	public void deleteRoleById(String ROLE_ID) throws Exception;

	/**给当前角色附加菜单权限
	 * @param role
	 * @throws Exception
	 */
	public void updateRoleRights(Role role) throws Exception;

	/**给全部子角色加菜单权限
	 * @param pd
	 * @throws Exception
	 */
	public void setAllRights(PageData pd) throws Exception;

	/**权限(增删改查)
	 * @param msg 区分增删改查
	 * @param pd
	 * @throws Exception
	 */
	public void saveB4Button(String msg,PageData pd) throws Exception;

	/**通过角色ID数组获取角色列表
	 * @param arryROLE_ID
	 * @throws Exception
	 */
	public List<Role> getRoleByArryROLE_ID(String[] arryROLE_ID)throws Exception;

	/**角色列表(弹窗选择用)
	 * @param page
	 * @return
	 * @throws Exception
	 */
	public List<PageData> roleListWindow(Page page)throws Exception;

	/**
	 * 查询角色分组list
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> getGroupList(PageData pd)throws Exception;

	/**查询分组内的角色
	 * @param pd
	 * @throws Exception
	 */
	public List<PageData> getRoleListByPid(PageData pd)throws Exception;

	/**通过上级ID和是否主角色查找
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData getRoleByPidAndMain(PageData pd) throws Exception;

	/**
	 * 代理机构管理-查询角色组
	 * @param pd
	 * @return
	 */
	List<PageData> getGroupListForAgency(PageData pd) throws Exception;

	/**
	 * 获取市场人员分组角色
	 * @param pd
	 * @return
	 */
	List<PageData> getMarketingGroupList(PageData pd);

	void updateRoleNavs(PageData pd)throws Exception;
}
