TASK:更新各生成功能需要消耗的积分
This commit is contained in:
@@ -173,7 +173,7 @@ public class GenerateController {
|
|||||||
@GetMapping("/getAnimateResult")
|
@GetMapping("/getAnimateResult")
|
||||||
public Response<PoseTransformationVO> getAnimateResult(@RequestParam("taskId") String taskId){
|
public Response<PoseTransformationVO> getAnimateResult(@RequestParam("taskId") String taskId){
|
||||||
return Response.success(generateService.getAnimateResult(taskId));
|
return Response.success(generateService.getAnimateResult(taskId));
|
||||||
}*/
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "freepik toProductImage")
|
@ApiOperation(value = "freepik toProductImage")
|
||||||
@GetMapping("/reimagineFreePik")
|
@GetMapping("/reimagineFreePik")
|
||||||
@@ -187,7 +187,7 @@ public class GenerateController {
|
|||||||
@GetMapping("/getImageDescription")
|
@GetMapping("/getImageDescription")
|
||||||
public Response<String> getImageDescription(@RequestParam("path") String path) {
|
public Response<String> getImageDescription(@RequestParam("path") String path) {
|
||||||
return Response.success(generateService.getImageDescription(path));
|
return Response.success(generateService.getImageDescription(path));
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// @ApiOperation(value = "试用flux")
|
// @ApiOperation(value = "试用flux")
|
||||||
// @GetMapping("/flux")
|
// @GetMapping("/flux")
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ public class MagicToolResultVO {
|
|||||||
|
|
||||||
private Long elementId;
|
private Long elementId;
|
||||||
|
|
||||||
public MagicToolResultVO(String status) {
|
public MagicToolResultVO(String taskId, String status) {
|
||||||
|
this.taskId = taskId;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,8 +294,8 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
if (!status.equals("Invalid")) {
|
if (!status.equals("Invalid")) {
|
||||||
String accountId = taskId.substring(taskId.lastIndexOf("-") + 1);
|
String accountId = taskId.substring(taskId.lastIndexOf("-") + 1);
|
||||||
String uuid = taskId.substring(0, taskId.substring(0, taskId.lastIndexOf("-")).lastIndexOf("-"));
|
String uuid = taskId.substring(0, taskId.substring(0, taskId.lastIndexOf("-")).lastIndexOf("-"));
|
||||||
Boolean flag = creditsService.taskCreditsDeduction(Long.parseLong(accountId), uuid);
|
Boolean flag = creditsService.taskCreditsDeduction(Long.parseLong(accountId), taskId);
|
||||||
if (flag) creditsService.updateChangedCredits(accountId, uuid);
|
if (flag) creditsService.updateChangedCredits(accountId, taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -530,10 +530,10 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.OTHER;
|
CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.OTHER;
|
||||||
|
|
||||||
if (generateThroughImageTextDTO.getModelName().equals("wx")){
|
if (generateThroughImageTextDTO.getModelName().equals("wx")){
|
||||||
String taskId = createAsyncTask(generateThroughImageTextDTO);
|
String taskId = createAsyncTask(generateThroughImageTextDTO);
|
||||||
// String taskId = "e53c86ea-53be-424b-8ac7-3c01c141f4f7";
|
// String taskId = "e53c86ea-53be-424b-8ac7-3c01c141f4f7";
|
||||||
|
creditsEventsEnum = CreditsEventsEnum.WX_TEXT2IMG;
|
||||||
// 6、添加预扣除积分到redis
|
// 6、添加预扣除积分到redis
|
||||||
creditsService.addRecordToCreditsDeduction(generateThroughImageTextDTO.getUserId(), taskId, creditsEventsEnum);
|
creditsService.addRecordToCreditsDeduction(generateThroughImageTextDTO.getUserId(), taskId, creditsEventsEnum);
|
||||||
// 6.1 添加积分扣除记录到db
|
// 6.1 添加积分扣除记录到db
|
||||||
@@ -560,12 +560,14 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
validateGeneraType(generate, text, elementId);
|
validateGeneraType(generate, text, elementId);
|
||||||
// 校验后获取
|
// 校验后获取
|
||||||
generateThroughImageTextDTO.setGenerateType(generate.getGenerateType());
|
generateThroughImageTextDTO.setGenerateType(generate.getGenerateType());
|
||||||
creditsEventsEnum = CreditsEventsEnum.PATTERN;
|
// creditsEventsEnum = CreditsEventsEnum.PATTERN;
|
||||||
|
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG;
|
||||||
|
|
||||||
// 模型迁移SD1.? -> flux,从而产生了不同模型的选择,
|
// 模型迁移SD1.? -> flux,从而产生了不同模型的选择,
|
||||||
// high -> 生成图片质量高,但生成速度慢,每次生成只返回一张图片
|
// high -> 生成图片质量高,但生成速度慢,每次生成只返回一张图片
|
||||||
// fast -> 生成图片质量低,但生成速度快,每次生成返回四张图片
|
// fast -> 生成图片质量低,但生成速度快,每次生成返回四张图片
|
||||||
if (!StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getModelName()) && generateThroughImageTextDTO.getModelName().equals("high")){
|
if (!StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getModelName()) && generateThroughImageTextDTO.getModelName().equals("high")){
|
||||||
|
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG_HIGH;
|
||||||
times = 1;
|
times = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -623,13 +625,15 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
creditsEventsEnum = CreditsEventsEnum.LOGO;
|
creditsEventsEnum = CreditsEventsEnum.LOGO;
|
||||||
}
|
}
|
||||||
} else if (generateThroughImageTextDTO.getLevel1Type().equals(MOOD_BOARD.getRealName())) {
|
} else if (generateThroughImageTextDTO.getLevel1Type().equals(MOOD_BOARD.getRealName())) {
|
||||||
creditsEventsEnum = CreditsEventsEnum.MOOD_BOARD;
|
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG;
|
||||||
if (!StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getModelName()) && generateThroughImageTextDTO.getModelName().equals("high")){
|
if (!StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getModelName()) && generateThroughImageTextDTO.getModelName().equals("high")){
|
||||||
|
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG_HIGH;
|
||||||
times = 1;
|
times = 1;
|
||||||
}
|
}
|
||||||
} else if (generateThroughImageTextDTO.getLevel1Type().equals(SKETCH_BOARD.getRealName())) {
|
} else if (generateThroughImageTextDTO.getLevel1Type().equals(SKETCH_BOARD.getRealName())) {
|
||||||
creditsEventsEnum = CreditsEventsEnum.SKETCH_BOARD;
|
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG;
|
||||||
if (!StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getModelName()) && generateThroughImageTextDTO.getModelName().equals("high")){
|
if (!StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getModelName()) && generateThroughImageTextDTO.getModelName().equals("high")){
|
||||||
|
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG_HIGH;
|
||||||
times = 1;
|
times = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -650,30 +654,30 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
|
|
||||||
ArrayList<String> taskIdList = new ArrayList<>();
|
ArrayList<String> taskIdList = new ArrayList<>();
|
||||||
for (int i = 1; i <= times; i++) {
|
for (int i = 1; i <= times; i++) {
|
||||||
String temp = uuid;
|
String taskId = uuid;
|
||||||
temp += "-" + i + "-" + generateThroughImageTextDTO.getUserId();
|
taskId += "-" + i + "-" + generateThroughImageTextDTO.getUserId();
|
||||||
taskIdList.add(temp);
|
taskIdList.add(taskId);
|
||||||
generateThroughImageTextDTO.setUniqueId(temp);
|
generateThroughImageTextDTO.setUniqueId(taskId);
|
||||||
String jsonString = JSON.toJSONString(generateThroughImageTextDTO);
|
String jsonString = JSON.toJSONString(generateThroughImageTextDTO);
|
||||||
|
|
||||||
// 4、加入redis排队,便于获取实时排队信息
|
// 4、加入redis排队,便于获取实时排队信息
|
||||||
Double maxScore = redisUtil.getMaxScore(consumptionOrderKey);
|
Double maxScore = redisUtil.getMaxScore(consumptionOrderKey);
|
||||||
redisUtil.addToZSet(consumptionOrderKey, temp, maxScore);
|
redisUtil.addToZSet(consumptionOrderKey, taskId, maxScore);
|
||||||
|
|
||||||
// 加入resultMap
|
// 加入resultMap
|
||||||
String key = generateResultKey + ":" + temp;
|
String key = generateResultKey + ":" + taskId;
|
||||||
GenerateResultVO generateResultVO = new GenerateResultVO(generateThroughImageTextDTO.getUniqueId(), null, null, "Waiting");
|
GenerateResultVO generateResultVO = new GenerateResultVO(generateThroughImageTextDTO.getUniqueId(), null, null, "Waiting");
|
||||||
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
||||||
|
|
||||||
// 5、将消息发布到MQ消息队列
|
// 5、将消息发布到MQ消息队列
|
||||||
rabbitMQService.publishMessageToGenerate(jsonString);
|
rabbitMQService.publishMessageToGenerate(jsonString);
|
||||||
|
// update 积分扣除由按次收费改为按生成图片数量收费
|
||||||
|
// 6、添加预扣除积分到redis
|
||||||
|
creditsService.addRecordToCreditsDeduction(generateThroughImageTextDTO.getUserId(), taskId, creditsEventsEnum);
|
||||||
|
// 6.1 添加积分扣除记录到db
|
||||||
|
creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), taskId, Boolean.TRUE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6、添加预扣除积分到redis
|
|
||||||
creditsService.addRecordToCreditsDeduction(generateThroughImageTextDTO.getUserId(), uuid, creditsEventsEnum);
|
|
||||||
// 6.1 添加积分扣除记录到db
|
|
||||||
creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), uuid, Boolean.TRUE, null);
|
|
||||||
|
|
||||||
// 7、返回唯一id
|
// 7、返回唯一id
|
||||||
return new PrepareForGenerateVO(taskIdList, 2);
|
return new PrepareForGenerateVO(taskIdList, 2);
|
||||||
}
|
}
|
||||||
@@ -987,7 +991,8 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
log.info("imageToSketch parameter : {}", imageToSketchDTO);
|
log.info("imageToSketch parameter : {}", imageToSketchDTO);
|
||||||
|
|
||||||
// 检查积分是否够本次扣除
|
// 检查积分是否够本次扣除
|
||||||
CreditsEventsEnum event = CreditsEventsEnum.IMAGE_TO_SKETCH;
|
// CreditsEventsEnum event = CreditsEventsEnum.IMAGE_TO_SKETCH;
|
||||||
|
CreditsEventsEnum event = CreditsEventsEnum.FLUX_IMG2IMG;
|
||||||
Boolean b = creditsService.checkCredits(accountId, event, 1);
|
Boolean b = creditsService.checkCredits(accountId, event, 1);
|
||||||
if (!b) {
|
if (!b) {
|
||||||
throw new BusinessException("remaining.credits.insufficient", ResultEnum.PROMPT.getCode());
|
throw new BusinessException("remaining.credits.insufficient", ResultEnum.PROMPT.getCode());
|
||||||
@@ -1005,15 +1010,21 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
}else {
|
}else {
|
||||||
imagePath = collagePictureUrl;
|
imagePath = collagePictureUrl;
|
||||||
}
|
}
|
||||||
taskId = flux(CreditsEventsEnum.IMAGE_TO_SKETCH, null, imagePath);
|
taskId = flux(event, null, imagePath);
|
||||||
// 存数据库
|
// 存数据库
|
||||||
saveExtractSketchRequest(imageToSketchDTO, collagePictureUrl, projectId,
|
saveExtractSketchRequest(imageToSketchDTO, collagePictureUrl, projectId,
|
||||||
accountId, imageToSketchDTO.getStyle(), "flux", taskId);
|
accountId, imageToSketchDTO.getStyle(), "flux", taskId);
|
||||||
|
|
||||||
|
// 6、添加预扣除积分到redis
|
||||||
|
creditsService.addRecordToCreditsDeduction(accountId, taskId, event);
|
||||||
|
// 6.1 添加积分扣除记录到db
|
||||||
|
creditsService.preInsert(accountId, event.getName(), taskId, Boolean.TRUE, null);
|
||||||
|
|
||||||
return taskId;
|
return taskId;
|
||||||
}
|
}
|
||||||
|
|
||||||
taskId = UUID.randomUUID().toString();
|
taskId = UUID.randomUUID().toString();
|
||||||
// 异步执行耗时操作
|
// 异步执行耗时操作(由于prompt提取耗时较长,页面暂时只提供flux生成,废弃以下部分)
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
try {
|
try {
|
||||||
processImageToSketch(taskId, imageToSketchDTO, collagePictureUrl, projectId, accountId, event);
|
processImageToSketch(taskId, imageToSketchDTO, collagePictureUrl, projectId, accountId, event);
|
||||||
@@ -1117,9 +1128,10 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
Long projectId = poseTransformDTO.getProjectId();
|
Long projectId = poseTransformDTO.getProjectId();
|
||||||
String productImage = poseTransformDTO.getProductImage();
|
String productImage = poseTransformDTO.getProductImage();
|
||||||
Integer poseId = poseTransformDTO.getPoseId();
|
Integer poseId = poseTransformDTO.getPoseId();
|
||||||
|
boolean wxTask = StringUtil.isNullOrEmpty(poseTransformDTO.getModelName()) && poseTransformDTO.getModelName().equals("wx");
|
||||||
|
|
||||||
// 1、判断用户当前积分是否够本次生成消耗
|
// 1、判断用户当前积分是否够本次生成消耗
|
||||||
CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.POSE_TRANSFORMATION;
|
CreditsEventsEnum creditsEventsEnum = wxTask ? CreditsEventsEnum.WX_ANIMATION : CreditsEventsEnum.LOCAL_ANIMATION;
|
||||||
Boolean preDeduction = creditsService.creditsPreDeduction(creditsEventsEnum, 1);
|
Boolean preDeduction = creditsService.creditsPreDeduction(creditsEventsEnum, 1);
|
||||||
if (!preDeduction) {
|
if (!preDeduction) {
|
||||||
throw new BusinessException("remaining.credits.insufficient", ResultEnum.WARNING.getCode());
|
throw new BusinessException("remaining.credits.insufficient", ResultEnum.WARNING.getCode());
|
||||||
@@ -2162,16 +2174,20 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
String objectName = accountId + "/imageToSketch/" + taskId + ".png";
|
String objectName = accountId + "/imageToSketch/" + taskId + ".png";
|
||||||
String fluxResult = getFluxResult(taskId, objectName);
|
String fluxResult = getFluxResult(taskId, objectName);
|
||||||
if (Objects.isNull(generateDetail)){
|
if (Objects.isNull(generateDetail)){
|
||||||
if (fluxResult.equals("Fail") || fluxResult.equals("Pending")){
|
if (StringUtil.isNullOrEmpty(fluxResult)){
|
||||||
|
return new GenerateResultVO(taskId, "Fail");
|
||||||
|
}else if (fluxResult.equals("Fail") || fluxResult.equals("Pending")){
|
||||||
String status = fluxResult.equals("Fail") ? "Fail" : "Executing";
|
String status = fluxResult.equals("Fail") ? "Fail" : "Executing";
|
||||||
return new GenerateResultVO(taskId, status);
|
return new GenerateResultVO(taskId, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
generateDetail = new GenerateDetail(generate.getId(), fluxResult,
|
generateDetail = new GenerateDetail(generate.getId(), fluxResult,
|
||||||
MD5Utils.encryptFile(
|
MD5Utils.encryptFile(
|
||||||
minioUtil.getPreSignedUrl(fluxResult, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), false),
|
minioUtil.getPreSignedUrl(fluxResult, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), false),
|
||||||
LocalDateTime.now());
|
LocalDateTime.now());
|
||||||
generateDetailMapper.insert(generateDetail);
|
generateDetailMapper.insert(generateDetail);
|
||||||
|
// 扣积分
|
||||||
|
Boolean flag = creditsService.taskCreditsDeduction(accountId, taskId);
|
||||||
|
if (flag) creditsService.updateChangedCredits(String.valueOf(accountId), taskId);
|
||||||
} else if (StringUtil.isNullOrEmpty(generateDetail.getUrl())){
|
} else if (StringUtil.isNullOrEmpty(generateDetail.getUrl())){
|
||||||
// 一般来说这条线应该走不到
|
// 一般来说这条线应该走不到
|
||||||
generateDetail.setGenerateId(generate.getId());
|
generateDetail.setGenerateId(generate.getId());
|
||||||
|
|||||||
@@ -375,7 +375,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public List<ToProductImageResult> toProduct(ToProductImageDTO toProductImageDTO) {
|
public List<ToProductImageResult> toProduct(ToProductImageDTO toProductImageDTO) {
|
||||||
// 判断用户当前积分是否够本次生成消耗
|
// 判断用户当前积分是否够本次生成消耗
|
||||||
Boolean preDeduction = creditsService.creditsPreDeduction(CreditsEventsEnum.TO_PRODUCT_IMAGE, toProductImageDTO.getToProductImageVOList().size());
|
boolean fluxTask = !StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
||||||
|
&& toProductImageDTO.getModelName().equals("flux");
|
||||||
|
CreditsEventsEnum creditsEventsEnum = fluxTask ? CreditsEventsEnum.FLUX_IMG2IMG : CreditsEventsEnum.TO_PRODUCT_IMAGE;
|
||||||
|
Boolean preDeduction = creditsService.creditsPreDeduction(creditsEventsEnum, toProductImageDTO.getToProductImageVOList().size());
|
||||||
if (!preDeduction) {
|
if (!preDeduction) {
|
||||||
throw new BusinessException("Your remaining credits are insufficient for this generation. Please recharge.", ResultEnum.WARNING.getCode());
|
throw new BusinessException("Your remaining credits are insufficient for this generation. Please recharge.", ResultEnum.WARNING.getCode());
|
||||||
}
|
}
|
||||||
@@ -399,7 +402,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
}
|
}
|
||||||
|
|
||||||
String[] words = prompt.split("\\s+");
|
String[] words = prompt.split("\\s+");
|
||||||
if (words.length > 200) {
|
if (words.length > 180) {
|
||||||
throw new BusinessException("Please keep your input text under 200 words. Thanks!");
|
throw new BusinessException("Please keep your input text under 200 words. Thanks!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -454,8 +457,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
sb.append(",high quality clothing details,").append(prompt).append(",8K realistic,HDR");
|
sb.append(",high quality clothing details,").append(prompt).append(",8K realistic,HDR");
|
||||||
}
|
}
|
||||||
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||||
if (!StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
if (fluxTask){
|
||||||
&& toProductImageDTO.getModelName().equals("flux")){
|
|
||||||
taskId = generateService.flux(CreditsEventsEnum.TO_PRODUCT_IMAGE, sb.toString(), tDesignPythonOutfit.getDesignUrl());
|
taskId = generateService.flux(CreditsEventsEnum.TO_PRODUCT_IMAGE, sb.toString(), tDesignPythonOutfit.getDesignUrl());
|
||||||
toProductImageResult.setModelName("flux");
|
toProductImageResult.setModelName("flux");
|
||||||
toProductImageResult.setResultType("ToProductImage");
|
toProductImageResult.setResultType("ToProductImage");
|
||||||
@@ -494,8 +496,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
||||||
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||||
|
|
||||||
if (!StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
if (fluxTask){
|
||||||
&& toProductImageDTO.getModelName().equals("flux")){
|
|
||||||
taskId = generateService.flux(CreditsEventsEnum.TO_PRODUCT_IMAGE, sb.toString(), toProductElement.getUrl());
|
taskId = generateService.flux(CreditsEventsEnum.TO_PRODUCT_IMAGE, sb.toString(), toProductElement.getUrl());
|
||||||
toProductImageResult.setModelName("flux");
|
toProductImageResult.setModelName("flux");
|
||||||
toProductImageResult.setResultType("ToProductImage");
|
toProductImageResult.setResultType("ToProductImage");
|
||||||
@@ -527,7 +528,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
i ++;
|
i ++;
|
||||||
sb = new StringBuilder("The best quality, masterpiece, real image.");
|
sb = new StringBuilder("The best quality, masterpiece, real image.");
|
||||||
// 添加需要扣除的积分到预扣除区
|
// 添加需要扣除的积分到预扣除区
|
||||||
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.TO_PRODUCT_IMAGE);
|
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, creditsEventsEnum);
|
||||||
|
// 添加积分扣除记录到db
|
||||||
|
creditsService.preInsert(userHolder.getId(), creditsEventsEnum.getName(), taskId, Boolean.TRUE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -667,12 +670,16 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
String objectName = project.getAccountId() + "/product_image/" + taskId + ".png";
|
String objectName = project.getAccountId() + "/product_image/" + taskId + ".png";
|
||||||
String fluxResult = generateService.getFluxResult(taskId, objectName);
|
String fluxResult = generateService.getFluxResult(taskId, objectName);
|
||||||
if (StringUtil.isNullOrEmpty(fluxResult)){
|
if (StringUtil.isNullOrEmpty(fluxResult)){
|
||||||
results.add(new MagicToolResultVO());
|
results.add(new MagicToolResultVO(taskId, "Fail"));
|
||||||
} else if (fluxResult.equals("Fail") || fluxResult.equals("Pending")) {
|
} else if (fluxResult.equals("Fail") || fluxResult.equals("Pending")) {
|
||||||
results.add(new MagicToolResultVO(fluxResult));
|
results.add(new MagicToolResultVO(taskId, fluxResult));
|
||||||
} else {
|
} else {
|
||||||
results.add(processFluxResult(fluxResult, toProductImageResult, taskId));
|
results.add(processFluxResult(fluxResult, toProductImageResult, taskId));
|
||||||
|
// 扣积分
|
||||||
|
Boolean flag = creditsService.taskCreditsDeduction(project.getAccountId(), taskId);
|
||||||
|
if (flag) creditsService.updateChangedCredits(String.valueOf(project.getAccountId()), taskId);
|
||||||
}
|
}
|
||||||
|
// 在这个stream中不再继续往后执行
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -928,7 +935,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public List<ToProductImageResult> relight(ToProductImageDTO toProductImageDTO) {
|
public List<ToProductImageResult> relight(ToProductImageDTO toProductImageDTO) {
|
||||||
// 判断用户当前积分是否够本次生成消耗
|
// 判断用户当前积分是否够本次生成消耗
|
||||||
Boolean preDeduction = creditsService.creditsPreDeduction(CreditsEventsEnum.RELIGHT, toProductImageDTO.getToProductImageVOList().size());
|
boolean fluxTask = !StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
||||||
|
&& toProductImageDTO.getModelName().equals("flux");
|
||||||
|
CreditsEventsEnum creditsEventsEnum = fluxTask ? CreditsEventsEnum.FLUX_IMG2IMG : CreditsEventsEnum.RELIGHT;
|
||||||
|
Boolean preDeduction = creditsService.creditsPreDeduction(creditsEventsEnum, toProductImageDTO.getToProductImageVOList().size());
|
||||||
if (!preDeduction) {
|
if (!preDeduction) {
|
||||||
throw new BusinessException("Your remaining credits are insufficient for this generation. Please recharge.", ResultEnum.WARNING.getCode());
|
throw new BusinessException("Your remaining credits are insufficient for this generation. Please recharge.", ResultEnum.WARNING.getCode());
|
||||||
}
|
}
|
||||||
@@ -985,8 +995,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
}
|
}
|
||||||
|
|
||||||
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||||
if (!StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
if (fluxTask){
|
||||||
&& toProductImageDTO.getModelName().equals("flux")){
|
|
||||||
taskId = generateService.flux(CreditsEventsEnum.RELIGHT, s, toProductImageResult1.getUrl());
|
taskId = generateService.flux(CreditsEventsEnum.RELIGHT, s, toProductImageResult1.getUrl());
|
||||||
toProductImageResult.setModelName("flux");
|
toProductImageResult.setModelName("flux");
|
||||||
toProductImageResult.setResultType("Relight");
|
toProductImageResult.setResultType("Relight");
|
||||||
@@ -1015,8 +1024,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
}else {
|
}else {
|
||||||
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
||||||
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||||
if (!StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
if (fluxTask){
|
||||||
&& toProductImageDTO.getModelName().equals("flux")){
|
|
||||||
taskId = generateService.flux(CreditsEventsEnum.RELIGHT, s, toProductElement.getUrl());
|
taskId = generateService.flux(CreditsEventsEnum.RELIGHT, s, toProductElement.getUrl());
|
||||||
toProductImageResult.setModelName("flux");
|
toProductImageResult.setModelName("flux");
|
||||||
toProductImageResult.setResultType("Relight");
|
toProductImageResult.setResultType("Relight");
|
||||||
@@ -1044,7 +1052,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
result.add(toProductImageResult);
|
result.add(toProductImageResult);
|
||||||
}
|
}
|
||||||
// 添加需要扣除的积分到预扣除区
|
// 添加需要扣除的积分到预扣除区
|
||||||
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.RELIGHT);
|
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, creditsEventsEnum);
|
||||||
|
// 添加积分扣除记录到db
|
||||||
|
creditsService.preInsert(userHolder.getId(), creditsEventsEnum.getName(), taskId, Boolean.TRUE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -1072,11 +1082,14 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
String fluxResult = generateService.getFluxResult(taskId, objectName);
|
String fluxResult = generateService.getFluxResult(taskId, objectName);
|
||||||
|
|
||||||
if (StringUtil.isNullOrEmpty(fluxResult)){
|
if (StringUtil.isNullOrEmpty(fluxResult)){
|
||||||
results.add(new MagicToolResultVO());
|
results.add(new MagicToolResultVO(taskId, "Fail"));
|
||||||
} else if (fluxResult.equals("Fail") || fluxResult.equals("Pending")) {
|
} else if (fluxResult.equals("Fail") || fluxResult.equals("Pending")) {
|
||||||
results.add(new MagicToolResultVO(fluxResult));
|
results.add(new MagicToolResultVO(taskId, fluxResult));
|
||||||
} else {
|
} else {
|
||||||
results.add(processFluxResult(fluxResult, toProductImageResult, taskId));
|
results.add(processFluxResult(fluxResult, toProductImageResult, taskId));
|
||||||
|
// 扣积分
|
||||||
|
Boolean flag = creditsService.taskCreditsDeduction(project.getAccountId(), taskId);
|
||||||
|
if (flag) creditsService.updateChangedCredits(String.valueOf(project.getAccountId()), taskId);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user