REQ-3502: 减少更新卡片的次数
This commit is contained in:
parent
5cc26c4c3a
commit
b805ed8137
@ -174,7 +174,7 @@ public class TodoSyncCardService implements ApplicationListener<CardUpdateEvent>
|
||||
}
|
||||
|
||||
private void updateCardState(Event event, TodoUpdateMessage message, TodoBusiness business, Todo todo) {
|
||||
synchronized (getTodoLock(todo)) {
|
||||
synchronized (getLock(todo)) {
|
||||
TodoCardState lastState = todoStates.getIfPresent(todo.getId());
|
||||
if (lastState != null && lastState.equals(TodoCardState.create(business, todo))) {
|
||||
log.info("updateCardState: no change, todo={}", todo);
|
||||
@ -296,12 +296,14 @@ public class TodoSyncCardService implements ApplicationListener<CardUpdateEvent>
|
||||
Todo todo = ((TodoCardUpdateStateRequest) event.getSource()).getTodo();
|
||||
TodoBusiness business = todoBusinessDao.getBusinesses(todo).findBusiness(todo).orElse(null);
|
||||
if (business == null) return;
|
||||
synchronized (getTodoLock(todo)) {
|
||||
todoStates.put(todo.getId(), TodoCardState.create(business, todo));
|
||||
synchronized (getLock(todo)) {
|
||||
TodoCardState state = TodoCardState.create(business, todo);
|
||||
if (state.isTodoCompleted)
|
||||
todoStates.put(todo.getId(), state);
|
||||
}
|
||||
}
|
||||
|
||||
private Object getTodoLock(Todo todo) {
|
||||
private Object getLock(Todo todo) {
|
||||
String identityCode = todo.getIdentityCode();
|
||||
try {
|
||||
return locks.get(identityCode, () -> identityCode);
|
||||
@ -321,7 +323,7 @@ public class TodoSyncCardService implements ApplicationListener<CardUpdateEvent>
|
||||
@EqualsAndHashCode
|
||||
@RequiredArgsConstructor
|
||||
private static class TodoCardState {
|
||||
private final Boolean isTodoCompleted;
|
||||
private final boolean isTodoCompleted;
|
||||
private final BizFinalStateEnum bizFinalState;
|
||||
|
||||
static TodoCardState create(TodoBusiness business, Todo todo) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user