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

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

/**
 * 店员和礼物关系Service接口
 *
 * @author admin
 * @since 2024-05-25
 */
public interface IPlayClerkGiftInfoService extends IService<PlayClerkGiftInfoEntity> {

    /**
     * 根据顾客ID和礼物ID，查询当前礼物活点亮情况
     *
     * @param giftId
     *            礼物ID
     * @param clerkId
     *            店员ID
     * @return 物活点亮情况
     */
    PlayClerkGiftInfoEntity selectByGiftIdAndClerkId(String giftId, String clerkId);

    /**
     * 根据店员ID查询店员活动礼物列表
     *
     * @param clerkId
     *            店员ID
     * @return 店员活动礼物列表
     */

    List<PlayClerkGiftInfoEntity> selectBtyClerkId(String clerkId, String tenantId);

    /**
     * 查询店员和礼物关系
     *
     * @param id
     *            店员和礼物关系主键
     * @return 店员和礼物关系
     */
    PlayClerkGiftInfoEntity selectPlayClerkGiftInfoById(String id);

    /**
     * 查询店员和礼物关系列表
     *
     * @param playClerkGiftInfo
     *            店员和礼物关系
     * @return 店员和礼物关系集合
     */
    IPage<PlayClerkGiftInfoEntity> selectPlayClerkGiftInfoByPage(PlayClerkGiftInfoEntity playClerkGiftInfo);

    /**
     * 新增店员和礼物关系
     *
     * @param playClerkGiftInfo
     *            店员和礼物关系
     * @return 结果
     */
    boolean create(PlayClerkGiftInfoEntity playClerkGiftInfo);

    /**
     * 修改店员和礼物关系
     *
     * @param playClerkGiftInfo
     *            店员和礼物关系
     * @return 结果
     */
    boolean update(PlayClerkGiftInfoEntity playClerkGiftInfo);

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

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

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