From 0759452381c3540b9d2b8fc5dafd37eda8ad45da Mon Sep 17 00:00:00 2001 From: xupei Date: Wed, 26 Jun 2024 13:55:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E7=9B=B8=E5=85=B3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=201=E3=80=81BUGFIX:=20=E7=94=A8=E6=88=B7=E8=A1=A8?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E7=A7=AF=E5=88=86=E4=B8=8E=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E4=B8=AD=E4=B8=8D=E7=BB=9F=E4=B8=80;=202?= =?UTF-8?q?=E3=80=81To=5FProduct=5FImage=20=E6=B7=BB=E5=8A=A0=E6=89=A3?= =?UTF-8?q?=E9=99=A4=E7=A7=AF=E5=88=86=203=E3=80=81=E6=AF=8F=E5=91=A8?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E4=BB=98=E8=B4=B9=E7=94=A8=E6=88=B7=E7=A7=AF?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/common/RabbitMQ/GenerateConsumer.java | 151 ++++++++---------- .../ai/da/common/enums/CreditsEventsEnum.java | 7 +- .../com/ai/da/common/task/AccountTask.java | 6 +- .../dto/GenerateThroughImageTextDTO.java | 2 +- .../com/ai/da/service/AccountService.java | 2 +- .../da/service/impl/AccountServiceImpl.java | 6 +- .../ai/da/service/impl/AliPayServiceImpl.java | 8 +- .../da/service/impl/AlipayHKServiceImpl.java | 4 +- .../da/service/impl/CreditsServiceImpl.java | 16 +- .../da/service/impl/GenerateServiceImpl.java | 28 +++- .../impl/PayPalCheckoutServiceImpl.java | 10 +- .../impl/SuperResolutionServiceImpl.java | 6 +- .../impl/UserLikeGroupServiceImpl.java | 26 ++- 13 files changed, 142 insertions(+), 130 deletions(-) diff --git a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java index 88d5ae19..0c5ea013 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java @@ -67,27 +67,14 @@ public class GenerateConsumer { } catch (IOException ex) { log.error("手动确认,不返回队列重新消费"); } - // 2.2 将该消息从取消列表中删除 -// redisUtil.removeFromSet(cancelSetKey, uniqueId); } else { -// GenerateCollectionVO generateCollectionVO = generateService.generateThroughImageText(generateThroughImageTextDTO); - try { - generateService.generateThroughImageText(generateThroughImageTextDTO); - }catch (Exception e){ - log.error("error message : {}", e.getMessage()); - } + generateService.generateThroughImageText(generateThroughImageTextDTO); // 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除 redisUtil.removeFromZSet(consumptionOrderKey, uniqueId); - /*if (!Objects.isNull(generateCollectionVO)) { - HashMap generateResult = new HashMap<>(); - generateResult.put(uniqueId, JSONObject.toJSONString(generateCollectionVO)); - // 将结果存在redis中 ,为空时不要存 - redisUtil.addToMap(resultMapKey, generateResult); - }*/ } - } catch (BusinessException e) { - log.error(e.getMsg()); + } catch (Exception e) { + log.error(e.getMessage()); // channel.basicNack() 为不确认deliveryTag对应的消息,第二个参数是否应用于多消息,第三个参数是否requeue try { // 第二个参数,是否批量确认消息,当传false时,只确认当前 deliveryTag对应的消息;当传true时,会确认当前及之前所有未确认的消息。 @@ -102,7 +89,7 @@ public class GenerateConsumer { } // 将入参和错误信息存入数据库 String exceptionMessage = JSONObject.toJSONString(generateThroughImageTextDTO) + - " Exception message : " + e.getMsg(); + " Exception message : " + e.getMessage(); HashMap exceptionInfo = new HashMap<>(); exceptionInfo.put(String.valueOf(uniqueId), exceptionMessage); // 存redis @@ -256,71 +243,71 @@ public class GenerateConsumer { log.info("============ProcessRelightResult End listening=========="); } -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer1(Message msg, Channel channel) { -// generate(msg, channel, "consumer 1"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer2(Message msg, Channel channel) { -// generate(msg, channel, "consumer 2"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer3(Message msg, Channel channel) { -// generate(msg, channel, "consumer 3"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer4(Message msg, Channel channel) { -// generate(msg, channel, "consumer 4"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer5(Message msg, Channel channel) { -// generate(msg, channel, "consumer 5"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer6(Message msg, Channel channel) { -// generate(msg, channel, "consumer 6"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer7(Message msg, Channel channel) { -// generate(msg, channel, "consumer 7"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer8(Message msg, Channel channel) { -// generate(msg, channel, "consumer 8"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer9(Message msg, Channel channel) { -// generate(msg, channel, "consumer 9"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_RESULT_QUEUE) -// @RabbitHandler -// public void getGenerateResult(Message msg, Channel channel) { -// processGenerateResult(msg, channel); -// } -// -// @RabbitListener(queues = MQConfig.TO_PRODUCT_IMAGE_RESULT_QUEUE) -// @RabbitHandler -// public void getToProductImageResult(Message msg, Channel channel) { -// processToProductImageResult(msg, channel); -// } + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer1(Message msg, Channel channel) { + generate(msg, channel, "consumer 1"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer2(Message msg, Channel channel) { + generate(msg, channel, "consumer 2"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer3(Message msg, Channel channel) { + generate(msg, channel, "consumer 3"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer4(Message msg, Channel channel) { + generate(msg, channel, "consumer 4"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer5(Message msg, Channel channel) { + generate(msg, channel, "consumer 5"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer6(Message msg, Channel channel) { + generate(msg, channel, "consumer 6"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer7(Message msg, Channel channel) { + generate(msg, channel, "consumer 7"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer8(Message msg, Channel channel) { + generate(msg, channel, "consumer 8"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer9(Message msg, Channel channel) { + generate(msg, channel, "consumer 9"); + } + + @RabbitListener(queues = MQConfig.GENERATE_RESULT_QUEUE) + @RabbitHandler + public void getGenerateResult(Message msg, Channel channel) { + processGenerateResult(msg, channel); + } + + @RabbitListener(queues = MQConfig.TO_PRODUCT_IMAGE_RESULT_QUEUE) + @RabbitHandler + public void getToProductImageResult(Message msg, Channel channel) { + processToProductImageResult(msg, channel); + } @RabbitListener(queues = MQConfig.RELIGHT_RESULT_QUEUE) @RabbitHandler 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 adefd454..7978920c 100644 --- a/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java +++ b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java @@ -14,9 +14,10 @@ public enum CreditsEventsEnum { // BUY_CREDITS("Buy Credits","10"), // 每月更新 - INIT_YEARLY("init", "6000"), - INIT_MONTHLY("init", "5000"), - INIT_TRIAL("init", "100"), + INIT_YEARLY("init_yearly", "6000"), + INIT_MONTHLY("init_monthly", "5000"), + INIT_TRIAL("init_trial", "100"), + INIT_WEEKLY("init_weekly","10000"), // SUPER_RESOLUTION("Super Resolution","30"), SUPER_RESOLUTION("Super Resolution","10"), diff --git a/src/main/java/com/ai/da/common/task/AccountTask.java b/src/main/java/com/ai/da/common/task/AccountTask.java index 04b57b46..fa866e9d 100644 --- a/src/main/java/com/ai/da/common/task/AccountTask.java +++ b/src/main/java/com/ai/da/common/task/AccountTask.java @@ -12,10 +12,10 @@ public class AccountTask { @Resource private AccountService accountService; - /** 每个月1号凌晨刷新 年付用户的积分 */ -// @Scheduled(cron = "0 0 0 1 * ?") + /** 每周日晚上刷新 年付用户、月付用户的积分 */ +// @Scheduled(cron = "59 59 23 ? * SUN") public void refreshCreditsMonthly(){ - accountService.refreshCreditsMonthly(); + accountService.refreshCreditsWeekly(); } // todo 多久执行一次? diff --git a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java index 398fa9ec..6320dd5d 100644 --- a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java +++ b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java @@ -55,6 +55,6 @@ public class GenerateThroughImageTextDTO { @ApiModelProperty("页面上用户设计的slogan所截的图片") String sloganBase64; - @ApiModelProperty("种子 取值范围 0~99999") + @ApiModelProperty("种子 取值范围 0~500") String seed; } diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index bf6b72db..193ccff7 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -139,5 +139,5 @@ public interface AccountService extends IService { Boolean collectQuestionnaires(String questionnaireInfo); - void refreshCreditsMonthly(); + void refreshCreditsWeekly(); } diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index afc5a849..ed70f616 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -1233,12 +1233,12 @@ public class AccountServiceImpl extends ServiceImpl impl /** * 为年费用户每月更新积分 */ - public void refreshCreditsMonthly(){ + public void refreshCreditsWeekly(){ UpdateWrapper accountUpdateWrapper = new UpdateWrapper<>(); // 刷新账号有效期截止之前的年付用户的积分 long epochMilli = Instant.now().toEpochMilli(); - accountUpdateWrapper.lambda().set(Account::getCredits, CreditsEventsEnum.INIT_YEARLY.getValue()) - .eq(Account::getSystemUser,1) + accountUpdateWrapper.lambda().set(Account::getCredits, CreditsEventsEnum.INIT_WEEKLY.getValue()) + .eq(Account::getSystemUser,1).or().eq(Account::getSystemUser,2) .gt(Account::getValidEndTime, epochMilli); baseMapper.update(null,accountUpdateWrapper); } diff --git a/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java b/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java index 75c93eb6..61f8b1d2 100644 --- a/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java @@ -210,13 +210,13 @@ public class AliPayServiceImpl implements AliPayService { orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS); //记录支付日志 paymentInfoService.createPaymentInfoForAliPay(params); + // 更新积分 + creditsService.buyCredits(orderByOrderNo.getAccountId(),Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); // 添加积分变更记录 creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(), CreditsEventsEnum.BUY_CREDITS.getName() + "--Alipay", CreditsEventsEnum.BUY_CREDITS.getValue(), "positive"); - // 更新积分 - creditsService.buyCredits(orderByOrderNo.getAccountId(),Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); } finally { //要主动释放锁 lock.unlock(); @@ -312,13 +312,13 @@ public class AliPayServiceImpl implements AliPayService { orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS); //并记录支付日志 paymentInfoService.createPaymentInfoForAliPay(alipayTradeQueryResponse); + // 更新积分 + creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); // 添加积分变更记录 creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(), CreditsEventsEnum.BUY_CREDITS.getName() + "--Alipay", CreditsEventsEnum.BUY_CREDITS.getValue(), "positive"); - // 更新积分 - creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); } } diff --git a/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java b/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java index 14515580..208f82d8 100644 --- a/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java @@ -241,13 +241,13 @@ public class AlipayHKServiceImpl implements AlipayHKService { //记录支付日志 paymentInfoService.createPaymentInfoForAliPayHK(alipayHKCallbackDTO); log.info("Alipay-HK 订单:{} 支付信息状态更新成功",orderNo); + // 更新积分 + creditsService.buyCredits(orderByOrderNo.getAccountId(),Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); // 添加积分变更记录 creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(), CreditsEventsEnum.BUY_CREDITS.getName() + "--AlipayHK", CreditsEventsEnum.BUY_CREDITS.getValue(), "positive"); - // 更新积分 - creditsService.buyCredits(orderByOrderNo.getAccountId(),Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); log.info("用户:{} 积分信息更新成功",orderByOrderNo.getAccountId()); } finally { //要主动释放锁 diff --git a/src/main/java/com/ai/da/service/impl/CreditsServiceImpl.java b/src/main/java/com/ai/da/service/impl/CreditsServiceImpl.java index 4ddbc568..bb7adbaf 100644 --- a/src/main/java/com/ai/da/service/impl/CreditsServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CreditsServiceImpl.java @@ -118,20 +118,20 @@ public class CreditsServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda() .eq(CreditsDetail::getTaskId, taskId) .set(CreditsDetail::getChangedCredits, changeCredits) - .set(CreditsDetail::getCredits, finalCredits); + .set(CreditsDetail::getCredits, currentCredits); baseMapper.update(null, updateWrapper); 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 ae27cdc1..c6c07158 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -86,6 +86,8 @@ public class GenerateServiceImpl extends ServiceImpl i @Value("${access.python.generate_sr_port}") private String generateServicePort; + // 创建 Random 对象 + Random random = new Random(); @Override public GenerateCaptionVO generateCaption(Long sketchElementId) { @@ -266,6 +268,17 @@ public class GenerateServiceImpl extends ServiceImpl i String status = imageName.equals("white_image.jpg") ? "Invalid" : "Success"; GenerateResultVO generateResultVO = new GenerateResultVO(taskId, toProductImageResult.getId(), url, status, category); redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME); + + Long accountId = Long.parseLong(taskId.substring(taskId.lastIndexOf("-") + 1)); + if (!status.equals("Invalid")){ + // 4、扣除积分 + Boolean b = creditsService.taskCreditsDeduction(accountId, taskId); + // 3、记录积分变更 + if (b) creditsService.insertToCreditsDetail(accountId, + CreditsEventsEnum.TO_PRODUCT_IMAGE.getName(), + CreditsEventsEnum.TO_PRODUCT_IMAGE.getValue(), + "negative"); + } } private void validateGeneraType(Generate generate, String text, Long elementId) { @@ -476,13 +489,14 @@ public class GenerateServiceImpl extends ServiceImpl i }*/ // 判断试用用户是否还有剩余试用机会 - int trialsCount = 0; + // ** 不再通过生成次数限制试用用户,统一使用积分限制 + /*int trialsCount = 0; if (generateThroughImageTextDTO.getIsTestUser()) { trialsCount = getTrialsCount(generateThroughImageTextDTO.getUserId(), generateThroughImageTextDTO.getLevel1Type()); if (trialsCount >= 2) { return new PrepareForGenerateVO(0); } - } + }*/ CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.OTHER; int times = 4; // 当level1Type为Print_board时,level2Type为pattern时需要确定generateType @@ -550,10 +564,10 @@ public class GenerateServiceImpl extends ServiceImpl i } // 校验seed的取值范围 - int seed = Integer.parseInt(generateThroughImageTextDTO.getSeed()); - if (seed < 0 || seed > 99999) { - throw new BusinessException("the.value.range.of.seed"); - } + int seed = random.nextInt(501); + log.info("随机种子:{}", seed); + generateThroughImageTextDTO.setSeed(String.valueOf(seed)); + creditsEventsEnum = CreditsEventsEnum.LOGO; } } else if (generateThroughImageTextDTO.getLevel1Type().equals(MOOD_BOARD.getRealName())) { @@ -598,7 +612,7 @@ public class GenerateServiceImpl extends ServiceImpl i creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), uuid); // 7、返回唯一id - return new PrepareForGenerateVO(taskIdList, 2 - trialsCount); + return new PrepareForGenerateVO(taskIdList, 2); } @Override diff --git a/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java b/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java index 62326aed..f4fd04b4 100644 --- a/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java @@ -586,13 +586,13 @@ public class PayPalCheckoutServiceImpl implements PayPalCheckoutService { orderInfoService.updateStatusByOrderNo(orderId, OrderStatusEnum.SUCCESS); //记录支付日志 paymentInfoService.createPaymentInfoForPayPal(capturedOrder); + // 更新积分 + creditsService.buyCredits(orderInfo.getAccountId(), orderInfo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); // 添加积分变更记录 creditsService.insertToCreditsDetail(orderInfo.getAccountId(), CreditsEventsEnum.BUY_CREDITS.getName() + "--PayPal", CreditsEventsEnum.BUY_CREDITS.getValue(), "positive"); - // 更新积分 - creditsService.buyCredits(orderInfo.getAccountId(), orderInfo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); } } @@ -628,14 +628,14 @@ public class PayPalCheckoutServiceImpl implements PayPalCheckoutService { orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS); //并记录支付日志 paymentInfoService.createPaymentInfoForPayPal(result); + // 更新积分 +// creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Integer.parseInt(CreditsEventsEnum.PRICE.getValue())); + creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); // 添加积分变更记录 creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(), CreditsEventsEnum.BUY_CREDITS.getName() + "--Paypal", CreditsEventsEnum.BUY_CREDITS.getValue(), "positive"); - // 更新积分 -// creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Integer.parseInt(CreditsEventsEnum.PRICE.getValue())); - creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue())); } } diff --git a/src/main/java/com/ai/da/service/impl/SuperResolutionServiceImpl.java b/src/main/java/com/ai/da/service/impl/SuperResolutionServiceImpl.java index be795aa4..63585f19 100644 --- a/src/main/java/com/ai/da/service/impl/SuperResolutionServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/SuperResolutionServiceImpl.java @@ -144,13 +144,13 @@ public class SuperResolutionServiceImpl extends ServiceImpl toProduct(ToProductImageDTO toProductImageDTO) { + // 判断用户当前积分是否够本次生成消耗 + Boolean preDeduction = creditsService.creditsPreDeduction(CreditsEventsEnum.TO_PRODUCT_IMAGE, toProductImageDTO.getToProductImageVOList().size()); + if (!preDeduction) { + throw new BusinessException("Not enough Credits"); + } + AuthPrincipalVo userHolder = UserContext.getUserHolder(); Long userLikeGroupId = toProductImageDTO.getUserLikeGroupId(); ToProductImageRecord toProductImageRecord = new ToProductImageRecord(); @@ -240,11 +246,12 @@ public class UserLikeGroupServiceImpl extends ServiceImpl