diff --git a/src/main/java/com/gloddy/server/apply/api/in/ApplyPayloadApi.java b/src/main/java/com/gloddy/server/apply/api/in/ApplyPayloadApi.java index 3128bec1..b5bf4258 100644 --- a/src/main/java/com/gloddy/server/apply/api/in/ApplyPayloadApi.java +++ b/src/main/java/com/gloddy/server/apply/api/in/ApplyPayloadApi.java @@ -20,7 +20,7 @@ public class ApplyPayloadApi { @GetMapping("/applies/{applyId}") public ResponseEntity getApplyPayload( @PathVariable("applyId") Long applyId, - @RequestParam("eventType") ApplyEventType eventType + @RequestParam(value = "eventType", required = false) ApplyEventType eventType ) { ApplyPayload response = applyPayloadService.getPayload(applyId, eventType); return ResponseEntity.ok(response); diff --git a/src/main/java/com/gloddy/server/group/api/in/GroupPayloadApi.java b/src/main/java/com/gloddy/server/group/api/in/GroupPayloadApi.java index 61902693..6f7521df 100644 --- a/src/main/java/com/gloddy/server/group/api/in/GroupPayloadApi.java +++ b/src/main/java/com/gloddy/server/group/api/in/GroupPayloadApi.java @@ -23,7 +23,7 @@ public class GroupPayloadApi { @GetMapping("/groups/{groupId}") public ResponseEntity getGroupPayload( @PathVariable("groupId") Long groupId, - @RequestParam("eventType") GroupPayloadEventType eventType + @RequestParam(value = "eventType", required = false) GroupPayloadEventType eventType ) { GroupPayload response = groupPayloadService.getGroupPayload(groupId, eventType); return ApiResponse.ok(response); diff --git a/src/main/java/com/gloddy/server/group/event/GroupCreateEvent.java b/src/main/java/com/gloddy/server/group/event/GroupCreateEvent.java index 8e7c8ea1..2c3cd80c 100644 --- a/src/main/java/com/gloddy/server/group/event/GroupCreateEvent.java +++ b/src/main/java/com/gloddy/server/group/event/GroupCreateEvent.java @@ -11,4 +11,5 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public class GroupCreateEvent implements Event { private Long userId; + private Long groupId; } diff --git a/src/main/java/com/gloddy/server/messaging/sns/Topic.java b/src/main/java/com/gloddy/server/messaging/sns/Topic.java index 55bf6431..241d41b0 100644 --- a/src/main/java/com/gloddy/server/messaging/sns/Topic.java +++ b/src/main/java/com/gloddy/server/messaging/sns/Topic.java @@ -8,6 +8,8 @@ public enum Topic { APPLY_APPROVE("지원서가 승인 처리 되었을 때", "apply-topic"), APPLY_REFUSE("지원서가 거절 처리 되었을 때", "apply-topic"), + CREATE_GROUP("그룹이 생성 되었을 때", "group-topic"), + CREATE_GENERAL_ARTICLE("그룹 일반 게시글이 생성될 떄", "group-article-topic"), CREATE_NOTICE_ARTICLE("그룹 공지글이 생성될 때", "group-article-topic"), diff --git a/src/main/java/com/gloddy/server/outbox/adapter/group/event/GroupEventType.java b/src/main/java/com/gloddy/server/outbox/adapter/group/event/GroupEventType.java index 4aa80fbd..8d986da3 100644 --- a/src/main/java/com/gloddy/server/outbox/adapter/group/event/GroupEventType.java +++ b/src/main/java/com/gloddy/server/outbox/adapter/group/event/GroupEventType.java @@ -6,6 +6,8 @@ @AllArgsConstructor @Getter public enum GroupEventType { + + CREATE_GROUP("모임이 생성될 때"), APPROACHING_GROUP("모임 시작이 임박할 때"), END_GROUP("모임이 완료됏을 때"); diff --git a/src/main/java/com/gloddy/server/outbox/adapter/group/handler/GroupAdapterEventHandler.java b/src/main/java/com/gloddy/server/outbox/adapter/group/handler/GroupAdapterEventHandler.java index 937e3244..7d424d28 100644 --- a/src/main/java/com/gloddy/server/outbox/adapter/group/handler/GroupAdapterEventHandler.java +++ b/src/main/java/com/gloddy/server/outbox/adapter/group/handler/GroupAdapterEventHandler.java @@ -3,6 +3,7 @@ import com.gloddy.server.article.event.GroupArticleCreateEvent; import com.gloddy.server.batch.group.event.GroupApproachingEvent; import com.gloddy.server.batch.group.event.GroupEndEvent; +import com.gloddy.server.group.event.GroupCreateEvent; import com.gloddy.server.group_member.event.GroupMemberLeaveEvent; import com.gloddy.server.outbox.adapter.group.event.GroupAdapterEvent; import com.gloddy.server.outbox.adapter.group.event.GroupArticleAdapterEvent; @@ -21,6 +22,12 @@ public class GroupAdapterEventHandler { private final OutboxEventSaveService outboxEventSaveService; + @TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT) + public void handle(GroupCreateEvent event) { + GroupAdapterEvent adapterEvent = GroupEventMapper.mapToGroupAdapterEvent(event); + outboxEventSaveService.save(adapterEvent); + } + @TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT) public void handle(GroupArticleCreateEvent event) { GroupArticleAdapterEvent adapterEvent = GroupEventMapper.mapToGroupArticleAdapterEvent(event); diff --git a/src/main/java/com/gloddy/server/outbox/adapter/group/mapper/GroupEventMapper.java b/src/main/java/com/gloddy/server/outbox/adapter/group/mapper/GroupEventMapper.java index 1b3b1b96..b07ea342 100644 --- a/src/main/java/com/gloddy/server/outbox/adapter/group/mapper/GroupEventMapper.java +++ b/src/main/java/com/gloddy/server/outbox/adapter/group/mapper/GroupEventMapper.java @@ -3,6 +3,7 @@ import com.gloddy.server.article.event.GroupArticleCreateEvent; import com.gloddy.server.batch.group.event.GroupApproachingEvent; import com.gloddy.server.batch.group.event.GroupEndEvent; +import com.gloddy.server.group.event.GroupCreateEvent; import com.gloddy.server.group_member.event.GroupMemberLeaveEvent; import com.gloddy.server.outbox.adapter.group.event.GroupAdapterEvent; import com.gloddy.server.outbox.adapter.group.event.GroupArticleAdapterEvent; @@ -46,4 +47,12 @@ public static GroupAdapterEvent mapToGroupAdapterEvent(GroupEndEvent event) { LocalDateTime.now() ); } + + public static GroupAdapterEvent mapToGroupAdapterEvent(GroupCreateEvent event) { + return new GroupAdapterEvent( + event.getGroupId(), + GroupEventType.CREATE_GROUP, + LocalDateTime.now() + ); + } } diff --git a/src/main/java/com/gloddy/server/user/domain/User.java b/src/main/java/com/gloddy/server/user/domain/User.java index 3d1b949c..bd395048 100644 --- a/src/main/java/com/gloddy/server/user/domain/User.java +++ b/src/main/java/com/gloddy/server/user/domain/User.java @@ -87,7 +87,7 @@ public Group saveGroup(GroupFactory groupFactory, GroupEventProducer groupEventP GroupCommandHandler groupCommandHandler, GroupRequest.Create groupInfo) { Group group = groupCommandHandler.save(groupFactory.getGroupFrom(this, groupInfo)); - groupEventProducer.produceEvent(new GroupCreateEvent(this.getId())); + groupEventProducer.produceEvent(new GroupCreateEvent(this.getId() ,group.getId())); groupEventProducer.produceEvent(new GroupParticipateEvent(this.getId(), group.getId())); return group; } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index b91f4178..5a0f2e68 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -56,6 +56,7 @@ spring: group-article-topic: ${GROUP_ARTICLE_TOPIC} group-status-topic: ${GROUP_STATUS_TOPIC} user-topic: ${USER_TOPIC} + group-topic: ${GROUP_TOPIC} logging: level: