BUGFIX:1、积分消耗值不准确 2、flux获取结果报错

This commit is contained in:
2025-06-23 18:16:23 +08:00
parent 3d08e86049
commit 8e31968fd3
6 changed files with 38 additions and 16 deletions

View File

@@ -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"),
;

View File

@@ -29,6 +29,8 @@ public class RedisUtil {
@Resource
private RedisTemplate<String, String> redisTemplate;
public final static String FLUX_POLLING_URL = "Flux:";
public Boolean hasKey(String key){
return redisTemplate.hasKey(key);
}

View File

@@ -104,7 +104,7 @@ public class SendRequestUtil {
return body;
}
}
log.warn("请求失败,状态码为 {}, body: {}", status, body);
log.warn("请求失败,状态码为 {}", status);
return null;
}

View File

@@ -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;
}
}

View File

@@ -992,7 +992,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> 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<GenerateMapper, Generate> 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<GenerateMapper, Generate> 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<GenerateMapper, Generate> 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<String, Object> params = new HashMap<>();
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);

View File

@@ -377,7 +377,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
// 判断用户当前积分是否够本次生成消耗
boolean fluxTask = !StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
&& toProductImageDTO.getModelName().equals("flux");
CreditsEventsEnum creditsEventsEnum = fluxTask ? CreditsEventsEnum.FLUX_IMG2IMG : CreditsEventsEnum.TO_PRODUCT_IMAGE;
CreditsEventsEnum creditsEventsEnum = fluxTask ? CreditsEventsEnum.TO_PRODUCT_IMAGE_FLUX : CreditsEventsEnum.TO_PRODUCT_IMAGE;
Boolean preDeduction = creditsService.creditsPreDeduction(creditsEventsEnum, toProductImageDTO.getToProductImageVOList().size());
if (!preDeduction) {
throw new BusinessException("Your remaining credits are insufficient for this generation. Please recharge.", ResultEnum.WARNING.getCode());
@@ -458,7 +458,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
}
ToProductImageResult toProductImageResult = new ToProductImageResult();
if (fluxTask){
taskId = generateService.flux(CreditsEventsEnum.TO_PRODUCT_IMAGE, sb.toString(), tDesignPythonOutfit.getDesignUrl());
taskId = generateService.flux(CreditsEventsEnum.TO_PRODUCT_IMAGE_FLUX, sb.toString(), tDesignPythonOutfit.getDesignUrl());
toProductImageResult.setModelName("flux");
toProductImageResult.setResultType("ToProductImage");
} else {
@@ -719,7 +719,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
}
}
} else if (Objects.isNull(magicToolResultVO)) {
magicToolResultVO = new MagicToolResultVO();
magicToolResultVO = new MagicToolResultVO(taskId, "Executing");
}
if (!StringUtil.isNullOrEmpty(magicToolResultVO.getStatus())) collect.add(magicToolResultVO.getStatus());
results.add(magicToolResultVO);
@@ -973,7 +973,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
// 判断用户当前积分是否够本次生成消耗
boolean fluxTask = !StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
&& toProductImageDTO.getModelName().equals("flux");
CreditsEventsEnum creditsEventsEnum = fluxTask ? CreditsEventsEnum.FLUX_IMG2IMG : CreditsEventsEnum.RELIGHT;
CreditsEventsEnum creditsEventsEnum = fluxTask ? CreditsEventsEnum.RELIGHT_FLUX : CreditsEventsEnum.RELIGHT;
Boolean preDeduction = creditsService.creditsPreDeduction(creditsEventsEnum, toProductImageDTO.getToProductImageVOList().size());
if (!preDeduction) {
throw new BusinessException("Your remaining credits are insufficient for this generation. Please recharge.", ResultEnum.WARNING.getCode());
@@ -1032,7 +1032,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
ToProductImageResult toProductImageResult = new ToProductImageResult();
if (fluxTask){
taskId = generateService.flux(CreditsEventsEnum.RELIGHT, s, toProductImageResult1.getUrl());
taskId = generateService.flux(CreditsEventsEnum.RELIGHT_FLUX, s, toProductImageResult1.getUrl());
toProductImageResult.setModelName("flux");
toProductImageResult.setResultType("Relight");
} else {