package com.red.circle.other.domain.gateway;

import com.red.circle.other.domain.rocket.RocketRewardLog;

import java.util.List;

/**
 * 火箭奖励领取记录网关
 *
 * @author system
 * @date 2025-01-15
 */
public interface RocketRewardLogGateway {

    /**
     * 保存领取记录
     */
    void save(RocketRewardLog log);

    /**
     * 检查是否已领取
     */
    boolean existsByRocketAndUser(String rocketHistoryId, Long userId);

    /**
     * 检查用户是否已领取（带等级）
     * @param roomId 房间ID
     * @param userId 用户ID
     * @param date 日期
     * @param level 火箭等级
     * @return 是否已领取
     */
    boolean existsByRoomAndUserAndDateAndLevel(Long roomId, Long userId, String date, Integer level);

    /**
     * 根据火箭历史ID查询所有领取记录
     */
    List<RocketRewardLog> findByRocketHistoryId(String rocketHistoryId);

    /**
     * 根据房间ID和用户ID查询
     */
    List<RocketRewardLog> findByRoomIdAndUserId(Long roomId, Long userId);

    /**
     * 统计某次发射的领取人数
     */
    int countByRocketHistoryId(String rocketHistoryId);
}
