Merge branch 'dev/dev_xp' into dev/dev
# Conflicts: # src/main/java/com/ai/da/model/vo/MagicToolResultVO.java
This commit is contained in:
@@ -39,15 +39,27 @@ public enum CreditsEventsEnum {
|
||||
QUESTIONNAIRE("Questionnaire","100"),
|
||||
IMAGE_TO_SKETCH("ImageToSketch","5"),
|
||||
POSE_TRANSFORMATION("PoseTransformation","10"),
|
||||
OTHER("Other","5"),
|
||||
|
||||
OTHER("Other","5");
|
||||
WX_TEXT2IMG("WX_Text2Image", "5"),
|
||||
WX_ANIMATION("WX_Animation", "30"),
|
||||
FREEPIK_IMG2IMG("Freepik_img2img", "20"),
|
||||
FLUX_IMG2IMG("Flux_img2img","10"),
|
||||
|
||||
private String name;
|
||||
LOCAL_TEXT2IMG("Local_text2img","1.25"),
|
||||
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"),
|
||||
;
|
||||
|
||||
private final String name;
|
||||
|
||||
/**
|
||||
* 对应事件需要消耗or获得的积分
|
||||
*/
|
||||
private String value;
|
||||
private final String value;
|
||||
|
||||
public static List<String> generateFunctionNames() {
|
||||
return Arrays.asList(SLOGAN.name, LOGO.name, PATTERN.name, MOOD_BOARD.name, SKETCH_BOARD.name,
|
||||
|
||||
@@ -173,7 +173,7 @@ public class GenerateController {
|
||||
@GetMapping("/getAnimateResult")
|
||||
public Response<PoseTransformationVO> getAnimateResult(@RequestParam("taskId") String taskId){
|
||||
return Response.success(generateService.getAnimateResult(taskId));
|
||||
}*/
|
||||
}
|
||||
|
||||
@ApiOperation(value = "freepik toProductImage")
|
||||
@GetMapping("/reimagineFreePik")
|
||||
@@ -187,7 +187,7 @@ public class GenerateController {
|
||||
@GetMapping("/getImageDescription")
|
||||
public Response<String> getImageDescription(@RequestParam("path") String path) {
|
||||
return Response.success(generateService.getImageDescription(path));
|
||||
}
|
||||
}*/
|
||||
|
||||
// @ApiOperation(value = "试用flux")
|
||||
// @GetMapping("/flux")
|
||||
|
||||
@@ -31,7 +31,8 @@ public class MagicToolResultVO {
|
||||
|
||||
private Long parentId;
|
||||
|
||||
public MagicToolResultVO(String status) {
|
||||
public MagicToolResultVO(String taskId, String status) {
|
||||
this.taskId = taskId;
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -294,8 +294,8 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
if (!status.equals("Invalid")) {
|
||||
String accountId = taskId.substring(taskId.lastIndexOf("-") + 1);
|
||||
String uuid = taskId.substring(0, taskId.substring(0, taskId.lastIndexOf("-")).lastIndexOf("-"));
|
||||
Boolean flag = creditsService.taskCreditsDeduction(Long.parseLong(accountId), uuid);
|
||||
if (flag) creditsService.updateChangedCredits(accountId, uuid);
|
||||
Boolean flag = creditsService.taskCreditsDeduction(Long.parseLong(accountId), taskId);
|
||||
if (flag) creditsService.updateChangedCredits(accountId, taskId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -530,10 +530,10 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
}
|
||||
|
||||
CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.OTHER;
|
||||
|
||||
if (generateThroughImageTextDTO.getModelName().equals("wx")){
|
||||
String taskId = createAsyncTask(generateThroughImageTextDTO);
|
||||
// String taskId = "e53c86ea-53be-424b-8ac7-3c01c141f4f7";
|
||||
creditsEventsEnum = CreditsEventsEnum.WX_TEXT2IMG;
|
||||
// 6、添加预扣除积分到redis
|
||||
creditsService.addRecordToCreditsDeduction(generateThroughImageTextDTO.getUserId(), taskId, creditsEventsEnum);
|
||||
// 6.1 添加积分扣除记录到db
|
||||
@@ -560,12 +560,14 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
validateGeneraType(generate, text, elementId);
|
||||
// 校验后获取
|
||||
generateThroughImageTextDTO.setGenerateType(generate.getGenerateType());
|
||||
creditsEventsEnum = CreditsEventsEnum.PATTERN;
|
||||
// creditsEventsEnum = CreditsEventsEnum.PATTERN;
|
||||
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG;
|
||||
|
||||
// 模型迁移SD1.? -> flux,从而产生了不同模型的选择,
|
||||
// high -> 生成图片质量高,但生成速度慢,每次生成只返回一张图片
|
||||
// fast -> 生成图片质量低,但生成速度快,每次生成返回四张图片
|
||||
if (!StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getModelName()) && generateThroughImageTextDTO.getModelName().equals("high")){
|
||||
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG_HIGH;
|
||||
times = 1;
|
||||
}
|
||||
}
|
||||
@@ -623,13 +625,15 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
creditsEventsEnum = CreditsEventsEnum.LOGO;
|
||||
}
|
||||
} 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")){
|
||||
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG_HIGH;
|
||||
times = 1;
|
||||
}
|
||||
} 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")){
|
||||
creditsEventsEnum = CreditsEventsEnum.LOCAL_TEXT2IMG_HIGH;
|
||||
times = 1;
|
||||
}
|
||||
}
|
||||
@@ -650,29 +654,29 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
|
||||
ArrayList<String> taskIdList = new ArrayList<>();
|
||||
for (int i = 1; i <= times; i++) {
|
||||
String temp = uuid;
|
||||
temp += "-" + i + "-" + generateThroughImageTextDTO.getUserId();
|
||||
taskIdList.add(temp);
|
||||
generateThroughImageTextDTO.setUniqueId(temp);
|
||||
String taskId = uuid;
|
||||
taskId += "-" + i + "-" + generateThroughImageTextDTO.getUserId();
|
||||
taskIdList.add(taskId);
|
||||
generateThroughImageTextDTO.setUniqueId(taskId);
|
||||
String jsonString = JSON.toJSONString(generateThroughImageTextDTO);
|
||||
|
||||
// 4、加入redis排队,便于获取实时排队信息
|
||||
Double maxScore = redisUtil.getMaxScore(consumptionOrderKey);
|
||||
redisUtil.addToZSet(consumptionOrderKey, temp, maxScore);
|
||||
redisUtil.addToZSet(consumptionOrderKey, taskId, maxScore);
|
||||
|
||||
// 加入resultMap
|
||||
String key = generateResultKey + ":" + temp;
|
||||
String key = generateResultKey + ":" + taskId;
|
||||
GenerateResultVO generateResultVO = new GenerateResultVO(generateThroughImageTextDTO.getUniqueId(), null, null, "Waiting");
|
||||
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
||||
|
||||
// 5、将消息发布到MQ消息队列
|
||||
rabbitMQService.publishMessageToGenerate(jsonString);
|
||||
}
|
||||
|
||||
// update 积分扣除由按次收费改为按生成图片数量收费
|
||||
// 6、添加预扣除积分到redis
|
||||
creditsService.addRecordToCreditsDeduction(generateThroughImageTextDTO.getUserId(), uuid, creditsEventsEnum);
|
||||
creditsService.addRecordToCreditsDeduction(generateThroughImageTextDTO.getUserId(), taskId, creditsEventsEnum);
|
||||
// 6.1 添加积分扣除记录到db
|
||||
creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), uuid, Boolean.TRUE, null);
|
||||
creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), taskId, Boolean.TRUE, null);
|
||||
}
|
||||
|
||||
// 7、返回唯一id
|
||||
return new PrepareForGenerateVO(taskIdList, 2);
|
||||
@@ -987,7 +991,8 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
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);
|
||||
if (!b) {
|
||||
throw new BusinessException("remaining.credits.insufficient", ResultEnum.PROMPT.getCode());
|
||||
@@ -1005,15 +1010,21 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
}else {
|
||||
imagePath = collagePictureUrl;
|
||||
}
|
||||
taskId = flux(CreditsEventsEnum.IMAGE_TO_SKETCH, null, imagePath);
|
||||
taskId = flux(event, null, imagePath);
|
||||
// 存数据库
|
||||
saveExtractSketchRequest(imageToSketchDTO, collagePictureUrl, projectId,
|
||||
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;
|
||||
}
|
||||
|
||||
taskId = UUID.randomUUID().toString();
|
||||
// 异步执行耗时操作
|
||||
// 异步执行耗时操作(由于prompt提取耗时较长,页面暂时只提供flux生成,废弃以下部分)
|
||||
CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
processImageToSketch(taskId, imageToSketchDTO, collagePictureUrl, projectId, accountId, event);
|
||||
@@ -1117,9 +1128,10 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
Long projectId = poseTransformDTO.getProjectId();
|
||||
String productImage = poseTransformDTO.getProductImage();
|
||||
Integer poseId = poseTransformDTO.getPoseId();
|
||||
boolean wxTask = StringUtil.isNullOrEmpty(poseTransformDTO.getModelName()) && poseTransformDTO.getModelName().equals("wx");
|
||||
|
||||
// 1、判断用户当前积分是否够本次生成消耗
|
||||
CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.POSE_TRANSFORMATION;
|
||||
CreditsEventsEnum creditsEventsEnum = wxTask ? CreditsEventsEnum.WX_ANIMATION : CreditsEventsEnum.LOCAL_ANIMATION;
|
||||
Boolean preDeduction = creditsService.creditsPreDeduction(creditsEventsEnum, 1);
|
||||
if (!preDeduction) {
|
||||
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 fluxResult = getFluxResult(taskId, objectName);
|
||||
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";
|
||||
return new GenerateResultVO(taskId, status);
|
||||
}
|
||||
|
||||
generateDetail = new GenerateDetail(generate.getId(), fluxResult,
|
||||
MD5Utils.encryptFile(
|
||||
minioUtil.getPreSignedUrl(fluxResult, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), false),
|
||||
LocalDateTime.now());
|
||||
generateDetailMapper.insert(generateDetail);
|
||||
// 扣积分
|
||||
Boolean flag = creditsService.taskCreditsDeduction(accountId, taskId);
|
||||
if (flag) creditsService.updateChangedCredits(String.valueOf(accountId), taskId);
|
||||
} else if (StringUtil.isNullOrEmpty(generateDetail.getUrl())){
|
||||
// 一般来说这条线应该走不到
|
||||
generateDetail.setGenerateId(generate.getId());
|
||||
|
||||
@@ -375,7 +375,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
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) {
|
||||
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+");
|
||||
if (words.length > 200) {
|
||||
if (words.length > 180) {
|
||||
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");
|
||||
}
|
||||
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||
if (!StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
||||
&& toProductImageDTO.getModelName().equals("flux")){
|
||||
if (fluxTask){
|
||||
taskId = generateService.flux(CreditsEventsEnum.TO_PRODUCT_IMAGE, sb.toString(), tDesignPythonOutfit.getDesignUrl());
|
||||
toProductImageResult.setModelName("flux");
|
||||
toProductImageResult.setResultType("ToProductImage");
|
||||
@@ -494,8 +496,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
||||
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||
|
||||
if (!StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
||||
&& toProductImageDTO.getModelName().equals("flux")){
|
||||
if (fluxTask){
|
||||
taskId = generateService.flux(CreditsEventsEnum.TO_PRODUCT_IMAGE, sb.toString(), toProductElement.getUrl());
|
||||
toProductImageResult.setModelName("flux");
|
||||
toProductImageResult.setResultType("ToProductImage");
|
||||
@@ -527,7 +528,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
i ++;
|
||||
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;
|
||||
@@ -667,12 +670,16 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
String objectName = project.getAccountId() + "/product_image/" + taskId + ".png";
|
||||
String fluxResult = generateService.getFluxResult(taskId, objectName);
|
||||
if (StringUtil.isNullOrEmpty(fluxResult)){
|
||||
results.add(new MagicToolResultVO());
|
||||
results.add(new MagicToolResultVO(taskId, "Fail"));
|
||||
} else if (fluxResult.equals("Fail") || fluxResult.equals("Pending")) {
|
||||
results.add(new MagicToolResultVO(fluxResult));
|
||||
results.add(new MagicToolResultVO(taskId, fluxResult));
|
||||
} else {
|
||||
results.add(processFluxResult(fluxResult, toProductImageResult, taskId));
|
||||
// 扣积分
|
||||
Boolean flag = creditsService.taskCreditsDeduction(project.getAccountId(), taskId);
|
||||
if (flag) creditsService.updateChangedCredits(String.valueOf(project.getAccountId()), taskId);
|
||||
}
|
||||
// 在这个stream中不再继续往后执行
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -956,7 +963,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
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) {
|
||||
throw new BusinessException("Your remaining credits are insufficient for this generation. Please recharge.", ResultEnum.WARNING.getCode());
|
||||
}
|
||||
@@ -1013,8 +1023,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
}
|
||||
|
||||
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||
if (!StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
||||
&& toProductImageDTO.getModelName().equals("flux")){
|
||||
if (fluxTask){
|
||||
taskId = generateService.flux(CreditsEventsEnum.RELIGHT, s, toProductImageResult1.getUrl());
|
||||
toProductImageResult.setModelName("flux");
|
||||
toProductImageResult.setResultType("Relight");
|
||||
@@ -1043,8 +1052,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
}else {
|
||||
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
||||
ToProductImageResult toProductImageResult = new ToProductImageResult();
|
||||
if (!StringUtil.isNullOrEmpty(toProductImageDTO.getModelName())
|
||||
&& toProductImageDTO.getModelName().equals("flux")){
|
||||
if (fluxTask){
|
||||
taskId = generateService.flux(CreditsEventsEnum.RELIGHT, s, toProductElement.getUrl());
|
||||
toProductImageResult.setModelName("flux");
|
||||
toProductImageResult.setResultType("Relight");
|
||||
@@ -1072,7 +1080,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
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;
|
||||
@@ -1100,11 +1110,14 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
String fluxResult = generateService.getFluxResult(taskId, objectName);
|
||||
|
||||
if (StringUtil.isNullOrEmpty(fluxResult)){
|
||||
results.add(new MagicToolResultVO());
|
||||
results.add(new MagicToolResultVO(taskId, "Fail"));
|
||||
} else if (fluxResult.equals("Fail") || fluxResult.equals("Pending")) {
|
||||
results.add(new MagicToolResultVO(fluxResult));
|
||||
results.add(new MagicToolResultVO(taskId, fluxResult));
|
||||
} else {
|
||||
results.add(processFluxResult(fluxResult, toProductImageResult, taskId));
|
||||
// 扣积分
|
||||
Boolean flag = creditsService.taskCreditsDeduction(project.getAccountId(), taskId);
|
||||
if (flag) creditsService.updateChangedCredits(String.valueOf(project.getAccountId()), taskId);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user