package com.sonic.frog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sonic.frog.domain.entity.ChatSet;
import com.sonic.frog.domain.input.*;
import com.sonic.frog.domain.output.ChatBubbleListOutput;
import com.sonic.frog.domain.output.ChatSetOutput;

import java.util.List;

/**
 * 用户与Ai的聊天设定表服务接口
 */
public interface ChatSetService extends IService<ChatSet> {

    /**
     * 获取聊天设置
     *
     * @param userId
     * @param aiId
     * @return
     */
    ChatSet getChatSet(Long userId, Long aiId);

    /**
     * 获取我的聊天设置
     *
     * @param userId
     * @param aiId
     * @return
     */
    ChatSetOutput getMyChatSet(Long userId, Long aiId);

    /**
     * 设置我的聊天设定
     *
     * @param userId
     * @param input
     */
    void setMyChatSetting(Long userId, SetMyChatSettingInput input);

    /**
     * 设置对话模型
     *
     * @param userId
     * @param input
     */
    void setChatModel(Long userId, SetChatModelInput input);

    /**
     * 使用或取消使用聊天气泡
     *
     * @param userId
     * @param input
     */
    void setChatBubble(Long userId, SetChatBubbleInput input);

    /**
     * 设置用户与AI聊天背景图
     *
     * @param userId
     * @param aiId
     * @param imgUrl
     */
    void setBackground(Long userId, Long aiId, String imgUrl);

    /**
     * 设置是否自动播放语音
     *
     * @param userId
     * @param input
     */
    void setIsAutoPlayVoice(Long userId, SetIsAutoPlayVoiceInput input);

    /**
     * 获取聊天气泡列表
     *
     * @param userId
     * @param input
     * @return
     */
    List<ChatBubbleListOutput> getChatBubbleList(Long userId, ChatBubbleListInput input);

    /**
     * 获取用户与AI聊天背景图
     *
     * @param userId
     * @param aiId
     * @return
     */
    String getChatSetBackground(Long userId, Long aiId);

    /**
     * 更新是否删除聊天记录
     *
     * @param userId
     * @param aiIdList
     * @return
     */
    void updateIsDelChatted(Long userId, List<Long> aiIdList);

    /**
     * 关闭自动播放语音
     * @param userIdList
     */
    void closeAutoPlayVoice(List<Long> userIdList);
}