BUGFIX: 批量生成积分扣除有误

This commit is contained in:
2025-07-10 11:24:25 +08:00
parent c7c69417ef
commit eb7f2a1419
5 changed files with 45 additions and 20 deletions

View File

@@ -16,6 +16,8 @@ public class CreditsDetail extends BaseEntity {
private String taskId; private String taskId;
/** 积分变更事件 */ /** 积分变更事件 */
private String changeEvent; private String changeEvent;
/** 用于批量生成,同一事件,一次生成多个 */
private Integer num;
/** 变更积分 ( + 表示加,- 表示减) */ /** 变更积分 ( + 表示加,- 表示减) */
private String changedCredits; private String changedCredits;
/** 当前积分 */ /** 当前积分 */

View File

@@ -41,6 +41,8 @@ public interface CreditsService extends IService<CreditsDetail> {
void preInsert(Long accountId, String changeEventName, String taskId, Boolean isPreInsert, String changedCredits); void preInsert(Long accountId, String changeEventName, String taskId, Boolean isPreInsert, String changedCredits);
void preInsert(Long accountId, String changeEventName, String taskId, Boolean isPreInsert, String changedCredits, Integer num);
void updateChangedCredits(String accountId, String taskId); void updateChangedCredits(String accountId, String taskId);
CreditsDetail queryDetailByTaskId(String taskId); CreditsDetail queryDetailByTaskId(String taskId);

View File

@@ -326,6 +326,21 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
baseMapper.insert(creditsDetail); baseMapper.insert(creditsDetail);
} }
@Override
public void preInsert(Long accountId, String changeEventName, String taskId, Boolean isPreInsert, String changedCredits, Integer num) {
CreditsDetail creditsDetail = new CreditsDetail();
Account account = accountMapper.selectById(accountId);
creditsDetail.setAccountId(accountId);
creditsDetail.setTaskId(taskId);
creditsDetail.setChangeEvent(changeEventName);
creditsDetail.setNum(num);
creditsDetail.setChangedCredits(isPreInsert ? "-0" : "-" + changedCredits);
creditsDetail.setCredits(account.getCredits());
creditsDetail.setCreateTime(LocalDateTime.now());
baseMapper.insert(creditsDetail);
}
@Override @Override
public void updateChangedCredits(String accountId, String taskId) { public void updateChangedCredits(String accountId, String taskId) {
QueryWrapper<CreditsDetail> queryWrapper = new QueryWrapper<>(); QueryWrapper<CreditsDetail> queryWrapper = new QueryWrapper<>();
@@ -338,7 +353,11 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
String credits = "0"; String credits = "0";
CreditsEventsEnum eventsEnum = CreditsEventsEnum.getByTaskName(changeEvent); CreditsEventsEnum eventsEnum = CreditsEventsEnum.getByTaskName(changeEvent);
if (Objects.nonNull(eventsEnum)){ if (Objects.nonNull(eventsEnum)){
credits = eventsEnum.getValue(); if (Objects.nonNull(creditsDetail.getNum()) && creditsDetail.getNum() != 0){
credits = String.valueOf(Long.parseLong(eventsEnum.getValue()) * creditsDetail.getNum());
}else {
credits = eventsEnum.getValue();
}
} }
/*if (changeEvent.equals("Logo") || /*if (changeEvent.equals("Logo") ||
changeEvent.equals("Pattern") || changeEvent.equals("Pattern") ||

View File

@@ -2052,11 +2052,13 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
toProductImageResult.setImageStrength(randomFromRange); toProductImageResult.setImageStrength(randomFromRange);
toProductImageResultMapper.insert(toProductImageResult); toProductImageResultMapper.insert(toProductImageResult);
result.add(toProductImageResult); result.add(toProductImageResult);
// 添加需要扣除的积分到预扣除区
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.TO_PRODUCT_IMAGE, cloudTaskDTO.getNums());
i ++; i ++;
} }
pythonService.toProductImageBatch(batchTaskId, paramList, userHolder.getId().toString()); pythonService.toProductImageBatch(batchTaskId, paramList, userHolder.getId().toString());
// 添加需要扣除的积分到预扣除区
creditsService.addRecordToCreditsDeduction(userHolder.getId(), batchTaskId, CreditsEventsEnum.TO_PRODUCT_IMAGE, cloudTaskDTO.getNums());
// 预插入数据到积分变更表
creditsService.preInsert(userHolder.getId(), CreditsEventsEnum.TO_PRODUCT_IMAGE.getValue(), batchTaskId, true, null,cloudTaskDTO.getNums() );
}else { }else {
if (StringUtils.isEmpty(prompt)) { if (StringUtils.isEmpty(prompt)) {
sb.append(",high quality clothing details,8K realistic,HDR"); sb.append(",high quality clothing details,8K realistic,HDR");
@@ -2094,11 +2096,14 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
toProductImageResult.setImageStrength(randomFromRange); toProductImageResult.setImageStrength(randomFromRange);
toProductImageResultMapper.insert(toProductImageResult); toProductImageResultMapper.insert(toProductImageResult);
result.add(toProductImageResult); result.add(toProductImageResult);
// 添加需要扣除的积分到预扣除区
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.TO_PRODUCT_IMAGE, cloudTaskDTO.getNums());
i ++; i ++;
} }
pythonService.toProductImageBatch(batchTaskId, paramList, userHolder.getId().toString()); pythonService.toProductImageBatch(batchTaskId, paramList, userHolder.getId().toString());
// 添加需要扣除的积分到预扣除区
creditsService.addRecordToCreditsDeduction(userHolder.getId(), batchTaskId, CreditsEventsEnum.TO_PRODUCT_IMAGE, cloudTaskDTO.getNums());
// 预插入数据到积分变更表
creditsService.preInsert(userHolder.getId(), CreditsEventsEnum.TO_PRODUCT_IMAGE.getValue(), batchTaskId, true, null,cloudTaskDTO.getNums() );
} }
sb = new StringBuilder("The best quality, masterpiece, real image."); sb = new StringBuilder("The best quality, masterpiece, real image.");
} }
@@ -2218,13 +2223,15 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
toProductImageResult.setDirection(toProductImageDTO.getDirection()); toProductImageResult.setDirection(toProductImageDTO.getDirection());
toProductImageResultMapper.insert(toProductImageResult); toProductImageResultMapper.insert(toProductImageResult);
result.add(toProductImageResult); result.add(toProductImageResult);
// 添加需要扣除的积分到预扣除区
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.RELIGHT, cloudTaskDTO.getNums());
i ++; i ++;
} }
// 走模型 // 走模型
pythonService.relightBatch(batchTaskId, paramList, userHolder.getId().toString()); pythonService.relightBatch(batchTaskId, paramList, userHolder.getId().toString());
// 添加需要扣除的积分到预扣除区
creditsService.addRecordToCreditsDeduction(userHolder.getId(), batchTaskId, CreditsEventsEnum.RELIGHT, cloudTaskDTO.getNums());
// 预插入数据到积分变更表
creditsService.preInsert(userHolder.getId(), CreditsEventsEnum.RELIGHT.getValue(), batchTaskId, true, null,cloudTaskDTO.getNums() );
} }
}else { }else {
@@ -2261,13 +2268,14 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
toProductImageResult.setDirection(toProductImageDTO.getDirection()); toProductImageResult.setDirection(toProductImageDTO.getDirection());
toProductImageResultMapper.insert(toProductImageResult); toProductImageResultMapper.insert(toProductImageResult);
result.add(toProductImageResult); result.add(toProductImageResult);
// 添加需要扣除的积分到预扣除区
creditsService.addRecordToCreditsDeduction(userHolder.getId(), taskId, CreditsEventsEnum.RELIGHT, cloudTaskDTO.getNums());
i ++; i ++;
} }
// 走模型 // 走模型
pythonService.relightBatch(batchTaskId, paramList, userHolder.getId().toString()); pythonService.relightBatch(batchTaskId, paramList, userHolder.getId().toString());
// 添加需要扣除的积分到预扣除区
creditsService.addRecordToCreditsDeduction(userHolder.getId(), batchTaskId, CreditsEventsEnum.RELIGHT, cloudTaskDTO.getNums());
// 预插入数据到积分变更表
creditsService.preInsert(userHolder.getId(), CreditsEventsEnum.RELIGHT.getValue(), batchTaskId, true, null,cloudTaskDTO.getNums() );
} }
} }
return batchTaskId; return batchTaskId;
@@ -2339,7 +2347,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
// 6、添加预扣除积分到redis // 6、添加预扣除积分到redis
creditsService.addRecordToCreditsDeduction(accountId, uuid, creditsEventsEnum, cloudTaskDTO.getNums()); creditsService.addRecordToCreditsDeduction(accountId, uuid, creditsEventsEnum, cloudTaskDTO.getNums());
// 6.1 添加积分扣除记录到db // 6.1 添加积分扣除记录到db
creditsService.preInsert(accountId, creditsEventsEnum.getName(), uuid, Boolean.TRUE, null); creditsService.preInsert(accountId, creditsEventsEnum.getName(), uuid, Boolean.TRUE, null, cloudTaskDTO.getNums());
}else { }else {
throw new BusinessException("pose transformation error", ResultEnum.ERROR.getCode()); throw new BusinessException("pose transformation error", ResultEnum.ERROR.getCode());
} }

View File

@@ -2797,10 +2797,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
// 4、扣除积分 // 4、扣除积分
Boolean b = creditsService.taskCreditsDeduction(accountId, taskId); Boolean b = creditsService.taskCreditsDeduction(accountId, taskId);
// 3、记录积分变更 // 3、记录积分变更
if (b) creditsService.insertToCreditsDetail(accountId, if (b) creditsService.updateChangedCredits(String.valueOf(accountId), taskId);
CreditsEventsEnum.TO_PRODUCT_IMAGE.getName(),
CreditsEventsEnum.TO_PRODUCT_IMAGE.getValue(),
"negative", null);
} }
} }
@@ -2849,10 +2846,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
// 4、扣除积分 // 4、扣除积分
Boolean b = creditsService.taskCreditsDeduction(accountId, taskId); Boolean b = creditsService.taskCreditsDeduction(accountId, taskId);
// 3、记录积分变更 // 3、记录积分变更
if (b) creditsService.insertToCreditsDetail(accountId, if (b) creditsService.updateChangedCredits(String.valueOf(accountId), taskId);
CreditsEventsEnum.RELIGHT.getName(),
CreditsEventsEnum.RELIGHT.getValue(),
"negative", null);
} }
} }
} }