Skip to content

Commit 458de6e

Browse files
committed
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-Server into develop
2 parents fba5f53 + f95426d commit 458de6e

13 files changed

Lines changed: 277 additions & 24 deletions

File tree

src/main/java/clap/server/adapter/outbound/api/agit/AgitTemplateBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ public String createMessage(PushNotificationTemplate request, String taskDetailU
5252

5353
case PROCESSOR_CHANGED -> "담당자가 " + "*" + request.message() + "*" + "으로 변경되었습니다.";
5454

55-
case PROCESSOR_ASSIGNED -> "작업이 *승인*되었습니다.*\n"
56-
+ "\\t\\t*• 👤 담당자:* " + "*" + request.message() + "*";
55+
case PROCESSOR_ASSIGNED -> "*작업*이 *승인*되었습니다.\\n"
56+
+ "\\t\\t*•담당자:* " + "*" + request.message() + "*";
5757

5858
default -> null;
5959
};

src/main/java/clap/server/adapter/outbound/persistense/entity/member/MemberEntity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,10 @@ public class MemberEntity extends BaseTimeEntity {
6363
@ManyToOne(fetch = FetchType.LAZY)
6464
@JoinColumn(name = "admin_id")
6565
private MemberEntity admin;
66+
67+
@Column(nullable = true)
68+
private Integer inProgressTaskCount;
69+
70+
@Column(nullable = true)
71+
private Integer inReviewingTaskCount;
6672
}

src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public interface MemberRepository extends JpaRepository<MemberEntity, Long>, Me
3232

3333
Optional<MemberEntity> findByEmail(String email);
3434

35-
@Query("SELECT COUNT(m) > 0 FROM MemberEntity m WHERE m.nickname IN :nicknames OR m.email IN :emails")
35+
@Query("SELECT COUNT(m) > 0 FROM MemberEntity m WHERE m.status <> 'DELETED' AND (m.nickname IN :nicknames OR m.email IN :emails)")
3636
boolean existsByNicknamesOrEmails(@Param("nicknames") Set<String> nicknames, @Param("emails") Set<String> emails);
3737
}
3838

src/main/java/clap/server/adapter/outbound/persistense/repository/notification/NotificationRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Slice<NotificationEntity> findAllByReceiver_MemberIdOrderByCreatedAtDesc(
2525
@Query("SELECT n FROM NotificationEntity n " +
2626
"WHERE n.receiver.memberId = :receiverId " +
2727
"AND n.task.isDeleted = false")
28-
List<NotificationEntity> findAllByReceiver_MemberId(Long memberId);
28+
List<NotificationEntity> findAllByReceiver_MemberId(Long receiverId);
2929

3030
List<NotificationEntity> findByTask_TaskId(Long taskId);
3131

src/main/java/clap/server/application/service/task/TerminateTaskService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ public class TerminateTaskService implements TerminateTaskUsecase {
2828

2929
@Override
3030
public void terminateTask(Long memberId, Long taskId, String reason) {
31-
memberService.findReviewer(memberId);
3231
Task task = taskService.findById(taskId);
3332
task.terminateTask();
3433
taskService.upsert(task);
@@ -42,5 +41,6 @@ public void terminateTask(Long memberId, Long taskId, String reason) {
4241

4342
private void publishNotification(Member receiver, Task task, String message, String reason) {
4443
sendNotificationService.sendPushNotification(receiver, NotificationType.STATUS_SWITCHED, task, message, reason, null, false);
44+
sendNotificationService.sendAgitNotification(NotificationType.STATUS_SWITCHED, task, message, null);
4545
}
4646
}

src/main/java/clap/server/application/service/task/UpdateTaskService.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,16 @@ public void updateTask(Long requesterId, Long taskId, UpdateTaskRequest request,
6363
memberService.findActiveMember(requesterId);
6464
Category category = categoryService.findById(request.categoryId());
6565
Task task = taskService.findById(taskId);
66+
int attachmentCount = getAttachmentCount(request, files, task);
6667

67-
int attachmentToAdd = files==null? 0 : files.size();
68-
int attachmentCount = task.getAttachmentCount() - request.attachmentsToDelete().size() + attachmentToAdd;
69-
if (attachmentCount > TASK_MAX_FILE_COUNT) {
70-
throw new ApplicationException(TaskErrorCode.FILE_COUNT_EXCEEDED);
71-
}
7268
if (!request.attachmentsToDelete().isEmpty()) {
73-
updateAttachments(request.attachmentsToDelete(), files, task);
69+
List<Attachment> attachmentsToDelete = validateAndGetAttachments(request.attachmentsToDelete(), task);
70+
attachmentsToDelete.stream()
71+
.peek(Attachment::softDelete)
72+
.forEach(commandAttachmentPort::save);
73+
}
74+
if (files != null) {
75+
updateAttachments(files, task);
7476
}
7577
task.updateTask(requesterId, category, request.title(), request.description(), attachmentCount);
7678
taskService.upsert(task);
@@ -126,18 +128,19 @@ public void updateTaskLabel(Long taskId, Long memberId, UpdateTaskLabelRequest r
126128
taskService.upsert(task);
127129
}
128130

129-
private void updateAttachments(List<Long> attachmentIdsToDelete, List<MultipartFile> files, Task task) {
130-
List<Attachment> attachmentsToDelete = validateAndGetAttachments(attachmentIdsToDelete, task);
131-
attachmentsToDelete.stream()
132-
.peek(Attachment::softDelete)
133-
.forEach(commandAttachmentPort::save);
131+
private void updateAttachments(List<MultipartFile> files, Task task) {
132+
List<String> fileUrls = s3UploadPort.uploadFiles(FilePathConstants.TASK_FILE, files);
133+
List<Attachment> attachments = AttachmentMapper.toTaskAttachments(task, files, fileUrls);
134+
commandAttachmentPort.saveAll(attachments);
135+
}
134136

135-
if (files != null) {
136-
List<String> fileUrls = s3UploadPort.uploadFiles(FilePathConstants.TASK_FILE, files);
137-
List<Attachment> attachments = AttachmentMapper.toTaskAttachments(task, files, fileUrls);
138-
commandAttachmentPort.saveAll(attachments);
137+
private static int getAttachmentCount(UpdateTaskRequest request, List<MultipartFile> files, Task task) {
138+
int attachmentToAdd = files == null ? 0 : files.size();
139+
int attachmentCount = task.getAttachmentCount() - request.attachmentsToDelete().size() + attachmentToAdd;
140+
if (attachmentCount > TASK_MAX_FILE_COUNT) {
141+
throw new ApplicationException(TaskErrorCode.FILE_COUNT_EXCEEDED);
139142
}
140-
143+
return attachmentCount;
141144
}
142145

143146
private List<Attachment> validateAndGetAttachments(List<Long> attachmentIdsToDelete, Task task) {

src/main/java/clap/server/application/service/webhook/SendAgitService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import clap.server.domain.model.task.Task;
88
import lombok.RequiredArgsConstructor;
99
import org.springframework.stereotype.Service;
10+
import org.springframework.transaction.annotation.Transactional;
1011

1112
@Service
1213
@RequiredArgsConstructor
@@ -15,6 +16,7 @@ public class SendAgitService {
1516
private final SendAgitPort agitPort;
1617
private final TaskService taskService;
1718

19+
@Transactional
1820
public void sendAgit(PushNotificationTemplate request, Task task, String taskDetailUrl) {
1921
Long agitPostId = agitPort.sendAgit(request, task, taskDetailUrl);
2022

src/main/java/clap/server/application/service/webhook/SendNotificationService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ public void sendPushNotification(Member receiver, NotificationType notificationT
8686
}
8787

8888
@Async("notificationExecutor")
89-
@Transactional
9089
public void sendAgitNotification(NotificationType notificationType,
9190
Task task, String message, String commenterName) {
9291
PushNotificationTemplate pushNotificationTemplate = new PushNotificationTemplate(

src/main/java/clap/server/domain/model/member/Member.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
44
import clap.server.domain.model.common.BaseTime;
5+
import jakarta.persistence.Column;
56
import lombok.AccessLevel;
67
import lombok.AllArgsConstructor;
78
import lombok.Getter;
@@ -23,6 +24,8 @@ public class Member extends BaseTime {
2324
private MemberStatus status;
2425
private String password;
2526
private Department department;
27+
private Integer inProgressTaskCount;
28+
private Integer inReviewingTaskCount;
2629

2730
public Member(MemberInfo memberInfo, Boolean emailNotificationEnabled, Boolean kakaoworkNotificationEnabled,
2831
Member admin, String imageUrl, MemberStatus status, String password) {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
alter table member
2+
add in_progress_task_count INTEGER null;
3+
4+
alter table member
5+
add in_reviewing_task_count INTEGER null;

0 commit comments

Comments
 (0)