From 8e31968fd33032cac5bbc6e4b0839c32bfba2c52 Mon Sep 17 00:00:00 2001 From: xupei Date: Mon, 23 Jun 2025 18:16:23 +0800 Subject: [PATCH] =?UTF-8?q?BUGFIX:1=E3=80=81=E7=A7=AF=E5=88=86=E6=B6=88?= =?UTF-8?q?=E8=80=97=E5=80=BC=E4=B8=8D=E5=87=86=E7=A1=AE=202=E3=80=81flux?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=BB=93=E6=9E=9C=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/common/enums/CreditsEventsEnum.java | 4 ++- .../com/ai/da/common/utils/RedisUtil.java | 2 ++ .../ai/da/common/utils/SendRequestUtil.java | 2 +- .../ai/da/model/vo/PoseTransformationVO.java | 5 +++ .../da/service/impl/GenerateServiceImpl.java | 31 +++++++++++++------ .../impl/UserLikeGroupServiceImpl.java | 10 +++--- 6 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java index de5834a1..5d3e6873 100644 --- a/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java +++ b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java @@ -38,9 +38,12 @@ public enum CreditsEventsEnum { MOOD_BOARD("MoodBoard","5"), SKETCH_BOARD("SketchBoard","5"), TO_PRODUCT_IMAGE("ToProductImage","5"), + TO_PRODUCT_IMAGE_FLUX("ToProductImageFlux","10"), RELIGHT("Relight","5"), + RELIGHT_FLUX("RelightFlux","10"), QUESTIONNAIRE("Questionnaire","100"), IMAGE_TO_SKETCH("ImageToSketch","5"), + IMAGE_TO_SKETCH_FLUX("ImageToSketchFlux","10"), POSE_TRANSFORMATION("PoseTransformation","10"), OTHER("Other","5"), @@ -53,7 +56,6 @@ public enum CreditsEventsEnum { LOCAL_IMG2IMG("Local_img2img","1.25"), LOCAL_TEXT2IMG_HIGH("Local_text2img_high","5"), LOCAL_IMG2IMG_HIGH("Local_img2img_high","5"), - LOCAL_SLOGAN("Local_Slogan","10"), LOCAL_ANIMATION("Local_Animation","15"), ; diff --git a/src/main/java/com/ai/da/common/utils/RedisUtil.java b/src/main/java/com/ai/da/common/utils/RedisUtil.java index e65366ee..a77d14cd 100644 --- a/src/main/java/com/ai/da/common/utils/RedisUtil.java +++ b/src/main/java/com/ai/da/common/utils/RedisUtil.java @@ -29,6 +29,8 @@ public class RedisUtil { @Resource private RedisTemplate redisTemplate; + public final static String FLUX_POLLING_URL = "Flux:"; + public Boolean hasKey(String key){ return redisTemplate.hasKey(key); } diff --git a/src/main/java/com/ai/da/common/utils/SendRequestUtil.java b/src/main/java/com/ai/da/common/utils/SendRequestUtil.java index 28ac9406..29f583a7 100644 --- a/src/main/java/com/ai/da/common/utils/SendRequestUtil.java +++ b/src/main/java/com/ai/da/common/utils/SendRequestUtil.java @@ -104,7 +104,7 @@ public class SendRequestUtil { return body; } } - log.warn("请求失败,状态码为 : {}, body: {}", status, body); + log.warn("请求失败,状态码为 : {}", status); return null; } diff --git a/src/main/java/com/ai/da/model/vo/PoseTransformationVO.java b/src/main/java/com/ai/da/model/vo/PoseTransformationVO.java index aeede94b..9fb10d11 100644 --- a/src/main/java/com/ai/da/model/vo/PoseTransformationVO.java +++ b/src/main/java/com/ai/da/model/vo/PoseTransformationVO.java @@ -43,4 +43,9 @@ public class PoseTransformationVO implements AllCollectionVO{ this.isLiked = isLiked; this.status = status; } + + public PoseTransformationVO(String taskId, String status) { + this.taskId = taskId; + this.status = status; + } } 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 9bd4fcf0..c7f4ee35 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -992,7 +992,7 @@ public class GenerateServiceImpl extends ServiceImpl i // 检查积分是否够本次扣除 // CreditsEventsEnum event = CreditsEventsEnum.IMAGE_TO_SKETCH; - CreditsEventsEnum event = CreditsEventsEnum.FLUX_IMG2IMG; + CreditsEventsEnum event = CreditsEventsEnum.IMAGE_TO_SKETCH_FLUX; Boolean b = creditsService.checkCredits(accountId, event, 1); if (!b) { throw new BusinessException("remaining.credits.insufficient", ResultEnum.PROMPT.getCode()); @@ -1232,7 +1232,7 @@ public class GenerateServiceImpl extends ServiceImpl i poseTransformationVO.setResultType(CollectionType.POSE_TRANSFORM.getValue()); return poseTransformationVO; }else { - return new PoseTransformationVO(); + return new PoseTransformationVO(taskId, "Executing"); } } @@ -2099,13 +2099,13 @@ public class GenerateServiceImpl extends ServiceImpl i String fluxRequestUrl = "https://api.bfl.ai/v1/flux-kontext-pro"; if (StringUtil.isNullOrEmpty(prompt)){ switch (func){ - case RELIGHT: + case RELIGHT_FLUX: prompt = "a model standing on the beautiful beach, ultra high quality, 8k"; break; - case IMAGE_TO_SKETCH: + case IMAGE_TO_SKETCH_FLUX: prompt = "generate the sketch of the image, simple line, ultra high quality"; break; - case TO_PRODUCT_IMAGE: + case TO_PRODUCT_IMAGE_FLUX: prompt = "change the image to real style, ultra high quality, 8k"; break; } @@ -2130,16 +2130,29 @@ public class GenerateServiceImpl extends ServiceImpl i String resp = sendRequestUtil.sendFluxPost(fluxRequestUrl, requestBody.toString()); JSONObject respObj = JSONUtil.parseObj(resp); log.info("flux 发起生成请求返回结果: {}", respObj); - if (StringUtil.isNullOrEmpty(respObj.getStr("id"))){ + String taskId = respObj.getStr("id"); + if (StringUtil.isNullOrEmpty(taskId)){ return null; } - return respObj.getStr("id"); + + String pollingUrl = respObj.getStr("polling_url"); + String key = RedisUtil.FLUX_POLLING_URL + taskId; + redisUtil.addToString(key, pollingUrl, CommonConstant.GENERATE_RESULT_EXPIRE_TIME); + + return taskId; } public String getFluxResult(String taskId, String objectName){ - String fluxResultRequestUrl = "https://api.bfl.ai/v1/get_result"; + String pollingUrl = redisUtil.getFromString(RedisUtil.FLUX_POLLING_URL + taskId); + String fluxResultRequestUrl; HashMap params = new HashMap<>(); - params.put("id", taskId); + if (StringUtil.isNullOrEmpty(pollingUrl)){ + fluxResultRequestUrl = "https://api.bfl.ai/v1/get_result"; + params.put("id", taskId); + } else { + fluxResultRequestUrl = pollingUrl; + } + String resp = sendRequestUtil.sendGet(fluxResultRequestUrl, params); log.info("获取flux生成的结果为:{}", resp); JSONObject respObj = JSONUtil.parseObj(resp); 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 0a44be5a..d453db8a 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -377,7 +377,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl