package com.cyksj.service.claude;

import com.cyksj.model.entity.ClaudeUser;
import com.cyksj.model.request.gpt.ConversationRequest;
import com.cyksj.model.response.ConversationLimitResponse;
import com.cyksj.model.views.ClaudeUserView;

import java.time.LocalDateTime;

/**
 * @author chan
 * @date 2024/8/8 18:34
 */
public interface ClaudeService {
    ClaudeUserView getUserInfo(long userId, Long relationId);

    ClaudeUser findByUserTokenAndExpireTimeAfter(String userToken, LocalDateTime now);

    ConversationLimitResponse conversationLimit(String userToken, ClaudeUser user);

    void carLimited(String carId, String finalUserToken, Long expTime);

    ClaudeUser getClaudeUser(long userId, Long relationId);

    void saveConversationRecord(String userToken, ConversationRequest conversationRequest);

    ClaudeUser checkCarAccount(Long userId, Long relationId);

    String getCarLoginUrl(String domain, Long userId, Long relationId, String carId);

    Long getConversationCount(String userToken, Long limitTime);

    Long carLimit(String carId);

	void clearNum(String userToken) throws Exception;

    void clearNumByRelationId(Long relationId) throws Exception;
}
