package com.emotion.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.emotion.common.PageResult;
import com.emotion.dto.request.coze.CozeApiCallPageRequest;
import com.emotion.dto.request.coze.CozeApiCallCreateRequest;
import com.emotion.dto.request.coze.CozeApiCallUpdateRequest;
import com.emotion.dto.response.coze.CozeApiCallResponse;
import com.emotion.entity.CozeApiCall;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * Coze API调用记录服务接口
 * 
 * @author huazhongmin
 * @date 2025-07-23
 */
public interface CozeApiCallService extends IService<CozeApiCall> {
    
    /**
     * 分页查询API调用记录
     */
    PageResult<CozeApiCallResponse> getPage(CozeApiCallPageRequest request);
    
    /**
     * 根据ID获取API调用记录
     */
    CozeApiCallResponse getById(String id);

    /**
     * 创建API调用记录
     */
    CozeApiCallResponse create(CozeApiCallCreateRequest request);

    /**
     * 更新API调用记录
     */
    CozeApiCallResponse update(CozeApiCallUpdateRequest request);

    /**
     * 删除API调用记录
     */
    boolean delete(String id);
    
    /**
     * 统计用户的API调用次数
     */
    Long countByUserId(String userId);
    
    /**
     * 统计Bot的API调用次数
     */
    Long countByBotId(String botId);
    
    /**
     * 统计指定状态的API调用次数
     */
    Long countByStatus(String status);
    
    /**
     * 统计用户的Token使用量
     */
    Long sumTokensByUserId(String userId);
    
    /**
     * 统计用户的API调用费用
     */
    BigDecimal sumCostByUserId(String userId);
}