From c84defa09a862090640dfbc81d353c8b6a18b587 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Sun, 24 Dec 2023 21:40:51 +0900 Subject: [PATCH 01/40] =?UTF-8?q?PET-277=20refactor=20:=20Todo=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=A1=9C=EC=A7=81=20batch=20insert=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TodoCreateUseCase.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoCreateUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoCreateUseCase.java index 680867d9..300f3b78 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoCreateUseCase.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoCreateUseCase.java @@ -16,7 +16,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; -import java.util.ListIterator; +import java.util.List; @ApplicationService @RequiredArgsConstructor @@ -31,14 +31,21 @@ public class TodoCreateUseCase { public void createTodo(TodoCreateRequest request) { final User accessUser = userUtils.getAccessUser(); - final Long accessUserRegisterId = - registerQueryService.findRegisterByNullableTodoTeamIdAndUserIdAndCategoryId(request.getTodoTeamId(), accessUser.getId(), request.getCategoryId()).getId(); final Category category = categoryQueryService.findCategoryByCategoryId(request.getCategoryId()); - final Todo todo = TodoMapper.mapToTodo(request, category, accessUserRegisterId); + final List registers = registerQueryService.findAllRegistersByIds(request.getRegisterIds()); + final Register todoCreateRegister = getTodoCreateRegister(request, registers, accessUser); + final Todo todo = TodoMapper.mapToTodo(request, category, todoCreateRegister.getId()); + final List assignList = registers.stream() + .map(register -> new Assign(todo, register)) + .toList(); todoSaveService.saveTodoEntity(todo); - ListIterator registerListIterator = registerQueryService.findAllRegistersByIds(request.getRegisterIds()).listIterator(); - request.getRegisterIds().forEach(registerId -> { - assignSaveService.saveAssignEntity(new Assign(todo, registerListIterator.next())); - }); + assignSaveService.saveAllAssignEntity(assignList); + } + + private Register getTodoCreateRegister(TodoCreateRequest request, List registers, User accessUser) { + return registers.stream() + .filter(register -> register.matchUserId(accessUser.getId())) + .findFirst() + .orElseGet(() -> registerQueryService.findRegisterByNullableTodoTeamIdAndUserIdAndCategoryId(request.getTodoTeamId(), accessUser.getId(), request.getCategoryId())); } } From b8f7bf3615e3747cf93081298b26c73e28e1688c Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Sun, 24 Dec 2023 21:41:16 +0900 Subject: [PATCH 02/40] =?UTF-8?q?PET-277=20feat=20:=20BatchInsertRepositor?= =?UTF-8?q?y=20=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/commonmodule/domain/BatchInsertRepository.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Common-Module/src/main/java/com/pawith/commonmodule/domain/BatchInsertRepository.java diff --git a/Common-Module/src/main/java/com/pawith/commonmodule/domain/BatchInsertRepository.java b/Common-Module/src/main/java/com/pawith/commonmodule/domain/BatchInsertRepository.java new file mode 100644 index 00000000..044c2307 --- /dev/null +++ b/Common-Module/src/main/java/com/pawith/commonmodule/domain/BatchInsertRepository.java @@ -0,0 +1,7 @@ +package com.pawith.commonmodule.domain; + +import java.util.Collection; + +public interface BatchInsertRepository { + void batchInsert(Collection entities); +} From 257c367f59cdb40c4320f96688607bf1f855812c Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Sun, 24 Dec 2023 21:41:40 +0900 Subject: [PATCH 03/40] =?UTF-8?q?PET-277=20feat=20:=20Assign=20Batch=20Ins?= =?UTF-8?q?ert=20=EC=A0=9C=EA=B3=B5=20=EB=A6=AC=ED=8F=AC=EC=A7=80=ED=86=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/AssignBatchRepository.java | 7 +++++ .../tododomain/service/AssignSaveService.java | 8 +++++ .../service/AssignSaveServiceTest.java | 5 +++- .../repository/AssignBatchRepositoryImpl.java | 29 +++++++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/repository/AssignBatchRepository.java create mode 100644 Domain-Module/Todo-Module/Todo-Infrastructure/src/main/java/com/pawith/todoinfrastructure/repository/AssignBatchRepositoryImpl.java diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/repository/AssignBatchRepository.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/repository/AssignBatchRepository.java new file mode 100644 index 00000000..32022d41 --- /dev/null +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/repository/AssignBatchRepository.java @@ -0,0 +1,7 @@ +package com.pawith.tododomain.repository; + +import com.pawith.commonmodule.domain.BatchInsertRepository; +import com.pawith.tododomain.entity.Assign; + +public interface AssignBatchRepository extends BatchInsertRepository { +} diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignSaveService.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignSaveService.java index 039c38c1..0984236e 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignSaveService.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignSaveService.java @@ -2,18 +2,26 @@ import com.pawith.commonmodule.annotation.DomainService; import com.pawith.tododomain.entity.Assign; +import com.pawith.tododomain.repository.AssignBatchRepository; import com.pawith.tododomain.repository.AssignRepository; import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; + @DomainService @RequiredArgsConstructor @Transactional public class AssignSaveService { private final AssignRepository assignRepository; + private final AssignBatchRepository assignBatchRepository; public void saveAssignEntity(Assign assign){ assignRepository.save(assign); } + + public void saveAllAssignEntity(Collection assigns){ + assignBatchRepository.batchInsert(assigns); + } } diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/test/java/com/pawith/tododomain/service/AssignSaveServiceTest.java b/Domain-Module/Todo-Module/Todo-Domain/src/test/java/com/pawith/tododomain/service/AssignSaveServiceTest.java index a05fbfe8..2762e482 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/test/java/com/pawith/tododomain/service/AssignSaveServiceTest.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/test/java/com/pawith/tododomain/service/AssignSaveServiceTest.java @@ -3,6 +3,7 @@ import com.pawith.commonmodule.UnitTestConfig; import com.pawith.commonmodule.utils.FixtureMonkeyUtils; import com.pawith.tododomain.entity.Assign; +import com.pawith.tododomain.repository.AssignBatchRepository; import com.pawith.tododomain.repository.AssignRepository; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; @@ -17,11 +18,13 @@ public class AssignSaveServiceTest { @Mock private AssignRepository assignRepository; + @Mock + private AssignBatchRepository assignBatchRepository; private AssignSaveService assignSaveService; @BeforeEach - void init() { assignSaveService = new AssignSaveService(assignRepository); } + void init() { assignSaveService = new AssignSaveService(assignRepository, assignBatchRepository); } @Test @DisplayName("Assign 엔티티를 저장한다.") diff --git a/Domain-Module/Todo-Module/Todo-Infrastructure/src/main/java/com/pawith/todoinfrastructure/repository/AssignBatchRepositoryImpl.java b/Domain-Module/Todo-Module/Todo-Infrastructure/src/main/java/com/pawith/todoinfrastructure/repository/AssignBatchRepositoryImpl.java new file mode 100644 index 00000000..10a931a0 --- /dev/null +++ b/Domain-Module/Todo-Module/Todo-Infrastructure/src/main/java/com/pawith/todoinfrastructure/repository/AssignBatchRepositoryImpl.java @@ -0,0 +1,29 @@ +package com.pawith.todoinfrastructure.repository; + +import com.pawith.tododomain.entity.Assign; +import com.pawith.tododomain.repository.AssignBatchRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; + +import java.util.Collection; + +@Repository +@RequiredArgsConstructor +public class AssignBatchRepositoryImpl implements AssignBatchRepository { + private final JdbcTemplate jdbcTemplate; + @Override + public void batchInsert(Collection entities) { + jdbcTemplate.batchUpdate( + "INSERT INTO assign (todo_id, register_id, completion_status, is_deleted, created_at, updated_at) VALUES (?, ?, ?, false, now(), now())", + entities, + 1000, + (ps, assign) -> { + ps.setLong(1, assign.getTodo().getId()); + ps.setLong(2, assign.getRegister().getId()); + ps.setString(3, assign.getCompletionStatus().toString()); + } + ); + + } +} From e3b20971d49a6b4a069895552a0a02cc2b03e307 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Sun, 24 Dec 2023 21:42:11 +0900 Subject: [PATCH 04/40] =?UTF-8?q?PET-277=20feat=20:=20Register=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=EC=97=90=20userId=20=EC=9D=BC=EC=B9=98=20?= =?UTF-8?q?=EC=97=AC=EB=B6=80=20=EC=A1=B0=ED=9A=8C=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/pawith/tododomain/entity/Register.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/entity/Register.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/entity/Register.java index 0f35a560..528931a8 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/entity/Register.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/entity/Register.java @@ -11,7 +11,6 @@ import org.hibernate.annotations.Where; import java.time.LocalDateTime; -import java.util.Objects; @Entity @Getter @@ -78,4 +77,8 @@ public void reRegister(){ this.registerAt = LocalDateTime.now(); } + public Boolean matchUserId(Long userId) { + return this.userId.equals(userId); + } + } From 1bc928e1fcb8a806d9aecb8df78f16434c126303 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Sun, 24 Dec 2023 21:42:33 +0900 Subject: [PATCH 05/40] =?UTF-8?q?PET-277=20chore=20:=20jdbc=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/spring.gradle | 3 --- 1 file changed, 3 deletions(-) diff --git a/gradle/spring.gradle b/gradle/spring.gradle index 0579c9d9..9125430a 100644 --- a/gradle/spring.gradle +++ b/gradle/spring.gradle @@ -42,9 +42,6 @@ subprojects { implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' // redis // implementation 'org.springframework.boot:spring-boot-starter-data-redis' - - // spring jdbc - implementation 'org.springframework.boot:spring-boot-starter-jdbc' } dependencyManagement { From c6dcfd2df23243c48a76e94d55491905e474f614 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 16:31:29 +0900 Subject: [PATCH 06/40] =?UTF-8?q?PET-281=20feat=20:=20ValueOperator?= =?UTF-8?q?=EC=97=90=20=EB=AA=A8=EB=93=A0=20=ED=82=A4=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/commonmodule/cache/operators/ValueOperator.java | 3 +++ .../cache/operators/impl/DefaultValueOperator.java | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/Common-Module/src/main/java/com/pawith/commonmodule/cache/operators/ValueOperator.java b/Common-Module/src/main/java/com/pawith/commonmodule/cache/operators/ValueOperator.java index 3af225af..062cd59c 100644 --- a/Common-Module/src/main/java/com/pawith/commonmodule/cache/operators/ValueOperator.java +++ b/Common-Module/src/main/java/com/pawith/commonmodule/cache/operators/ValueOperator.java @@ -1,5 +1,6 @@ package com.pawith.commonmodule.cache.operators; +import java.util.Collection; import java.util.concurrent.TimeUnit; public interface ValueOperator { @@ -10,6 +11,8 @@ public interface ValueOperator { V get(K k); + Collection getKeys(); + void remove(K k); boolean contains(K k); diff --git a/Common-Module/src/main/java/com/pawith/commonmodule/cache/operators/impl/DefaultValueOperator.java b/Common-Module/src/main/java/com/pawith/commonmodule/cache/operators/impl/DefaultValueOperator.java index 1a3bd6aa..9fbee05a 100644 --- a/Common-Module/src/main/java/com/pawith/commonmodule/cache/operators/impl/DefaultValueOperator.java +++ b/Common-Module/src/main/java/com/pawith/commonmodule/cache/operators/impl/DefaultValueOperator.java @@ -3,6 +3,7 @@ import com.pawith.commonmodule.cache.operators.ValueOperator; import net.jodah.expiringmap.ExpirationPolicy; +import java.util.Collection; import java.util.concurrent.TimeUnit; public class DefaultValueOperator extends ExpiredStorage implements ValueOperator { @@ -21,6 +22,11 @@ public V get(K k) { return storage.get(k); } + @Override + public Collection getKeys() { + return storage.keySet(); + } + @Override public void remove(K k) { storage.remove(k); From b6669d6533d3e1d5b6e7b156c627c14190a9a89a Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 16:31:55 +0900 Subject: [PATCH 07/40] =?UTF-8?q?PET-281=20feat=20:=20Cache,=20CacheManger?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=EC=B2=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commonmodule/cache/DefaultCache.java | 63 +++++++++++++++++++ .../cache/DefaultCacheManger.java | 29 +++++++++ 2 files changed, 92 insertions(+) create mode 100644 Common-Module/src/main/java/com/pawith/commonmodule/cache/DefaultCache.java create mode 100644 Common-Module/src/main/java/com/pawith/commonmodule/cache/DefaultCacheManger.java diff --git a/Common-Module/src/main/java/com/pawith/commonmodule/cache/DefaultCache.java b/Common-Module/src/main/java/com/pawith/commonmodule/cache/DefaultCache.java new file mode 100644 index 00000000..a7a12dc3 --- /dev/null +++ b/Common-Module/src/main/java/com/pawith/commonmodule/cache/DefaultCache.java @@ -0,0 +1,63 @@ +package com.pawith.commonmodule.cache; + +import com.pawith.commonmodule.cache.operators.impl.ExpiredStorage; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.Cache; + +import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; + +@RequiredArgsConstructor +public class DefaultCache extends ExpiredStorage implements Cache { + private final String name; + + public void setTimeToLive(long timeToLive, TimeUnit timeUnit) { + storage.setExpiration(timeToLive, timeUnit); + } + + @Override + public String getName() { + return name; + } + + @Override + public Object getNativeCache() { + return storage; + } + + @Override + public ValueWrapper get(Object key) { + Object value = storage.get(key); + return value == null ? null : () -> value; + } + + @Override + public T get(Object key, Class type) { + return (T) storage.get(key); + } + + @Override + public T get(Object key, Callable valueLoader) { + final Object value = storage.get(key); + try { + return value == null ? valueLoader.call() : (T) value; + } catch (Exception e) { + throw new IllegalArgumentException(e); + } + } + + @Override + public void put(Object key, Object value) { + storage.put(key, value); + } + + @Override + public void evict(Object key) { + storage.remove(key); + } + + @Override + public void clear() { + storage.clear(); + } +} diff --git a/Common-Module/src/main/java/com/pawith/commonmodule/cache/DefaultCacheManger.java b/Common-Module/src/main/java/com/pawith/commonmodule/cache/DefaultCacheManger.java new file mode 100644 index 00000000..72fe9946 --- /dev/null +++ b/Common-Module/src/main/java/com/pawith/commonmodule/cache/DefaultCacheManger.java @@ -0,0 +1,29 @@ +package com.pawith.commonmodule.cache; + +import lombok.RequiredArgsConstructor; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; + +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; + +@RequiredArgsConstructor +public class DefaultCacheManger implements CacheManager { + private static final Map caches = new ConcurrentHashMap<>(); + + public void setupTimeToLive(long timeToLive, TimeUnit timeUnit) { + caches.values().forEach(cache -> cache.setTimeToLive(timeToLive, timeUnit)); + } + + @Override + public Cache getCache(String name) { + return caches.computeIfAbsent(name, DefaultCache::new); + } + + @Override + public Collection getCacheNames() { + return caches.keySet(); + } +} From a9e16522be3891a5321118f48c2f48fbd5be9785 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 16:32:40 +0900 Subject: [PATCH 08/40] =?UTF-8?q?PET-281=20feat=20:=20CacheManger=20?= =?UTF-8?q?=EB=B9=88=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commonmodule/cache/config/CacheConfig.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Common-Module/src/main/java/com/pawith/commonmodule/cache/config/CacheConfig.java b/Common-Module/src/main/java/com/pawith/commonmodule/cache/config/CacheConfig.java index ac548d82..1e5f1af4 100644 --- a/Common-Module/src/main/java/com/pawith/commonmodule/cache/config/CacheConfig.java +++ b/Common-Module/src/main/java/com/pawith/commonmodule/cache/config/CacheConfig.java @@ -1,12 +1,18 @@ package com.pawith.commonmodule.cache.config; import com.pawith.commonmodule.cache.CacheTemplate; +import com.pawith.commonmodule.cache.DefaultCacheManger; import com.pawith.commonmodule.cache.DefaultCacheTemplate; import com.pawith.commonmodule.cache.operators.SetOperator; import com.pawith.commonmodule.cache.operators.ValueOperator; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.util.concurrent.TimeUnit; + +@EnableCaching @Configuration public class CacheConfig { @@ -24,4 +30,11 @@ public SetOperator setOperator() { public ValueOperator valueOperator() { return cacheTemplate().opsForValue(); } + + @Bean + public CacheManager cacheManager() { + final DefaultCacheManger defaultCacheManger = new DefaultCacheManger(); + defaultCacheManger.setupTimeToLive(10, TimeUnit.SECONDS); + return defaultCacheManger; + } } From 5f19cab766ed451b52b7436b5adc6a8a2b9b4db8 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 16:45:31 +0900 Subject: [PATCH 09/40] =?UTF-8?q?PET-280=20feat=20:=20key(todo=20id)=20:?= =?UTF-8?q?=20value(todo=20notification)=20=ED=98=95=ED=83=9C=EC=9D=98=20?= =?UTF-8?q?=EB=A7=B5=20=EB=B0=98=ED=99=98=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TodoNotificationQueryService.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/TodoNotificationQueryService.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/TodoNotificationQueryService.java index a18acb53..efa04aa7 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/TodoNotificationQueryService.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/TodoNotificationQueryService.java @@ -1,12 +1,16 @@ package com.pawith.tododomain.service; import com.pawith.commonmodule.annotation.DomainService; +import com.pawith.tododomain.entity.Assign; +import com.pawith.tododomain.entity.Todo; import com.pawith.tododomain.entity.TodoNotification; import com.pawith.tododomain.repository.TodoNotificationRepository; import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @DomainService @RequiredArgsConstructor @@ -15,7 +19,14 @@ public class TodoNotificationQueryService { private final TodoNotificationRepository todoNotificationRepository; - public List findAllByTodoIdsWithIncompleteAssign(List todoIds, Long userId) { - return todoNotificationRepository.findAllByTodoIdsAndUserIdWithInCompleteAssignQuery(todoIds, userId); + public Map findMapTodoIdKeyAndTodoNotificationValueByTodoIdsAndUserId(List todoList, Long userId) { + final List todoIds = todoList.stream().map(Todo::getId).collect(Collectors.toList()); + return todoNotificationRepository.findAllByTodoIdsAndUserIdWithInCompleteAssignQuery(todoIds, userId) + .stream() + .collect(Collectors.toMap(todoNotification -> { + final Assign assign = todoNotification.getAssign(); + final Todo todo = assign.getTodo(); + return todo.getId(); + }, todoNotification -> todoNotification)); } } From 12addb0e2759714bc448ee24bb446a170757e56e Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 16:47:06 +0900 Subject: [PATCH 10/40] =?UTF-8?q?PET-280=20refactor=20:=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=20id=20=EA=B8=B0=EB=B0=98=20=EB=A7=B5=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/pawith/userdomain/service/UserQueryService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Domain-Module/User-Module/User-Domain/src/main/java/com/pawith/userdomain/service/UserQueryService.java b/Domain-Module/User-Module/User-Domain/src/main/java/com/pawith/userdomain/service/UserQueryService.java index 948e8012..5f52d7b6 100644 --- a/Domain-Module/User-Module/User-Domain/src/main/java/com/pawith/userdomain/service/UserQueryService.java +++ b/Domain-Module/User-Module/User-Domain/src/main/java/com/pawith/userdomain/service/UserQueryService.java @@ -37,13 +37,13 @@ public User findById(Long userId){ return findUser(() -> userRepository.findById(userId)); } - public Map findUserMapByIds(List userIds){ + public Map findMapWithUserIdKeyByIds(List userIds){ return userRepository.findAllByIds(userIds) .stream() .collect(Collectors.toMap(User::getId, Function.identity())); } - private User findUser(Supplier> method){ + private User findUser(Supplier> method){ return method.get() .orElseThrow(() -> new UserNotFoundException(UserError.USER_NOT_FOUND)); } From 5bf7b53a989a5f481f03b5356629a199d707dddc Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 17:07:45 +0900 Subject: [PATCH 11/40] =?UTF-8?q?PET-280=20refactor=20:=20TodoNotification?= =?UTF-8?q?InfoResponse=20record=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F?= =?UTF-8?q?=20=EC=9D=B8=EC=8A=A4=ED=84=B4=EC=8A=A4=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EB=A9=94=EC=86=8C=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TodoNotificationInfoResponse.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoNotificationInfoResponse.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoNotificationInfoResponse.java index 398ff869..156b62ad 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoNotificationInfoResponse.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoNotificationInfoResponse.java @@ -1,15 +1,19 @@ package com.pawith.todoapplication.dto.response; import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.AllArgsConstructor; -import lombok.Getter; +import com.pawith.tododomain.entity.TodoNotification; import java.time.LocalTime; +import java.util.Optional; +import java.util.function.Supplier; -@AllArgsConstructor -@Getter -public class TodoNotificationInfoResponse { - private Boolean isNotification; - @JsonInclude(JsonInclude.Include.NON_NULL) - private LocalTime notificationTime; +public record TodoNotificationInfoResponse( + Boolean isNotification, + @JsonInclude(JsonInclude.Include.NON_NULL) LocalTime notificationTime +) { + public static TodoNotificationInfoResponse of(Supplier> todoNotificationSupplier) { + return todoNotificationSupplier.get() + .map(todoNotification -> new TodoNotificationInfoResponse(true, todoNotification.getNotificationTime())) + .orElse(new TodoNotificationInfoResponse(false, null)); + } } From 0986a8a0195e4f8084b865901b5469d5464242ed Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 17:08:20 +0900 Subject: [PATCH 12/40] =?UTF-8?q?PET-280=20refactor=20:=20Todo=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EB=A1=9C=EC=A7=81=20=EB=A6=AC=ED=8C=A9=ED=84=B0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TodoGetUseCase.java | 85 ++++++++----------- 1 file changed, 37 insertions(+), 48 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoGetUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoGetUseCase.java index 21898d0b..e32d9bda 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoGetUseCase.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoGetUseCase.java @@ -2,7 +2,10 @@ import com.pawith.commonmodule.annotation.ApplicationService; import com.pawith.commonmodule.response.ListResponse; -import com.pawith.todoapplication.dto.response.*; +import com.pawith.todoapplication.dto.response.AssignUserInfoResponse; +import com.pawith.todoapplication.dto.response.CategorySubTodoResponse; +import com.pawith.todoapplication.dto.response.TodoInfoResponse; +import com.pawith.todoapplication.dto.response.TodoNotificationInfoResponse; import com.pawith.todoapplication.mapper.TodoMapper; import com.pawith.tododomain.entity.*; import com.pawith.tododomain.service.AssignQueryService; @@ -16,7 +19,6 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; -import java.time.LocalTime; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -33,6 +35,7 @@ public class TodoGetUseCase { private final AssignQueryService assignQueryService; private final TodoNotificationQueryService todoNotificationQueryService; + public ListResponse getTodoListByTodoTeamId(final Long todoTeamId) { final User user = userUtils.getAccessUser(); final List allAssigns = assignQueryService.findAllByUserIdAndTodoTeamIdAndScheduledDate(user.getId(), todoTeamId); @@ -49,36 +52,40 @@ public ListResponse getTodoListByTodoTeamId(final Long todoTea public ListResponse getTodoListByCategoryId(Long categoryId, LocalDate moveDate) { final User accessUser = userUtils.getAccessUser(); - final Map> todoAssignMap = createTodoAssignListMap(categoryId, moveDate); - final Map todoNotificationMap = createTodoNotificationMapWithTodoId(new ArrayList<>(todoAssignMap.keySet()), accessUser.getId()); + + final Map> todoAssignMap = + assignQueryService.findMapWithTodoKeyAndAssignListValueByCategoryIdAndScheduledDate(categoryId, moveDate); + final List todoList = List.copyOf(todoAssignMap.keySet()); + + final Map todoNotificationMap = + todoNotificationQueryService.findMapTodoIdKeyAndTodoNotificationValueByTodoIdsAndUserId(todoList, accessUser.getId()); + final Map userMap = createUserIdMap(todoAssignMap); - final ArrayList todoMainResponses = new ArrayList<>(); - for (Todo todo : todoAssignMap.keySet()) { - final AtomicReference isAssigned = new AtomicReference<>(false); - final List assignUserInfoResponses = todoAssignMap.get(todo).stream() - .map(assign -> { - final Register register = assign.getRegister(); - final User findUser = userMap.get(register.getUserId()); - if (Objects.equals(findUser.getId(), accessUser.getId())) { - isAssigned.set(true); - } - return new AssignUserInfoResponse(findUser.getId(), findUser.getNickname(), assign.getCompletionStatus()); - }) - .sorted(Comparator.comparing(assignUserInfoResponse -> !Objects.equals(assignUserInfoResponse.getAssigneeId(), accessUser.getId()))) - .collect(Collectors.toList()); - TodoNotificationInfoResponse todoNotificationInfoResponse = getTodoNotificationInfoResponse(todo, todoNotificationMap); - todoMainResponses.add(TodoMapper.mapToCategorySubTodoResponse(todo, assignUserInfoResponses, isAssigned.get(),todoNotificationInfoResponse)); - } - return ListResponse.from(todoMainResponses); + + final List subTodoResponseList = todoList.stream() + .map(todo -> { + final AtomicReference isAssigned = new AtomicReference<>(false); + final List assigns = todoAssignMap.get(todo); + final List assignUserInfoResponses = getAssignUserInfoResponses(assigns, userMap, accessUser, isAssigned); + final TodoNotificationInfoResponse todoNotificationInfoResponse = + TodoNotificationInfoResponse.of(() -> Optional.ofNullable(todoNotificationMap.get(todo.getId()))); + return TodoMapper.mapToCategorySubTodoResponse(todo, assignUserInfoResponses, isAssigned.get(), todoNotificationInfoResponse); + }).toList(); + return ListResponse.from(subTodoResponseList); } - private static TodoNotificationInfoResponse getTodoNotificationInfoResponse(Todo todo, Map todoNotificationMap) { - if(todoNotificationMap.containsKey(todo.getId())){ - final TodoNotification todoNotification = todoNotificationMap.get(todo.getId()); - final LocalTime notificationTime = todoNotification.getNotificationTime(); - return new TodoNotificationInfoResponse(true, notificationTime); - } - return new TodoNotificationInfoResponse(false, null); + private List getAssignUserInfoResponses(List assigns, Map userMap, User accessUser, AtomicReference isAssigned) { + return assigns.stream() + .map(assign -> { + final Register register = assign.getRegister(); + final User findUser = userMap.get(register.getUserId()); + if (Objects.equals(findUser.getId(), accessUser.getId())) { + isAssigned.set(true); + } + return new AssignUserInfoResponse(findUser.getId(), findUser.getNickname(), assign.getCompletionStatus()); + }) + .sorted(Comparator.comparing(assignUserInfoResponse -> !Objects.equals(assignUserInfoResponse.getAssigneeId(), accessUser.getId()))) + .collect(Collectors.toList()); } private Map createUserIdMap(Map> groupByTodo) { @@ -90,25 +97,7 @@ private Map createUserIdMap(Map> groupByTodo) { }) .boxed() .collect(Collectors.toList()); - return userQueryService.findUserMapByIds(userIds); - } - - private Map createTodoNotificationMapWithTodoId(List todoList, Long userId) { - final List todoIds = todoList.stream().map(Todo::getId).collect(Collectors.toList()); - return todoNotificationQueryService.findAllByTodoIdsWithIncompleteAssign(todoIds, userId) - .stream() - .collect(Collectors.toMap(todoNotification -> todoNotification.getAssign().getTodo().getId(), todoNotification -> todoNotification)); - } - - public TodoCompletionResponse getTodoCompletion(Long todoId) { - final Todo todo = todoQueryService.findTodoByTodoId(todoId); - return new TodoCompletionResponse(todo.getCompletionStatus()); - } - - private Map> createTodoAssignListMap(Long categoryId, LocalDate moveDate) { - return assignQueryService.findAllAssignByCategoryIdAndScheduledDate(categoryId, moveDate) - .stream() - .collect(Collectors.groupingBy(Assign::getTodo, LinkedHashMap::new, Collectors.toList())); + return userQueryService.findMapWithUserIdKeyByIds(userIds); } } From 79308921c8e35dc77e94c523480c3f65625b50f2 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 17:08:58 +0900 Subject: [PATCH 13/40] =?UTF-8?q?PET-280=20refactor=20:=20Todo=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=20=EC=97=AC=EB=B6=80=20=EC=A1=B0=ED=9A=8C=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TodoCompleteGetUseCase.java | 18 ++++++++++++++++++ .../todopresentation/TodoController.java | 3 ++- .../todopresentation/TodoControllerTest.java | 4 +++- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoCompleteGetUseCase.java diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoCompleteGetUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoCompleteGetUseCase.java new file mode 100644 index 00000000..18b3ea1e --- /dev/null +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoCompleteGetUseCase.java @@ -0,0 +1,18 @@ +package com.pawith.todoapplication.service; + +import com.pawith.commonmodule.annotation.ApplicationService; +import com.pawith.todoapplication.dto.response.TodoCompletionResponse; +import com.pawith.tododomain.entity.Todo; +import com.pawith.tododomain.service.TodoQueryService; +import lombok.RequiredArgsConstructor; + +@ApplicationService +@RequiredArgsConstructor +public class TodoCompleteGetUseCase { + private final TodoQueryService todoQueryService; + + public TodoCompletionResponse getTodoCompletion(Long todoId) { + final Todo todo = todoQueryService.findTodoByTodoId(todoId); + return new TodoCompletionResponse(todo.getCompletionStatus()); + } +} diff --git a/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/TodoController.java b/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/TodoController.java index 48f4fa32..8f80ab7e 100644 --- a/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/TodoController.java +++ b/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/TodoController.java @@ -31,6 +31,7 @@ public class TodoController { private final TodoValidationUseCase todoValidationUseCase; private final TodoNotificationCreateUseCase todoNotificationCreateUseCase; private final TodoWithdrawGetUseCase todoWithdrawGetUseCase; + private final TodoCompleteGetUseCase todoCompleteGetUseCase; @GetMapping("/{todoTeamId}/todos/progress") public TodoProgressResponse getTodoProgress(@PathVariable Long todoTeamId) { @@ -80,7 +81,7 @@ public void putAssign(@PathVariable Long todoId, @RequestBody AssignChangeReques @GetMapping("/todos/{todoId}/completion") public TodoCompletionResponse getTodoCompletion(@PathVariable Long todoId){ - return todoGetUseCase.getTodoCompletion(todoId); + return todoCompleteGetUseCase.getTodoCompletion(todoId); } @DeleteMapping("/todos/{todoId}") diff --git a/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java b/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java index bb117fdc..480aff1e 100644 --- a/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java +++ b/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java @@ -57,6 +57,8 @@ public class TodoControllerTest extends BaseRestDocsTest { private TodoNotificationCreateUseCase todoNotificationCreateUseCase; @MockBean private TodoWithdrawGetUseCase todoWithdrawGetUseCase; + @MockBean + private TodoCompleteGetUseCase todoCompleteGetUseCase; private static final String TODO_REQUEST_URL = "/teams"; @@ -302,7 +304,7 @@ void getTodoCompletion() throws Exception { //given final Long testTodoId = FixtureMonkeyUtils.getJavaTypeBasedFixtureMonkey().giveMeOne(Long.class); final TodoCompletionResponse todoCompletionResponse = FixtureMonkeyUtils.getConstructBasedFixtureMonkey().giveMeOne(TodoCompletionResponse.class); - given(todoGetUseCase.getTodoCompletion(testTodoId)).willReturn(todoCompletionResponse); + given(todoCompleteGetUseCase.getTodoCompletion(testTodoId)).willReturn(todoCompletionResponse); MockHttpServletRequestBuilder request = get(TODO_REQUEST_URL + "/todos/{todoId}/completion", testTodoId) .header("Authorization", "Bearer accessToken"); //when From 0ec010033ad5448c3093980aaff0e4b7dc782913 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 17:09:24 +0900 Subject: [PATCH 14/40] =?UTF-8?q?PET-280=20refactor=20:=20user=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/todoapplication/service/RegistersGetUseCase.java | 4 ++-- .../todoapplication/service/RegistersGetUseCaseTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/RegistersGetUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/RegistersGetUseCase.java index 6b90fe04..86a0042c 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/RegistersGetUseCase.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/RegistersGetUseCase.java @@ -47,7 +47,7 @@ public ListResponse getManageRegisters(final Long te final Map registerUserMap = getRegisterUserMap(allRegisters); Comparator authorityComparator = Comparator.comparing(Enum::ordinal); final List manageRegisterInfoResponses = allRegisters.stream() - .sorted(Comparator.comparing(register -> register.getAuthority(), authorityComparator)) + .sorted(Comparator.comparing(Register::getAuthority, authorityComparator)) .map(register -> { final User registerUser = registerUserMap.get(register.getUserId()); return new RegisterManageInfoResponse(register.getId(), register.getAuthority(), registerUser.getNickname(), registerUser.getEmail(), registerUser.getImageUrl()); @@ -67,7 +67,7 @@ private Map getRegisterUserMap(List allRegisters) { final List registerUserIds = allRegisters.stream() .map(Register::getUserId) .collect(Collectors.toList()); - return userQueryService.findUserMapByIds(registerUserIds); + return userQueryService.findMapWithUserIdKeyByIds(registerUserIds); } public ListResponse searchRegisterByNickname(final Long todoTeamId, final String nickname) { diff --git a/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/service/RegistersGetUseCaseTest.java b/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/service/RegistersGetUseCaseTest.java index 13a2b412..90afc8ee 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/service/RegistersGetUseCaseTest.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/service/RegistersGetUseCaseTest.java @@ -56,7 +56,7 @@ void getRegisters() { ); final List userIds = registerList.stream().map(Register::getUserId).collect(Collectors.toList()); given(registerQueryService.findAllRegistersByTodoTeamId(todoTeamId)).willReturn(registerList); - given(userQueryService.findUserMapByIds(userIds)).willReturn(Map.of(mockFindUser.getId(), mockFindUser)); + given(userQueryService.findMapWithUserIdKeyByIds(userIds)).willReturn(Map.of(mockFindUser.getId(), mockFindUser)); // when ListResponse registerInfoListResponse = registersGetUseCase.getRegisters(todoTeamId); // then From bcc0b37b73c2e2b0bef63e0e3be4e1c8a7dc6ea6 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 17:09:32 +0900 Subject: [PATCH 15/40] =?UTF-8?q?PET-280=20refactor=20:=20user=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/IncompleteTodoCountNotificationHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/IncompleteTodoCountNotificationHandler.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/IncompleteTodoCountNotificationHandler.java index 474896ee..9a4ee387 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/IncompleteTodoCountNotificationHandler.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/IncompleteTodoCountNotificationHandler.java @@ -56,7 +56,7 @@ private void cachingUserInfo(List executionResult) { .map(IncompleteTodoCountInfoDao::getUserId) .filter(userId -> !valueOperator.contains(userId)) .toList(); - userQueryService.findUserMapByIds(userIds) + userQueryService.findMapWithUserIdKeyByIds(userIds) .forEach((userId, user) -> valueOperator.setWithExpire(userId, user.getNickname(), 1, TimeUnit.MINUTES)); } } From 9a3d53b6c0d49879f84e54a7af0e38953120860a Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 17:10:08 +0900 Subject: [PATCH 16/40] =?UTF-8?q?PET-280=20refactor=20:=20Key(todo)=20:=20?= =?UTF-8?q?Value(List)=20=ED=98=95=ED=83=9C=EC=9D=98=20=EB=A7=B5?= =?UTF-8?q?=20=EB=B0=98=ED=99=98=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tododomain/service/AssignQueryService.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java index db9aaec4..c317a314 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java @@ -1,15 +1,21 @@ package com.pawith.tododomain.service; import com.pawith.commonmodule.annotation.DomainService; +import com.pawith.tododomain.consts.TodoDomainCacheValueConsts; import com.pawith.tododomain.entity.Assign; +import com.pawith.tododomain.entity.Todo; import com.pawith.tododomain.exception.AssignNotFoundException; import com.pawith.tododomain.exception.TodoError; import com.pawith.tododomain.repository.AssignRepository; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.Cacheable; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @DomainService @Transactional(readOnly = true) @@ -18,10 +24,17 @@ public class AssignQueryService { private final AssignRepository assignRepository; + @Cacheable(value = TodoDomainCacheValueConsts.ASSIGN_CACHE_WITH_CATEGORY_ID, key = "#categoryId") public List findAllAssignByCategoryIdAndScheduledDate(Long categoryId, LocalDate scheduledDate) { return assignRepository.findAllByCategoryIdAndScheduledDateQuery(categoryId, scheduledDate); } + public Map> findMapWithTodoKeyAndAssignListValueByCategoryIdAndScheduledDate(Long categoryId, LocalDate scheduledDate) { + return assignRepository.findAllByCategoryIdAndScheduledDateQuery(categoryId, scheduledDate) + .stream() + .collect(Collectors.groupingBy(Assign::getTodo, LinkedHashMap::new, Collectors.toList())); + } + public List findAllByUserIdAndTodoTeamIdAndScheduledDate(Long userId, Long todoTeamId) { final LocalDate now = LocalDate.now(); return assignRepository.findAllByUserIdAndTodoTeamIdAndScheduledDateQuery(userId, todoTeamId, now); From ac7ba0e2a4f9ac46965ea013540efec90586efdb Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 26 Dec 2023 17:18:29 +0900 Subject: [PATCH 17/40] =?UTF-8?q?PET-280=20fix=20:=20@Cacheable=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/pawith/tododomain/service/AssignQueryService.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java index c317a314..74078918 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java @@ -1,14 +1,12 @@ package com.pawith.tododomain.service; import com.pawith.commonmodule.annotation.DomainService; -import com.pawith.tododomain.consts.TodoDomainCacheValueConsts; import com.pawith.tododomain.entity.Assign; import com.pawith.tododomain.entity.Todo; import com.pawith.tododomain.exception.AssignNotFoundException; import com.pawith.tododomain.exception.TodoError; import com.pawith.tododomain.repository.AssignRepository; import lombok.RequiredArgsConstructor; -import org.springframework.cache.annotation.Cacheable; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; @@ -24,7 +22,6 @@ public class AssignQueryService { private final AssignRepository assignRepository; - @Cacheable(value = TodoDomainCacheValueConsts.ASSIGN_CACHE_WITH_CATEGORY_ID, key = "#categoryId") public List findAllAssignByCategoryIdAndScheduledDate(Long categoryId, LocalDate scheduledDate) { return assignRepository.findAllByCategoryIdAndScheduledDateQuery(categoryId, scheduledDate); } From 00d4b036ed45a91d2d6c4bef47b55beb8877eb23 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Thu, 28 Dec 2023 21:41:07 +0900 Subject: [PATCH 18/40] =?UTF-8?q?PET-282=20fix=20:=20=EB=82=A0=EC=A7=9C=20?= =?UTF-8?q?=EB=B9=84=EA=B5=90=EC=8B=9C=20Period=EC=97=90=EC=84=9C=20Chrono?= =?UTF-8?q?Unit=20=EC=82=AC=EC=9A=A9=ED=95=B4=20=EB=B9=84=EA=B5=90?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/TodoTeamInfoResponse.java | 2 +- .../pawith/todoapplication/mapper/TodoTeamMapper.java | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoTeamInfoResponse.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoTeamInfoResponse.java index c7d377a8..0a27f03a 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoTeamInfoResponse.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoTeamInfoResponse.java @@ -12,5 +12,5 @@ public class TodoTeamInfoResponse { private String teamProfileImageUrl; private String teamName; private Authority authority; - private Integer registerPeriod; + private Long registerPeriod; } diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/mapper/TodoTeamMapper.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/mapper/TodoTeamMapper.java index e62a01d5..9906bd7b 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/mapper/TodoTeamMapper.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/mapper/TodoTeamMapper.java @@ -1,11 +1,7 @@ package com.pawith.todoapplication.mapper; import com.pawith.todoapplication.dto.request.TodoTeamCreateRequest; -import com.pawith.todoapplication.dto.response.TodoTeamInfoDetailResponse; -import com.pawith.todoapplication.dto.response.TodoTeamNameResponse; -import com.pawith.todoapplication.dto.response.TodoTeamRandomCodeResponse; -import com.pawith.todoapplication.dto.response.TodoTeamSearchInfoResponse; -import com.pawith.todoapplication.dto.response.TodoTeamInfoResponse; +import com.pawith.todoapplication.dto.response.*; import com.pawith.tododomain.entity.Register; import com.pawith.tododomain.entity.TodoTeam; import com.pawith.userdomain.entity.User; @@ -13,7 +9,7 @@ import lombok.NoArgsConstructor; import java.time.LocalDate; -import java.time.Period; +import java.time.temporal.ChronoUnit; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class TodoTeamMapper { @@ -36,7 +32,7 @@ public static TodoTeamNameResponse mapToTodoTeamNameResponse(final TodoTeam todo } public static TodoTeamInfoResponse mapToTodoTeamSimpleResponse(final TodoTeam todoTeam, final Register register) { - final int registerPeriod = Period.between(register.getRegisterAt().toLocalDate(), LocalDate.now()).getDays(); + final long registerPeriod = ChronoUnit.DAYS.between(register.getRegisterAt().toLocalDate(), LocalDate.now()); return TodoTeamInfoResponse.builder() .teamId(todoTeam.getId()) .teamName(todoTeam.getTeamName()) From dcd739fc51604bee8d83dfb989856116bd845539 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Thu, 28 Dec 2023 21:41:33 +0900 Subject: [PATCH 19/40] =?UTF-8?q?PET-282=20refactor=20:=20TodoCompletionCh?= =?UTF-8?q?eckEvent=20record=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/TodoCompletionCheckOnTodoHandler.java | 4 ++-- .../handler/event/TodoCompletionCheckEvent.java | 8 +------- .../handler/TodoCompletionCheckOnTodoHandlerTest.java | 8 ++++---- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/TodoCompletionCheckOnTodoHandler.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/TodoCompletionCheckOnTodoHandler.java index bb3f79d4..c408560c 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/TodoCompletionCheckOnTodoHandler.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/TodoCompletionCheckOnTodoHandler.java @@ -26,8 +26,8 @@ public class TodoCompletionCheckOnTodoHandler { public void changeTodoStatus(TodoCompletionCheckEvent todoCompletionCheckEvent) throws InterruptedException { while(true) { try { - final List assigns = assignQueryService.findAllAssignByTodoId(todoCompletionCheckEvent.getTodoId()); - final Todo todo = todoQueryService.findTodoByTodoId(todoCompletionCheckEvent.getTodoId()); + final List assigns = assignQueryService.findAllAssignByTodoId(todoCompletionCheckEvent.todoId()); + final Todo todo = todoQueryService.findTodoByTodoId(todoCompletionCheckEvent.todoId()); final boolean isAllCompleteTodo = assigns.stream().allMatch(Assign::isCompleted); todo.updateCompletionStatus(isAllCompleteTodo); break; diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/event/TodoCompletionCheckEvent.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/event/TodoCompletionCheckEvent.java index 15bb4f0c..e4900a9a 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/event/TodoCompletionCheckEvent.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/event/TodoCompletionCheckEvent.java @@ -1,10 +1,4 @@ package com.pawith.todoapplication.handler.event; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -@Getter -@RequiredArgsConstructor -public class TodoCompletionCheckEvent { - private final Long todoId; +public record TodoCompletionCheckEvent(Long todoId) { } diff --git a/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/handler/TodoCompletionCheckOnTodoHandlerTest.java b/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/handler/TodoCompletionCheckOnTodoHandlerTest.java index f1e41be2..cdec8c42 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/handler/TodoCompletionCheckOnTodoHandlerTest.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/handler/TodoCompletionCheckOnTodoHandlerTest.java @@ -46,8 +46,8 @@ void changeTodoStatus() throws InterruptedException { .giveMeBuilder(Todo.class) .set("completionStatus", CompletionStatus.INCOMPLETE) .sample(); - given(assignQueryService.findAllAssignByTodoId(todoCompletionCheckEvent.getTodoId())).willReturn(mockAssigns); - given(todoQueryService.findTodoByTodoId(todoCompletionCheckEvent.getTodoId())).willReturn(mockTodo); + given(assignQueryService.findAllAssignByTodoId(todoCompletionCheckEvent.todoId())).willReturn(mockAssigns); + given(todoQueryService.findTodoByTodoId(todoCompletionCheckEvent.todoId())).willReturn(mockTodo); // when todoCompletionCheckOnTodoHandler.changeTodoStatus(todoCompletionCheckEvent); // then @@ -73,8 +73,8 @@ void changeTodoStatusWithIncompletedAssignee() throws InterruptedException { .giveMeBuilder(Todo.class) .set("completionStatus", CompletionStatus.INCOMPLETE) .sample(); - given(assignQueryService.findAllAssignByTodoId(todoCompletionCheckEvent.getTodoId())).willReturn(mockAssigns); - given(todoQueryService.findTodoByTodoId(todoCompletionCheckEvent.getTodoId())).willReturn(mockTodo); + given(assignQueryService.findAllAssignByTodoId(todoCompletionCheckEvent.todoId())).willReturn(mockAssigns); + given(todoQueryService.findTodoByTodoId(todoCompletionCheckEvent.todoId())).willReturn(mockTodo); // when todoCompletionCheckOnTodoHandler.changeTodoStatus(todoCompletionCheckEvent); // then From 0c11356a8035c77356accb09a1a380cdefe8f805 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 14:25:28 +0900 Subject: [PATCH 20/40] =?UTF-8?q?PET-284=20docs=20:=20Infra=20Diagram=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/docs/infra-diagram.png | Bin 0 -> 353725 bytes README.md | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 .github/docs/infra-diagram.png diff --git a/.github/docs/infra-diagram.png b/.github/docs/infra-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c5026ee32d98049459ca3db7707b3ef420091fca GIT binary patch literal 353725 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%0D))yU2I1ZLNChZcL(* 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 +## Infra + + ## 성능 개선 From ed7a9c711c5af21a4e4bed7517714b143c96e3ca Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 16:50:31 +0900 Subject: [PATCH 21/40] =?UTF-8?q?PET-285=20feat=20:=20Register=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=20=EA=B4=80=EB=A0=A8=20=EC=9C=A0=ED=8B=B8=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/tododomain/util/RegisterUtils.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/util/RegisterUtils.java diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/util/RegisterUtils.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/util/RegisterUtils.java new file mode 100644 index 00000000..08b052a5 --- /dev/null +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/util/RegisterUtils.java @@ -0,0 +1,37 @@ +package com.pawith.tododomain.util; + +import com.pawith.tododomain.entity.Authority; +import com.pawith.tododomain.entity.Register; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class RegisterUtils { + + public static List extractUserIds(Collection registers) { + return registers.stream() + .map(Register::getUserId) + .toList(); + } + + public static Map convertToMapWithUserIdKey(List registers) { + return registers.stream() + .map(register -> Map.entry(register.getUserId(), register)) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + + public static List sortByAuthority(List registers) { + final Comparator authorityComparator = Comparator.comparing(Enum::ordinal); + return registers.stream() + .sorted(Comparator.comparing(Register::getAuthority, authorityComparator)) + .toList(); + } + + +} From 0fad14c1210d65c3476098a6611760af711ac5b5 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 16:51:16 +0900 Subject: [PATCH 22/40] =?UTF-8?q?PET-285=20refactor=20:=20RegisterUtils=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EA=B8=B0=EB=B0=98=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20Register=20=EC=A1=B0=ED=9A=8C=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EB=A6=AC=ED=8C=A9=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/RegistersGetUseCase.java | 62 +++++-------------- 1 file changed, 16 insertions(+), 46 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/RegistersGetUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/RegistersGetUseCase.java index 86a0042c..db7e3a0d 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/RegistersGetUseCase.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/RegistersGetUseCase.java @@ -6,20 +6,17 @@ import com.pawith.todoapplication.dto.response.RegisterManageInfoResponse; import com.pawith.todoapplication.dto.response.RegisterSearchInfoResponse; import com.pawith.todoapplication.dto.response.RegisterTermResponse; -import com.pawith.tododomain.entity.Authority; import com.pawith.tododomain.entity.Register; import com.pawith.tododomain.service.RegisterQueryService; +import com.pawith.tododomain.util.RegisterUtils; import com.pawith.userdomain.entity.User; import com.pawith.userdomain.service.UserQueryService; import com.pawith.userdomain.utils.UserUtils; import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; -import java.util.Comparator; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @ApplicationService @RequiredArgsConstructor @@ -32,27 +29,26 @@ public class RegistersGetUseCase { public ListResponse getRegisters(final Long teamId) { final List allRegisters = registerQueryService.findAllRegistersByTodoTeamId(teamId); - final Map registerUserMap = getRegisterUserMap(allRegisters); + final Map registerUserMap = userQueryService.findMapWithUserIdKeyByIds(RegisterUtils.extractUserIds(allRegisters)); final List registerSimpleInfoResponses = allRegisters.stream() .map(register -> { final User registerUser = registerUserMap.get(register.getUserId()); return new RegisterInfoResponse(register.getId(), registerUser.getNickname()); }) - .collect(Collectors.toList()); + .toList(); return ListResponse.from(registerSimpleInfoResponses); } public ListResponse getManageRegisters(final Long teamId) { - final List allRegisters = registerQueryService.findAllRegistersByTodoTeamId(teamId); - final Map registerUserMap = getRegisterUserMap(allRegisters); - Comparator authorityComparator = Comparator.comparing(Enum::ordinal); - final List manageRegisterInfoResponses = allRegisters.stream() - .sorted(Comparator.comparing(Register::getAuthority, authorityComparator)) + final List allRegisters = RegisterUtils.sortByAuthority(registerQueryService.findAllRegistersByTodoTeamId(teamId)); + final Map registerUserMap = userQueryService.findMapWithUserIdKeyByIds(RegisterUtils.extractUserIds(allRegisters)); + final List manageRegisterInfoResponses = + allRegisters.stream() .map(register -> { final User registerUser = registerUserMap.get(register.getUserId()); return new RegisterManageInfoResponse(register.getId(), register.getAuthority(), registerUser.getNickname(), registerUser.getEmail(), registerUser.getImageUrl()); }) - .collect(Collectors.toList()); + .toList(); return ListResponse.from(manageRegisterInfoResponses); } @@ -62,42 +58,16 @@ public RegisterTermResponse getRegisterTerm(final Long teamId) { return new RegisterTermResponse(registerTerm); } - - private Map getRegisterUserMap(List allRegisters) { - final List registerUserIds = allRegisters.stream() - .map(Register::getUserId) - .collect(Collectors.toList()); - return userQueryService.findMapWithUserIdKeyByIds(registerUserIds); - } - public ListResponse searchRegisterByNickname(final Long todoTeamId, final String nickname) { - final List registers = registerQueryService.findAllRegistersByTodoTeamId(todoTeamId); - final List registerUserIds = registers.stream() - .map(Register::getUserId) - .collect(Collectors.toList()); - final List users = userQueryService.findAllByNicknameAndIds(nickname, registerUserIds); - System.out.println(users); - final Map userRegisterMap = getRegisterUserMap(registers, users); + final List registers = RegisterUtils.sortByAuthority(registerQueryService.findAllRegistersByTodoTeamId(todoTeamId)); + final List users = userQueryService.findAllByNicknameAndIds(nickname, RegisterUtils.extractUserIds(registers)); + final Map registerMap = RegisterUtils.convertToMapWithUserIdKey(registers); final List registerSearchInfoResponses = users.stream() - .map(user -> { - Register register = userRegisterMap.get(user); - return new RegisterSearchInfoResponse(register.getId(), register.getAuthority(), user.getNickname(), user.getEmail(), user.getImageUrl()); - }) - .collect(Collectors.toList()); + .map(user -> { + final Register register = registerMap.get(user.getId()); + return new RegisterSearchInfoResponse(register.getId(), register.getAuthority(), user.getNickname(), user.getEmail(), user.getImageUrl()); + }) + .toList(); return ListResponse.from(registerSearchInfoResponses); } - - private Map getRegisterUserMap(List registers, List users) { - Comparator authorityComparator = Comparator.comparing(Enum::ordinal); - - List sortedRegisters = registers.stream() - .sorted(Comparator.comparing(Register::getAuthority, authorityComparator)) - .toList(); - - return users.stream() - .flatMap(user -> sortedRegisters.stream() - .filter(register -> user.getId().equals(register.getUserId())) - .map(register -> Map.entry(user, register))) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (existing, replacement) -> existing, LinkedHashMap::new)); - } } From ca90a5f0c6fe63d9930af7dc6386aad908c9ef9d Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 16:59:10 +0900 Subject: [PATCH 23/40] =?UTF-8?q?PET-285=20refactor=20:=20UserSignUpEvent?= =?UTF-8?q?=20class=20->=20record=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commonmodule/event/UserSignUpEvent.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/Common-Module/src/main/java/com/pawith/commonmodule/event/UserSignUpEvent.java b/Common-Module/src/main/java/com/pawith/commonmodule/event/UserSignUpEvent.java index 7231a9a5..1689f170 100644 --- a/Common-Module/src/main/java/com/pawith/commonmodule/event/UserSignUpEvent.java +++ b/Common-Module/src/main/java/com/pawith/commonmodule/event/UserSignUpEvent.java @@ -1,17 +1,10 @@ package com.pawith.commonmodule.event; import com.pawith.commonmodule.enums.Provider; -import lombok.*; -@Getter -public class UserSignUpEvent { - private String nickname; - private String email; - private Provider provider; - - public UserSignUpEvent(String nickname, String email, Provider provider) { - this.nickname = nickname; - this.email = email; - this.provider = provider; - } +public record UserSignUpEvent( + String nickname, + String email, + Provider provider +) { } From 7e3bcabd7bdc56f1d21ebd285a1663151db0d9ae Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:00:50 +0900 Subject: [PATCH 24/40] =?UTF-8?q?PET-285=20refactor=20:=20UserSignUpEvent?= =?UTF-8?q?=20class=20->=20record=EB=A1=9C=20=EB=B3=80=EA=B2=BD=EC=97=90?= =?UTF-8?q?=20=EB=94=B0=EB=A5=B8=20=EC=A1=B0=ED=9A=8C=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=ED=98=B8=EC=B6=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/UserAccountDeleteOnTodoHandler.java | 2 +- .../pawith/userapplication/handler/UserSignUpHandler.java | 6 +++--- .../java/com/pawith/userapplication/mapper/UserMapper.java | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/UserAccountDeleteOnTodoHandler.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/UserAccountDeleteOnTodoHandler.java index 4e0c2885..53fb80ea 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/UserAccountDeleteOnTodoHandler.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/handler/UserAccountDeleteOnTodoHandler.java @@ -27,7 +27,7 @@ public class UserAccountDeleteOnTodoHandler { @EventListener public void deleteUserInfo(UserAccountDeleteEvent userAccountDeleteEvent) { - final List registers = registerQueryService.findAllRegistersByUserId(userAccountDeleteEvent.getUserId()); + final List registers = registerQueryService.findAllRegistersByUserId(userAccountDeleteEvent.userId()); final List registerIds = registers.stream() .map(Register::getId) .collect(Collectors.toList()); diff --git a/Domain-Module/User-Module/User-Application/src/main/java/com/pawith/userapplication/handler/UserSignUpHandler.java b/Domain-Module/User-Module/User-Application/src/main/java/com/pawith/userapplication/handler/UserSignUpHandler.java index dd423f60..efa71201 100644 --- a/Domain-Module/User-Module/User-Application/src/main/java/com/pawith/userapplication/handler/UserSignUpHandler.java +++ b/Domain-Module/User-Module/User-Application/src/main/java/com/pawith/userapplication/handler/UserSignUpHandler.java @@ -26,13 +26,13 @@ public class UserSignUpHandler { @Transactional @EventListener public void signUp(final UserSignUpEvent userSignUpEvent){ - if(!userQueryService.checkEmailAlreadyExist(userSignUpEvent.getEmail())) { + if(!userQueryService.checkEmailAlreadyExist(userSignUpEvent.email())) { final User user = UserMapper.toUserEntity(userSignUpEvent,DEFAULT_PROFILE_IMAGE_URL); userSaveService.saveUser(user); - userAuthoritySaveService.saveUserAuthority(userSignUpEvent.getEmail()); + userAuthoritySaveService.saveUserAuthority(userSignUpEvent.email()); } else { - userQueryService.checkAccountAlreadyExist(userSignUpEvent.getEmail(), userSignUpEvent.getProvider()); + userQueryService.checkAccountAlreadyExist(userSignUpEvent.email(), userSignUpEvent.provider()); } } diff --git a/Domain-Module/User-Module/User-Application/src/main/java/com/pawith/userapplication/mapper/UserMapper.java b/Domain-Module/User-Module/User-Application/src/main/java/com/pawith/userapplication/mapper/UserMapper.java index dfe6cc87..0908bcf7 100644 --- a/Domain-Module/User-Module/User-Application/src/main/java/com/pawith/userapplication/mapper/UserMapper.java +++ b/Domain-Module/User-Module/User-Application/src/main/java/com/pawith/userapplication/mapper/UserMapper.java @@ -9,9 +9,9 @@ public class UserMapper { public static User toUserEntity(UserSignUpEvent userSignUpEvent, String imageUrl) { return User.builder() - .nickname(userSignUpEvent.getNickname()) - .email(userSignUpEvent.getEmail()) - .provider(userSignUpEvent.getProvider()) + .nickname(userSignUpEvent.nickname()) + .email(userSignUpEvent.email()) + .provider(userSignUpEvent.provider()) .imageUrl(imageUrl) .build(); } From 574f9359361e78e58e97426a8c86034a4c7f8116 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:01:08 +0900 Subject: [PATCH 25/40] =?UTF-8?q?PET-285=20refactor=20:=20UserAccountDelet?= =?UTF-8?q?eEvent=20class=20->=20record=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/commonmodule/event/UserAccountDeleteEvent.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Common-Module/src/main/java/com/pawith/commonmodule/event/UserAccountDeleteEvent.java b/Common-Module/src/main/java/com/pawith/commonmodule/event/UserAccountDeleteEvent.java index 15e9aa2a..20509b6d 100644 --- a/Common-Module/src/main/java/com/pawith/commonmodule/event/UserAccountDeleteEvent.java +++ b/Common-Module/src/main/java/com/pawith/commonmodule/event/UserAccountDeleteEvent.java @@ -1,10 +1,4 @@ package com.pawith.commonmodule.event; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -@Getter -@RequiredArgsConstructor -public class UserAccountDeleteEvent { - private final Long userId; +public record UserAccountDeleteEvent(Long userId) { } From 49cbeaf4caa7d5267790f5afdf6c31c134bf54eb Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:04:29 +0900 Subject: [PATCH 26/40] =?UTF-8?q?PET-285=20refactor=20:=20todoTeam=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EB=A1=9C=EC=A7=81=20=EB=B6=88=EB=B3=80?= =?UTF-8?q?=EC=84=B1=20=EB=B3=B4=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TodoTeamGetUseCase.java | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoTeamGetUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoTeamGetUseCase.java index 95099533..360a005a 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoTeamGetUseCase.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoTeamGetUseCase.java @@ -3,12 +3,7 @@ import com.pawith.commonmodule.annotation.ApplicationService; import com.pawith.commonmodule.response.ListResponse; import com.pawith.commonmodule.response.SliceResponse; -import com.pawith.todoapplication.dto.response.TodoTeamInfoDetailResponse; -import com.pawith.todoapplication.dto.response.TodoTeamNameResponse; -import com.pawith.todoapplication.dto.response.TodoTeamRandomCodeResponse; -import com.pawith.todoapplication.dto.response.TodoTeamInfoResponse; -import com.pawith.todoapplication.dto.response.TodoTeamSearchInfoResponse; -import com.pawith.todoapplication.dto.response.WithdrawTodoTeamResponse; +import com.pawith.todoapplication.dto.response.*; import com.pawith.todoapplication.mapper.TodoTeamMapper; import com.pawith.tododomain.entity.Register; import com.pawith.tododomain.entity.TodoTeam; @@ -25,10 +20,6 @@ import java.util.List; import java.util.stream.Collectors; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.multipart.MultipartFile; @ApplicationService @RequiredArgsConstructor @@ -56,7 +47,7 @@ public ListResponse getTodoTeamName() { registerQueryService.findRegisterListByUserIdWithTodoTeam(requestUser.getId()) .stream() .map(register -> TodoTeamMapper.mapToTodoTeamNameResponse(register.getTodoTeam(), register)) - .collect(Collectors.toList()); + .toList(); return ListResponse.from(todoTeamNameResponses); } @@ -68,25 +59,25 @@ public TodoTeamSearchInfoResponse searchTodoTeamByCode(final String code) { return TodoTeamMapper.mapToTodoTeamSearchInfoResponse(todoTeam, presidentUser, registerCount); } - public TodoTeamRandomCodeResponse getTodoTeamCode(Long teamId) { - TodoTeam todoTeam = todoTeamQueryService.findTodoTeamById(teamId); + public TodoTeamRandomCodeResponse getTodoTeamCode(final Long teamId) { + final TodoTeam todoTeam = todoTeamQueryService.findTodoTeamById(teamId); return TodoTeamMapper.mapToTodoTeamRandomCodeResponse(todoTeam); } public ListResponse getWithdrawTodoTeam() { - User requestUser = userUtils.getAccessUser(); - List todoTeamList = todoTeamQueryService.findAllTodoTeamByUserId(requestUser.getId()); + final User requestUser = userUtils.getAccessUser(); + final List todoTeamList = todoTeamQueryService.findAllTodoTeamByUserId(requestUser.getId()); return ListResponse.from( - todoTeamList.stream() - .map(todoTeam -> new WithdrawTodoTeamResponse(todoTeam.getImageUrl(), todoTeam.getTeamName())) - .collect(Collectors.toList()) + todoTeamList.stream() + .map(todoTeam -> new WithdrawTodoTeamResponse(todoTeam.getImageUrl(), todoTeam.getTeamName())) + .toList() ); } - public TodoTeamInfoDetailResponse getTodoTeamInfo(Long todoTeamId) { - TodoTeam todoTeam = todoTeamQueryService.findTodoTeamById(todoTeamId); - Integer registerCount = registerQueryService.countRegisterByTodoTeamId(todoTeamId); - Integer petCount = petQueryService.countPetByTodoTeamId(todoTeamId); + public TodoTeamInfoDetailResponse getTodoTeamInfo(final Long todoTeamId) { + final TodoTeam todoTeam = todoTeamQueryService.findTodoTeamById(todoTeamId); + final Integer registerCount = registerQueryService.countRegisterByTodoTeamId(todoTeamId); + final Integer petCount = petQueryService.countPetByTodoTeamId(todoTeamId); return TodoTeamMapper.mapToTodoTeamInfoDetailResponse(todoTeam, registerCount, petCount); } From 68b6040f953510581ce858ac14328d1b64e3e216 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:05:19 +0900 Subject: [PATCH 27/40] =?UTF-8?q?PET-285=20refactor=20:=20=EB=B6=88?= =?UTF-8?q?=ED=95=84=EC=9A=94=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20=EB=B0=8F=20RegisterUtils=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=A6=AC=ED=8C=A9=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TodoGetUseCase.java | 42 ++++++++----------- .../service/TodoGetUseCaseTest.java | 8 +--- 2 files changed, 18 insertions(+), 32 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoGetUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoGetUseCase.java index e32d9bda..2b0fb0b3 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoGetUseCase.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoGetUseCase.java @@ -9,29 +9,28 @@ import com.pawith.todoapplication.mapper.TodoMapper; import com.pawith.tododomain.entity.*; import com.pawith.tododomain.service.AssignQueryService; -import com.pawith.tododomain.service.RegisterQueryService; import com.pawith.tododomain.service.TodoNotificationQueryService; -import com.pawith.tododomain.service.TodoQueryService; +import com.pawith.tododomain.util.AssignUtils; +import com.pawith.tododomain.util.RegisterUtils; import com.pawith.userdomain.entity.User; import com.pawith.userdomain.service.UserQueryService; import com.pawith.userdomain.utils.UserUtils; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.*; import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; +@Slf4j @ApplicationService @RequiredArgsConstructor @Transactional(readOnly = true) public class TodoGetUseCase { private final UserUtils userUtils; - private final TodoQueryService todoQueryService; private final UserQueryService userQueryService; - private final RegisterQueryService registerQueryService; private final AssignQueryService assignQueryService; private final TodoNotificationQueryService todoNotificationQueryService; @@ -46,27 +45,28 @@ public ListResponse getTodoListByTodoTeamId(final Long todoTea return new TodoInfoResponse(todo.getId(), category.getId(), category.getName(), todo.getDescription(), assign.getCompletionStatus()); }) .sorted(Comparator.comparing(TodoInfoResponse::getCategoryId).reversed()) - .collect(Collectors.toList()); + .toList(); return ListResponse.from(todoInfoResponses); } public ListResponse getTodoListByCategoryId(Long categoryId, LocalDate moveDate) { final User accessUser = userUtils.getAccessUser(); - final Map> todoAssignMap = - assignQueryService.findMapWithTodoKeyAndAssignListValueByCategoryIdAndScheduledDate(categoryId, moveDate); + final List assignList = assignQueryService.findAllAssignByCategoryIdAndScheduledDate(categoryId, moveDate); + + final Map> todoAssignMap = AssignUtils.convertToTodoAssignMap(assignList); final List todoList = List.copyOf(todoAssignMap.keySet()); final Map todoNotificationMap = todoNotificationQueryService.findMapTodoIdKeyAndTodoNotificationValueByTodoIdsAndUserId(todoList, accessUser.getId()); - final Map userMap = createUserIdMap(todoAssignMap); + final Map userMap = userQueryService.findMapWithUserIdKeyByIds(extractUserIds(assignList)); final List subTodoResponseList = todoList.stream() .map(todo -> { final AtomicReference isAssigned = new AtomicReference<>(false); - final List assigns = todoAssignMap.get(todo); - final List assignUserInfoResponses = getAssignUserInfoResponses(assigns, userMap, accessUser, isAssigned); + final List assignUserInfoResponses = + getAssignUserInfoResponses(todoAssignMap.get(todo), userMap, accessUser.getId(), isAssigned); final TodoNotificationInfoResponse todoNotificationInfoResponse = TodoNotificationInfoResponse.of(() -> Optional.ofNullable(todoNotificationMap.get(todo.getId()))); return TodoMapper.mapToCategorySubTodoResponse(todo, assignUserInfoResponses, isAssigned.get(), todoNotificationInfoResponse); @@ -74,30 +74,22 @@ public ListResponse getTodoListByCategoryId(Long catego return ListResponse.from(subTodoResponseList); } - private List getAssignUserInfoResponses(List assigns, Map userMap, User accessUser, AtomicReference isAssigned) { + private List getAssignUserInfoResponses(List assigns, Map userMap, Long accessUserId, AtomicReference isAssigned) { return assigns.stream() .map(assign -> { final Register register = assign.getRegister(); final User findUser = userMap.get(register.getUserId()); - if (Objects.equals(findUser.getId(), accessUser.getId())) { + if (Objects.equals(findUser.getId(), accessUserId)) { isAssigned.set(true); } return new AssignUserInfoResponse(findUser.getId(), findUser.getNickname(), assign.getCompletionStatus()); }) - .sorted(Comparator.comparing(assignUserInfoResponse -> !Objects.equals(assignUserInfoResponse.getAssigneeId(), accessUser.getId()))) - .collect(Collectors.toList()); + .sorted(Comparator.comparing(assignUserInfoResponse -> !Objects.equals(assignUserInfoResponse.getAssigneeId(), accessUserId))) + .toList(); } - private Map createUserIdMap(Map> groupByTodo) { - final List userIds = groupByTodo.values().stream() - .flatMap(Collection::stream) - .mapToLong(assign -> { - final Register register = assign.getRegister(); - return register.getUserId(); - }) - .boxed() - .collect(Collectors.toList()); - return userQueryService.findMapWithUserIdKeyByIds(userIds); + private List extractUserIds(List assigns) { + return RegisterUtils.extractUserIds(assigns.stream().map(Assign::getRegister).toList()); } } diff --git a/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/service/TodoGetUseCaseTest.java b/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/service/TodoGetUseCaseTest.java index 9ba202f0..d821f6bc 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/service/TodoGetUseCaseTest.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/test/java/com/pawith/todoapplication/service/TodoGetUseCaseTest.java @@ -15,14 +15,8 @@ class TodoGetUseCaseTest { @Mock private UserUtils userUtils; @Mock - private TodoQueryService todoQueryService; - @Mock - private CategoryQueryService categoryQueryService; - @Mock private UserQueryService userQueryService; @Mock - private RegisterQueryService registerQueryService; - @Mock private AssignQueryService assignQueryService; @Mock private TodoNotificationQueryService todoNotificationQueryService; @@ -31,7 +25,7 @@ class TodoGetUseCaseTest { @BeforeEach void init(){ - todoGetUseCase = new TodoGetUseCase(userUtils, todoQueryService, userQueryService, registerQueryService, assignQueryService, todoNotificationQueryService); + todoGetUseCase = new TodoGetUseCase(userUtils, userQueryService, assignQueryService, todoNotificationQueryService); } // @Test From 01e7263c036372fb3c9d28c02854332c73dfb398 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:09:58 +0900 Subject: [PATCH 28/40] =?UTF-8?q?PET-285=20refactor=20:=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/authdomain/jwt/JWTProvider.java | 24 ------------------- .../authdomain/jwt/JWTProviderTest.java | 14 ----------- 2 files changed, 38 deletions(-) diff --git a/Domain-Module/Auth-Module/Auth-Domain/src/main/java/com/pawith/authdomain/jwt/JWTProvider.java b/Domain-Module/Auth-Module/Auth-Domain/src/main/java/com/pawith/authdomain/jwt/JWTProvider.java index 5173d31f..0c01c7c0 100644 --- a/Domain-Module/Auth-Module/Auth-Domain/src/main/java/com/pawith/authdomain/jwt/JWTProvider.java +++ b/Domain-Module/Auth-Module/Auth-Domain/src/main/java/com/pawith/authdomain/jwt/JWTProvider.java @@ -52,18 +52,6 @@ public Token generateToken(final String email){ return new Token(accessToken, refreshToken); } - /** - * refresh token을 이용하여 access token 재발급 - * - * @throws InvalidTokenException : 잘못된 토큰 요청시 발생 - * @throws ExpiredTokenException : 만료된 토큰 요청시 발생 - */ - public String reIssueAccessToken(final String refreshToken) { - validateToken(refreshToken, TokenType.REFRESH_TOKEN); - final String email = extractEmailFromToken(refreshToken, TokenType.REFRESH_TOKEN); - return generateAccessToken(email); - } - public Token reIssueToken(final String refreshToken){ validateToken(refreshToken, TokenType.REFRESH_TOKEN); final String email = extractEmailFromToken(refreshToken, TokenType.REFRESH_TOKEN); @@ -75,18 +63,6 @@ public Token reIssueToken(final String refreshToken){ return new Token(newAccessToken, newRefreshToken); } - /** - * refresh token을 이용하여 refresh token 재발급 - * - * @throws InvalidTokenException : 잘못된 토큰 요청시 발생 - * @TODO : RefreshToken 인증 범위 결정 - */ - public String reIssueRefreshToken(final String refreshToken) { - validateToken(refreshToken, TokenType.REFRESH_TOKEN); - final String email = extractEmailFromToken(refreshToken, TokenType.REFRESH_TOKEN); - return generateRefreshToken(email); - } - public String extractEmailFromToken(String token, TokenType tokenType) { return initializeJwtParser(tokenType) .parseClaimsJws(token) diff --git a/Domain-Module/Auth-Module/Auth-Domain/src/test/java/com/pawith/authdomain/jwt/JWTProviderTest.java b/Domain-Module/Auth-Module/Auth-Domain/src/test/java/com/pawith/authdomain/jwt/JWTProviderTest.java index 3dca854b..de9483f9 100644 --- a/Domain-Module/Auth-Module/Auth-Domain/src/test/java/com/pawith/authdomain/jwt/JWTProviderTest.java +++ b/Domain-Module/Auth-Module/Auth-Domain/src/test/java/com/pawith/authdomain/jwt/JWTProviderTest.java @@ -58,20 +58,6 @@ void generateRefreshTokenByEmail(){ Assertions.assertThat(body.get(JWTConsts.TOKEN_TYPE)).isEqualTo(TokenType.REFRESH_TOKEN.toString()); } - @Test - @DisplayName("refreshToken이 만료되었을 때, accessToken 재발급시 예외가 발생한다.") - @SneakyThrows - void reIssueAccessTokenWithExpiredRefreshToken(){ - //given - final String randomEmail = FixtureMonkeyUtils.getConstructBasedFixtureMonkey().giveMeOne(String.class); - final String refreshToken = jwtProvider.generateRefreshToken(randomEmail); - Thread.sleep(JWTTestConsts.REFRESH_TOKEN_EXPIRED_TIME+1); - //when - //then - Assertions.assertThatCode(() -> jwtProvider.reIssueAccessToken(refreshToken)) - .isInstanceOf(ExpiredTokenException.class); - } - @Test @DisplayName("validateToken 메소드에 잘못된 token이 입력되면 InvalidTokenException 예외가 발생한다.") void validateTokenWithInvalidToken(){ From 8f6bcf7c5554b31a3dff07d8a6d5b47b24137f40 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:10:21 +0900 Subject: [PATCH 29/40] =?UTF-8?q?PET-285=20refactor=20:=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/tododomain/service/AssignQueryService.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java index 74078918..db9aaec4 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/AssignQueryService.java @@ -2,7 +2,6 @@ import com.pawith.commonmodule.annotation.DomainService; import com.pawith.tododomain.entity.Assign; -import com.pawith.tododomain.entity.Todo; import com.pawith.tododomain.exception.AssignNotFoundException; import com.pawith.tododomain.exception.TodoError; import com.pawith.tododomain.repository.AssignRepository; @@ -10,10 +9,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; @DomainService @Transactional(readOnly = true) @@ -26,12 +22,6 @@ public List findAllAssignByCategoryIdAndScheduledDate(Long categoryId, L return assignRepository.findAllByCategoryIdAndScheduledDateQuery(categoryId, scheduledDate); } - public Map> findMapWithTodoKeyAndAssignListValueByCategoryIdAndScheduledDate(Long categoryId, LocalDate scheduledDate) { - return assignRepository.findAllByCategoryIdAndScheduledDateQuery(categoryId, scheduledDate) - .stream() - .collect(Collectors.groupingBy(Assign::getTodo, LinkedHashMap::new, Collectors.toList())); - } - public List findAllByUserIdAndTodoTeamIdAndScheduledDate(Long userId, Long todoTeamId) { final LocalDate now = LocalDate.now(); return assignRepository.findAllByUserIdAndTodoTeamIdAndScheduledDateQuery(userId, todoTeamId, now); From 8f2f0f3ab28bb1aba1863d734fcf8570d08635a5 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:11:21 +0900 Subject: [PATCH 30/40] =?UTF-8?q?PET-285=20refactor=20:=20AlarmBatchReposi?= =?UTF-8?q?tory=20=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20BatchIns?= =?UTF-8?q?ertRepository=20=ED=99=95=EC=9E=A5=ED=95=98=EB=8F=84=EB=A1=9D?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/alarmmodule/repository/AlarmBatchRepository.java | 6 ++---- .../repository/impl/AlarmBatchRepositoryImpl.java | 2 +- .../java/com/pawith/alarmmodule/service/AlarmService.java | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Alarm-Module/src/main/java/com/pawith/alarmmodule/repository/AlarmBatchRepository.java b/Alarm-Module/src/main/java/com/pawith/alarmmodule/repository/AlarmBatchRepository.java index bebde830..4040ffac 100644 --- a/Alarm-Module/src/main/java/com/pawith/alarmmodule/repository/AlarmBatchRepository.java +++ b/Alarm-Module/src/main/java/com/pawith/alarmmodule/repository/AlarmBatchRepository.java @@ -1,11 +1,9 @@ package com.pawith.alarmmodule.repository; import com.pawith.alarmmodule.entity.Alarm; +import com.pawith.commonmodule.domain.BatchInsertRepository; import org.springframework.data.repository.NoRepositoryBean; -import java.util.Collection; - @NoRepositoryBean -public interface AlarmBatchRepository{ - void saveAllBatch(Collection entities); +public interface AlarmBatchRepository extends BatchInsertRepository { } diff --git a/Alarm-Module/src/main/java/com/pawith/alarmmodule/repository/impl/AlarmBatchRepositoryImpl.java b/Alarm-Module/src/main/java/com/pawith/alarmmodule/repository/impl/AlarmBatchRepositoryImpl.java index e2abde4e..e4054dac 100644 --- a/Alarm-Module/src/main/java/com/pawith/alarmmodule/repository/impl/AlarmBatchRepositoryImpl.java +++ b/Alarm-Module/src/main/java/com/pawith/alarmmodule/repository/impl/AlarmBatchRepositoryImpl.java @@ -15,7 +15,7 @@ public class AlarmBatchRepositoryImpl implements AlarmBatchRepository{ private final JdbcTemplate jdbcTemplate; @Override - public void saveAllBatch(Collection entities) { + public void batchInsert(Collection entities) { final String insertSql = """ INSERT INTO alarm (domain_id, message, alarm_category,is_read,alarm_user_id,created_at, updated_at) VALUES (?, ?, ?, ?, ?,now(),now()) diff --git a/Alarm-Module/src/main/java/com/pawith/alarmmodule/service/AlarmService.java b/Alarm-Module/src/main/java/com/pawith/alarmmodule/service/AlarmService.java index 2c9f1365..4f8856a5 100644 --- a/Alarm-Module/src/main/java/com/pawith/alarmmodule/service/AlarmService.java +++ b/Alarm-Module/src/main/java/com/pawith/alarmmodule/service/AlarmService.java @@ -51,6 +51,6 @@ public void changeAllAlarmStatusToRead(){ } public void saveAllAlarm(List alarms){ - alarmBatchRepository.saveAllBatch(alarms); + alarmBatchRepository.batchInsert(alarms); } } From 4e7c1fd2901e3daf63fd99e15422bfe124dc6350 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:11:37 +0900 Subject: [PATCH 31/40] =?UTF-8?q?PET-285=20feat=20:=20AssignUtils=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/tododomain/util/AssignUtils.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/util/AssignUtils.java diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/util/AssignUtils.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/util/AssignUtils.java new file mode 100644 index 00000000..450bd2d2 --- /dev/null +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/util/AssignUtils.java @@ -0,0 +1,20 @@ +package com.pawith.tododomain.util; + +import com.pawith.tododomain.entity.Assign; +import com.pawith.tododomain.entity.Todo; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class AssignUtils { + + public static Map> convertToTodoAssignMap(final List assigns) { + return assigns.stream() + .collect(Collectors.groupingBy(Assign::getTodo, LinkedHashMap::new, Collectors.toList())); + } +} From 74577ecb849dcd71200f568826fd7d7450ff2531 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:11:57 +0900 Subject: [PATCH 32/40] =?UTF-8?q?PET-285=20refactor=20:=20=ED=8C=A8?= =?UTF-8?q?=EB=B0=80=EB=A6=AC=20=EC=BD=94=EB=93=9C=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=A6=AC=ED=8C=A9=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pawith/tododomain/service/TodoTeamCodeManageService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/TodoTeamCodeManageService.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/TodoTeamCodeManageService.java index e4925c29..76627ba9 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/TodoTeamCodeManageService.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/TodoTeamCodeManageService.java @@ -21,8 +21,9 @@ public String generateRandomCode() { while (true) { final String randomUUID = UUID.randomUUID().toString(); final String[] split = randomUUID.split("-"); - if (!todoTeamRepository.existsByTeamCode(split[0]) && !occupiedTodoTeamCodeSet.contains(split[0])) { - occupiedTodoTeamCodeSet.addWithExpire(split[0], 1, TimeUnit.HOURS); + final String randomCode = split[0]; + if (!todoTeamRepository.existsByTeamCode(randomCode) && !occupiedTodoTeamCodeSet.contains(randomCode)) { + occupiedTodoTeamCodeSet.addWithExpire(randomCode, 1, TimeUnit.HOURS); return split[0]; } } From 5494633d0a3e44c5de7c6d6e307f46473ed2ad55 Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:12:13 +0900 Subject: [PATCH 33/40] =?UTF-8?q?PET-285=20refactor=20:=20=EB=B6=88?= =?UTF-8?q?=ED=95=84=EC=9A=94=20=EB=A1=AC=EB=B3=B5=20=EC=97=90=EB=85=B8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/pawith/authdomain/jwt/TokenType.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/Domain-Module/Auth-Module/Auth-Domain/src/main/java/com/pawith/authdomain/jwt/TokenType.java b/Domain-Module/Auth-Module/Auth-Domain/src/main/java/com/pawith/authdomain/jwt/TokenType.java index ba5295cc..f372dfb8 100644 --- a/Domain-Module/Auth-Module/Auth-Domain/src/main/java/com/pawith/authdomain/jwt/TokenType.java +++ b/Domain-Module/Auth-Module/Auth-Domain/src/main/java/com/pawith/authdomain/jwt/TokenType.java @@ -1,8 +1,6 @@ package com.pawith.authdomain.jwt; -import lombok.Getter; -@Getter public enum TokenType { ACCESS_TOKEN, REFRESH_TOKEN From 4ff498ab3dad16345144e09a0802f818e317a8df Mon Sep 17 00:00:00 2001 From: tlarbals824 Date: Tue, 2 Jan 2024 17:12:38 +0900 Subject: [PATCH 34/40] =?UTF-8?q?PET-285=20refactor=20:=20UserSignUpEvent?= =?UTF-8?q?=20class=20->=20record=20=EB=B3=80=EA=B2=BD=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20=EC=A1=B0=ED=9A=8C=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userapplication/handler/UserSignUpHandlerTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Domain-Module/User-Module/User-Application/src/test/java/com/pawith/userapplication/handler/UserSignUpHandlerTest.java b/Domain-Module/User-Module/User-Application/src/test/java/com/pawith/userapplication/handler/UserSignUpHandlerTest.java index de7bce1e..f5cb2ffd 100644 --- a/Domain-Module/User-Module/User-Application/src/test/java/com/pawith/userapplication/handler/UserSignUpHandlerTest.java +++ b/Domain-Module/User-Module/User-Application/src/test/java/com/pawith/userapplication/handler/UserSignUpHandlerTest.java @@ -42,7 +42,7 @@ void init() { void userSignUp() { //given final UserSignUpEvent mockUserSignUpEvent = FixtureMonkeyUtils.getConstructBasedFixtureMonkey().giveMeOne(UserSignUpEvent.class); - System.out.println(mockUserSignUpEvent.getProvider()); + System.out.println(mockUserSignUpEvent.provider()); //when userSignUpHandler.signUp(mockUserSignUpEvent); //then @@ -55,10 +55,10 @@ void userSignUp() { void userSignUpWithDifferentProvider() { //given final UserSignUpEvent mockUserSignUpEvent = FixtureMonkeyUtils.getConstructBasedFixtureMonkey().giveMeOne(UserSignUpEvent.class); - given(userQueryService.checkEmailAlreadyExist(mockUserSignUpEvent.getEmail())).willReturn(true); + given(userQueryService.checkEmailAlreadyExist(mockUserSignUpEvent.email())).willReturn(true); doThrow(AccountAlreadyExistException.class) .when(userQueryService) - .checkAccountAlreadyExist((mockUserSignUpEvent.getEmail()), (mockUserSignUpEvent.getProvider())); + .checkAccountAlreadyExist((mockUserSignUpEvent.email()), (mockUserSignUpEvent.provider())); //when //then Assertions.assertThatCode(() -> userSignUpHandler.signUp(mockUserSignUpEvent)) From eec8fdb67b6389694c2ed9c748ec839af3c85a57 Mon Sep 17 00:00:00 2001 From: seeunjang Date: Fri, 12 Jan 2024 19:31:14 +0900 Subject: [PATCH 35/40] =?UTF-8?q?PET-257=20refactor=20:=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20API=20=EC=9D=91=EB=8B=B5=20DTO=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/TodoValidateResponse.java | 15 --------------- .../dto/response/ValidateResponse.java | 4 ++++ .../service/TodoValidationUseCase.java | 6 +++--- .../pawith/todopresentation/TodoController.java | 2 +- 4 files changed, 8 insertions(+), 19 deletions(-) delete mode 100644 Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoValidateResponse.java create mode 100644 Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/ValidateResponse.java diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoValidateResponse.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoValidateResponse.java deleted file mode 100644 index 45ae068d..00000000 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/TodoValidateResponse.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.pawith.todoapplication.dto.response; - -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@Builder -@AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PROTECTED) -public class TodoValidateResponse { - private Boolean isNotValidate; -} diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/ValidateResponse.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/ValidateResponse.java new file mode 100644 index 00000000..6f874632 --- /dev/null +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/dto/response/ValidateResponse.java @@ -0,0 +1,4 @@ +package com.pawith.todoapplication.dto.response; + +public record ValidateResponse(Boolean isNotValidate) { +} diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoValidationUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoValidationUseCase.java index 0f961877..c58db63e 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoValidationUseCase.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/TodoValidationUseCase.java @@ -1,7 +1,7 @@ package com.pawith.todoapplication.service; import com.pawith.commonmodule.annotation.ApplicationService; -import com.pawith.todoapplication.dto.response.TodoValidateResponse; +import com.pawith.todoapplication.dto.response.ValidateResponse; import com.pawith.tododomain.entity.Register; import com.pawith.tododomain.entity.Todo; import com.pawith.tododomain.service.RegisterQueryService; @@ -21,11 +21,11 @@ public class TodoValidationUseCase { private final RegisterQueryService registerQueryService; private final TodoValidateService todoValidateService; - public TodoValidateResponse validateDeleteAndUpdateTodoByTodoId(Long todoTeamId, Long todoId) { + public ValidateResponse validateDeleteAndUpdateTodoByTodoId(Long todoTeamId, Long todoId) { final User accessUser = userUtils.getAccessUser(); final Todo todo = todoQueryService.findTodoByTodoId(todoId); final Register register = registerQueryService.findRegisterByTodoTeamIdAndUserId(todoTeamId, accessUser.getId()); boolean isNotValidate = todoValidateService.validateDeleteAndUpdate(todo, register); - return new TodoValidateResponse(isNotValidate); + return new ValidateResponse(isNotValidate); } } diff --git a/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/TodoController.java b/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/TodoController.java index 48f4fa32..7edf9180 100644 --- a/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/TodoController.java +++ b/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/TodoController.java @@ -89,7 +89,7 @@ public void deleteTodoById(@PathVariable Long todoId){ } @GetMapping("/{todoTeamId}/todos/{todoId}/validate") - public TodoValidateResponse validateDeleteAndUpdateTodo(@PathVariable Long todoTeamId, @PathVariable Long todoId){ + public ValidateResponse validateDeleteAndUpdateTodo(@PathVariable Long todoTeamId, @PathVariable Long todoId){ return todoValidationUseCase.validateDeleteAndUpdateTodoByTodoId(todoTeamId, todoId); } From feb955cc275ea16725a5a716e1d91f04b3257574 Mon Sep 17 00:00:00 2001 From: seeunjang Date: Fri, 12 Jan 2024 19:32:16 +0900 Subject: [PATCH 36/40] =?UTF-8?q?PET-257=20test=20:=20=ED=88=AC=EB=91=90?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20=EB=B0=8F=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20API=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/pawith/todopresentation/TodoControllerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java b/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java index bb117fdc..9e116728 100644 --- a/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java +++ b/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java @@ -349,9 +349,9 @@ void validateDeleteAndUpdateTodo() throws Exception { //given final Long testTodoTeamId = FixtureMonkeyUtils.getJavaTypeBasedFixtureMonkey().giveMeOne(Long.class); final Long testTodoId = FixtureMonkeyUtils.getJavaTypeBasedFixtureMonkey().giveMeOne(Long.class); - final TodoValidateResponse todoValidateResponse = FixtureMonkeyUtils.getReflectionbasedFixtureMonkey().giveMeOne(TodoValidateResponse.class); + final ValidateResponse validateResponse = FixtureMonkeyUtils.getReflectionbasedFixtureMonkey().giveMeOne(ValidateResponse.class); - given(todoValidationUseCase.validateDeleteAndUpdateTodoByTodoId(any(), any())).willReturn(todoValidateResponse); + given(todoValidationUseCase.validateDeleteAndUpdateTodoByTodoId(any(), any())).willReturn(validateResponse); MockHttpServletRequestBuilder request = get(TODO_REQUEST_URL + "/{todoTeamId}/todos/{todoId}/validate", testTodoTeamId, testTodoId) .header("Authorization", "Bearer accessToken"); //when From d86722d0a72114dbc71b8f24cd4f6096a4269d55 Mon Sep 17 00:00:00 2001 From: seeunjang Date: Fri, 12 Jan 2024 19:33:12 +0900 Subject: [PATCH 37/40] =?UTF-8?q?PET-257=20refactor=20:=20=ED=8C=80=20?= =?UTF-8?q?=ED=83=88=ED=87=B4,=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=ED=83=88?= =?UTF-8?q?=ED=87=B4=20=EA=B2=80=EC=A6=9D=20API=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UnregisterUseCase.java | 11 +++++--- .../service/RegisterValidateService.java | 27 ++++++++----------- .../todopresentation/RegisterController.java | 13 ++++----- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/UnregisterUseCase.java b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/UnregisterUseCase.java index de689aac..3d9872b5 100644 --- a/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/UnregisterUseCase.java +++ b/Domain-Module/Todo-Module/Todo-Application/src/main/java/com/pawith/todoapplication/service/UnregisterUseCase.java @@ -1,6 +1,7 @@ package com.pawith.todoapplication.service; import com.pawith.commonmodule.annotation.ApplicationService; +import com.pawith.todoapplication.dto.response.ValidateResponse; import com.pawith.tododomain.entity.Register; import com.pawith.tododomain.service.RegisterQueryService; import com.pawith.tododomain.service.RegisterValidateService; @@ -24,15 +25,17 @@ public void unregisterTodoTeam(final Long todoTeamId) { register.unregister(); } - public void validateRegisterDeletable(final Long todoTeamId) { + public ValidateResponse validateRegisterDeletable(final Long todoTeamId) { final User user = userUtils.getAccessUser(); final Register register = registerQueryService.findRegisterByTodoTeamIdAndUserId(todoTeamId, user.getId()); - registerValidateService.validatePresidentRegisterDeletable(register); + boolean isNotValidate = registerValidateService.validatePresidentRegisterDeletable(register); + return new ValidateResponse(isNotValidate); } - public void validateRegistersDeletable() { + public ValidateResponse validateRegistersDeletable() { final User user = userUtils.getAccessUser(); final List registers = registerQueryService.findAllRegistersByUserId(user.getId()); - registerValidateService.validateRegisterDeletable(registers); + boolean isNotValidate = registerValidateService.validateRegisterDeletable(registers); + return new ValidateResponse(isNotValidate); } } diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/RegisterValidateService.java b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/RegisterValidateService.java index e30aa8d9..ae946113 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/RegisterValidateService.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/main/java/com/pawith/tododomain/service/RegisterValidateService.java @@ -20,24 +20,19 @@ public class RegisterValidateService { private final RegisterRepository registerRepository; - public void validatePresidentRegisterDeletable(final Register register) { - if (register.isPresident()) { - final TodoTeam todoTeam = register.getTodoTeam(); - final Integer registerCount = registerRepository.countByTodoTeamIdQuery(todoTeam.getId()); - if (registerCount > 1) { - throw new UnregistrableException(TodoError.CANNOT_PRESIDENT_UNREGISTRABLE); - } - } + public boolean validatePresidentRegisterDeletable(final Register register) { + return register.isPresident() && registerCountGreaterThanOne(register); + } + + public boolean validateRegisterDeletable(final List registerList) { + return registerList.stream() + .anyMatch(register -> register.isPresident() && registerCountGreaterThanOne(register)); } - public void validateRegisterDeletable(final List registerList) { - registerList.forEach(register -> { - final Long todoTeamId = register.getTodoTeam().getId(); - final Integer registerCount = registerRepository.countByTodoTeamIdQuery(todoTeamId); - if (register.isPresident() && registerCount > 1) { - throw new UnregistrableException(TodoError.CANNOT_PRESIDENT_UNREGISTRABLE); - } - }); + private boolean registerCountGreaterThanOne(Register register) { + final Long todoTeamId = register.getTodoTeam().getId(); + final Integer registerCount = registerRepository.countByTodoTeamIdQuery(todoTeamId); + return registerCount > 1; } public void validateAuthorityChangeable(final Register userRegister, final Authority authority) { diff --git a/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/RegisterController.java b/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/RegisterController.java index 68f7bc4b..1fc984cf 100644 --- a/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/RegisterController.java +++ b/Domain-Module/Todo-Module/Todo-Presentation/src/main/java/com/pawith/todopresentation/RegisterController.java @@ -6,6 +6,7 @@ import com.pawith.todoapplication.dto.response.RegisterManageInfoResponse; import com.pawith.todoapplication.dto.response.RegisterSearchInfoResponse; import com.pawith.todoapplication.dto.response.RegisterTermResponse; +import com.pawith.todoapplication.dto.response.ValidateResponse; import com.pawith.todoapplication.service.ChangeRegisterUseCase; import com.pawith.todoapplication.service.RegistersGetUseCase; import com.pawith.todoapplication.service.TodoTeamRegisterUseCase; @@ -31,17 +32,17 @@ public void deleteRegister(@PathVariable Long todoTeamId) { /** * 팀 탈퇴 시 사용하는 검증 API */ - @PostMapping("/{todoTeamId}/registers/validate") - public void validateRegisterDeletable(@PathVariable Long todoTeamId) { - unregisterUseCase.validateRegisterDeletable(todoTeamId); + @GetMapping("/{todoTeamId}/registers/validate") + public ValidateResponse validateRegisterDeletable(@PathVariable Long todoTeamId) { + return unregisterUseCase.validateRegisterDeletable(todoTeamId); } /** * 서비스 탈퇴 시 사용하는 검증 API */ - @PostMapping("/registers/validate") - public void validateRegistersDeletable() { - unregisterUseCase.validateRegistersDeletable(); + @GetMapping("/registers/validate") + public ValidateResponse validateRegistersDeletable() { + return unregisterUseCase.validateRegistersDeletable(); } @PostMapping("/registers") From 358b2e4ba2f2b93d1f1d08e771ef7dbf0d3e6216 Mon Sep 17 00:00:00 2001 From: seeunjang Date: Fri, 12 Jan 2024 19:41:22 +0900 Subject: [PATCH 38/40] =?UTF-8?q?PET-257=20refactor=20:=20=ED=8C=80=20?= =?UTF-8?q?=ED=83=88=ED=87=B4,=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=ED=83=88?= =?UTF-8?q?=ED=87=B4=20=EA=B2=80=EC=A6=9D=20API=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95,=20?= =?UTF-8?q?=EB=AC=B8=EC=84=9C=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/docs/asciidoc/Todo-API.adoc | 3 ++- .../todopresentation/RegisterControllerTest.java | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Presentation/src/docs/asciidoc/Todo-API.adoc b/Domain-Module/Todo-Module/Todo-Presentation/src/docs/asciidoc/Todo-API.adoc index f9a3d5f7..c9b2dbc4 100644 --- a/Domain-Module/Todo-Module/Todo-Presentation/src/docs/asciidoc/Todo-API.adoc +++ b/Domain-Module/Todo-Module/Todo-Presentation/src/docs/asciidoc/Todo-API.adoc @@ -220,7 +220,8 @@ operation::register-controller-test/validate-register-deletable[snippets='http-r [[서비스-탈퇴-검증]] === 서비스 탈퇴 검증 -operation::register-controller-test/validate-registers-deletable[snippets='http-request,request-headers,http-response'] +operation::register-controller-test/validate-registers-deletable[snippets='http-request,request-headers,http-response,response-fields'] + [[PET-API]] == PET API diff --git a/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/RegisterControllerTest.java b/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/RegisterControllerTest.java index 60006ae7..177b4daf 100644 --- a/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/RegisterControllerTest.java +++ b/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/RegisterControllerTest.java @@ -274,7 +274,10 @@ void unregisterRegister() throws Exception { void validateRegisterDeletable() throws Exception { //given final Long todoTeamId = FixtureMonkeyUtils.getJavaTypeBasedFixtureMonkey().giveMeOne(Long.class); - MockHttpServletRequestBuilder request = post(REGISTER_REQUEST_URL + "/{todoTeamId}/registers/validate", todoTeamId) + final ValidateResponse validateResponse = FixtureMonkeyUtils.getConstructBasedFixtureMonkey().giveMeOne(ValidateResponse.class); + + given(unregisterUseCase.validateRegisterDeletable(todoTeamId)).willReturn(validateResponse); + MockHttpServletRequestBuilder request = get(REGISTER_REQUEST_URL + "/{todoTeamId}/registers/validate", todoTeamId) .header("Authorization", "Bearer accessToken"); //when ResultActions result = mvc.perform(request); @@ -286,6 +289,9 @@ void validateRegisterDeletable() throws Exception { ), pathParameters( parameterWithName("todoTeamId").description("검증할 TodoTeam의 Id") + ), + responseFields( + fieldWithPath("isNotValidate").description("TodoTeam 탈퇴 검증 여부 true면 탈퇴 불가능") ) )); } @@ -294,7 +300,10 @@ void validateRegisterDeletable() throws Exception { @DisplayName("서비스 탈퇴 가능 여부 검증 API 테스트") void validateRegistersDeletable() throws Exception { //given - MockHttpServletRequestBuilder request = post(REGISTER_REQUEST_URL + "/registers/validate") + final ValidateResponse validateResponse = FixtureMonkeyUtils.getConstructBasedFixtureMonkey().giveMeOne(ValidateResponse.class); + + given(unregisterUseCase.validateRegistersDeletable()).willReturn(validateResponse); + MockHttpServletRequestBuilder request = get(REGISTER_REQUEST_URL + "/registers/validate") .header("Authorization", "Bearer accessToken"); //when ResultActions result = mvc.perform(request); @@ -303,6 +312,9 @@ void validateRegistersDeletable() throws Exception { .andDo(resultHandler.document( requestHeaders( headerWithName("Authorization").description("access 토큰") + ), + responseFields( + fieldWithPath("isNotValidate").description("서비스 탈퇴 검증 여부 true면 탈퇴 불가능") ) )); } From ea5a159fbdf34e6a7b14dd5c044b5a254e7c754f Mon Sep 17 00:00:00 2001 From: seeunjang Date: Fri, 12 Jan 2024 19:53:40 +0900 Subject: [PATCH 39/40] =?UTF-8?q?PET-257=20test=20:=20RegisterValidateServ?= =?UTF-8?q?iceTest=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/RegisterValidateServiceTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Domain-Module/Todo-Module/Todo-Domain/src/test/java/com/pawith/tododomain/service/RegisterValidateServiceTest.java b/Domain-Module/Todo-Module/Todo-Domain/src/test/java/com/pawith/tododomain/service/RegisterValidateServiceTest.java index 9bb856ae..d58684d6 100644 --- a/Domain-Module/Todo-Module/Todo-Domain/src/test/java/com/pawith/tododomain/service/RegisterValidateServiceTest.java +++ b/Domain-Module/Todo-Module/Todo-Domain/src/test/java/com/pawith/tododomain/service/RegisterValidateServiceTest.java @@ -34,7 +34,7 @@ void init() { } @Test - @DisplayName("운영진 register 탈퇴 가능 여부 테스트 - 운영진이 1명이고, register가 2명 이상일 때 UnregisterableException 발생") + @DisplayName("운영진 register 탈퇴 가능 여부 테스트 - 운영진이 1명이고, register가 2명 이상일 때 true 반환") void validatePresidentRegisterDeletable_one_president_two_register_throw_unregisterableException() { // given final Register mockRegister = FixtureMonkeyUtils.getReflectionbasedFixtureMonkey().giveMeBuilder(Register.class) @@ -45,11 +45,11 @@ void validatePresidentRegisterDeletable_one_president_two_register_throw_unregis given(registerRepository.countByTodoTeamIdQuery(mockRegister.getTodoTeam().getId())).willReturn(registerCount); // when // then - Assertions.assertThatCode(() -> registerValidateService.validatePresidentRegisterDeletable(mockRegister)).isInstanceOf(UnregistrableException.class); + Assertions.assertThat(registerValidateService.validatePresidentRegisterDeletable(mockRegister)).isTrue(); } @Test - @DisplayName("register 탈퇴 가능 여부 테스트 - 운영진이 1명 이상이고, register가 1명일 때 UnregisterableException 발생하지 않음") + @DisplayName("register 탈퇴 가능 여부 테스트 - 운영진이 1명 이상이고, register가 1명일 때 false 반환") void validateRegisterDeletable_one_over_president_one_register() { // given final Register mockRegister = FixtureMonkeyUtils.getReflectionbasedFixtureMonkey().giveMeBuilder(Register.class) @@ -60,11 +60,11 @@ void validateRegisterDeletable_one_over_president_one_register() { BDDMockito.lenient().when(registerRepository.countByTodoTeamIdQuery(mockRegister.getTodoTeam().getId())).thenReturn(registerCount); // when // then - Assertions.assertThatCode(() -> registerValidateService.validatePresidentRegisterDeletable(mockRegister)).doesNotThrowAnyException(); + Assertions.assertThat(registerValidateService.validatePresidentRegisterDeletable(mockRegister)).isFalse(); } @Test - @DisplayName("사용자 탈퇴 가능 여부 테스트 - 참여중인 todo team 중 운영진으로 포함된 todo team이 1개 이상일 때 UnregisterableException 발생") + @DisplayName("사용자 탈퇴 가능 여부 테스트 - 참여중인 todo team 중 운영진으로 포함된 todo team이 1개 이상일 때 true 반환") void validateRegisterDeletable_with_president_register() { // given final List registerList = FixtureMonkeyUtils.getReflectionbasedFixtureMonkey().giveMeBuilder(Register.class) @@ -77,11 +77,11 @@ void validateRegisterDeletable_with_president_register() { }); // when // then - Assertions.assertThatCode(() -> registerValidateService.validateRegisterDeletable(registerList)).isInstanceOf(UnregistrableException.class); + Assertions.assertThat(registerValidateService.validateRegisterDeletable(registerList)).isTrue(); } @Test - @DisplayName("사용자 탈퇴 가능 여부 테스트 - 참여중인 todo team 중 운영진으로 포함된 todo team이 1개 이하일 때 UnregisterableException 발생하지 않음") + @DisplayName("사용자 탈퇴 가능 여부 테스트 - 참여중인 todo team 중 운영진으로 포함된 todo team이 1개 이하일 때 false 반환") void validateRegisterDeletable_without_president_register() { // given final List registerList = FixtureMonkeyUtils.getReflectionbasedFixtureMonkey().giveMeBuilder(Register.class) @@ -94,7 +94,7 @@ void validateRegisterDeletable_without_president_register() { }); // when // then - Assertions.assertThatCode(() -> registerValidateService.validateRegisterDeletable(registerList)).doesNotThrowAnyException(); + Assertions.assertThat(registerValidateService.validateRegisterDeletable(registerList)).isFalse(); } @Test From cf6b588ea81ebc0b416c4ee773a7a4ecd049fc1d Mon Sep 17 00:00:00 2001 From: seeunjang Date: Fri, 12 Jan 2024 20:00:30 +0900 Subject: [PATCH 40/40] =?UTF-8?q?PET-257=20test=20:=20ValidateResponse=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EB=B0=A9=EC=8B=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/pawith/todopresentation/TodoControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java b/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java index 9e116728..ed3212a9 100644 --- a/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java +++ b/Domain-Module/Todo-Module/Todo-Presentation/src/test/java/com/pawith/todopresentation/TodoControllerTest.java @@ -349,7 +349,7 @@ void validateDeleteAndUpdateTodo() throws Exception { //given final Long testTodoTeamId = FixtureMonkeyUtils.getJavaTypeBasedFixtureMonkey().giveMeOne(Long.class); final Long testTodoId = FixtureMonkeyUtils.getJavaTypeBasedFixtureMonkey().giveMeOne(Long.class); - final ValidateResponse validateResponse = FixtureMonkeyUtils.getReflectionbasedFixtureMonkey().giveMeOne(ValidateResponse.class); + final ValidateResponse validateResponse = FixtureMonkeyUtils.getConstructBasedFixtureMonkey().giveMeOne(ValidateResponse.class); given(todoValidationUseCase.validateDeleteAndUpdateTodoByTodoId(any(), any())).willReturn(validateResponse); MockHttpServletRequestBuilder request = get(TODO_REQUEST_URL + "/{todoTeamId}/todos/{todoId}/validate", testTodoTeamId, testTodoId)