Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/main/java/clap/server/TaskflowApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
@EnableAsync
public class TaskflowApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ public void createComment(
public void createAttachmentComment(
@AuthenticationPrincipal SecurityUserDetails userInfo,
@PathVariable Long taskId,
@RequestPart(name = "attachment") @NotNull List<MultipartFile> attachments) {
postCommentUsecase.saveCommentAttachment(userInfo.getUserId(), taskId, attachments);
@RequestPart(name = "attachment") @NotNull MultipartFile attachment) {
postCommentUsecase.saveCommentAttachment(userInfo.getUserId(), taskId, attachment);
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.outbound.api;

import clap.server.adapter.outbound.api.dto.SendAgitRequest;
import clap.server.adapter.outbound.api.dto.SendWebhookRequest;
import clap.server.adapter.outbound.persistense.entity.notification.constant.NotificationType;
import clap.server.application.port.outbound.webhook.SendAgitPort;
import clap.server.common.annotation.architecture.ExternalApiAdapter;
Expand All @@ -20,7 +20,7 @@ public class AgitClient implements SendAgitPort {
private String AGIT_WEBHOOK_URL;

@Override
public void sendAgit(SendAgitRequest request) {
public void sendAgit(SendWebhookRequest request) {
RestTemplate restTemplate = new RestTemplate();

String message = null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.outbound.api;

import clap.server.adapter.outbound.api.dto.SendKakaoWorkRequest;
import clap.server.adapter.outbound.api.dto.SendWebhookRequest;
import clap.server.adapter.outbound.persistense.entity.notification.constant.NotificationType;
import clap.server.application.port.outbound.webhook.SendKaKaoWorkPort;
import clap.server.common.annotation.architecture.ExternalApiAdapter;
Expand All @@ -26,7 +26,7 @@ public class KakaoWorkClient implements SendKaKaoWorkPort {
private final ObjectBlockService makeObjectBlock;

@Override
public void sendKakaoWord(SendKakaoWorkRequest request) {
public void sendKakaoWork(SendWebhookRequest request) {
RestTemplate restTemplate = new RestTemplate();

// Payload 생성
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package clap.server.adapter.outbound.api;


import clap.server.adapter.outbound.api.dto.SendKakaoWorkRequest;
import clap.server.adapter.outbound.api.dto.SendWebhookRequest;
import clap.server.adapter.outbound.persistense.repository.notification.NotificationRepository;
import clap.server.application.port.outbound.webhook.MakeObjectBlockPort;
import clap.server.common.annotation.architecture.PersistenceAdapter;
Expand All @@ -19,7 +18,7 @@ public class ObjectBlockService implements MakeObjectBlockPort {
private final NotificationRepository notificationRepository;

@Override
public String makeTaskRequestBlock(SendKakaoWorkRequest request) {
public String makeTaskRequestBlock(SendWebhookRequest request) {
// Blocks 데이터 생성
Object[] blocks = new Object[]{
// Header 블록
Expand Down Expand Up @@ -92,7 +91,7 @@ public String makeTaskRequestBlock(SendKakaoWorkRequest request) {
}

@Override
public String makeNewProcessorBlock(SendKakaoWorkRequest request) {
public String makeNewProcessorBlock(SendWebhookRequest request) {
Object[] blocks = new Object[]{
Map.of(
"type", "header",
Expand Down Expand Up @@ -148,7 +147,7 @@ public String makeNewProcessorBlock(SendKakaoWorkRequest request) {
try {
payload = "{" +
"\"email\":\"" + request.email() + "\"," +
"\"text\":\"작업 담당자 할당 알림\"," + // fallback 메시지
"\"text\":\"작업 담당자 선정 알림\"," + // fallback 메시지
"\"blocks\":" + objectMapper.writeValueAsString(blocks) +
"}";
} catch (JsonProcessingException e) {
Expand All @@ -159,7 +158,7 @@ public String makeNewProcessorBlock(SendKakaoWorkRequest request) {
}

@Override
public String makeProcessorChangeBlock(SendKakaoWorkRequest request) {
public String makeProcessorChangeBlock(SendWebhookRequest request) {
Object[] blocks = new Object[]{
Map.of(
"type", "header",
Expand Down Expand Up @@ -227,7 +226,7 @@ public String makeProcessorChangeBlock(SendKakaoWorkRequest request) {
}

@Override
public String makeCommentBlock(SendKakaoWorkRequest request) {
public String makeCommentBlock(SendWebhookRequest request) {
Object[] blocks = new Object[]{
Map.of(
"type", "header",
Expand Down Expand Up @@ -305,7 +304,7 @@ public String makeCommentBlock(SendKakaoWorkRequest request) {
}

@Override
public String makeTaskStatusBlock(SendKakaoWorkRequest request) {
public String makeTaskStatusBlock(SendWebhookRequest request) {
Object[] blocks = new Object[]{
Map.of(
"type", "header",
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ public interface PostCommentUsecase {

void save(Long userId, Long taskId, PostAndEditCommentRequest request);

void saveCommentAttachment(Long userId, Long taskId, List<MultipartFile> files);
void saveCommentAttachment(Long userId, Long taskId, MultipartFile file);
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package clap.server.application.port.outbound.webhook;

import clap.server.adapter.outbound.api.dto.SendKakaoWorkRequest;
import clap.server.adapter.outbound.api.dto.SendWebhookRequest;

public interface MakeObjectBlockPort {

String makeTaskRequestBlock(SendKakaoWorkRequest request);
String makeTaskRequestBlock(SendWebhookRequest request);

String makeNewProcessorBlock(SendKakaoWorkRequest request);
String makeNewProcessorBlock(SendWebhookRequest request);

String makeProcessorChangeBlock(SendKakaoWorkRequest request);
String makeProcessorChangeBlock(SendWebhookRequest request);

String makeCommentBlock(SendKakaoWorkRequest request);
String makeCommentBlock(SendWebhookRequest request);

String makeTaskStatusBlock(SendKakaoWorkRequest request);
String makeTaskStatusBlock(SendWebhookRequest request);
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package clap.server.application.port.outbound.webhook;

import clap.server.adapter.outbound.api.dto.SendAgitRequest;
import clap.server.adapter.outbound.api.dto.SendWebhookRequest;

public interface SendAgitPort {
void sendAgit(SendAgitRequest request);
void sendAgit(SendWebhookRequest request);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package clap.server.application.port.outbound.webhook;

import clap.server.adapter.outbound.api.dto.SendKakaoWorkRequest;
import clap.server.adapter.outbound.api.dto.SendWebhookRequest;

public interface SendKaKaoWorkPort {

void sendKakaoWord(SendKakaoWorkRequest request);
void sendKakaoWork(SendWebhookRequest request);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package clap.server.application.service.comment;

import clap.server.adapter.inbound.web.dto.notification.SseRequest;
import clap.server.adapter.inbound.web.dto.task.PostAndEditCommentRequest;
import clap.server.adapter.outbound.infrastructure.s3.S3UploadAdapter;
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
Expand All @@ -13,23 +12,21 @@
import clap.server.application.port.outbound.task.CommandAttachmentPort;
import clap.server.application.port.outbound.task.CommandCommentPort;
import clap.server.application.port.outbound.taskhistory.CommandTaskHistoryPort;
import clap.server.application.service.notification.SendWebhookService;
import clap.server.application.service.webhook.SendPushNotificationService;
import clap.server.common.annotation.architecture.ApplicationService;
import clap.server.common.constants.FilePathConstants;
import clap.server.domain.model.member.Member;
import clap.server.domain.model.notification.Notification;
import clap.server.domain.model.task.Attachment;
import clap.server.domain.model.task.Comment;
import clap.server.domain.model.task.Task;
import clap.server.domain.model.task.TaskHistory;
import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.ArrayList;
import java.util.List;

import static clap.server.domain.model.notification.Notification.createTaskNotification;

@ApplicationService
@RequiredArgsConstructor
Expand All @@ -41,8 +38,7 @@ public class PostCommentService implements PostCommentUsecase {
private final S3UploadAdapter s3UploadAdapter;
private final CommandAttachmentPort commandAttachmentPort;
private final CommandTaskHistoryPort commandTaskHistoryPort;
private final ApplicationEventPublisher applicationEventPublisher;
private final SendWebhookService sendWebhookService;
private final SendPushNotificationService sendPushNotificationService;

@Transactional
@Override
Expand Down Expand Up @@ -70,13 +66,15 @@ public void save(Long userId, Long taskId, PostAndEditCommentRequest request) {

@Transactional
@Override
public void saveCommentAttachment(Long userId, Long taskId, List<MultipartFile> files) {
public void saveCommentAttachment(Long userId, Long taskId, MultipartFile file) {
Task task = taskService.findById(taskId);
Member member = memberService.findActiveMember(userId);

if (Member.checkCommenter(task, member)) {
Comment comment = Comment.createComment(member, task, null);
Comment savedComment = commandCommentPort.saveComment(comment);
List<MultipartFile> files = new ArrayList<>();
files.add(file);
saveAttachment(files, task, savedComment);

TaskHistory taskHistory = TaskHistory.createTaskHistory(TaskHistoryType.COMMENT_FILE, task, null, member, savedComment);
Expand All @@ -98,19 +96,6 @@ private void saveAttachment(List<MultipartFile> files, Task task, Comment commen
}

private void publishNotification(Member receiver, Task task, String message, String commenterName){
// 알림 저장
Notification notification = createTaskNotification(task, receiver, NotificationType.COMMENT);
applicationEventPublisher.publishEvent(notification);

// SSE 실시간 알림 전송
SseRequest sseRequest = new SseRequest(
notification.getTask().getTitle(),
notification.getType(),
receiver.getMemberId(),
message
);
applicationEventPublisher.publishEvent(sseRequest);

sendWebhookService.sendWebhookNotification(receiver, NotificationType.COMMENT, task, message, commenterName);
sendPushNotificationService.sendPushNotification(receiver, NotificationType.COMMENT, task, message, commenterName);
}
}

This file was deleted.

Loading