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

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

/**
 * 陪聊服务项目Service接口
 *
 * @author admin
 * @since 2024-03-31
 */
public interface IPlayClerkCommodityService extends IService<PlayClerkCommodityEntity> {

    /**
     * 初始化当前陪聊服务项目
     *
     * @param playUserId
     *            账号ID
     */
    void initClerkCommodity(String playUserId);

    /**
     * 根据用户ID，查询当前用户的服务项目类型
     *
     * @param userId
     *            用户ID
     * @param enablingState
     *            服务启动状态[0:停用;1:启用]
     * @return 服务项目类型
     */
    List<String> getClerkCommodityList(String userId, String enablingState);

    /**
     * 根据用户ID，查询当前店员所有服务项目
     *
     * @param userId
     *            用户ID
     * @param enablingState
     *            服务启动状态[0:停用;1:启用]
     * @return List<PlayClerkCommodityEntity>
     */
    List<PlayClerkCommodityEntity> selectCommodityTypeByUser(String userId, String enablingState);

    /**
     * 根据用户ID，查询当前用户的服务项目
     *
     * @param playUserId
     *            用户ID
     * @return List<PlayClerkCommodityEntity>
     */
    List<PlayClerkCommodityEntity> selectByUser(String playUserId);

    /**
     * 查询当前陪聊所有服务项目
     *
     * @return List<PlayClerkCommodityEntity>
     */
    List<PlayClerkCommodityEntity> selectAll();

    /**
     * 启停当前陪聊服务项目
     *
     * @param type
     *            项目名称
     * @param enablingState
     *            启停状态
     * @param clerkUserId
     *            陪聊ID
     */
    void startStopClerkItem(String type, String enablingState, String clerkUserId);

    /**
     * 查询陪聊服务项目
     *
     * @param id
     *            陪聊服务项目主键
     * @return 陪聊服务项目
     */
    PlayClerkCommodityEntity selectPlayClerkCommodityById(String id);

    /**
     * 查询陪聊服务项目列表
     *
     * @param playClerkCommodity
     *            陪聊服务项目
     * @return 陪聊服务项目集合
     */
    IPage<PlayClerkCommodityEntity> selectPlayClerkCommodityByPage(PlayClerkCommodityEntity playClerkCommodity);

    /**
     * 新增陪聊服务项目
     *
     * @param playClerkCommodity
     *            陪聊服务项目
     * @return 结果
     */
    boolean create(PlayClerkCommodityEntity playClerkCommodity);

    /**
     * 修改陪聊服务项目
     *
     * @param playClerkCommodity
     *            陪聊服务项目
     * @return 结果
     */
    boolean update(PlayClerkCommodityEntity playClerkCommodity);

    /**
     * 批量删除陪聊服务项目
     *
     * @param ids
     *            需要删除的陪聊服务项目主键集合
     * @return 结果
     */
    int deletePlayClerkCommodityByIds(String[] ids);

    /**
     * 删除陪聊服务项目信息
     *
     * @param id
     *            陪聊服务项目主键
     * @return 结果
     */
    int deletePlayClerkCommodityById(String id);
}
