REQ-3201: 预设按钮幂等控制

This commit is contained in:
yanglin 2024-12-19 12:33:36 +08:00
parent 2594ae9344
commit e91a557bab
2 changed files with 5 additions and 4 deletions

View File

@ -138,7 +138,7 @@ public class CardManager {
boolean updated = false;
// 不要放到for里面去了
CardRequestContext<?> requestContext = CardRequestContext.create(request);
for (List<Card> cards : cardsCursor(request)) {
for (List<Card> cards : cardsCursor(request, cardProps.getUpdateCardBatchSize())) {
updated = true;
CardLogger cardLogger = cardLoggers.createLogger(requestContext, cards);
execTransactional(() -> {
@ -161,7 +161,7 @@ public class CardManager {
public void firePresetButtonPressed(CardUpdatePresetButtonRequest request) {
TemplateModelV3 templateModel = cardSupport.ensureImChannelPresent(request.getTemplateCode());
for (List<Card> cards : cardsCursor(request))
for (List<Card> cards : cardsCursor(request, cardProps.getUpdateCardBatchSize()))
firePresetButtonPressedImpl(request, templateModel, cards);
}
@ -202,8 +202,8 @@ public class CardManager {
}
}
RecordCursor<Card> cardsCursor(CardUpdateRequest request) {
return new RecordCursor<>(100, Card::getId, () -> cardDao.lambdaQuery()
RecordCursor<Card> cardsCursor(CardUpdateRequest request, int batchSize) {
return new RecordCursor<>(batchSize, Card::getId, () -> cardDao.lambdaQuery()
.eq(Card::getAppCode, request.getAppCode())
.eq(Card::getTemplateCode, request.getTemplateCode())
.eq(Card::getBizCode, request.getBizCode())

View File

@ -21,6 +21,7 @@ public class CardProps {
private boolean enableCardLog = true;
private boolean deleteCardsWhenSendFail = true;
private boolean enableCardIdempotent = true;
private int updateCardBatchSize = 100;
private Set<String> idempotentFreeTemplateCodes = new HashSet<>();
boolean isIdempotentFree(String templateCode) {