REQ-3201: 更新动作

This commit is contained in:
yanglin 2024-12-20 17:09:43 +08:00
parent cc26856c76
commit c8ceb51534

View File

@ -145,7 +145,7 @@ public class CardManager {
for (List<Card> cards : cardsCursor(request, cardProps.getUpdateCardBatchSize())) {
updated = true;
UpdateCollector collector = new UpdateCollector(requestContext, "updateState", templateModel, cards);
collector.updateState((card) -> {
collector.update(card -> {
Card update = collector.createUpdate(card);
if (request.determineIsCardCompleted())
update.setCardState(CardState.COMPLETED);
@ -166,7 +166,7 @@ public class CardManager {
CardRequestContext<SetActionPerformedRequest> requestContext = CardRequestContext.create(request);
for (List<Card> cards : cardsCursor(request, cardProps.getUpdateCardBatchSize())) {
UpdateCollector collector = new UpdateCollector(requestContext, "setActionPerformed", templateModel, cards);
collector.updateState(new SetActionPerformedBuilder(collector, button, request.getCardBizState()));
collector.update(new SetActionPerformedBuilder(collector, button, request.getCardBizState()));
}
}
@ -199,7 +199,7 @@ public class CardManager {
BizAssertions.assertNotNull(button, "找不到对应的预设按钮, request={}", JSON.toJSONString(request));
CardBizState bizState = CardBizState.fromPresetButton(request.getPresetButtonType());
UpdateCollector collector = new UpdateCollector(requestContext, "presetButtonPressed", templateModel, cards);
UpdateStateResult result = collector.updateState(new SetActionPerformedBuilder(collector, button, bizState));
UpdateStateResult result = collector.update(new SetActionPerformedBuilder(collector, button, bizState));
if (result == UpdateStateResult.SUCCESS) {
cardBroadcaster.firePresetButtonPressed(collector.updatedCards, request);
collector.updateCardLogger.reloadAndLogCards("presetButtonPressed:mq:success");
@ -248,11 +248,11 @@ public class CardManager {
this.cards = cards;
}
UpdateStateResult updateState(CardUpdateStateBuilder stateBuilder) {
UpdateStateResult update(UpdateBuilder builder) {
if (CollectionUtils.isEmpty(cards)) return UpdateStateResult.EMPTY_CARDS;
boolean recordsUpdated = execTransactional(() -> {
for (Card card : cardDao.reloadCardsForUpdate(cards))
stateBuilder.buildUpdate(card);
builder.buildUpdate(card);
if (CollectionUtils.isEmpty(updates))
return false;
cardDao.updateBatchById(updates);
@ -325,12 +325,12 @@ public class CardManager {
SUCCESS, FAIL, EMPTY_CARDS, NO_UPDATE
}
private interface CardUpdateStateBuilder {
private interface UpdateBuilder {
void buildUpdate(Card card);
}
@RequiredArgsConstructor
private static class SetActionPerformedBuilder implements CardUpdateStateBuilder {
private static class SetActionPerformedBuilder implements UpdateBuilder {
private final UpdateCollector collector;
private final ButtonV3 button;