moodboard基础模型修改
This commit is contained in:
@@ -66,6 +66,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@@ -248,18 +249,27 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
jsonString = JSON.toJSONString(generateToPythonDTO, SerializerFeature.WriteMapNullValue);
|
jsonString = JSON.toJSONString(generateToPythonDTO, SerializerFeature.WriteMapNullValue);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
path = CommonConstant.GENERATE_PATH_FLUX2_KLEIN;
|
if (Objects.equals(version, "fast")) {
|
||||||
// 构建object_name: {userId}/{category}/{uuid}.png
|
GenerateToPythonDTO generateToPythonDTO = new GenerateToPythonDTO(generateThroughImageTextDTO.getUniqueId(), text, Objects.isNull(collectionElement) ? "" : collectionElement.getUrl(),
|
||||||
String objectName = generateThroughImageTextDTO.getUserId() + "/" + category + "/" + UUID.randomUUID() + ".png";
|
mode, category, generateThroughImageTextDTO.getGender(), version);
|
||||||
|
jsonString = JSON.toJSONString(generateToPythonDTO, SerializerFeature.WriteMapNullValue);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
|
||||||
|
path = CommonConstant.GENERATE_PATH_FLUX2_KLEIN;
|
||||||
|
// 构建object_name: {userId}/{category}/{uuid}.png
|
||||||
|
String objectName = generateThroughImageTextDTO.getUserId() + "/" + category + "/" + UUID.randomUUID() + ".png";
|
||||||
|
|
||||||
|
ImageProcessRequest imageProcessRequest = ImageProcessRequest.builder()
|
||||||
|
.object_name(objectName)
|
||||||
|
.bucket_name(userBucket)
|
||||||
|
.prompt(text).build();
|
||||||
|
jsonString = JSON.toJSONString(imageProcessRequest);
|
||||||
|
}
|
||||||
|
|
||||||
ImageProcessRequest imageProcessRequest = ImageProcessRequest.builder()
|
|
||||||
.object_name(objectName)
|
|
||||||
.bucket_name(userBucket)
|
|
||||||
.prompt(text).build();
|
|
||||||
jsonString = JSON.toJSONString(imageProcessRequest);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Boolean requestResult = pythonService.generateSketchOrPrint(jsonString, port, path,generateThroughImageTextDTO.getUniqueId());
|
Boolean requestResult = pythonService.generateSketchOrPrint(jsonString, port, path, generateThroughImageTextDTO.getUniqueId());
|
||||||
|
|
||||||
|
|
||||||
// 5、将本次请求存入redis
|
// 5、将本次请求存入redis
|
||||||
@@ -274,6 +284,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveGenerateImmediately(Generate generate) {
|
public void saveGenerateImmediately(Generate generate) {
|
||||||
save(generate);
|
save(generate);
|
||||||
// 使用 TransactionSynchronizationManager 在事务真正提交后再设锁
|
// 使用 TransactionSynchronizationManager 在事务真正提交后再设锁
|
||||||
@@ -329,52 +340,52 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
log.info("============ProcessGenerateResult listening==========");
|
log.info("============ProcessGenerateResult listening==========");
|
||||||
log.debug("taskId: " + taskId);
|
log.debug("taskId: " + taskId);
|
||||||
String status = null;
|
String status = null;
|
||||||
// 1、处理模型返回的数据
|
// 1、处理模型返回的数据
|
||||||
GenerateDetail generateDetail = new GenerateDetail();
|
GenerateDetail generateDetail = new GenerateDetail();
|
||||||
GenerateCollectionItemVO generateCollectionItemVO = new GenerateCollectionItemVO();
|
GenerateCollectionItemVO generateCollectionItemVO = new GenerateCollectionItemVO();
|
||||||
Generate generate;
|
Generate generate;
|
||||||
try {
|
try {
|
||||||
// 等待 HTTP 线程写入完成后再查库
|
// 等待 HTTP 线程写入完成后再查库
|
||||||
waitForSaveLock(taskId);
|
waitForSaveLock(taskId);
|
||||||
generate = selectByUniqueId(taskId);
|
generate = selectByUniqueId(taskId);
|
||||||
} catch (MybatisPlusException e) {
|
} catch (MybatisPlusException e) {
|
||||||
log.error(e.getMessage());
|
log.error(e.getMessage());
|
||||||
if (e.getMessage().equals("One record is expected, but the query result is multiple records")) {
|
if (e.getMessage().equals("One record is expected, but the query result is multiple records")) {
|
||||||
generate = selectListByUniqueId(taskId).get(0);
|
generate = selectListByUniqueId(taskId).get(0);
|
||||||
} else {
|
} else {
|
||||||
log.error("There are some problems with database query, please try again.");
|
log.error("There are some problems with database query, please try again.");
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Generate generate = selectByUniqueId(taskId);
|
// Generate generate = selectByUniqueId(taskId);
|
||||||
String md5 = MD5Utils.encryptFile(minioUtil.getPreSignedUrl(url, 24 * 60), Boolean.FALSE);
|
String md5 = MD5Utils.encryptFile(minioUtil.getPreSignedUrl(url, 24 * 60), Boolean.FALSE);
|
||||||
// 通过MD5值和level1Type,判断不同level1Type下相同的图片是否被like过
|
// 通过MD5值和level1Type,判断不同level1Type下相同的图片是否被like过
|
||||||
List<Map<String, Long>> libraryIdList = generateDetailMapper.getLibraryIdThroughMD5(md5, generate.getLevel1Type());
|
List<Map<String, Long>> libraryIdList = generateDetailMapper.getLibraryIdThroughMD5(md5, generate.getLevel1Type());
|
||||||
if (!libraryIdList.isEmpty()) {
|
if (!libraryIdList.isEmpty()) {
|
||||||
generateDetail.setIsLike((byte) 1);
|
generateDetail.setIsLike((byte) 1);
|
||||||
generateDetail.setLibraryId(libraryIdList.get(0).get("library_id"));
|
generateDetail.setLibraryId(libraryIdList.get(0).get("library_id"));
|
||||||
generateCollectionItemVO.setIsLiked(Boolean.TRUE);
|
generateCollectionItemVO.setIsLiked(Boolean.TRUE);
|
||||||
}
|
}
|
||||||
generateDetail.setUrl(url);
|
generateDetail.setUrl(url);
|
||||||
generateDetail.setGenerateId(generate.getId());
|
generateDetail.setGenerateId(generate.getId());
|
||||||
generateDetail.setCreateDate(LocalDateTime.now());
|
generateDetail.setCreateDate(LocalDateTime.now());
|
||||||
generateDetail.setMd5("");
|
generateDetail.setMd5("");
|
||||||
// 将相应的url保存到数据库
|
// 将相应的url保存到数据库
|
||||||
generateDetailMapper.insert(generateDetail);
|
generateDetailMapper.insert(generateDetail);
|
||||||
log.debug("generateDetail: " + generateDetail.toString());
|
log.debug("generateDetail: " + generateDetail.toString());
|
||||||
|
|
||||||
// String uuid = taskId.substring(0, taskId.substring(0, taskId.lastIndexOf("-")).lastIndexOf("-"));
|
// String uuid = taskId.substring(0, taskId.substring(0, taskId.lastIndexOf("-")).lastIndexOf("-"));
|
||||||
String key = generateResultKey + ":" + taskId;
|
String key = generateResultKey + ":" + taskId;
|
||||||
String imageName = url.substring(url.lastIndexOf("/") + 1);
|
String imageName = url.substring(url.lastIndexOf("/") + 1);
|
||||||
status = imageName.equals("white_image.jpg") ? "Invalid" : "Success";
|
status = imageName.equals("white_image.jpg") ? "Invalid" : "Success";
|
||||||
if (StringUtil.isNullOrEmpty(category)) {
|
if (StringUtil.isNullOrEmpty(category)) {
|
||||||
Generate generateRecord = selectByUniqueId(taskId);
|
Generate generateRecord = selectByUniqueId(taskId);
|
||||||
category = generateRecord.getLevel2Type();
|
category = generateRecord.getLevel2Type();
|
||||||
}
|
}
|
||||||
GenerateResultVO generateResultVO = new GenerateResultVO(taskId, generateDetail.getId(), url, status, category);
|
GenerateResultVO generateResultVO = new GenerateResultVO(taskId, generateDetail.getId(), url, status, category);
|
||||||
// 更新redis
|
// 更新redis
|
||||||
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
||||||
log.debug("generateResultVO: " + generateResultVO.toString());
|
log.debug("generateResultVO: " + generateResultVO.toString());
|
||||||
|
|
||||||
|
|
||||||
// 执行积分扣除
|
// 执行积分扣除
|
||||||
@@ -837,7 +848,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
response.code(), (requestEndTime - requestStartTime), taskId);
|
response.code(), (requestEndTime - requestStartTime), taskId);
|
||||||
String result = response.body().string();
|
String result = response.body().string();
|
||||||
if (!response.isSuccessful()) {
|
if (!response.isSuccessful()) {
|
||||||
log.warn("Google API响应失败,状态码: {} for taskId: {},结果:{}", response.code(), taskId,result);
|
log.warn("Google API响应失败,状态码: {} for taskId: {},结果:{}", response.code(), taskId, result);
|
||||||
if (attempt < maxRetries) {
|
if (attempt < maxRetries) {
|
||||||
Thread.sleep(retryDelay * attempt); // 递增延迟
|
Thread.sleep(retryDelay * attempt); // 递增延迟
|
||||||
continue;
|
continue;
|
||||||
@@ -1260,7 +1271,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
* @param modelName advanced high normal
|
* @param modelName advanced high normal
|
||||||
*/
|
*/
|
||||||
private HashMap<String, String> chooseModelAndPrompt(GenerateThroughImageTextDTO generateDTO, String modelName) {
|
private HashMap<String, String> chooseModelAndPrompt(GenerateThroughImageTextDTO generateDTO, String modelName) {
|
||||||
if (StringUtil.isNullOrEmpty(modelName)){
|
if (StringUtil.isNullOrEmpty(modelName)) {
|
||||||
throw new BusinessException("system error");
|
throw new BusinessException("system error");
|
||||||
}
|
}
|
||||||
HashMap<String, String> modelAndPromptMap = new HashMap<>();
|
HashMap<String, String> modelAndPromptMap = new HashMap<>();
|
||||||
@@ -1278,7 +1289,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
String style = generateDTO.getText().substring(0, firstCommaIndex).trim();
|
String style = generateDTO.getText().substring(0, firstCommaIndex).trim();
|
||||||
|
|
||||||
String prompt = generateDTO.getText().substring(firstCommaIndex + 1).trim();
|
String prompt = generateDTO.getText().substring(firstCommaIndex + 1).trim();
|
||||||
prompt = getPrintboardPrompt(style, prompt,modelName,isUseImage);
|
prompt = getPrintboardPrompt(style, prompt, modelName, isUseImage);
|
||||||
modelAndPromptMap.put(ModelConstants.PROMPT, prompt);
|
modelAndPromptMap.put(ModelConstants.PROMPT, prompt);
|
||||||
|
|
||||||
|
|
||||||
@@ -1676,14 +1687,14 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
"Flat textile pattern printed directly on fabric surface, no three-dimensional objects, no items placed on cloth. \n" +
|
"Flat textile pattern printed directly on fabric surface, no three-dimensional objects, no items placed on cloth. \n" +
|
||||||
"Real style: fabric print, realistic woven/printed pattern, detailed surface pattern only";
|
"Real style: fabric print, realistic woven/printed pattern, detailed surface pattern only";
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
throw new BusinessException("style error:"+ style);
|
throw new BusinessException("style error:" + style);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userInput == null || userInput.trim().isEmpty()) {
|
if (userInput == null || userInput.trim().isEmpty()) {
|
||||||
if (isUseImage){
|
if (isUseImage) {
|
||||||
prompt = "Theme: Image content" + "\nRequirement: " + systemPrompt;
|
prompt = "Theme: Image content" + "\nRequirement: " + systemPrompt;
|
||||||
}else {
|
} else {
|
||||||
throw new BusinessException("prompt null");
|
throw new BusinessException("prompt null");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -4258,11 +4269,11 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
// 处理不同状态
|
// 处理不同状态
|
||||||
switch (statusEnum) {
|
switch (statusEnum) {
|
||||||
case TASK_NOT_FOUND:
|
case TASK_NOT_FOUND:
|
||||||
// 审核没过
|
// 审核没过
|
||||||
case REQUEST_MODERATED:
|
case REQUEST_MODERATED:
|
||||||
// 审核没过
|
// 审核没过
|
||||||
case CONTENT_MODERATED:
|
case CONTENT_MODERATED:
|
||||||
// 出错
|
// 出错
|
||||||
case ERROR:
|
case ERROR:
|
||||||
return "Fail";
|
return "Fail";
|
||||||
case PENDING_F:
|
case PENDING_F:
|
||||||
|
|||||||
Reference in New Issue
Block a user