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