积分相关修改
1、BUGFIX: 用户表中的积分与积分详细中不统一; 2、To_Product_Image 添加扣除积分 3、每周刷新付费用户积分
This commit is contained in:
@@ -67,27 +67,14 @@ public class GenerateConsumer {
|
|||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
log.error("手动确认,不返回队列重新消费");
|
log.error("手动确认,不返回队列重新消费");
|
||||||
}
|
}
|
||||||
// 2.2 将该消息从取消列表中删除
|
|
||||||
// redisUtil.removeFromSet(cancelSetKey, uniqueId);
|
|
||||||
} else {
|
} else {
|
||||||
// GenerateCollectionVO generateCollectionVO = generateService.generateThroughImageText(generateThroughImageTextDTO);
|
generateService.generateThroughImageText(generateThroughImageTextDTO);
|
||||||
try {
|
|
||||||
generateService.generateThroughImageText(generateThroughImageTextDTO);
|
|
||||||
}catch (Exception e){
|
|
||||||
log.error("error message : {}", e.getMessage());
|
|
||||||
}
|
|
||||||
// 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除
|
// 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除
|
||||||
redisUtil.removeFromZSet(consumptionOrderKey, uniqueId);
|
redisUtil.removeFromZSet(consumptionOrderKey, uniqueId);
|
||||||
/*if (!Objects.isNull(generateCollectionVO)) {
|
|
||||||
HashMap<String, String> generateResult = new HashMap<>();
|
|
||||||
generateResult.put(uniqueId, JSONObject.toJSONString(generateCollectionVO));
|
|
||||||
// 将结果存在redis中 ,为空时不要存
|
|
||||||
redisUtil.addToMap(resultMapKey, generateResult);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (BusinessException e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMsg());
|
log.error(e.getMessage());
|
||||||
// channel.basicNack() 为不确认deliveryTag对应的消息,第二个参数是否应用于多消息,第三个参数是否requeue
|
// channel.basicNack() 为不确认deliveryTag对应的消息,第二个参数是否应用于多消息,第三个参数是否requeue
|
||||||
try {
|
try {
|
||||||
// 第二个参数,是否批量确认消息,当传false时,只确认当前 deliveryTag对应的消息;当传true时,会确认当前及之前所有未确认的消息。
|
// 第二个参数,是否批量确认消息,当传false时,只确认当前 deliveryTag对应的消息;当传true时,会确认当前及之前所有未确认的消息。
|
||||||
@@ -102,7 +89,7 @@ public class GenerateConsumer {
|
|||||||
}
|
}
|
||||||
// 将入参和错误信息存入数据库
|
// 将入参和错误信息存入数据库
|
||||||
String exceptionMessage = JSONObject.toJSONString(generateThroughImageTextDTO) +
|
String exceptionMessage = JSONObject.toJSONString(generateThroughImageTextDTO) +
|
||||||
" Exception message : " + e.getMsg();
|
" Exception message : " + e.getMessage();
|
||||||
HashMap<String, String> exceptionInfo = new HashMap<>();
|
HashMap<String, String> exceptionInfo = new HashMap<>();
|
||||||
exceptionInfo.put(String.valueOf(uniqueId), exceptionMessage);
|
exceptionInfo.put(String.valueOf(uniqueId), exceptionMessage);
|
||||||
// 存redis
|
// 存redis
|
||||||
@@ -256,71 +243,71 @@ public class GenerateConsumer {
|
|||||||
log.info("============ProcessRelightResult End listening==========");
|
log.info("============ProcessRelightResult End listening==========");
|
||||||
}
|
}
|
||||||
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer1(Message msg, Channel channel) {
|
public void generateConsumer1(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 1");
|
generate(msg, channel, "consumer 1");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer2(Message msg, Channel channel) {
|
public void generateConsumer2(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 2");
|
generate(msg, channel, "consumer 2");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer3(Message msg, Channel channel) {
|
public void generateConsumer3(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 3");
|
generate(msg, channel, "consumer 3");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer4(Message msg, Channel channel) {
|
public void generateConsumer4(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 4");
|
generate(msg, channel, "consumer 4");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer5(Message msg, Channel channel) {
|
public void generateConsumer5(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 5");
|
generate(msg, channel, "consumer 5");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer6(Message msg, Channel channel) {
|
public void generateConsumer6(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 6");
|
generate(msg, channel, "consumer 6");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer7(Message msg, Channel channel) {
|
public void generateConsumer7(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 7");
|
generate(msg, channel, "consumer 7");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer8(Message msg, Channel channel) {
|
public void generateConsumer8(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 8");
|
generate(msg, channel, "consumer 8");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void generateConsumer9(Message msg, Channel channel) {
|
public void generateConsumer9(Message msg, Channel channel) {
|
||||||
// generate(msg, channel, "consumer 9");
|
generate(msg, channel, "consumer 9");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.GENERATE_RESULT_QUEUE)
|
@RabbitListener(queues = MQConfig.GENERATE_RESULT_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void getGenerateResult(Message msg, Channel channel) {
|
public void getGenerateResult(Message msg, Channel channel) {
|
||||||
// processGenerateResult(msg, channel);
|
processGenerateResult(msg, channel);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @RabbitListener(queues = MQConfig.TO_PRODUCT_IMAGE_RESULT_QUEUE)
|
@RabbitListener(queues = MQConfig.TO_PRODUCT_IMAGE_RESULT_QUEUE)
|
||||||
// @RabbitHandler
|
@RabbitHandler
|
||||||
// public void getToProductImageResult(Message msg, Channel channel) {
|
public void getToProductImageResult(Message msg, Channel channel) {
|
||||||
// processToProductImageResult(msg, channel);
|
processToProductImageResult(msg, channel);
|
||||||
// }
|
}
|
||||||
|
|
||||||
@RabbitListener(queues = MQConfig.RELIGHT_RESULT_QUEUE)
|
@RabbitListener(queues = MQConfig.RELIGHT_RESULT_QUEUE)
|
||||||
@RabbitHandler
|
@RabbitHandler
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ public enum CreditsEventsEnum {
|
|||||||
// BUY_CREDITS("Buy Credits","10"),
|
// BUY_CREDITS("Buy Credits","10"),
|
||||||
|
|
||||||
// 每月更新
|
// 每月更新
|
||||||
INIT_YEARLY("init", "6000"),
|
INIT_YEARLY("init_yearly", "6000"),
|
||||||
INIT_MONTHLY("init", "5000"),
|
INIT_MONTHLY("init_monthly", "5000"),
|
||||||
INIT_TRIAL("init", "100"),
|
INIT_TRIAL("init_trial", "100"),
|
||||||
|
INIT_WEEKLY("init_weekly","10000"),
|
||||||
|
|
||||||
// SUPER_RESOLUTION("Super Resolution","30"),
|
// SUPER_RESOLUTION("Super Resolution","30"),
|
||||||
SUPER_RESOLUTION("Super Resolution","10"),
|
SUPER_RESOLUTION("Super Resolution","10"),
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ public class AccountTask {
|
|||||||
@Resource
|
@Resource
|
||||||
private AccountService accountService;
|
private AccountService accountService;
|
||||||
|
|
||||||
/** 每个月1号凌晨刷新 年付用户的积分 */
|
/** 每周日晚上刷新 年付用户、月付用户的积分 */
|
||||||
// @Scheduled(cron = "0 0 0 1 * ?")
|
// @Scheduled(cron = "59 59 23 ? * SUN")
|
||||||
public void refreshCreditsMonthly(){
|
public void refreshCreditsMonthly(){
|
||||||
accountService.refreshCreditsMonthly();
|
accountService.refreshCreditsWeekly();
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo 多久执行一次?
|
// todo 多久执行一次?
|
||||||
|
|||||||
@@ -55,6 +55,6 @@ public class GenerateThroughImageTextDTO {
|
|||||||
@ApiModelProperty("页面上用户设计的slogan所截的图片")
|
@ApiModelProperty("页面上用户设计的slogan所截的图片")
|
||||||
String sloganBase64;
|
String sloganBase64;
|
||||||
|
|
||||||
@ApiModelProperty("种子 取值范围 0~99999")
|
@ApiModelProperty("种子 取值范围 0~500")
|
||||||
String seed;
|
String seed;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -139,5 +139,5 @@ public interface AccountService extends IService<Account> {
|
|||||||
|
|
||||||
Boolean collectQuestionnaires(String questionnaireInfo);
|
Boolean collectQuestionnaires(String questionnaireInfo);
|
||||||
|
|
||||||
void refreshCreditsMonthly();
|
void refreshCreditsWeekly();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1233,12 +1233,12 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
/**
|
/**
|
||||||
* 为年费用户每月更新积分
|
* 为年费用户每月更新积分
|
||||||
*/
|
*/
|
||||||
public void refreshCreditsMonthly(){
|
public void refreshCreditsWeekly(){
|
||||||
UpdateWrapper<Account> accountUpdateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<Account> accountUpdateWrapper = new UpdateWrapper<>();
|
||||||
// 刷新账号有效期截止之前的年付用户的积分
|
// 刷新账号有效期截止之前的年付用户的积分
|
||||||
long epochMilli = Instant.now().toEpochMilli();
|
long epochMilli = Instant.now().toEpochMilli();
|
||||||
accountUpdateWrapper.lambda().set(Account::getCredits, CreditsEventsEnum.INIT_YEARLY.getValue())
|
accountUpdateWrapper.lambda().set(Account::getCredits, CreditsEventsEnum.INIT_WEEKLY.getValue())
|
||||||
.eq(Account::getSystemUser,1)
|
.eq(Account::getSystemUser,1).or().eq(Account::getSystemUser,2)
|
||||||
.gt(Account::getValidEndTime, epochMilli);
|
.gt(Account::getValidEndTime, epochMilli);
|
||||||
baseMapper.update(null,accountUpdateWrapper);
|
baseMapper.update(null,accountUpdateWrapper);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -210,13 +210,13 @@ public class AliPayServiceImpl implements AliPayService {
|
|||||||
orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS);
|
orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS);
|
||||||
//记录支付日志
|
//记录支付日志
|
||||||
paymentInfoService.createPaymentInfoForAliPay(params);
|
paymentInfoService.createPaymentInfoForAliPay(params);
|
||||||
|
// 更新积分
|
||||||
|
creditsService.buyCredits(orderByOrderNo.getAccountId(),Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()));
|
||||||
// 添加积分变更记录
|
// 添加积分变更记录
|
||||||
creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(),
|
creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(),
|
||||||
CreditsEventsEnum.BUY_CREDITS.getName() + "--Alipay",
|
CreditsEventsEnum.BUY_CREDITS.getName() + "--Alipay",
|
||||||
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
||||||
"positive");
|
"positive");
|
||||||
// 更新积分
|
|
||||||
creditsService.buyCredits(orderByOrderNo.getAccountId(),Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()));
|
|
||||||
} finally {
|
} finally {
|
||||||
//要主动释放锁
|
//要主动释放锁
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
@@ -312,13 +312,13 @@ public class AliPayServiceImpl implements AliPayService {
|
|||||||
orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS);
|
orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS);
|
||||||
//并记录支付日志
|
//并记录支付日志
|
||||||
paymentInfoService.createPaymentInfoForAliPay(alipayTradeQueryResponse);
|
paymentInfoService.createPaymentInfoForAliPay(alipayTradeQueryResponse);
|
||||||
|
// 更新积分
|
||||||
|
creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()));
|
||||||
// 添加积分变更记录
|
// 添加积分变更记录
|
||||||
creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(),
|
creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(),
|
||||||
CreditsEventsEnum.BUY_CREDITS.getName() + "--Alipay",
|
CreditsEventsEnum.BUY_CREDITS.getName() + "--Alipay",
|
||||||
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
||||||
"positive");
|
"positive");
|
||||||
// 更新积分
|
|
||||||
creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,13 +241,13 @@ public class AlipayHKServiceImpl implements AlipayHKService {
|
|||||||
//记录支付日志
|
//记录支付日志
|
||||||
paymentInfoService.createPaymentInfoForAliPayHK(alipayHKCallbackDTO);
|
paymentInfoService.createPaymentInfoForAliPayHK(alipayHKCallbackDTO);
|
||||||
log.info("Alipay-HK 订单:{} 支付信息状态更新成功",orderNo);
|
log.info("Alipay-HK 订单:{} 支付信息状态更新成功",orderNo);
|
||||||
|
// 更新积分
|
||||||
|
creditsService.buyCredits(orderByOrderNo.getAccountId(),Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()));
|
||||||
// 添加积分变更记录
|
// 添加积分变更记录
|
||||||
creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(),
|
creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(),
|
||||||
CreditsEventsEnum.BUY_CREDITS.getName() + "--AlipayHK",
|
CreditsEventsEnum.BUY_CREDITS.getName() + "--AlipayHK",
|
||||||
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
||||||
"positive");
|
"positive");
|
||||||
// 更新积分
|
|
||||||
creditsService.buyCredits(orderByOrderNo.getAccountId(),Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()));
|
|
||||||
log.info("用户:{} 积分信息更新成功",orderByOrderNo.getAccountId());
|
log.info("用户:{} 积分信息更新成功",orderByOrderNo.getAccountId());
|
||||||
} finally {
|
} finally {
|
||||||
//要主动释放锁
|
//要主动释放锁
|
||||||
|
|||||||
@@ -118,20 +118,20 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
|
|||||||
public void insertToCreditsDetail(Long accountId, String changeEvent, String credits, String changeType) {
|
public void insertToCreditsDetail(Long accountId, String changeEvent, String credits, String changeType) {
|
||||||
CreditsDetail creditsDetail = new CreditsDetail();
|
CreditsDetail creditsDetail = new CreditsDetail();
|
||||||
Account account = accountMapper.selectById(accountId);
|
Account account = accountMapper.selectById(accountId);
|
||||||
BigDecimal finalCredits;
|
// BigDecimal finalCredits;
|
||||||
String changeCredits;
|
String changeCredits;
|
||||||
if ("positive".equals(changeType)) {
|
if ("positive".equals(changeType)) {
|
||||||
finalCredits = account.getCredits().add(new BigDecimal(credits));
|
// finalCredits = account.getCredits().add(new BigDecimal(credits));
|
||||||
changeCredits = "+" + credits;
|
changeCredits = "+" + credits;
|
||||||
} else {
|
} else {
|
||||||
finalCredits = account.getCredits().subtract(new BigDecimal(credits));
|
// finalCredits = account.getCredits().subtract(new BigDecimal(credits));
|
||||||
changeCredits = "-" + credits;
|
changeCredits = "-" + credits;
|
||||||
}
|
}
|
||||||
creditsDetail.setAccountId(accountId);
|
creditsDetail.setAccountId(accountId);
|
||||||
creditsDetail.setChangeEvent(changeEvent);
|
creditsDetail.setChangeEvent(changeEvent);
|
||||||
creditsDetail.setChangedCredits(changeCredits);
|
creditsDetail.setChangedCredits(changeCredits);
|
||||||
creditsDetail.setCredits(finalCredits);
|
// creditsDetail.setCredits(finalCredits);
|
||||||
// creditsDetail.setCredits(account.getCredits());
|
creditsDetail.setCredits(account.getCredits());
|
||||||
creditsDetail.setCreateTime(LocalDateTime.now());
|
creditsDetail.setCreateTime(LocalDateTime.now());
|
||||||
|
|
||||||
baseMapper.insert(creditsDetail);
|
baseMapper.insert(creditsDetail);
|
||||||
@@ -286,7 +286,7 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
|
|||||||
|
|
||||||
CreditsDetail creditsDetail = baseMapper.selectOne(queryWrapper);
|
CreditsDetail creditsDetail = baseMapper.selectOne(queryWrapper);
|
||||||
String changeEvent = creditsDetail.getChangeEvent();
|
String changeEvent = creditsDetail.getChangeEvent();
|
||||||
BigDecimal currentCredits = creditsDetail.getCredits();
|
BigDecimal currentCredits = accountMapper.selectById(accountId).getCredits();
|
||||||
String credits = "0";
|
String credits = "0";
|
||||||
if (changeEvent.equals("Logo") ||
|
if (changeEvent.equals("Logo") ||
|
||||||
changeEvent.equals("Pattern") ||
|
changeEvent.equals("Pattern") ||
|
||||||
@@ -297,14 +297,14 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
|
|||||||
credits = CreditsEventsEnum.SLOGAN.getValue();
|
credits = CreditsEventsEnum.SLOGAN.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
BigDecimal finalCredits = currentCredits.subtract(new BigDecimal(credits));
|
// BigDecimal finalCredits = currentCredits.subtract(new BigDecimal(credits));
|
||||||
String changeCredits = "-" + credits;
|
String changeCredits = "-" + credits;
|
||||||
|
|
||||||
UpdateWrapper<CreditsDetail> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<CreditsDetail> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.lambda()
|
updateWrapper.lambda()
|
||||||
.eq(CreditsDetail::getTaskId, taskId)
|
.eq(CreditsDetail::getTaskId, taskId)
|
||||||
.set(CreditsDetail::getChangedCredits, changeCredits)
|
.set(CreditsDetail::getChangedCredits, changeCredits)
|
||||||
.set(CreditsDetail::getCredits, finalCredits);
|
.set(CreditsDetail::getCredits, currentCredits);
|
||||||
|
|
||||||
baseMapper.update(null, updateWrapper);
|
baseMapper.update(null, updateWrapper);
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,8 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
@Value("${access.python.generate_sr_port}")
|
@Value("${access.python.generate_sr_port}")
|
||||||
private String generateServicePort;
|
private String generateServicePort;
|
||||||
|
|
||||||
|
// 创建 Random 对象
|
||||||
|
Random random = new Random();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GenerateCaptionVO generateCaption(Long sketchElementId) {
|
public GenerateCaptionVO generateCaption(Long sketchElementId) {
|
||||||
@@ -266,6 +268,17 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
String status = imageName.equals("white_image.jpg") ? "Invalid" : "Success";
|
String status = imageName.equals("white_image.jpg") ? "Invalid" : "Success";
|
||||||
GenerateResultVO generateResultVO = new GenerateResultVO(taskId, toProductImageResult.getId(), url, status, category);
|
GenerateResultVO generateResultVO = new GenerateResultVO(taskId, toProductImageResult.getId(), url, status, category);
|
||||||
redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
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) {
|
private void validateGeneraType(Generate generate, String text, Long elementId) {
|
||||||
@@ -476,13 +489,14 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// 判断试用用户是否还有剩余试用机会
|
// 判断试用用户是否还有剩余试用机会
|
||||||
int trialsCount = 0;
|
// ** 不再通过生成次数限制试用用户,统一使用积分限制
|
||||||
|
/*int trialsCount = 0;
|
||||||
if (generateThroughImageTextDTO.getIsTestUser()) {
|
if (generateThroughImageTextDTO.getIsTestUser()) {
|
||||||
trialsCount = getTrialsCount(generateThroughImageTextDTO.getUserId(), generateThroughImageTextDTO.getLevel1Type());
|
trialsCount = getTrialsCount(generateThroughImageTextDTO.getUserId(), generateThroughImageTextDTO.getLevel1Type());
|
||||||
if (trialsCount >= 2) {
|
if (trialsCount >= 2) {
|
||||||
return new PrepareForGenerateVO(0);
|
return new PrepareForGenerateVO(0);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.OTHER;
|
CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.OTHER;
|
||||||
int times = 4;
|
int times = 4;
|
||||||
// 当level1Type为Print_board时,level2Type为pattern时需要确定generateType
|
// 当level1Type为Print_board时,level2Type为pattern时需要确定generateType
|
||||||
@@ -550,10 +564,10 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 校验seed的取值范围
|
// 校验seed的取值范围
|
||||||
int seed = Integer.parseInt(generateThroughImageTextDTO.getSeed());
|
int seed = random.nextInt(501);
|
||||||
if (seed < 0 || seed > 99999) {
|
log.info("随机种子:{}", seed);
|
||||||
throw new BusinessException("the.value.range.of.seed");
|
generateThroughImageTextDTO.setSeed(String.valueOf(seed));
|
||||||
}
|
|
||||||
creditsEventsEnum = CreditsEventsEnum.LOGO;
|
creditsEventsEnum = CreditsEventsEnum.LOGO;
|
||||||
}
|
}
|
||||||
} else if (generateThroughImageTextDTO.getLevel1Type().equals(MOOD_BOARD.getRealName())) {
|
} else if (generateThroughImageTextDTO.getLevel1Type().equals(MOOD_BOARD.getRealName())) {
|
||||||
@@ -598,7 +612,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), uuid);
|
creditsService.preInsert(generateThroughImageTextDTO.getUserId(), creditsEventsEnum.getName(), uuid);
|
||||||
|
|
||||||
// 7、返回唯一id
|
// 7、返回唯一id
|
||||||
return new PrepareForGenerateVO(taskIdList, 2 - trialsCount);
|
return new PrepareForGenerateVO(taskIdList, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -586,13 +586,13 @@ public class PayPalCheckoutServiceImpl implements PayPalCheckoutService {
|
|||||||
orderInfoService.updateStatusByOrderNo(orderId, OrderStatusEnum.SUCCESS);
|
orderInfoService.updateStatusByOrderNo(orderId, OrderStatusEnum.SUCCESS);
|
||||||
//记录支付日志
|
//记录支付日志
|
||||||
paymentInfoService.createPaymentInfoForPayPal(capturedOrder);
|
paymentInfoService.createPaymentInfoForPayPal(capturedOrder);
|
||||||
|
// 更新积分
|
||||||
|
creditsService.buyCredits(orderInfo.getAccountId(), orderInfo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()));
|
||||||
// 添加积分变更记录
|
// 添加积分变更记录
|
||||||
creditsService.insertToCreditsDetail(orderInfo.getAccountId(),
|
creditsService.insertToCreditsDetail(orderInfo.getAccountId(),
|
||||||
CreditsEventsEnum.BUY_CREDITS.getName() + "--PayPal",
|
CreditsEventsEnum.BUY_CREDITS.getName() + "--PayPal",
|
||||||
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
||||||
"positive");
|
"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);
|
orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS);
|
||||||
//并记录支付日志
|
//并记录支付日志
|
||||||
paymentInfoService.createPaymentInfoForPayPal(result);
|
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(),
|
creditsService.insertToCreditsDetail(orderByOrderNo.getAccountId(),
|
||||||
CreditsEventsEnum.BUY_CREDITS.getName() + "--Paypal",
|
CreditsEventsEnum.BUY_CREDITS.getName() + "--Paypal",
|
||||||
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
CreditsEventsEnum.BUY_CREDITS.getValue(),
|
||||||
"positive");
|
"positive");
|
||||||
// 更新积分
|
|
||||||
// creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Integer.parseInt(CreditsEventsEnum.PRICE.getValue()));
|
|
||||||
creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,13 +144,13 @@ public class SuperResolutionServiceImpl extends ServiceImpl<TaskListMapper, Task
|
|||||||
updateSROutput(taskId, status, output);
|
updateSROutput(taskId, status, output);
|
||||||
|
|
||||||
if ("success".equals(status)) {
|
if ("success".equals(status)) {
|
||||||
// 3、记录积分变更
|
// 3、扣除积分
|
||||||
|
creditsService.taskCreditsDeduction(accountId, taskId);
|
||||||
|
// 4、记录积分变更
|
||||||
creditsService.insertToCreditsDetail(accountId,
|
creditsService.insertToCreditsDetail(accountId,
|
||||||
CreditsEventsEnum.SUPER_RESOLUTION.getName(),
|
CreditsEventsEnum.SUPER_RESOLUTION.getName(),
|
||||||
CreditsEventsEnum.SUPER_RESOLUTION.getValue(),
|
CreditsEventsEnum.SUPER_RESOLUTION.getValue(),
|
||||||
"negative");
|
"negative");
|
||||||
// 4、扣除积分
|
|
||||||
creditsService.taskCreditsDeduction(accountId, taskId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||||||
import com.ai.da.common.config.exception.BusinessException;
|
import com.ai.da.common.config.exception.BusinessException;
|
||||||
import com.ai.da.common.constant.CommonConstant;
|
import com.ai.da.common.constant.CommonConstant;
|
||||||
import com.ai.da.common.context.UserContext;
|
import com.ai.da.common.context.UserContext;
|
||||||
|
import com.ai.da.common.enums.CreditsEventsEnum;
|
||||||
import com.ai.da.common.utils.CopyUtil;
|
import com.ai.da.common.utils.CopyUtil;
|
||||||
import com.ai.da.common.utils.DateUtil;
|
import com.ai.da.common.utils.DateUtil;
|
||||||
import com.ai.da.common.utils.MinioUtil;
|
import com.ai.da.common.utils.MinioUtil;
|
||||||
@@ -15,10 +16,7 @@ import com.ai.da.model.dto.ProductImageLikeDTO;
|
|||||||
import com.ai.da.model.dto.ToProductImageDTO;
|
import com.ai.da.model.dto.ToProductImageDTO;
|
||||||
import com.ai.da.model.vo.*;
|
import com.ai.da.model.vo.*;
|
||||||
import com.ai.da.python.PythonService;
|
import com.ai.da.python.PythonService;
|
||||||
import com.ai.da.service.AccountService;
|
import com.ai.da.service.*;
|
||||||
import com.ai.da.service.CollectionService;
|
|
||||||
import com.ai.da.service.UserLikeGroupService;
|
|
||||||
import com.ai.da.service.UserLikeService;
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@@ -222,9 +220,17 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PythonService pythonService;
|
private PythonService pythonService;
|
||||||
|
@Resource
|
||||||
|
private CreditsService creditsService;
|
||||||
@Override
|
@Override
|
||||||
@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());
|
||||||
|
if (!preDeduction) {
|
||||||
|
throw new BusinessException("Not enough Credits");
|
||||||
|
}
|
||||||
|
|
||||||
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||||
Long userLikeGroupId = toProductImageDTO.getUserLikeGroupId();
|
Long userLikeGroupId = toProductImageDTO.getUserLikeGroupId();
|
||||||
ToProductImageRecord toProductImageRecord = new ToProductImageRecord();
|
ToProductImageRecord toProductImageRecord = new ToProductImageRecord();
|
||||||
@@ -240,11 +246,12 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
// 翻译
|
// 翻译
|
||||||
String prompt = toProductImageDTO.getPrompt();
|
String prompt = toProductImageDTO.getPrompt();
|
||||||
String s = pythonService.promptTranslate(prompt);
|
String s = "";
|
||||||
|
if (!StringUtil.isNullOrEmpty(prompt)) s = pythonService.promptTranslate(prompt);
|
||||||
for (ToProductImageVO toProductImageVO : toProductImageDTO.getToProductImageVOList()) {
|
for (ToProductImageVO toProductImageVO : toProductImageDTO.getToProductImageVOList()) {
|
||||||
|
String taskId;
|
||||||
if (toProductImageVO.getElementType().equals("DesignOutfit")) {
|
if (toProductImageVO.getElementType().equals("DesignOutfit")) {
|
||||||
String taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId();
|
taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId();
|
||||||
i ++;
|
|
||||||
TDesignPythonOutfit tDesignPythonOutfit = designPythonOutfitMapper.selectById(toProductImageVO.getElementId());
|
TDesignPythonOutfit tDesignPythonOutfit = designPythonOutfitMapper.selectById(toProductImageVO.getElementId());
|
||||||
// 走模型
|
// 走模型
|
||||||
pythonService.toProductImage(tDesignPythonOutfit.getDesignUrl(), taskId, s);
|
pythonService.toProductImage(tDesignPythonOutfit.getDesignUrl(), taskId, s);
|
||||||
@@ -261,7 +268,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
|
// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
|
||||||
result.add(toProductImageResult);
|
result.add(toProductImageResult);
|
||||||
}else {
|
}else {
|
||||||
String taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId();
|
taskId = UUID.randomUUID() + "-" + i + "-" + userHolder.getId();
|
||||||
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageVO.getElementId());
|
||||||
// 走模型
|
// 走模型
|
||||||
pythonService.toProductImage(toProductElement.getUrl(), taskId, s);
|
pythonService.toProductImage(toProductElement.getUrl(), taskId, s);
|
||||||
@@ -277,6 +284,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
|
// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
|
||||||
result.add(toProductImageResult);
|
result.add(toProductImageResult);
|
||||||
}
|
}
|
||||||
|
i ++;
|
||||||
|
// 添加需要扣除的积分到预扣除区
|
||||||
|
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.TO_PRODUCT_IMAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
Reference in New Issue
Block a user