package com.hrs.dao;

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

/**   
* Copyright: Copyright (c) 2026 chinasofti
* 
* @ClassName: UserDao.java
* @Description: 用户数据层
*
* @version: v1.0.0
* @author: 赵恒
* @date: 2026年4月13日 上午9:32:28 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2026年4月13日     赵恒           v1.0.0               新建文件
*/
public interface UserDao {
    /**
     * 
    * @Function: findByUsernameAndPassword
    * @Description: 根据用户名和密码查询用户
    *
    * @param: username 用户名, password 密码
    * @return：User 用户对象，未找到返回null
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:25:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */	
    User findByUsernameAndPassword(String username, String password);
    /**
     * 
    * @Function: findByUsername
    * @Description: 根据用户名查询用户
    *
    * @param: username 用户名
    * @return：User 用户对象，未找到返回null
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:25:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    User findByUsername(String username);
    /**
     * 
    * @Function: findByPhone
    * @Description: 根据手机号查询用户
    *
    * @param: phone 手机号
    * @return：User 用户对象，未找到返回null
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:25:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    User findByPhone(String phone);
    /**
     * 
    * @Function: findById
    * @Description: 根据ID查询用户
    *
    * @param: id 用户ID
    * @return：User 用户对象，未找到返回null
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:25:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */   
    User findById(Long id);
    /**
     * 
    * @Function: findAll
    * @Description: 查询所有用户
    *
    * @param: 无
    * @return：List<User> 用户列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:26:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<User> findAll();
    /**
     * 
    * @Function: findAllTenants
    * @Description: 查询所有租客
    *
    * @param: 无
    * @return：List<User> 租客列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:26:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    List<User> findAllTenants();
    /**
     * 
    * @Function: findAllLandlords
    * @Description: 查询所有房东
    *
    * @param: 无
    * @return：List<User> 房东列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:26:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    List<User> findAllLandlords();
    /**
     * 
    * @Function: add
    * @Description: 添加用户
    *
    * @param: user 用户对象
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:26:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    boolean add(User user);
    /**
     * 
    * @Function: update
    * @Description: 更新用户信息
    *
    * @param: user 用户对象
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:27:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    boolean update(User user);
    /**
     * 
    * @Function: updateStatus
    * @Description: 更新用户状态
    *
    * @param: userId 用户ID, status 状态
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:27:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    boolean updateStatus(Long userId, String status);
    /**
     * 
    * @Function: delete
    * @Description: 删除用户
    *
    * @param: id 用户ID
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:27:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    boolean delete(Long id);
    /**
     * 
    * @Function: count
    * @Description: 统计用户总数
    *
    * @param: 无
    * @return：int 用户总数
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:27:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    int count();
}
