package com.fs.live.service;


import com.fs.common.core.domain.R;
import com.fs.live.domain.LiveRedConf;
import com.fs.live.param.RedPO;

import java.util.List;
import java.util.Set;

/**
 * 直播红包记录配置Service接口
 *
 * @author fs
 * @date 2025-07-17
 */
public interface ILiveRedConfService {
    /**
     * 查询直播红包记录配置
     *
     * @param redId 直播红包记录配置主键
     * @return 直播红包记录配置
     */
    LiveRedConf selectLiveRedConfByRedId(Long redId);

    /**
     * 查询直播红包记录配置列表
     *
     * @param liveRedConf 直播红包记录配置
     * @return 直播红包记录配置集合
     */
    List<LiveRedConf> selectLiveRedConfList(LiveRedConf liveRedConf);

    /**
     * 新增直播红包记录配置
     *
     * @param liveRedConf 直播红包记录配置
     * @return 结果
     */
    int insertLiveRedConf(LiveRedConf liveRedConf);

    /**
     * 修改直播红包记录配置
     *
     * @param liveRedConf 直播红包记录配置
     * @return 结果
     */
    int updateLiveRedConf(LiveRedConf liveRedConf);

    /**
     * 批量删除直播红包记录配置
     *
     * @param redIds 需要删除的直播红包记录配置主键集合
     * @return 结果
     */
    int deleteLiveRedConfByRedIds(Long[] redIds);

    /**
     * 删除直播红包记录配置信息
     *
     * @param redId 直播红包记录配置主键
     * @return 结果
     */
    int deleteLiveRedConfByRedId(Long redId);

    LiveRedConf getById(Long redId);

    List<LiveRedConf> getByLiveId(Long liveId);

    void create(LiveRedConf conf);

    void update(LiveRedConf conf);

    void delete(Long redId);

    R claimRedPacket(RedPO red);

    String start(String redId, Long userId);

    List<LiveRedConf> selectByLiveId(Long existLiveId);

    List<LiveRedConf> selectActivedRed(Long liveId);

    // 结算掉红包
    void finishRedStatusBySetIds(Set<String> range);

    // 更新红包数量
    void redStatusUpdate(Set<Long> redIds);

    void updateRedQuantityNum();

    List<LiveRedConf> selectLiveRedConfListOn(LiveRedConf liveRedConf);
}
