package com.sonic.frog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sonic.frog.domain.entity.AiUser;
import com.sonic.frog.domain.output.*;

import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;

/**
 * AI用户表服务接口
 */
public interface AiUserSearchService extends IService<AiUser> {

    /**
     * 根据aiId查询Ai用户信息 个人主页用
     *
     * @param currentUserId
     * @param aiId
     * @return
     */
    AiUserBaseOutput getAiUserBaseInfo(Long currentUserId, Long aiId);


    /**
     * 获取自己的AI用户列表
     *
     * @param userId
     * @return
     */
    List<AiUserBaseListOutput> getBaseUserAiList(Long userId);

    /**
     * 获取别人的AI用户列表
     *
     * @param aiId
     * @return
     */
    List<AiUserTargetListOutput> getTargetUserAiList(Long aiId);

    /**
     * 批量获取Ai字典
     *
     * @param list
     * @return
     */
    Map<String, String> mapNameByCodeList(List<AiUser> list);

    /**
     * 获取AI用户H5信息
     *
     * @param aiId
     * @return
     */
    AiUserH5Output getAiUserH5Info(Long aiId);

    /**
     * 根据AI的id获取AI用户信息
     *
     * @param aiId
     * @return
     */
    AiUser getAiUserByAiId(Long aiId);

    /**
     * 获取im聊天ai用户基础信息
     *
     * @param aiId
     * @param userId
     * @return
     */
    AiUserImBaseInfoOutput getAiUserImBaseInfo(Long aiId, Long userId);

    /**
     * 批量获取Ai用户信息
     *
     * @param aiIdList
     * @return
     */
    Map<Long, AiUserBaseOutput> mapByAiIdList(List<Long> aiIdList);

    /**
     * 获取用户AI数量
     *
     * @param userId
     * @return
     */
    Integer countAiNumByUserId(Long userId);

    /**
     * 获取AI用户seo基础信息
     *
     * @param aiId
     * @return
     */
    AiUserSeoBaseInfoOutput getAiUserSeoBaseInfo(Long aiId);
}