diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index 372f0eae..d6acff79 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -114,7 +114,7 @@ public class GenerateController { @ApiOperation("喜欢或取消喜欢姿势变换生成的图片") @PostMapping("/likeOrDislike") - public Response likeOrDislike(@ApiParam("id") @RequestParam Long transformedId, @ApiParam("like || dislike") @RequestParam String likeOrDislike, @RequestParam("projectId") Long projectId) { + public Response likeOrDislike(@ApiParam("id") @RequestParam Long transformedId, @ApiParam("like || dislike") @RequestParam String likeOrDislike, @RequestParam("projectId") Long projectId) { return Response.success(generateService.disOrLikePose(transformedId, likeOrDislike, projectId)); } diff --git a/src/main/java/com/ai/da/controller/SavedCollectionController.java b/src/main/java/com/ai/da/controller/SavedCollectionController.java index d93c44fb..4f4c40ab 100644 --- a/src/main/java/com/ai/da/controller/SavedCollectionController.java +++ b/src/main/java/com/ai/da/controller/SavedCollectionController.java @@ -199,7 +199,7 @@ public class SavedCollectionController { @ApiOperation(value = "productImageLike") @PostMapping("/productImageLike") - public Response productImageLike(@Valid @RequestBody ProductImageLikeDTO productImageLikeDTO) { + public Response productImageLike(@Valid @RequestBody ProductImageLikeDTO productImageLikeDTO) { return Response.success(userLikeGroupService.productImageLike(productImageLikeDTO)); } diff --git a/src/main/java/com/ai/da/model/dto/BatchParamDTO.java b/src/main/java/com/ai/da/model/dto/BatchParamDTO.java new file mode 100644 index 00000000..81ca9401 --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/BatchParamDTO.java @@ -0,0 +1,14 @@ +package com.ai.da.model.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class BatchParamDTO { + private String tasks_id; + private String prompt; + private BigDecimal image_strength; + private String image_url; + private String product_type; +} diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index a82607f2..fcf34798 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -4271,7 +4271,7 @@ public class PythonService { } } - public Boolean toProductImageBatch(String url, String taskId, String prompt, BigDecimal imageStrength, String productType) { + public Boolean toProductImageBatch(String taskIdBatch, List paramList, String userId) { // todo 限流校验 // AccessLimitUtils.validate("design",5); OkHttpClient client = new OkHttpClient().newBuilder() @@ -4283,12 +4283,9 @@ public class PythonService { MediaType mediaType = MediaType.parse("application/json"); //关闭FastJson的引用检测 防止出现$ref 现象 Map map = new HashMap<>(); - map.put("tasks_id", taskId); - map.put("image_url", url); - map.put("prompt", prompt); - map.put("image_strength", imageStrength); - map.put("product_type", productType); - map.put("batch_size", 1); + map.put("user_id", userId); + map.put("batch_data_list", paramList); + map.put("batch_tasks_id", taskIdBatch); log.info("toProductImage请求python 参数:####{}", map); String param = JSON.toJSONString(map, SerializerFeature.WriteNullStringAsEmpty); System.out.println(param); @@ -4446,4 +4443,61 @@ public class PythonService { log.error("PythonService##getProjectParam接口调用失败###{}", response); throw new BusinessException("getProjectParam.interface.exception"); } + + public List getPrompt(String string, int num) { + OkHttpClient client = new OkHttpClient().newBuilder() + .connectTimeout(30, TimeUnit.SECONDS) + .pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒) + .readTimeout(60, TimeUnit.SECONDS)//读取超时(单位:秒) + .writeTimeout(60, TimeUnit.SECONDS)//写入超时(单位:秒) + .build(); + MediaType mediaType = MediaType.parse("application/json"); + Map content = Maps.newHashMap(); + content.put("text", string); + content.put("num", num); + content.put("language", "english"); + RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(content)); + + log.info("batch_prompt_optimizer 请求地址: {}", accessPythonIp + ":" + accessPythonPort + "/api/batch_prompt_optimizer"); + Request request = new Request.Builder() + .url(accessPythonIp + ":" + "10002" + "/api/batch_prompt_optimizer") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .build(); + Response response = null; + try { + response = client.newCall(request).execute(); + } catch (IOException ioException) { + log.error("PythonService##batch_prompt_optimizer异常###{}", ExceptionUtil.getThrowableList(ioException)); + throw new BusinessException("batch_prompt_optimizer.interface.exception"); + } + String responseBody; + if (response.isSuccessful() && response.body() != null) { + try { + responseBody = response.body().string(); + JSONObject responseObject = JSON.parseObject(responseBody); + JSONObject dataObject = responseObject.getJSONObject("data"); + if (dataObject != null) { + // 获取prompt_list数组 + JSONArray promptArray = dataObject.getJSONArray("prompt_list"); + if (promptArray != null) { + // 转换为List + List promptList = new ArrayList<>(); + for (int i = 0; i < promptArray.size(); i++) { + promptList.add(promptArray.getString(i)); + } + return promptList; + } + } + log.info("PythonService##responseObject###{}", responseObject); + return null; + } catch (IOException | JSONException e) { + log.error("PythonService##batch_prompt_optimizer异常###{}", e.getMessage()); + throw new BusinessException("batch_prompt_optimizer.interface.exception"); + } + } + + log.error("PythonService##batch_prompt_optimizer接口调用失败###{}", response); + throw new BusinessException("batch_prompt_optimizer.interface.exception"); + } } diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 1bfc1245..dde44c59 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -54,7 +54,7 @@ public interface GenerateService extends IService { List getPoseTransformationResultList(Long projectId); - Boolean disOrLikePose(Long transformedId, String likeOrDislike, Long projectId); + Object disOrLikePose(Long transformedId, String likeOrDislike, Long projectId); String modifyModelProportion(ModifyModelProportionDTO proportionDTO); diff --git a/src/main/java/com/ai/da/service/UserLikeGroupService.java b/src/main/java/com/ai/da/service/UserLikeGroupService.java index 017d6df4..e79ed280 100644 --- a/src/main/java/com/ai/da/service/UserLikeGroupService.java +++ b/src/main/java/com/ai/da/service/UserLikeGroupService.java @@ -52,7 +52,7 @@ public interface UserLikeGroupService extends IService { ToProductElementVO toProductImageElementUpload(MultipartFile file, Long projectId); - Boolean productImageLike(ProductImageLikeDTO productImageLikeDTO); + Long productImageLike(ProductImageLikeDTO productImageLikeDTO); List getToProductImageResultList(List taskIdList); diff --git a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java index 66367b93..673d9e30 100644 --- a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java @@ -1878,47 +1878,53 @@ public class DesignServiceImpl extends ServiceImpl impleme prompt = pythonService.promptTranslate(prompt); } - int fullBatches = toProductImageDTO.getToProductImageVOList().size() / cloudTaskDTO.getNums(); // 可整除的次数 - int remainder = toProductImageDTO.getToProductImageVOList().size() % cloudTaskDTO.getNums(); // 剩下的余数 + Map toProductImageVOIntegerMap = allocateElements(toProductImageDTO.getToProductImageVOList(), cloudTaskDTO.getNums()); - for (int i1 = 0; i1 < fullBatches; i1++) { - // TODO prompt微调 -// String newPrompt = pythonService.getPrompt(prompt); -// BigDecimal randomFromRange = getRandomFromRange(toProductImageDTO.getImageStrengthMin(), toProductImageDTO.getImageStrengthMax()); - for (ToProductImageVO toProductImageVO : toProductImageDTO.getToProductImageVOList()) { - String taskId; - if (toProductImageVO.getElementType().equals("DesignOutfit")) { + for (ToProductImageVO toProductImageVO : toProductImageDTO.getToProductImageVOList()) { + String taskId; + if (toProductImageVO.getElementType().equals("DesignOutfit")) { + TDesignPythonOutfit tDesignPythonOutfit = designPythonOutfitMapper.selectById(toProductImageVO.getElementId()); + + Long designItemId = tDesignPythonOutfit.getDesignItemId(); + QueryWrapper designItemDetailQueryWrapper = new QueryWrapper<>(); + designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemId); + designItemDetailQueryWrapper.lambda().ne(DesignItemDetail::getType, "Body"); + List designItemDetails = designItemDetailMapper.selectList(designItemDetailQueryWrapper); + String collect = designItemDetails.stream().map(DesignItemDetail::getType).collect(Collectors.joining(",")); + + Long designId = tDesignPythonOutfit.getDesignId(); + Design design = designMapper.selectById(designId); + String productType = "overall"; + if (design.getSingleOverall().equals("single")) { + productType = "single"; + sb.append(collect); + }else { + if (collect.contains("Tops")) { + sb.append("a handsome man,"); + }else { + sb.append("a beautiful women,"); + } + sb.append("wearing ").append(collect); + } + if (StringUtils.isEmpty(prompt)) { + sb.append(",high quality clothing details,8K realistic,HDR"); + }else { + sb.append(",high quality clothing details,").append(prompt).append(",8K realistic,HDR"); + } + // 走模型 + List paramList = new ArrayList<>(); + List promptList = pythonService.getPrompt(sb.toString(), toProductImageVOIntegerMap.get(toProductImageVO)); + for (int i1 = 0; i1 < toProductImageVOIntegerMap.get(toProductImageVO); i1++) { + BatchParamDTO batchParamDTO = new BatchParamDTO(); taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId(); - TDesignPythonOutfit tDesignPythonOutfit = designPythonOutfitMapper.selectById(toProductImageVO.getElementId()); + batchParamDTO.setTasks_id(taskId); + batchParamDTO.setPrompt(promptList.get(i1)); + BigDecimal randomFromRange = getRandomFromRange(toProductImageDTO.getImageStrengthMin(), toProductImageDTO.getImageStrengthMax()); + batchParamDTO.setImage_strength(randomFromRange); + batchParamDTO.setImage_url(tDesignPythonOutfit.getDesignUrl()); + batchParamDTO.setProduct_type(productType); + paramList.add(batchParamDTO); - Long designItemId = tDesignPythonOutfit.getDesignItemId(); - QueryWrapper designItemDetailQueryWrapper = new QueryWrapper<>(); - designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemId); - designItemDetailQueryWrapper.lambda().ne(DesignItemDetail::getType, "Body"); - List designItemDetails = designItemDetailMapper.selectList(designItemDetailQueryWrapper); - String collect = designItemDetails.stream().map(DesignItemDetail::getType).collect(Collectors.joining(",")); - - Long designId = tDesignPythonOutfit.getDesignId(); - Design design = designMapper.selectById(designId); - String productType = "overall"; - if (design.getSingleOverall().equals("single")) { - productType = "single"; - sb.append(collect); - }else { - if (collect.contains("Tops")) { - sb.append("a handsome man,"); - }else { - sb.append("a beautiful women,"); - } - sb.append("wearing ").append(collect); - } - if (StringUtils.isEmpty(prompt)) { - sb.append(",high quality clothing details,8K realistic,HDR"); - }else { - sb.append(",high quality clothing details,").append(prompt).append(",8K realistic,HDR"); - } - // 走模型 - pythonService.toProductImageBatch(tDesignPythonOutfit.getDesignUrl(), taskId, sb.toString(), toProductImageDTO.getImageStrength(), productType); ToProductImageResult toProductImageResult = new ToProductImageResult(); toProductImageResult.setElementId(tDesignPythonOutfit.getId()); toProductImageResult.setElementType("DesignOutfit"); @@ -1931,20 +1937,37 @@ public class DesignServiceImpl extends ServiceImpl impleme if (userLikeGroupId != null) { toProductImageResult.setUserLikeGroupId(userLikeGroupId); } - toProductImageResult.setImageStrength(toProductImageDTO.getImageStrength()); + toProductImageResult.setImageStrength(randomFromRange); toProductImageResultMapper.insert(toProductImageResult); result.add(toProductImageResult); + // 添加需要扣除的积分到预扣除区 + creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.TO_PRODUCT_IMAGE); + i ++; + } + pythonService.toProductImageBatch(batchTaskId, paramList, userHolder.getId().toString()); + }else { + if (StringUtils.isEmpty(prompt)) { + sb.append(",high quality clothing details,8K realistic,HDR"); }else { - if (StringUtils.isEmpty(prompt)) { - sb.append(",high quality clothing details,8K realistic,HDR"); - }else { - sb.append(",high quality clothing details,").append(prompt).append(",8K realistic,HDR"); - } + sb.append(",high quality clothing details,").append(prompt).append(",8K realistic,HDR"); + } + taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId(); + ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId()); + // 走模型 + List paramList = new ArrayList<>(); + List promptList = pythonService.getPrompt(sb.toString(), toProductImageVOIntegerMap.get(toProductImageVO)); + for (int i1 = 0; i1 < toProductImageVOIntegerMap.get(toProductImageVO); i1++) { + BatchParamDTO batchParamDTO = new BatchParamDTO(); taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId(); - ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId()); - // 走模型 - pythonService.toProductImageBatch(toProductElement.getUrl(), taskId, sb.toString(), toProductImageDTO.getImageStrength(), "overall"); + batchParamDTO.setTasks_id(taskId); + batchParamDTO.setPrompt(promptList.get(i1)); + BigDecimal randomFromRange = getRandomFromRange(toProductImageDTO.getImageStrengthMin(), toProductImageDTO.getImageStrengthMax()); + batchParamDTO.setImage_strength(randomFromRange); + batchParamDTO.setImage_url(toProductElement.getUrl()); + batchParamDTO.setProduct_type("overall"); + paramList.add(batchParamDTO); + ToProductImageResult toProductImageResult = new ToProductImageResult(); toProductImageResult.setElementId(toProductElement.getId()); toProductImageResult.setElementType("ProductElement"); @@ -1957,108 +1980,16 @@ public class DesignServiceImpl extends ServiceImpl impleme if (userLikeGroupId != null) { toProductImageResult.setUserLikeGroupId(userLikeGroupId); } - toProductImageResult.setImageStrength(toProductImageDTO.getImageStrength()); + toProductImageResult.setImageStrength(randomFromRange); toProductImageResultMapper.insert(toProductImageResult); result.add(toProductImageResult); + // 添加需要扣除的积分到预扣除区 + creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.TO_PRODUCT_IMAGE); + i ++; } - i ++; - sb = new StringBuilder("The best quality, masterpiece, real image."); - // 添加需要扣除的积分到预扣除区 - creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.TO_PRODUCT_IMAGE); - } - } - - if (remainder > 0) { - // TODO: 随机 -// String newPrompt = pythonService.getPrompt(prompt); -// BigDecimal randomFromRange = getRandomFromRange(toProductImageDTO.getImageStrengthMin(), toProductImageDTO.getImageStrengthMax()); - - List tempList = new ArrayList<>(toProductImageDTO.getToProductImageVOList()); - Collections.shuffle(tempList); // 打乱顺序 - - // 取前 remainder 个 - List randomPick = tempList.subList(0, remainder); - for (ToProductImageVO toProductImageVO : randomPick) { - String taskId; - if (toProductImageVO.getElementType().equals("DesignOutfit")) { - taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId(); - TDesignPythonOutfit tDesignPythonOutfit = designPythonOutfitMapper.selectById(toProductImageVO.getElementId()); - - Long designItemId = tDesignPythonOutfit.getDesignItemId(); - QueryWrapper designItemDetailQueryWrapper = new QueryWrapper<>(); - designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemId); - designItemDetailQueryWrapper.lambda().ne(DesignItemDetail::getType, "Body"); - List designItemDetails = designItemDetailMapper.selectList(designItemDetailQueryWrapper); - String collect = designItemDetails.stream().map(DesignItemDetail::getType).collect(Collectors.joining(",")); - - Long designId = tDesignPythonOutfit.getDesignId(); - Design design = designMapper.selectById(designId); - String productType = "overall"; - if (design.getSingleOverall().equals("single")) { - productType = "single"; - sb.append(collect); - }else { - if (collect.contains("Tops")) { - sb.append("a handsome man,"); - }else { - sb.append("a beautiful women,"); - } - sb.append("wearing ").append(collect); - } - if (StringUtils.isEmpty(prompt)) { - sb.append(",high quality clothing details,8K realistic,HDR"); - }else { - sb.append(",high quality clothing details,").append(prompt).append(",8K realistic,HDR"); - } - // 走模型 - pythonService.toProductImageBatch(tDesignPythonOutfit.getDesignUrl(), taskId, sb.toString(), toProductImageDTO.getImageStrength(), productType); - ToProductImageResult toProductImageResult = new ToProductImageResult(); - toProductImageResult.setElementId(tDesignPythonOutfit.getId()); - toProductImageResult.setElementType("DesignOutfit"); - toProductImageResult.setCreateTime(LocalDateTime.now()); - toProductImageResult.setToProductImageRecordId(toProductImageRecord.getId()); - toProductImageResult.setIsLike(0); - toProductImageResult.setTaskId(taskId); - toProductImageResult.setProjectId(projectId); - toProductImageResult.setTaskIdBatch(batchTaskId); - if (userLikeGroupId != null) { - toProductImageResult.setUserLikeGroupId(userLikeGroupId); - } - toProductImageResult.setImageStrength(toProductImageDTO.getImageStrength()); - toProductImageResultMapper.insert(toProductImageResult); - result.add(toProductImageResult); - }else { - if (StringUtils.isEmpty(prompt)) { - sb.append(",high quality clothing details,8K realistic,HDR"); - }else { - sb.append(",high quality clothing details,").append(prompt).append(",8K realistic,HDR"); - } - - taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId(); - ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId()); - // 走模型 - pythonService.toProductImageBatch(toProductElement.getUrl(), taskId, sb.toString(), toProductImageDTO.getImageStrength(), "overall"); - ToProductImageResult toProductImageResult = new ToProductImageResult(); - toProductImageResult.setElementId(toProductElement.getId()); - toProductImageResult.setElementType("ProductElement"); - toProductImageResult.setCreateTime(LocalDateTime.now()); - toProductImageResult.setToProductImageRecordId(toProductImageRecord.getId()); - toProductImageResult.setIsLike(0); - toProductImageResult.setTaskId(taskId); - toProductImageResult.setProjectId(projectId); - toProductImageResult.setTaskIdBatch(batchTaskId); - if (userLikeGroupId != null) { - toProductImageResult.setUserLikeGroupId(userLikeGroupId); - } - toProductImageResult.setImageStrength(toProductImageDTO.getImageStrength()); - toProductImageResultMapper.insert(toProductImageResult); - result.add(toProductImageResult); - } - i ++; - sb = new StringBuilder("The best quality, masterpiece, real image."); - // 添加需要扣除的积分到预扣除区 - creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.TO_PRODUCT_IMAGE); + pythonService.toProductImageBatch(batchTaskId, paramList, userHolder.getId().toString()); } + sb = new StringBuilder("The best quality, masterpiece, real image."); } CloudTask cloudTask = CopyUtil.copyObject(cloudTaskDTO, CloudTask.class); @@ -2229,6 +2160,34 @@ public class DesignServiceImpl extends ServiceImpl impleme return null; } + public static Map allocateElements(List voList, int totalResults) { + + // 计算基础分配值和余数 + int baseAllocation = totalResults / voList.size(); + int remainder = totalResults % voList.size(); + + // 初始化分配结果(每个元素先分配基础值) + Map allocationMap = new HashMap<>(); + for (ToProductImageVO vo : voList) { + allocationMap.put(vo, baseAllocation); + } + + // 如果有余数,随机分配额外的一个结果 + if (remainder > 0) { + // 创建元素ID的可变副本并打乱顺序 + List shuffledIds = new ArrayList<>(voList); + Collections.shuffle(shuffledIds); + + // 将前N个元素各增加1(N=余数) + for (int i = 0; i < remainder; i++) { + ToProductImageVO toProductImageVO = shuffledIds.get(i); + allocationMap.put(toProductImageVO, allocationMap.get(toProductImageVO) + 1); + } + } + + return allocationMap; + } + private DesignCollectionDTO transDesignParam(Long projectId) { DesignCollectionDTO designCollectionDTO = new DesignCollectionDTO(); List collectionElementList = collectionElementService.getByProjectId(projectId); diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index b0f364ee..3d6150b0 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -1049,12 +1049,14 @@ public class GenerateServiceImpl extends ServiceImpl i return vos; } - public Boolean disOrLikePose(Long transformedId, String likeOrDislike, Long projectId){ + public Object disOrLikePose(Long transformedId, String likeOrDislike, Long projectId){ PoseTransformation poseTransformation = poseTransformationMapper.selectById(transformedId); + Long collectionSortId = null; if (Objects.nonNull(poseTransformation)){ if (likeOrDislike.equals("like")){ poseTransformation.setIsLiked((byte)1); - designService.addCollectionSort(poseTransformation.getId(), CollectionType.POSE_TRANSFORM.getValue(), projectId); + CollectionSort collectionSort = designService.addCollectionSort(poseTransformation.getId(), CollectionType.POSE_TRANSFORM.getValue(), projectId); + collectionSortId = collectionSort.getId(); }else if (likeOrDislike.equals("dislike")){ poseTransformation.setIsLiked((byte)0); designService.deleteCollectionSort(poseTransformation.getId(), CollectionType.POSE_TRANSFORM.getValue(), projectId); @@ -1064,6 +1066,9 @@ public class GenerateServiceImpl extends ServiceImpl i }else { return false; } + if (null != collectionSortId) { + return collectionSortId; + } return true; } diff --git a/src/main/java/com/ai/da/service/impl/LLMServiceImpl.java b/src/main/java/com/ai/da/service/impl/LLMServiceImpl.java index 1e59c5ba..7886d282 100644 --- a/src/main/java/com/ai/da/service/impl/LLMServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LLMServiceImpl.java @@ -298,17 +298,19 @@ public class LLMServiceImpl implements LLMService { 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; + if (StringUtils.isEmpty(contentType) || !contentType.equals(type)) { + if ("text".equals(type)) { + responseContentBuilder.append("[TEXT]"); + }else { + responseContentBuilder.append("[THINK]"); + } +// 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()); diff --git a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java index 0d52b9ea..26d05ed9 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -583,7 +583,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl toProductImageResultId = productImageLikeDTO.getToProductImageResultId(); QueryWrapper qw = new QueryWrapper<>(); qw.lambda().in(ToProductImageResult::getId, toProductImageResultId); @@ -591,12 +591,15 @@ public class UserLikeGroupServiceImpl extends ServiceImpl