BUGFIX:普通生成积分扣除有误
This commit is contained in:
@@ -150,13 +150,6 @@ public class GenerateConsumer {
|
||||
// 存redis
|
||||
redisUtil.addToMap(exceptionMapKey, exceptionInfo);
|
||||
}
|
||||
} catch (BusinessException e){
|
||||
log.error(e.getMsg());
|
||||
try {
|
||||
channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
|
||||
} catch (IOException exception) {
|
||||
log.error("手动确认,取消返回队列,不再重新消费");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
try {
|
||||
|
||||
@@ -141,7 +141,7 @@ public interface AccountService extends IService<Account> {
|
||||
|
||||
void moveLibraryDate();
|
||||
|
||||
void updateCreditsAndEndTime(Long accountId, String value, Long endTime, BigDecimal creditsUsage);
|
||||
void updateCreditsAndEndTime(Account account, String value, Long endTime, BigDecimal creditsUsage);
|
||||
|
||||
Boolean designWorksRegister(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO);
|
||||
|
||||
|
||||
@@ -1146,24 +1146,24 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
// 未迁移过的进行迁移,注意模特数据迁移打点信息以及转换模特格式
|
||||
}
|
||||
|
||||
public void updateCreditsAndEndTime(Long accountId, String value, Long endTime, BigDecimal creditsUsage) {
|
||||
Account account = new Account();
|
||||
account.setId(accountId);
|
||||
account.setCredits(new BigDecimal(value));
|
||||
public void updateCreditsAndEndTime(Account account, String value, Long endTime, BigDecimal creditsUsage) {
|
||||
Account updateAcc = new Account();
|
||||
updateAcc.setId(account.getId());
|
||||
updateAcc.setCredits(new BigDecimal(value));
|
||||
if (Objects.nonNull(endTime)){
|
||||
account.setValidEndTime(toDayEnd(endTime));
|
||||
updateAcc.setValidEndTime(toDayEnd(endTime));
|
||||
}
|
||||
if (Objects.nonNull(creditsUsage)){
|
||||
// 机构的积分使用量不会超过上限
|
||||
if (creditsUsage.compareTo(account.getCreditsUsageLimit()) > 0){
|
||||
account.setCreditsUsage(account.getCreditsUsageLimit());
|
||||
BigDecimal creditsUsageLimit = Objects.isNull(account.getCreditsUsageLimit()) ? BigDecimal.ZERO : account.getCreditsUsageLimit();
|
||||
if (creditsUsage.compareTo(creditsUsageLimit) > 0){
|
||||
updateAcc.setCreditsUsage(creditsUsageLimit);
|
||||
} else {
|
||||
account.setCreditsUsage(creditsUsage);
|
||||
updateAcc.setCreditsUsage(creditsUsage);
|
||||
}
|
||||
}
|
||||
account.setUpdateDate(new Date());
|
||||
int i = accountMapper.updateById(account);
|
||||
log.info("更新用户信息,影响条数:{},用户信息:{}", i, JSON.toJSON(account));
|
||||
updateAcc.setUpdateDate(new Date());
|
||||
int i = accountMapper.updateById(updateAcc);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1594,7 +1594,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
|
||||
// 3.3、更新 t_account 表
|
||||
if (account.getValidEndTime() != null && account.getValidEndTime() < 1720972799000L){
|
||||
updateCreditsAndEndTime(account.getId(), added.toString(), 1720972799000L, null);
|
||||
updateCreditsAndEndTime(account, added.toString(), 1720972799000L, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,10 +47,11 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
|
||||
|
||||
@Override
|
||||
public Boolean buyCredits(Long accountId, Float quantity) {
|
||||
BigDecimal existingCredits = accountMapper.selectById(accountId).getCredits();
|
||||
Account account = accountMapper.selectById(accountId);
|
||||
BigDecimal existingCredits = account.getCredits();
|
||||
BigDecimal newCredits = new BigDecimal(CreditsEventsEnum.BUY_CREDITS.getValue()).multiply(new BigDecimal(quantity));
|
||||
BigDecimal added = existingCredits.add(newCredits);
|
||||
accountService.updateCreditsAndEndTime(accountId, added.toString(), null, null);
|
||||
accountService.updateCreditsAndEndTime(account, added.toString(), null, null);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@@ -61,11 +62,12 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
|
||||
}
|
||||
|
||||
public void creditsRefund(Long accountId, Integer quantity, String orderNo) {
|
||||
BigDecimal existingCredits = accountMapper.selectById(accountId).getCredits();
|
||||
Account account = accountMapper.selectById(accountId);
|
||||
BigDecimal existingCredits = account.getCredits();
|
||||
BigDecimal newCredits = new BigDecimal(CreditsEventsEnum.BUY_CREDITS.getValue()).multiply(new BigDecimal(quantity));
|
||||
BigDecimal subtracted = existingCredits.subtract(newCredits);
|
||||
// 更新t_account表
|
||||
accountService.updateCreditsAndEndTime(accountId, subtracted.toString(), null, null);
|
||||
accountService.updateCreditsAndEndTime(account, subtracted.toString(), null, null);
|
||||
// 更新t_credits_details表
|
||||
// 添加积分变更记录
|
||||
insertToCreditsDetail(accountId,
|
||||
@@ -239,7 +241,7 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean taskCreditsDeduction(Long accountId, String taskId) {
|
||||
log.info("指定 accountId: {} 任务的积分扣除 : {}", accountId, taskId);
|
||||
log.info("指定任务的积分扣除 : {}", taskId);
|
||||
String key = creditsDeduction + ":" + accountId + ":" + taskId;
|
||||
// 1、获取当前任务id对应的积分
|
||||
String value = redisUtil.getFromString(key);
|
||||
@@ -263,7 +265,7 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
|
||||
creditsUsage = Objects.isNull(account.getCreditsUsage()) ? BigDecimal.ZERO : account.getCreditsUsage();
|
||||
creditsUsage = creditsUsage.add(new BigDecimal(value));
|
||||
}
|
||||
accountService.updateCreditsAndEndTime(accountId, subtract.toString(), null, creditsUsage);
|
||||
accountService.updateCreditsAndEndTime(account, subtract.toString(), null, creditsUsage);
|
||||
|
||||
// 3、从redis中移除当前待扣积分
|
||||
redisUtil.removeFromString(key);
|
||||
|
||||
@@ -311,8 +311,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
generateDetail.setCreateDate(LocalDateTime.now());
|
||||
generateDetail.setMd5(md5);
|
||||
// 将相应的url保存到数据库
|
||||
int insert = generateDetailMapper.insert(generateDetail);
|
||||
log.info("添加 {} 条数据到t_generate_detail", insert);
|
||||
generateDetailMapper.insert(generateDetail);
|
||||
|
||||
// String uuid = taskId.substring(0, taskId.substring(0, taskId.lastIndexOf("-")).lastIndexOf("-"));
|
||||
String key = generateResultKey + ":" + taskId;
|
||||
@@ -1251,7 +1250,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
creditsUsage = Objects.isNull(account.getCreditsUsage()) ? BigDecimal.ZERO : account.getCreditsUsage();
|
||||
creditsUsage = creditsUsage.add(new BigDecimal(event.getValue()));
|
||||
}
|
||||
accountService.updateCreditsAndEndTime(accountId, subtract.toString(), null, creditsUsage);
|
||||
accountService.updateCreditsAndEndTime(account, subtract.toString(), null, creditsUsage);
|
||||
creditsService.preInsert(accountId, event.getName(), null, Boolean.FALSE, event.getValue());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user