办学质量监测教学评价系统
ageer
2025-05-17 c7d0e9337ad62ca2776464c0b8ab3ba2d7a652df
fix: 修复聊天记录保存异常
已修改3个文件
20 ■■■■■ 文件已修改
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/ChatCostServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
@@ -43,6 +43,7 @@
    /**
     * 会话id
     */
    @NotBlank(message = "会话id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long sessionId;
    /**
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/ChatCostServiceImpl.java
@@ -54,14 +54,18 @@
        String modelName = chatRequest.getModel();
        ChatMessageBo chatMessageBo = new ChatMessageBo();
        chatMessageBo.setSessionId(chatRequest.getSessionId());
        if(chatRequest.getSessionId() == null){
            Object sessionId = LocalCache.CACHE.get("sessionId");
            chatRequest.setSessionId((Long) sessionId);
        }
        Object userId = LocalCache.CACHE.get("userId");
        if(userId!=null){
            chatMessageBo.setUserId((Long) userId);
        }else {
            chatMessageBo.setUserId(getUserId());
        }
        chatMessageBo.setUserId((Long) userId);
        chatMessageBo.setSessionId(chatRequest.getSessionId());
        chatMessageBo.setContent(chatRequest.getPrompt());
        // 计算总token数
        ChatToken chatToken = chatTokenService.queryByUserId(chatMessageBo.getUserId(), modelName);
        if (chatToken == null) {
@@ -95,7 +99,7 @@
                deductUserBalance(chatMessageBo.getUserId(), numberCost);
                chatMessageBo.setDeductCost(numberCost);
            }
            chatMessageBo.setContent(chatRequest.getPrompt());
        } else {
            deductUserBalance(chatMessageBo.getUserId(), 0.0);
            chatMessageBo.setDeductCost(0d);
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java
@@ -89,6 +89,7 @@
                chatSessionService.insertByBo(chatSessionBo);
                chatRequest.setSessionId(chatSessionBo.getId());
            }
            LocalCache.CACHE.put("sessionId", chatRequest.getSessionId());
            // 保存消息记录 并扣除费用
            chatCostService.deductToken(chatRequest);
            // 根据模型分类调用不同的处理逻辑