diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java index 032c859..0de4be0 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java @@ -1,6 +1,7 @@ package com.electromagnetic.industry.software.manage.config; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.electromagnetic.industry.software.common.pojo.UserLoginInfo; import com.electromagnetic.industry.software.common.util.UserThreadLocal; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; @@ -29,7 +30,7 @@ public class EdMetaObjectHandler implements MetaObjectHandler { this.strictInsertFill(metaObject, "updatedAt", Date.class, new Date()); } if (metaObject.hasGetter("createdBy")) { - this.setFieldValByName("createdBy", Optional.ofNullable(UserThreadLocal.getUserId()).orElse(""), metaObject); + this.setFieldValByName("createdBy", Optional.ofNullable(UserThreadLocal.getUser()).map(UserLoginInfo::getUserId).orElse(""), metaObject); } } @@ -45,7 +46,7 @@ public class EdMetaObjectHandler implements MetaObjectHandler { this.setFieldValByName("updatedTime", new Date(), metaObject); } if (metaObject.hasGetter("updatedBy")) { - this.setFieldValByName("updatedBy", Optional.ofNullable(UserThreadLocal.getUserId()).orElse(""), metaObject); + this.setFieldValByName("updatedBy", Optional.ofNullable(UserThreadLocal.getUser()).map(UserLoginInfo::getUserId).orElse(""), metaObject); } } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiController.java index af9be4c..7d95bb9 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiController.java @@ -2,6 +2,7 @@ package com.electromagnetic.industry.software.manage.controller; import cn.hutool.core.util.StrUtil; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.manage.ai.ChatTaskThread1; import com.electromagnetic.industry.software.manage.ai.ChatTaskThread2; import com.electromagnetic.industry.software.manage.ai.ThreadUtil; @@ -46,6 +47,7 @@ public class AiController { if (StrUtil.isEmpty(queryDTO.getMsg())) { return Flux.empty(); } + queryDTO.setUserId(UserThreadLocal.getUserId()); ChatTaskThread1 chatTaskThread = new ChatTaskThread1(chatService, queryDTO); Future> future = ThreadUtil.getThreadPool().submit(chatTaskThread); return future.get(); @@ -56,6 +58,7 @@ public class AiController { if (StrUtil.isEmpty(queryDTO.getMsg())) { return Flux.empty(); } + queryDTO.setUserId(UserThreadLocal.getUserId()); ChatTaskThread2 chatTaskThread2 = new ChatTaskThread2(chatService, queryDTO); Future> future = ThreadUtil.getThreadPool().submit(chatTaskThread2); return future.get(); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/QueryDTO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/QueryDTO.java index 0077343..165bb38 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/QueryDTO.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/QueryDTO.java @@ -7,5 +7,5 @@ public class QueryDTO { private String msg; -// private String userId; + private String userId; } \ No newline at end of file diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java index 45c5f15..f267e0c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java @@ -7,9 +7,11 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.DigestUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.pojo.UserLoginInfo; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; import com.electromagnetic.industry.software.common.util.IdWorker; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.manage.mapper.AiFileUploadRecordMapper; import com.electromagnetic.industry.software.manage.mapper.AiQuestionRecordMapper; import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord; @@ -123,13 +125,23 @@ public class ChatService { } public Flux chatStreamStr(QueryDTO queryDTO) { - AiQuestionRecord record = new AiQuestionRecord().setQuestion(queryDTO.getMsg()).setId(IdWorker.getSnowFlakeIdString()); + AiQuestionRecord record = new AiQuestionRecord() + .setQuestion(queryDTO.getMsg()) + .setId(IdWorker.getSnowFlakeIdString()); + UserLoginInfo userLoginInfo = new UserLoginInfo(); + userLoginInfo.setUserId(queryDTO.getUserId()); + UserThreadLocal.set(userLoginInfo); aiQuestionRecordMapper.insert(record); + UserThreadLocal.remove(); return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build().prompt(queryDTO.getMsg()).stream().content(); } public Flux chatStreamResponse(QueryDTO queryDTO) { AiQuestionRecord record = new AiQuestionRecord().setQuestion(queryDTO.getMsg()).setId(IdWorker.getSnowFlakeIdString()); + UserLoginInfo userLoginInfo = new UserLoginInfo(); + userLoginInfo.setUserId(queryDTO.getUserId()); + UserThreadLocal.set(userLoginInfo); + UserThreadLocal.remove(); aiQuestionRecordMapper.insert(record); return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build() .prompt(new Prompt(new UserMessage(queryDTO.getMsg())))