package com.ssyf.module.robot.service;

import com.github.pagehelper.PageInfo;
import com.ssyf.module.robot.domain.entity.ChatConfig;
import com.ssyf.module.robot.domain.query.ChatConfigQuery;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author ELSA
* @description 针对表【chat_config(聊天配置表)】的数据库操作Service
* @createDate 2026-01-31 10:08:46
*/
public interface ChatConfigService extends IService<ChatConfig> {

    /**
     * 新增一条数据
     *
     * @param query 查询对象
     * @return 实体对象
     */
    ChatConfig addOne(ChatConfigQuery query);

    /**
     * 根据UUID删除一条数据
     *
     * @param uuid UUID
     */
    void removeByUid(String uuid);

    /**
     * 根据UUID列表批量删除数据
     *
     * @param uuids UUID列表
     */
    void removeBatchByUids(List<String> uuids);

    /**
     * 根据UUID更新一条数据
     *
     * @param uuid UUID
     * @param query 查询对象
     */
    void updateByUid(String uuid, ChatConfigQuery query);

    /**
     * 根据UUID查询一条数据
     *
     * @param uuid UUID
     * @return 实体对象
     */
    ChatConfig getOneByUid(String uuid);

    /**
     * 分页查询数据
     *
     * @param query 查询条件
     * @return 分页结果
     */
    PageInfo<ChatConfig> getPage(ChatConfigQuery query);

    /**
     * 查询列表数据
     *
     * @param query 查询条件
     * @return 列表结果
     */
    List<ChatConfig> getList(ChatConfigQuery query);

    /**
     * 检查数据是否存在并返回实体
     *
     * @param uuid UUID
     * @return 实体对象
     */
    ChatConfig checkedExistAndGet(String uuid);

    /**
     * 根据条件统计数量
     *
     * @param query 查询条件
     * @return 数量
     */
    Integer countBy(ChatConfigQuery query);

    /**
     * 通过机器人UUID获取可用的聊天配置
     * 优先级：1.机器人UUID匹配的配置 2.机器人分组UUID匹配的配置 3.无机器人和分组UUID的通用配置
     * 只返回启用状态的配置
     *
     * @param robotUuid 机器人UUID
     * @return 可用的聊天配置列表，按优先级排序
     */
    List<ChatConfig> getAvailableConfigsByRobotUuid(String robotUuid);
}
