package com.starry.admin.modules.custom.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.starry.admin.modules.custom.module.entity.PlayCustomGiftInfoEntity;
import java.util.List;

/**
 * 顾客和礼物关系Service接口
 *
 * @author admin
 * @since 2024-06-05
 */
public interface IPlayCustomGiftInfoService extends IService<PlayCustomGiftInfoEntity> {

    /**
     * 根据顾客ID和礼物ID，查询当前礼物活点亮情况
     *
     * @param giftId
     *            礼物ID
     * @param customId
     *            顾客ID
     * @return 物活点亮情况
     */
    PlayCustomGiftInfoEntity selectByGiftIdAndCustomId(String giftId, String customId);

    /**
     * 查询顾客已点亮礼物
     *
     * @param customId
     *            顾客IF
     * @return 顾客已点亮礼物列表
     */
    List<PlayCustomGiftInfoEntity> selectByCustomId(String customId, String tenantId);

    /**
     * 查询顾客和礼物关系
     *
     * @param id
     *            顾客和礼物关系主键
     * @return 顾客和礼物关系
     */
    PlayCustomGiftInfoEntity selectPlayCustomGiftInfoById(String id);

    /**
     * 查询顾客和礼物关系列表
     *
     * @param playCustomGiftInfo
     *            顾客和礼物关系
     * @return 顾客和礼物关系集合
     */
    IPage<PlayCustomGiftInfoEntity> selectPlayCustomGiftInfoByPage(PlayCustomGiftInfoEntity playCustomGiftInfo);

    /**
     * 新增顾客和礼物关系
     *
     * @param playCustomGiftInfo
     *            顾客和礼物关系
     * @return 结果
     */
    boolean create(PlayCustomGiftInfoEntity playCustomGiftInfo);

    /**
     * 修改顾客和礼物关系
     *
     * @param playCustomGiftInfo
     *            顾客和礼物关系
     * @return 结果
     */
    boolean update(PlayCustomGiftInfoEntity playCustomGiftInfo);

    /**
     * 原子递增顾客礼物数量，无记录时按增量初始化
     *
     * @param customId 顾客ID
     * @param giftId 礼物ID
     * @param tenantId 租户ID
     * @param delta 增量
     */
    void incrementGiftCount(String customId, String giftId, String tenantId, long delta);

    /**
     * 批量删除顾客和礼物关系
     *
     * @param ids
     *            需要删除的顾客和礼物关系主键集合
     * @return 结果
     */
    int deletePlayCustomGiftInfoByIds(String[] ids);

    /**
     * 删除顾客和礼物关系信息
     *
     * @param id
     *            顾客和礼物关系主键
     * @return 结果
     */
    int deletePlayCustomGiftInfoById(String id);
}
