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.PlayGiftInfoEntity;
import com.starry.admin.modules.weichat.entity.gift.PlayClerkGiftReturnVo;
import java.util.List;

/**
 * 礼物Service接口
 *
 * @author admin
 * @since 2024-04-25
 */
public interface IPlayGiftInfoService extends IService<PlayGiftInfoEntity> {
    /**
     * 查询礼物
     *
     * @param id
     *            礼物主键
     * @return 礼物
     */
    PlayGiftInfoEntity selectPlayGiftInfoById(String id);

    /**
     * 查询所有礼物
     *
     * @return List<com.starry.admin.modules.gift.module.entity.PlayGiftInfoEntity>
     * @author admin
     * @since 2024/4/25 15:56
     **/
    List<PlayGiftInfoEntity> listByAll();

    /**
     * 店员查询所有礼物
     *
     * @param clerkId
     *            店员ID
     * @param obtained
     *            店员获得礼物状态,[0:未获得,1:已获得]
     * @return List<com.starry.admin.modules.gift.module.entity.PlayGiftInfoEntity>
     * @author admin
     * @since 2024/4/25 15:56
     **/
    List<PlayClerkGiftReturnVo> clerkListByAll(String tenantId, String clerkId, String obtained);

    /**
     * 店员查询所有礼物
     *
     * @param customId
     *            顾客ID
     * @param obtained
     *            礼物状态,[0:未获得,1:已获得]
     * @param history
     *            是否是历史礼物(0:不是,1:是)
     * @return List<com.starry.admin.modules.gift.module.entity.PlayGiftInfoEntity>
     * @author admin
     * @since 2024/4/25 15:56
     **/
    List<PlayClerkGiftReturnVo> customListByAll(String tenantId, String customId, String obtained);

    /**
     * 查询礼物列表
     *
     * @param playGiftInfo
     *            礼物
     * @return 礼物集合
     */
    IPage<PlayGiftInfoEntity> selectPlayGiftInfoByPage(PlayGiftInfoEntity playGiftInfo);

    /**
     * 新增礼物
     *
     * @param playGiftInfo
     *            礼物
     * @return 结果
     */
    boolean create(PlayGiftInfoEntity playGiftInfo);

    /**
     * 修改礼物
     *
     * @param playGiftInfo
     *            礼物
     * @return 结果
     */
    boolean update(PlayGiftInfoEntity playGiftInfo);

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

    /**
     * 删除礼物信息
     *
     * @param id礼物主键
     * @return 结果
     */
    int deletePlayGiftInfoById(String id);
}
