package com.huiju.estateagents.property.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huiju.estateagents.base.ResponseBean;
import com.huiju.estateagents.center.taUser.entity.TaUser;
import com.huiju.estateagents.property.model.TpBuildingOwnerInfo;
import org.springframework.web.multipart.MultipartFile;

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

/**
 * <p>
 * 楼栋业主资料信息表 服务类
 * </p>
 *
 * @author weiximei
 * @since 2018-12-18
 */
public interface IBuildingOwnerInfoService extends IService<TpBuildingOwnerInfo> {
    /**
     * 分页查询已认证通过的业主
     * @param paramets
     * @return
     */
    ResponseBean selectUserApprove(String paramets, Integer orgId);
    /**
     * 根据条件查询
     * @param parameter
     * @param userElement 用户登陆后的信息
     * @return
     */
    ResponseBean listQuery(String parameter, TaUser userElement);

    /**
     * 修改 楼栋业主信息
     * @param parameter
     * @param userElement
     * @return
     */
    ResponseBean update(String parameter, TaUser userElement);

    /**
     * 添加 楼栋业主信息
     * @param parameter
     * @param userElement
     * @return
     */
    ResponseBean add(String parameter, TaUser userElement);
    
    /**
     * 根据excel获取相关信息
     * @param file
     * @return
     */
    ResponseBean getExcelData(MultipartFile file);

    /**
     * 查询 楼栋/单元/楼层/号
     *
     *   楼栋是根据 小区ID查询
     *
     * @param orgId
     * @param communityId
     * @return
     */
    ResponseBean getPhaseList(Integer orgId, Integer communityId);
    
    /**
     * 上传excel里面的内容
     * @param file
     * @param communityId
     * @param userElement
     * @return
     */
    ResponseBean submitExcelData(MultipartFile file, Integer communityId, TaUser userElement);

    /**
     * 认证用户是否停用
     * @param paramets
     * @return
     */
    ResponseBean updataApprove(String paramets);

    /**
     * 根据Id删除
     * @param ids
     * @param propertyUserId
     * @return
     */
    ResponseBean deleteIds(List<Integer> ids, Integer propertyUserId);

    /**
     * 楼栋资料库列表
     * @param paramets
     * @param userElement
     * @return
     */
    ResponseBean buildinglist(String paramets, TaUser userElement);

    /**
     * 小区楼栋资料表-查询 楼栋/单元/楼层/户号
     * @param parameter
     * @param orgId
     * @return
     */
    ResponseBean puildinghouse(String parameter, Integer orgId);

    /**
     *
     * @param parameter
     * @param orgId
     * @return
     */
    ResponseBean communitybuildingUpdate(String parameter, Integer orgId);

    /**
     * 下载Excel模板(小区楼栋信息)
     *
     * @param communityId
     * @param userElement
     * @return
     */
    ResponseBean downloadExcel(Integer communityId, TaUser userElement);
    
    /**
     * 获取楼栋信息
     * @param phaseId
     * @param orgId
     * @return
     */
    ResponseBean getBuildingList(Integer phaseId, Integer orgId);
    
    /**
     * 获取单元信息
     * @param buildingId
     * @param orgId
     * @return
     */
    ResponseBean getUnitList(Integer buildingId, Integer orgId);
    
    /**
     * 获取楼层信息
     * @param unitId
     * @param orgId
     * @return
     */
    ResponseBean getLevelList(Integer unitId, Integer orgId);
    
    /**
     * 获取室号信息
     * @param levelId
     * @param orgId
     * @return
     */
    ResponseBean getRoomNoList(Integer levelId, Integer orgId);

    /**
     * 查看住户详情
     * @param paramets
     * @param userElement
     * @return
     */
    ResponseBean buildingDetails(String paramets, TaUser userElement);

    /**
     * 根据 小区/期/楼栋/单元/楼层/户号
     * @param orgId
     * @param phaseId
     * @param buildingId
     * @param unitId
     * @param levelId
     * @return
     */
    ResponseBean selectBuildList(Integer orgId, Integer communityId, Integer phaseId, Integer buildingId, Integer unitId, Integer levelId);

    /**
     * 根据 小区/期/楼栋/单元/楼层/户号
     * 并校验这个用户，是否绑定了这个房产
     * @param phaseId
     * @param buildingId
     * @param unitId
     * @param levelId
     * @param roomNoId
     * @return
     */
    ResponseBean hasBuild(String personId, Integer orgId ,Integer phaseId, Integer buildingId, Integer unitId, Integer levelId, Integer roomNoId);

    int getAvailableProp(Integer orgId, Integer communityId);

    Map<String, Object> getVerifyNum(Integer orgId, Integer communityId);
}
