package cn.novalon.gym.manage.sys.core.service;

import cn.novalon.gym.manage.sys.core.domain.SysLoginLog;
import cn.novalon.gym.manage.common.dto.PageRequest;
import cn.novalon.gym.manage.common.dto.PageResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.time.LocalDateTime;

/**
 * 登录日志服务接口
 * 
 * @author 张翔
 * @date 2026-03-13
 */
public interface ISysLoginLogService {
    Mono<SysLoginLog> findById(Long id);
    Flux<SysLoginLog> findAll();
    Flux<SysLoginLog> findByUsername(String username);
    Flux<SysLoginLog> findByLoginTimeBetween(LocalDateTime startTime, LocalDateTime endTime);
    Mono<SysLoginLog> save(SysLoginLog loginLog);
    Mono<PageResponse<SysLoginLog>> findLoginLogsByPage(PageRequest pageRequest);
    Mono<Long> count();
    Mono<Long> countToday();
    Flux<SysLoginLog> findRecent(int limit);
}
