package com.palmnest.dao.estateserve;

import java.util.List;
import java.util.Map;

import com.palmnest.application.bean.Page;
import com.palmnest.dao.GenericDao;
import com.palmnest.model.estateserve.ServiceProjectAllocation;

/**
 * 项目or企业配置服务项DAO层
 *
 * @author 金牙
 */
public interface ServiceProjectAllocationDao extends GenericDao<ServiceProjectAllocation, Integer> {

	/**
	 * 查询企业或项目服务列表
	 *
	 * @param pageNo
	 * @param pageSize
	 * @param whereSql
	 * @param orgIds
	 * @return
	 * @throws Exception
	 */
	public Page serviceProjectAllocationPage(Integer pageNo, Integer pageSize, String whereSql, String orgIds) throws Exception;

	/**
	 * 查询该用户权限下的服务信息
	 *
	 * @param roleGroup
	 * @param orgIds
	 * @param type
	 * @return
	 */
	public List<Map<String, Object>> getServiceProjectAllocationList(String orgIds, String type) throws Exception;

	/**
	 * 查询APP用户权限下的服务信息
	 *
	 * @param orgIds
	 * @param type
	 * @return
	 */
	public List<Map<String, Object>> getServiceProjectAllocationList(Integer orgId, Integer type) throws Exception;

	/**
	 * 根据项目ID查询运营中心信息
	 *
	 * @param orgIds
	 * @return
	 */
	public Map<String, Object> getCompanyObj(String orgIds) throws Exception;

	/**
	 * 查询服务内容配置信息
	 *
	 * @param serviceTypeId 服务ID
	 * @param orgId         项目或者企业ID
	 * @param type          （0-项目，1-企业）
	 */
	public ServiceProjectAllocation getServiceProjectAllocation(int serviceTypeId, int orgId, String type);

	/**
	 * 查询项目的服务配置信息
	 *
	 * @param serviceTypeId 服务包服务ID
	 * @return
	 */
	public List<ServiceProjectAllocation> getServiceProjectAllocationList(String serviceTypeId);

	/**
	 * 根据项目ID查询上线服务分类集合
	 *
	 * @return
	 */
	public List<ServiceProjectAllocation> findServiceProjectAllocationList(String orgId);

	/**
	 * 删除服务信息
	 *
	 * @param orgId
	 */
	public void deleteProjectAllocation(String orgId);

	/**
	 * 查询所有可用的项目服务配置信息
	 *
	 * @return
	 */
	public List<ServiceProjectAllocation> listAll();

	/**
	 * 商圈发现服务列表(不带分类)
	 *
	 * @return
	 */
	public List<Map<String, Object>> getDiscoverServiceList();

	/**
	 * 根据服务编码获取服务相对应的项目
	 *
	 * @param serviceCode
	 * @return
	 */
	public String getServiceProjectByServiceCode(String serviceCode);

	List<Map<String, Object>> getOpenedFunctionServiceList(int orgId);

	List<Map<String, Object>> getOpenedFunctionServiceChildList(List<Integer> serviceIdList);
}
