package com.hrs.dao;

import com.hrs.model.entity.House;
import java.util.List;

/**   
* Copyright: Copyright (c) 2026 chinasofti
* 
* @ClassName: HouseDao.java
* @Description: 房源数据层
*
* @version: v1.0.0
* @author: 赵恒
* @date: 2026年4月13日 上午9:31:08 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2026年4月13日     赵恒           v1.0.0               新建文件
*/
public interface HouseDao {
    /**
     * 
    * @Function: findPublishedHouses
    * @Description: 查询已上架的房源
    *
    * @param: 无
    * @return：List<House> 房源列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:28:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */	
    List<House> findPublishedHouses();
    /**
     * 
    * @Function: findHousesByArea
    * @Description: 根据区域查询房源
    *
    * @param: area 区域名称
    * @return：List<House> 房源列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:28:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<House> findHousesByArea(String area);
    /**
     * 
    * @Function: findHousesByPrice
    * @Description: 根据价格范围查询房源
    *
    * @param: minPrice 最低价格, maxPrice 最高价格
    * @return：List<House> 房源列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:28:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<House> findHousesByPrice(int minPrice, int maxPrice);
    /**
     * 
    * @Function: findById
    * @Description: 根据ID查询房源
    *
    * @param: id 房源ID
    * @return：House 房源对象，未找到返回null
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:28:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    House findById(Long id);
    /**
     * 
    * @Function: findByLandlordId
    * @Description: 根据房东ID查询房源
    *
    * @param: landlordId 房东ID
    * @return：List<House> 房源列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:29:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<House> findByLandlordId(Long landlordId);
    /**
     * 
    * @Function: findAll
    * @Description: 查询所有房源
    *
    * @param: 无
    * @return：List<House> 房源列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:29:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<House> findAll();
    /**
     * 
    * @Function: findPendingHouses
    * @Description: 查询待审核的房源
    *
    * @param: 无
    * @return：List<House> 房源列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:29:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<House> findPendingHouses();
    /**
     * 
    * @Function: findPublishedHousesForAdmin
    * @Description: 管理员查询已上架的房源
    *
    * @param: 无
    * @return：List<House> 房源列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:29:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<House> findPublishedHousesForAdmin();
    /**
     * 
    * @Function: findOfflineHouses
    * @Description: 查询已下架的房源
    *
    * @param: 无
    * @return：List<House> 房源列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:30:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<House> findOfflineHouses();
    /**
     * 
    * @Function: add
    * @Description: 添加房源
    *
    * @param: house 房源对象
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:30:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    boolean add(House house);
    /**
     * 
    * @Function: update
    * @Description: 更新房源信息
    *
    * @param: house 房源对象
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:30:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    boolean update(House house);
    /**
     * 
    * @Function: updateStatus
    * @Description: 更新房源状态
    *
    * @param: houseId 房源ID, status 状态
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:30:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    boolean updateStatus(Long houseId, String status);
    /**
     * 
    * @Function: delete
    * @Description: 删除房源
    *
    * @param: id 房源ID
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:31:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    boolean delete(Long id);
    /**
     * 
    * @Function: countPublished
    * @Description: 统计已上架房源数量
    *
    * @param: 无
    * @return：int 已上架房源数量
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:31:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    int countPublished();
    /**
     * 
    * @Function: countAll
    * @Description: 统计所有房源数量
    *
    * @param: 无
    * @return：int 房源总数
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:31:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    int countAll();
}
