Skip to content

Commit 51ab7a5

Browse files
committed
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-Server into develop
2 parents 4f338ad + 98aaa06 commit 51ab7a5

37 files changed

+447
-252
lines changed

src/main/java/clap/server/TaskflowApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.scheduling.annotation.EnableAsync;
56
import org.springframework.scheduling.annotation.EnableScheduling;
67

78
@SpringBootApplication
89
@EnableScheduling
10+
@EnableAsync
911
public class TaskflowApplication {
1012

1113
public static void main(String[] args) {
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package clap.server.adapter.inbound.web.admin;
2+
3+
import clap.server.adapter.inbound.web.dto.admin.FindMemberRequest;
4+
import clap.server.adapter.inbound.web.dto.admin.RetrieveAllMemberResponse;
5+
import clap.server.application.mapper.RetrieveAllMemberMapper;
6+
import clap.server.application.port.inbound.management.FindAllMembersUsecase;
7+
import clap.server.application.port.inbound.management.FindMembersWithFilterUsecase;
8+
import clap.server.domain.model.member.Member;
9+
import io.swagger.v3.oas.annotations.Operation;
10+
import io.swagger.v3.oas.annotations.Parameter;
11+
import io.swagger.v3.oas.annotations.tags.Tag;
12+
import lombok.RequiredArgsConstructor;
13+
import org.springframework.data.domain.Page;
14+
import org.springframework.data.domain.PageRequest;
15+
import org.springframework.data.domain.Pageable;
16+
import org.springframework.http.ResponseEntity;
17+
import org.springframework.security.access.annotation.Secured;
18+
import org.springframework.web.bind.annotation.*;
19+
20+
@RestController
21+
@RequestMapping("/api/managements")
22+
@RequiredArgsConstructor
23+
public class FindMemberController {
24+
private final FindAllMembersUsecase findAllMembersUsecase;
25+
private final FindMembersWithFilterUsecase findMembersWithFilterUsecase;
26+
private final RetrieveAllMemberMapper retrieveAllMemberMapper;
27+
28+
@Tag(name = "05. Admin")
29+
@Secured({"ROLE_ADMIN"})
30+
@Operation(
31+
summary = "전체 회원 조회 API",
32+
description = "모든 회원 정보를 페이징 처리하여 반환하거나 조건에 맞는 회원 정보를 반환합니다.",
33+
parameters = {
34+
@Parameter(name = "page", description = "조회할 페이지 번호 (0부터 시작, 기본값: 0)", example = "0"),
35+
@Parameter(name = "size", description = "페이지 당 회원 수 (기본값: 20)", example = "20")
36+
}
37+
)
38+
@GetMapping("/members")
39+
public ResponseEntity<Page<RetrieveAllMemberResponse>> getAllMembers(
40+
@RequestParam(defaultValue = "0") int page,
41+
@RequestParam(defaultValue = "20") int size,
42+
@ModelAttribute FindMemberRequest filterRequest) {
43+
44+
Pageable pageable = PageRequest.of(page, size);
45+
Page<Member> members;
46+
47+
if (filterRequest.getName() != null || filterRequest.getEmail() != null || filterRequest.getNickname() != null ||
48+
filterRequest.getDepartmentId() != null || filterRequest.getRole() != null) {
49+
members = findMembersWithFilterUsecase.findMembersWithFilter(pageable, filterRequest);
50+
} else {
51+
members = findAllMembersUsecase.findAllMembers(pageable);
52+
}
53+
54+
55+
Page<RetrieveAllMemberResponse> response = members.map(retrieveAllMemberMapper::toResponse);
56+
return ResponseEntity.ok(response);
57+
}
58+
}

src/main/java/clap/server/adapter/inbound/web/comment/PostCommentController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ public void createComment(
4444
public void createAttachmentComment(
4545
@AuthenticationPrincipal SecurityUserDetails userInfo,
4646
@PathVariable Long taskId,
47-
@RequestPart(name = "attachment") @NotNull List<MultipartFile> attachments) {
48-
postCommentUsecase.saveCommentAttachment(userInfo.getUserId(), taskId, attachments);
47+
@RequestPart(name = "attachment") @NotNull MultipartFile attachment) {
48+
postCommentUsecase.saveCommentAttachment(userInfo.getUserId(), taskId, attachment);
4949
}
5050

5151
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package clap.server.adapter.inbound.web.dto.admin;
2+
3+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Data;
6+
7+
@Data
8+
public class FindMemberRequest {
9+
@Schema(description = "회원 이름", example = "양시훈")
10+
private String name;
11+
12+
@Schema(description = "회원 이메일", example = "sihun123@gmail.com")
13+
private String email;
14+
15+
@Schema(description = "회원 닉네임", example = "leo.sh")
16+
private String nickname;
17+
18+
@Schema(description = "부서 ID", example = "1")
19+
private Long departmentId;
20+
21+
@Schema(description = "회원 역할", example = "ROLE_USER")
22+
private MemberRole role;
23+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package clap.server.adapter.inbound.web.dto.admin;
2+
3+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
6+
public record RetrieveAllMemberResponse(
7+
@Schema(description = "회원 이름", example = "양시훈")
8+
String name,
9+
10+
@Schema(description = "회원 이메일", example = "sihun123@gmail.com")
11+
String email,
12+
13+
@Schema(description = "회원 닉네임, 로그인할 때 쓰입니다.", example = "leo.sh")
14+
String nickname,
15+
16+
@Schema(description = "승인 권한 여부", example = "true")
17+
Boolean isReviewer,
18+
19+
@Schema(description = "부서 ID", example = "1")
20+
Long departmentId,
21+
22+
@Schema(description = "회원 역할", example = "ROLE_USER")
23+
MemberRole role,
24+
25+
@Schema(description = "회원 직책", example = "개발자")
26+
String departmentRole
27+
) {}

src/main/java/clap/server/adapter/outbound/api/AgitClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package clap.server.adapter.outbound.api;
22

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

2222
@Override
23-
public void sendAgit(SendAgitRequest request) {
23+
public void sendAgit(SendWebhookRequest request) {
2424
RestTemplate restTemplate = new RestTemplate();
2525

2626
String message = null;

src/main/java/clap/server/adapter/outbound/api/KakaoWorkClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package clap.server.adapter.outbound.api;
22

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

2828
@Override
29-
public void sendKakaoWord(SendKakaoWorkRequest request) {
29+
public void sendKakaoWork(SendWebhookRequest request) {
3030
RestTemplate restTemplate = new RestTemplate();
3131

3232
// Payload 생성

src/main/java/clap/server/adapter/outbound/api/ObjectBlockService.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package clap.server.adapter.outbound.api;
22

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

2120
@Override
22-
public String makeTaskRequestBlock(SendKakaoWorkRequest request) {
21+
public String makeTaskRequestBlock(SendWebhookRequest request) {
2322
// Blocks 데이터 생성
2423
Object[] blocks = new Object[]{
2524
// Header 블록
@@ -92,7 +91,7 @@ public String makeTaskRequestBlock(SendKakaoWorkRequest request) {
9291
}
9392

9493
@Override
95-
public String makeNewProcessorBlock(SendKakaoWorkRequest request) {
94+
public String makeNewProcessorBlock(SendWebhookRequest request) {
9695
Object[] blocks = new Object[]{
9796
Map.of(
9897
"type", "header",
@@ -148,7 +147,7 @@ public String makeNewProcessorBlock(SendKakaoWorkRequest request) {
148147
try {
149148
payload = "{" +
150149
"\"email\":\"" + request.email() + "\"," +
151-
"\"text\":\"작업 담당자 할당 알림\"," + // fallback 메시지
150+
"\"text\":\"작업 담당자 선정 알림\"," + // fallback 메시지
152151
"\"blocks\":" + objectMapper.writeValueAsString(blocks) +
153152
"}";
154153
} catch (JsonProcessingException e) {
@@ -159,7 +158,7 @@ public String makeNewProcessorBlock(SendKakaoWorkRequest request) {
159158
}
160159

161160
@Override
162-
public String makeProcessorChangeBlock(SendKakaoWorkRequest request) {
161+
public String makeProcessorChangeBlock(SendWebhookRequest request) {
163162
Object[] blocks = new Object[]{
164163
Map.of(
165164
"type", "header",
@@ -227,7 +226,7 @@ public String makeProcessorChangeBlock(SendKakaoWorkRequest request) {
227226
}
228227

229228
@Override
230-
public String makeCommentBlock(SendKakaoWorkRequest request) {
229+
public String makeCommentBlock(SendWebhookRequest request) {
231230
Object[] blocks = new Object[]{
232231
Map.of(
233232
"type", "header",
@@ -305,7 +304,7 @@ public String makeCommentBlock(SendKakaoWorkRequest request) {
305304
}
306305

307306
@Override
308-
public String makeTaskStatusBlock(SendKakaoWorkRequest request) {
307+
public String makeTaskStatusBlock(SendWebhookRequest request) {
309308
Object[] blocks = new Object[]{
310309
Map.of(
311310
"type", "header",

src/main/java/clap/server/adapter/outbound/api/dto/SendAgitRequest.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/main/java/clap/server/adapter/outbound/api/dto/SendKakaoWorkRequest.java

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)