办学质量监测教学评价系统
ageerle
2025-05-24 373424bd010cfae218570e602199e2ac6754a0ef
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/ChatCostServiceImpl.java
@@ -13,7 +13,7 @@
import org.ruoyi.common.core.exception.ServiceException;
import org.ruoyi.common.core.exception.base.BaseException;
import org.ruoyi.common.satoken.utils.LoginHelper;
import org.ruoyi.domain.ChatToken;
import org.ruoyi.domain.ChatUsageToken;
import org.ruoyi.domain.bo.ChatMessageBo;
import org.ruoyi.domain.vo.ChatModelVo;
import org.ruoyi.service.IChatMessageService;
@@ -48,6 +48,9 @@
     */
    @Override
    public void deductToken(ChatRequest chatRequest) {
        if(chatRequest.getUserId()==null || chatRequest.getSessionId()==null){
            return;
        }
        int tokens = TikTokensUtil.tokens(chatRequest.getModel(), chatRequest.getPrompt());
@@ -55,24 +58,19 @@
        ChatMessageBo chatMessageBo = new ChatMessageBo();
        if(chatRequest.getSessionId() == null){
            Object sessionId = LocalCache.CACHE.get("sessionId");
            chatRequest.setSessionId((Long) sessionId);
        }
        Object userId = LocalCache.CACHE.get("userId");
        chatMessageBo.setUserId((Long) userId);
        // 设置用户id
        chatMessageBo.setUserId(chatRequest.getUserId());
        // 设置对话角色
        chatMessageBo.setRole(chatRequest.getRole());
        // 设置会话id
        chatMessageBo.setSessionId(chatRequest.getSessionId());
        // 设置对话内容
        chatMessageBo.setContent(chatRequest.getPrompt());
        // 计算总token数
        ChatToken chatToken = chatTokenService.queryByUserId(chatMessageBo.getUserId(), modelName);
        ChatUsageToken chatToken = chatTokenService.queryByUserId(chatMessageBo.getUserId(), modelName);
        if (chatToken == null) {
            chatToken = new ChatToken();
            chatToken = new ChatUsageToken();
            chatToken.setToken(0);
        }
        int totalTokens = chatToken.getToken() + tokens;