package com.cmvr.tts.mapper;

import com.cmvr.tts.domain.TtsSynthesizeTask;
import com.cmvr.tts.domain.vo.TtsSynthesizeTaskVo;

import java.util.List;
import java.util.Map;

/**
 * TTS合成任务Mapper接口
 *
 * @author cmvr
 */
public interface TtsSynthesizeTaskMapper {

    /**
     * 查询TTS合成任务
     *
     * @param id TTS合成任务主键
     * @return TTS合成任务
     */
    TtsSynthesizeTask selectTtsTaskById(String id);

    /**
     * 查询TTS合成任务列表
     *
     * @param task TTS合成任务
     * @return TTS合成任务集合
     */
    List<TtsSynthesizeTask> selectTtsTaskList(TtsSynthesizeTask task);

    /**
     * 查询TTS合成任务视图列表（包含关联信息）
     *
     * @param task TTS合成任务
     * @return TTS合成任务视图集合
     */
    List<TtsSynthesizeTaskVo> selectTtsTaskVoList(TtsSynthesizeTask task);

    /**
     * 新增TTS合成任务
     *
     * @param task TTS合成任务
     * @return 结果
     */
    int insertTtsTask(TtsSynthesizeTask task);

    /**
     * 修改TTS合成任务
     *
     * @param task TTS合成任务
     * @return 结果
     */
    int updateTtsTask(TtsSynthesizeTask task);

    /**
     * 删除TTS合成任务
     *
     * @param id TTS合成任务主键
     * @return 结果
     */
    int deleteTtsTaskById(String id);

    /**
     * 批量删除TTS合成任务
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTtsTaskByIds(String[] ids);

    /**
     * 统计看板指标数据
     *
     * @return 统计数据
     */
    Map<String, Object> selectDashboardStats();

    /**
     * 统计昨日数据用于环比计算
     *
     * @return 昨日统计数据
     */
    Map<String, Object> selectYesterdayStats();

    /**
     * 按语种分组统计任务总量
     *
     * @return 语种统计数据
     */
    List<Map<String, Object>> selectStatsByLanguage();

    /**
     * 按音色分组统计任务总量
     *
     * @return 音色统计数据
     */
    List<Map<String, Object>> selectStatsByVoice();

    /**
     * 按情绪分组统计任务总量
     *
     * @return 情绪统计数据
     */
    List<Map<String, Object>> selectStatsByEmotion();

    /**
     * 近7日每日合成任务数量趋势
     *
     * @return 每日任务数量
     */
    List<Map<String, Object>> selectLast7DaysTrend();
}
