TASK:collection sort;

This commit is contained in:
shahaibo
2025-06-02 16:19:41 +08:00
parent f0b1d3f9ce
commit becdbf1891
4 changed files with 175 additions and 100 deletions

View File

@@ -64,6 +64,19 @@ public class LLMController {
return llmService.stream(prompt, projectId, fileUrl, imageUrlList, token, enableThinking, process); return llmService.stream(prompt, projectId, fileUrl, imageUrlList, token, enableThinking, process);
} }
@ApiOperation(value = "对话")
@CrossOrigin
@GetMapping(value = "/streamNew", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public SseEmitter streamNew(@RequestParam String prompt,
@RequestParam(required = false) Long projectId,
@RequestParam(required = false) String fileUrl,
@RequestParam(required = false) List<String> imageUrlList,
@RequestParam(required = false) String process,
@RequestParam String token,
@RequestParam Boolean enableThinking) {
return llmService.streamNew(prompt, projectId, fileUrl, imageUrlList, token, enableThinking, process);
}
@ApiOperation(value = "对话创建项目") @ApiOperation(value = "对话创建项目")
@GetMapping(value = "/chatCreateProject") @GetMapping(value = "/chatCreateProject")
public Response<Long> chatCreateProject(@RequestParam String prompt, @RequestParam String process, public Response<Long> chatCreateProject(@RequestParam String prompt, @RequestParam String process,

View File

@@ -38,4 +38,6 @@ public interface LLMService {
List<String> uploadFile(MultipartFile file); List<String> uploadFile(MultipartFile file);
PageBaseResponse<ChatMessage> getChatHistory(ChatHistoryDTO chatHistoryDTO); PageBaseResponse<ChatMessage> getChatHistory(ChatHistoryDTO chatHistoryDTO);
SseEmitter streamNew(String prompt, Long projectId, String fileUrl, List<String> imageUrlList, String token, Boolean enableThinking, String process);
} }

View File

@@ -188,103 +188,162 @@ public class LLMServiceImpl implements LLMService {
systemImage.setAccountId(accountId); systemImage.setAccountId(accountId);
chatMessageMapper.insert(systemImage); chatMessageMapper.insert(systemImage);
} }
// if (status.equals("[PROJECT_CREATE_SIGNAL]")) {
// JSONObject data = toolsData; emitter.send(json.toJSONString());
// Project project = projectMapper.selectById(projectId); }
// LocalDateTime now = LocalDateTime.now(); }
// project.setUpdateTime(now); }
// project.setAccountId(accountId); }
// project.setName(data.getString("project_name")); if (responseContentBuilder.length() != 0) {
// project.setOriginal(1); systemMessage.setSeq(getNextSeq(projectId));
// project.setProcess(process); systemMessage.setCreateTime(LocalDateTime.now());
// projectMapper.updateById(project); systemMessage.setContent(responseContentBuilder.toString());
// chatMessageMapper.insert(systemMessage);
// Workspace workspace = new Workspace(); }
// workspace.setAccountId(accountId); }
// workspace.setCreateTime(now); }
// String ageGroup = data.getString("ageGroup");
// if (StringUtils.isEmpty(ageGroup)) { emitter.complete();
// workspace.setAgeGroup("Adult"); } catch (Exception e) {
// }else { System.out.println("走进异常");
// if (AgeGroup.isValidName(process)) { emitter.completeWithError(e);
// workspace.setAgeGroup(ageGroup); }
// }else { });
// workspace.setAgeGroup("Adult");
// } return emitter;
// } }
// String gender = data.getString("gender");
// if (StringUtils.isEmpty(gender)) { @Override
// workspace.setSex("Female"); public SseEmitter streamNew(String prompt, Long projectParamId, String fileUrl, List<String> imageUrlList, String token, Boolean enableThinking, String process) {
// }else { SseEmitter emitter = new SseEmitter(0L); // 永不超时
// if (Sex.isValidName(gender)) {
// workspace.setSex(gender); executor.submit(() -> {
// }else { try {
// workspace.setSex("Female"); boolean validate = jwtTokenHelper.validateToken(token);
// } if (validate) {
// } AuthPrincipalVo principal = jwtTokenHelper.parserToUser(token);
// String position = data.getString("position"); Long accountId = principal.getId();
// if (process.equals(DesignProcess.SERIES_DESIGN.name())) { // String url = "http://18.167.251.121:10002/chat-stream";
// workspace.setPosition("Overall"); String url = "http://18.167.251.121:10002/api/chat_stream";
// }else { // String url = "http://10.1.1.240:1013/chat-stream";
// if (StringUtils.isEmpty(position)) { HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
// if (workspace.getSex().equals("Female")) { conn.setRequestMethod("POST");
// workspace.setPosition(Position.BLOUSE.getValue()); conn.setDoOutput(true);
// }else { conn.setRequestProperty("Content-Type", "application/json");
// workspace.setPosition(Position.TOPS.getValue()); Long projectId = null;
// } if (null == projectParamId) {
// }else { Project project = new Project();
// if (Position.isValidName(position)) { project.setCreateTime(LocalDateTime.now());
// workspace.setPosition(position); projectMapper.insert(project);
// }else { projectId = project.getId();
// if (workspace.getSex().equals("Female")) { }else {
// workspace.setPosition(Position.BLOUSE.getValue()); projectId = projectParamId;
// }else { }
// workspace.setPosition(Position.TOPS.getValue());
// } JSONObject jsonBodyObject = new JSONObject();
// } jsonBodyObject.put("project_id", projectId.toString());
// } jsonBodyObject.put("role", "user");
// } jsonBodyObject.put("image", !CollectionUtils.isEmpty(imageUrlList) ? imageUrlList : new ArrayList<>()); // 可扩展
// workspace.setSystemDesignerPercentage(30); // jsonBodyObject.put("image", ""); // 可扩展
// workspace.setProjectId(project.getId()); jsonBodyObject.put("file", !StringUtils.isEmpty(fileUrl) ? Collections.singletonList(fileUrl) : new ArrayList<>());
// workspace.setAccountId(accountId); jsonBodyObject.put("message", prompt);
// String style = data.getString("style"); jsonBodyObject.put("enable_thinking", enableThinking);
// String styleName = null; jsonBodyObject.put("process", !StringUtils.isEmpty(process) ? process : "");
// if (StringUtils.isEmpty(style)) { jsonBodyObject.put("is_create_project", false);
// styleName = StyleEnum.NEW_CHINESE.name();
// }else { // 1. 存储用户输入
// if (StyleEnum.isValidName(style)) { ChatMessage userMessage = new ChatMessage();
// styleName = style; userMessage.setRole("user");
// }else { userMessage.setProjectId(projectId);
// styleName = StyleEnum.NEW_CHINESE.name(); userMessage.setSeq(getNextSeq(projectId));
// } userMessage.setCreateTime(LocalDateTime.now());
// } userMessage.setContent(jsonBodyObject.toJSONString());
// userMessage.setAccountId(accountId);
// SysFile sysFile = sysFileService.getOneBySex(styleName, workspace.getSex(), workspace.getAgeGroup()); chatMessageMapper.insert(userMessage);
//
// if (workspace.getSex().equals(Sex.FEMALE.getValue())) { try (OutputStream os = conn.getOutputStream()) {
// workspace.setMannequinFemaleId(sysFile.getId()); System.out.println(jsonBodyObject.toJSONString());
// workspace.setMannequinFemaleType("System"); byte[] input = jsonBodyObject.toJSONString().getBytes(StandardCharsets.UTF_8);
// }else { os.write(input, 0, input.length);
// workspace.setMannequinMaleId(sysFile.getId()); }
// workspace.setMannequinMaleType("System");
// } // 2. 流式接收并累积内容
// // 3. 存储系统回复
// workspaceMapper.insert(workspace); ChatMessage systemMessage = new ChatMessage();
// systemMessage.setRole("system");
// if (!StringUtils.isEmpty(styleName)) { systemMessage.setIsImage(0);
// QueryWrapper<Style> qw = new QueryWrapper<>(); systemMessage.setProjectId(projectId);
// qw.lambda().eq(Style::getName, styleName); systemMessage.setAccountId(accountId);
// Style style1 = styleMapper.selectOne(qw); StringBuilder responseContentBuilder = new StringBuilder();
// if (Objects.nonNull(style1)) { String contentType = "";
// WorkspaceRelStyle rel = new WorkspaceRelStyle(); try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) {
// rel.setWorkspaceId(workspace.getId()); String line;
// rel.setStyleId(style1.getId()); while ((line = reader.readLine()) != null) {
// workspaceRelStyleMapper.insert(rel); line = line.trim();
// } if (!line.isEmpty() && line.startsWith("data: ")) {
// } String jsonStr = line.substring(12);
// toolsData.put("projectId", projectId); System.out.println(jsonStr);
// json.put("tools_data", toolsData.toJSONString()); JSONObject json = JSON.parseObject(jsonStr);
// } String type = json.getString("type");
if (!StringUtils.isEmpty(type)) {
String content = json.getString("content");
// 结束标识
if ("done".equals(type)) {
break;
}
if ("text".equals(type) || "think".equals(type)) {
if (StringUtils.isEmpty(contentType)) {
contentType = type;
}
if (!contentType.equals(type)) {
systemMessage.setSeq(getNextSeq(projectId));
systemMessage.setCreateTime(LocalDateTime.now());
systemMessage.setContent(responseContentBuilder.toString());
chatMessageMapper.insert(systemMessage);
systemMessage.setId(null);
responseContentBuilder = new StringBuilder();
contentType = type;
}
responseContentBuilder.append(content);
emitter.send(json.toJSONString());
}else if ("tools_response".equals(type)){
if (responseContentBuilder.length() != 0) {
systemMessage.setSeq(getNextSeq(projectId));
systemMessage.setCreateTime(LocalDateTime.now());
systemMessage.setContent(responseContentBuilder.toString());
chatMessageMapper.insert(systemMessage);
systemMessage.setId(null);
responseContentBuilder = new StringBuilder();
}
String toolsName = json.getString("tools_name");
JSONObject toolsData = json.getJSONObject("content");
if (Objects.nonNull(toolsName) && !toolsName.equals("design_control_signal") && !toolsName.equals("generate_project_info")) {
boolean color = true;
ReceiveDesignParam receiveDesignParam = JSONObject.parseObject(JSONObject.toJSONString(toolsData), ReceiveDesignParam.class);
receiveDesignParam.setProjectId(projectId);
designService.receiveDesignParams(receiveDesignParam);
for (ReceiveCollectionElement receiveCollectionElement : receiveDesignParam.getReceiveCollectionElementList()) {
if (!StringUtils.isEmpty(receiveCollectionElement.getUrl())) {
color = false;
receiveCollectionElement.setMinioUrl(minioUtil.getPreSignedUrl(receiveCollectionElement.getUrl(), 24 * 60));
}
}
String jsonString = JSONObject.toJSONString(receiveDesignParam);
json.put("content", jsonString);
ChatMessage systemImage = new ChatMessage();
systemImage.setRole("system");
if (color) {
systemImage.setIsImage(1);
}else {
systemImage.setIsImage(2);
}
systemImage.setProjectId(projectId);
systemImage.setSeq(getNextSeq(projectId));
systemImage.setCreateTime(LocalDateTime.now());
systemImage.setContent(JSONObject.toJSONString(receiveDesignParam.getReceiveCollectionElementList()));
systemImage.setAccountId(accountId);
chatMessageMapper.insert(systemImage);
}
emitter.send(json.toJSONString()); emitter.send(json.toJSONString());
} }
} }

View File

@@ -590,10 +590,11 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
ToProductImageResult toProductImageResult = new ToProductImageResult(); ToProductImageResult toProductImageResult = new ToProductImageResult();
toProductImageResult.setIsLike(1); toProductImageResult.setIsLike(1);
toProductImageResultMapper.update(toProductImageResult, qw); toProductImageResultMapper.update(toProductImageResult, qw);
if (toProductImageResult.getResultType().equals("Relight")) { ToProductImageResult toProductImageResult1 = toProductImageResultMapper.selectById(toProductImageResultId.get(0));
designService.addCollectionSort(toProductImageResult.getId(), CollectionType.RELIGHT.getValue(), productImageLikeDTO.getProjectId()); if (toProductImageResult1.getResultType().equals("Relight")) {
designService.addCollectionSort(toProductImageResult1.getId(), CollectionType.RELIGHT.getValue(), productImageLikeDTO.getProjectId());
}else { }else {
designService.addCollectionSort(toProductImageResult.getId(), CollectionType.TO_PRODUCT_IMAGE.getValue(), productImageLikeDTO.getProjectId()); designService.addCollectionSort(toProductImageResult1.getId(), CollectionType.TO_PRODUCT_IMAGE.getValue(), productImageLikeDTO.getProjectId());
} }
return Boolean.TRUE; return Boolean.TRUE;
} }