package com.example.demo.repository;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import com.example.demo.model.User;

public interface UserRepository extends JpaRepository<User, Long> {
    
    // 分页查询活跃用户（isActive=true）
    Page<User> findByIsActive(Boolean isActive, Pageable pageable);
    
    // 根据用户ID列表分页查询
    Page<User> findByIdIn(List<Long> ids, Pageable pageable);
    
    // 根据用户ID列表和活跃状态分页查询
    Page<User> findByIdInAndIsActive(List<Long> ids, Boolean isActive, Pageable pageable);
    Optional<User> findByUsername(String username);
    Optional<User> findByNickname(String nickname);
    Optional<User> findByEmail(String email);
    Optional<User> findByPhone(String phone);
    Optional<User> findByUserId(String userId);
    boolean existsByUsername(String username);
    boolean existsByEmail(String email);
    boolean existsByPhone(String phone);
    boolean existsByUserId(String userId);
    
    long countByCreatedAtBetween(LocalDateTime startDate, LocalDateTime endDate);
    
    /**
     * 统计指定时间之后活跃的用户数量（用于在线用户统计）
     */
    long countByLastActiveTimeAfter(LocalDateTime afterTime);
    
    /**
     * 统计今日新增用户数
     */
    long countByCreatedAtAfter(LocalDateTime startTime);
    
    /**
     * 统计指定时间之前创建的用户数（用于累计统计）
     */
    long countByCreatedAtBefore(LocalDateTime beforeTime);
}



