package cn.edu.whu.boot.user.services;


import cn.edu.whu.boot.user.entities.User;

import java.util.List;
import java.util.Optional;

public interface UserService {
    User createUser(String username, String realName, String password, String phone, String email, int code) throws Exception;

    User createUser(String username, String realName, String password, int role);

    Optional<User> findById(int id);

    Optional<User> findByUsername(String name);

    int countLikeUsername(String username);

    /**
     * 根据用户名进行模糊查询，对结果进行分页
     *
     * @param username  查询条件为 username LIKE %#{username}%
     * @param pageSize 每页的记录数量
     * @param pageNum  页码（从1开始）
     */
    List<User> findLikeUsernamePagination(String username, int pageSize, int pageNum);

    Optional<User> findByPhone(String phone);

    Optional<User> findByEmail(String email);

    User updateUser(User user);

    List<User> findByRole(int role);

    List<User> findAll();

    List<User> findAllPagination(int pageSize, int pageNum);

    int countAll();

    int deleteById(int id);

    /**
     * 获取当前在线用户
     *
     * @return 所有在线用户
     */
    List<User> getOnlineUsers();

    String findRealNameById(int id);
}