Skip to content

Commit 0e1319b

Browse files
authored
Merge branch 'develop' into CLAP-172
2 parents b1d2436 + 93d5dab commit 0e1319b

File tree

16 files changed

+268
-1
lines changed

16 files changed

+268
-1
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package clap.server.adapter.inbound.web.admin;
2+
3+
import clap.server.application.port.inbound.admin.DeleteMemberUsecase;
4+
import clap.server.common.annotation.architecture.WebAdapter;
5+
import io.swagger.v3.oas.annotations.Operation;
6+
import io.swagger.v3.oas.annotations.tags.Tag;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.security.access.annotation.Secured;
9+
import org.springframework.web.bind.annotation.PatchMapping;
10+
import org.springframework.web.bind.annotation.PathVariable;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
13+
@Tag(name = "05. Admin")
14+
@WebAdapter
15+
@RequiredArgsConstructor
16+
@RequestMapping("/api/managements")
17+
public class DeleteMemberController {
18+
private final DeleteMemberUsecase deleteMemberUsecase;
19+
20+
@Operation(summary = "회원 삭제 API")
21+
@Secured("ROLE_ADMIN")
22+
@PatchMapping("/members/{memberId}")
23+
public void deleteMember(@PathVariable Long memberId) {
24+
deleteMemberUsecase.deleteMember(memberId);
25+
}
26+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package clap.server.adapter.inbound.web.admin;
2+
3+
import clap.server.adapter.inbound.security.SecurityUserDetails;
4+
import clap.server.adapter.inbound.web.dto.label.AddAndEditLabelRequest;
5+
import clap.server.application.port.inbound.admin.AddLabelUsecase;
6+
import clap.server.application.port.inbound.admin.DeleteLabelUsecase;
7+
import clap.server.application.port.inbound.admin.UpdateLabelUsecase;
8+
import clap.server.common.annotation.architecture.WebAdapter;
9+
import io.swagger.v3.oas.annotations.Operation;
10+
import io.swagger.v3.oas.annotations.Parameter;
11+
import io.swagger.v3.oas.annotations.enums.ParameterIn;
12+
import io.swagger.v3.oas.annotations.tags.Tag;
13+
import lombok.RequiredArgsConstructor;
14+
import org.springframework.security.access.annotation.Secured;
15+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
16+
import org.springframework.web.bind.annotation.*;
17+
18+
@Tag(name = "05. Admin")
19+
@WebAdapter
20+
@RequiredArgsConstructor
21+
@RequestMapping("/api/management/label")
22+
public class ManagementLabelController {
23+
24+
private final AddLabelUsecase addLabelUsecase;
25+
private final UpdateLabelUsecase updateLabelUsecase;
26+
private final DeleteLabelUsecase deleteLabelUsecase;
27+
28+
@Operation(summary = "구분(label) 추가 API")
29+
@PostMapping
30+
@Secured({"ROLE_ADMIN"})
31+
public void addLabel(@AuthenticationPrincipal SecurityUserDetails userInfo,
32+
@RequestBody AddAndEditLabelRequest request) {
33+
addLabelUsecase.addLabel(userInfo.getUserId(), request);
34+
}
35+
36+
@Operation(summary = "구분(label) 수정 API")
37+
@Parameter(name = "labelId", description = "구분(label) 고유 ID", required = true, in = ParameterIn.PATH)
38+
@PatchMapping("/{labelId}")
39+
@Secured({"ROLE_ADMIN"})
40+
public void updateLabel(@AuthenticationPrincipal SecurityUserDetails userInfo,
41+
@PathVariable Long labelId,
42+
@RequestBody AddAndEditLabelRequest request) {
43+
updateLabelUsecase.editLabel(userInfo.getUserId(), labelId, request);
44+
45+
}
46+
47+
@Operation(summary = "구분(label) 삭제 API")
48+
@Parameter(name = "labelId", description = "구분(label) 고유 ID", required = true, in = ParameterIn.PATH)
49+
@DeleteMapping("/{labelId}")
50+
@Secured({"ROLE_ADMIN"})
51+
public void deleteLabel(@AuthenticationPrincipal SecurityUserDetails userInfo,
52+
@PathVariable Long labelId) {
53+
deleteLabelUsecase.deleteLabel(userInfo.getUserId(), labelId);
54+
}
55+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package clap.server.adapter.inbound.web.dto.label;
2+
3+
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
4+
import clap.server.adapter.outbound.persistense.entity.task.constant.LabelColor;
5+
import io.swagger.v3.oas.annotations.media.Schema;
6+
7+
public record AddAndEditLabelRequest(
8+
9+
@Schema(description = "구분(label) 이름")
10+
String labelName,
11+
@Schema(description = "구분(label) 색상")
12+
LabelColor labelColor
13+
) {}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package clap.server.adapter.inbound.web.dto.label;
22

33
import clap.server.adapter.outbound.persistense.entity.task.constant.LabelColor;
4+
import io.swagger.v3.oas.annotations.media.Schema;
45

56
public record FindLabelListResponse(
7+
@Schema(description = "구분(label) 고유 ID")
68
Long labelId,
9+
@Schema(description = "구분(label) 이름")
710
String labelName,
11+
@Schema(description = "구분(label) 색상")
812
LabelColor labelColor
913
) {
1014
}

src/main/java/clap/server/adapter/outbound/persistense/LabelPersistenceAdapter.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import clap.server.adapter.outbound.persistense.repository.task.LabelRepository;
99
import clap.server.application.mapper.LabelMapper;
1010
import clap.server.application.mapper.NotificationMapper;
11+
import clap.server.application.port.outbound.task.CommandLabelPort;
1112
import clap.server.application.port.outbound.task.LoadLabelPort;
1213
import clap.server.common.annotation.architecture.PersistenceAdapter;
1314
import clap.server.domain.model.notification.Notification;
@@ -22,7 +23,7 @@
2223

2324
@PersistenceAdapter
2425
@RequiredArgsConstructor
25-
public class LabelPersistenceAdapter implements LoadLabelPort {
26+
public class LabelPersistenceAdapter implements LoadLabelPort, CommandLabelPort {
2627

2728
private final LabelRepository labelRepository;
2829
private final LabelPersistenceMapper labelPersistenceMapper;
@@ -51,4 +52,10 @@ public SliceResponse<FindLabelListResponse> findLabelListBySlice(Pageable pageab
5152
labelList.map(LabelMapper::toFindLabelListResponse)
5253
);
5354
}
55+
56+
@Override
57+
public void save(Label label) {
58+
LabelEntity labelEntity = labelPersistenceMapper.toEntity(label);
59+
labelRepository.save(labelEntity);
60+
}
5461
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package clap.server.application.port.inbound.admin;
2+
3+
import clap.server.adapter.inbound.web.dto.label.AddAndEditLabelRequest;
4+
5+
public interface AddLabelUsecase {
6+
7+
void addLabel(Long adminId, AddAndEditLabelRequest request);
8+
9+
10+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package clap.server.application.port.inbound.admin;
2+
3+
public interface DeleteLabelUsecase {
4+
void deleteLabel(Long adminId, Long labelId);
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package clap.server.application.port.inbound.admin;
2+
3+
public interface DeleteMemberUsecase {
4+
void deleteMember(Long memberId);
5+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package clap.server.application.port.inbound.admin;
2+
3+
import clap.server.adapter.inbound.web.dto.label.AddAndEditLabelRequest;
4+
5+
public interface UpdateLabelUsecase {
6+
void editLabel(Long adminId, Long labelId, AddAndEditLabelRequest request);
7+
}

src/main/java/clap/server/application/port/inbound/domain/MemberService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package clap.server.application.port.inbound.domain;
22

3+
import clap.server.application.port.outbound.member.CommandMemberPort;
34
import clap.server.application.port.outbound.member.LoadMemberPort;
45
import clap.server.domain.model.member.Member;
56
import clap.server.exception.ApplicationException;
@@ -13,6 +14,8 @@
1314
@RequiredArgsConstructor
1415
public class MemberService {
1516
private final LoadMemberPort loadMemberPort;
17+
private final CommandMemberPort commandMemberPort;
18+
1619

1720
public Member findById(Long memberId) {
1821
return loadMemberPort.findById(memberId).orElseThrow(
@@ -33,4 +36,5 @@ public Member findReviewer(Long memberId) {
3336
public List<Member> findReviewers() {
3437
return loadMemberPort.findReviewers();
3538
}
39+
3640
}

0 commit comments

Comments
 (0)