Skip to content

Commit dd8bd0d

Browse files
authored
[Merge] #199 - 관리자 피드백 조회 기능 추가
[Feature] #199 - 관리자 피드백 조회 기능 추가
2 parents 595a2bb + 6f6b768 commit dd8bd0d

File tree

5 files changed

+45
-8
lines changed

5 files changed

+45
-8
lines changed

src/main/java/dgu/sw/domain/admin/controller/AdminController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dgu.sw.domain.admin.controller;
22

3+
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminFeedbackResponse;
34
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminLoginResponse;
45
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminLoginRequest;;
56
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminMannerRequest;
@@ -118,4 +119,10 @@ public ApiResponse<String> deleteVoca(@PathVariable Long vocaId, Authentication
118119
adminService.deleteVoca(vocaId, authentication.getName());
119120
return ApiResponse.onSuccess("단어가 삭제되었습니다.");
120121
}
122+
123+
// 앱 피드백 조회
124+
@GetMapping("/app")
125+
public ApiResponse<List<AdminFeedbackResponse>> getFeedback(Authentication authentication) {
126+
return ApiResponse.onSuccess(adminService.getAllFeedbacks(authentication.getName()));
127+
}
121128
}

src/main/java/dgu/sw/domain/admin/converter/AdminConverter.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package dgu.sw.domain.admin.converter;
22

3-
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminLoginResponse;
4-
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminVocaRequest;
5-
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminVocaResponse;
63
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminMannerRequest;
74
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminQuizRequest;
8-
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminMannerResponse;
9-
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminQuizResponse;
10-
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminUserResponse;
5+
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminVocaRequest;
6+
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.*;
7+
import dgu.sw.domain.feedback.entity.Feedback;
118
import dgu.sw.domain.manner.entity.Manner;
129
import dgu.sw.domain.quiz.entity.Quiz;
1310
import dgu.sw.domain.user.entity.User;
@@ -95,4 +92,15 @@ public static Voca toVoca(AdminVocaRequest request) {
9592
.example(request.getExample())
9693
.build();
9794
}
95+
96+
public static AdminFeedbackResponse toAdminFeedbackResponse(Feedback feedback) {
97+
return AdminFeedbackResponse.builder()
98+
.feedbackId(feedback.getFeedbackId())
99+
.email(feedback.getUser().getEmail())
100+
.nickname(feedback.getUser().getNickname())
101+
.category(feedback.getCategory())
102+
.content(feedback.getContent())
103+
.isAnonymous(feedback.getIsAnonymous())
104+
.build();
105+
}
98106
}

src/main/java/dgu/sw/domain/admin/dto/AdminDTO.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dgu.sw.domain.admin.dto;
22

3+
import dgu.sw.domain.feedback.dto.FeedbackCategory;
34
import dgu.sw.domain.quiz.entity.QuizLevel;
45
import dgu.sw.global.security.OAuthProvider;
56
import lombok.*;
@@ -111,5 +112,16 @@ public static class AdminVocaResponse {
111112
private String description;
112113
private String example;
113114
}
115+
116+
@Getter
117+
@Builder
118+
public static class AdminFeedbackResponse {
119+
private Long feedbackId;
120+
private String email; // 작성자 이메일 (익명 아닐 때만)
121+
private String nickname; // 작성자 닉네임 (익명 아닐 때만)
122+
private FeedbackCategory category;
123+
private String content;
124+
private Boolean isAnonymous;
125+
}
114126
}
115127
}

src/main/java/dgu/sw/domain/admin/service/AdminService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dgu.sw.domain.admin.service;
22

3+
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminFeedbackResponse;
34
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.AdminLoginResponse;
45
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminLoginRequest;
56
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminMannerRequest;
@@ -27,4 +28,5 @@ public interface AdminService {
2728
void saveVoca(AdminVocaRequest request, String userId);
2829
void updateVoca(Long vocaId, AdminVocaRequest request, String userId);
2930
void deleteVoca(Long vocaId, String userId);
31+
List<AdminFeedbackResponse> getAllFeedbacks(String userId);
3032
}

src/main/java/dgu/sw/domain/admin/service/AdminServiceImpl.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminQuizRequest;
77
import dgu.sw.domain.admin.dto.AdminDTO.AdminRequest.AdminVocaRequest;
88
import dgu.sw.domain.admin.dto.AdminDTO.AdminResponse.*;
9+
import dgu.sw.domain.feedback.repository.FeedbackRepository;
910
import dgu.sw.domain.manner.entity.Manner;
1011
import dgu.sw.domain.manner.repository.MannerRepository;
1112
import dgu.sw.domain.quiz.entity.Quiz;
@@ -21,7 +22,6 @@
2122
import dgu.sw.global.exception.UserException;
2223
import dgu.sw.global.exception.VocaException;
2324
import dgu.sw.global.security.JwtTokenProvider;
24-
import dgu.sw.global.security.JwtUtil;
2525
import dgu.sw.global.status.ErrorStatus;
2626
import jakarta.transaction.Transactional;
2727
import lombok.RequiredArgsConstructor;
@@ -40,8 +40,8 @@ public class AdminServiceImpl implements AdminService {
4040
private final VocaRepository vocaRepository;
4141
private final PasswordEncoder passwordEncoder;
4242
private final JwtTokenProvider jwtTokenProvider;
43-
private final JwtUtil jwtUtil;
4443
private final RedisUtil redisUtil;
44+
private final FeedbackRepository feedbackRepository;
4545

4646
@Override
4747
public AdminLoginResponse login(AdminLoginRequest request) {
@@ -200,4 +200,12 @@ public void deleteVoca(Long vocaId, String userId) {
200200
checkAdminRole(userId); // 권한 확인
201201
vocaRepository.deleteById(vocaId);
202202
}
203+
204+
@Override
205+
public List<AdminFeedbackResponse> getAllFeedbacks(String userId) {
206+
checkAdminRole(userId);
207+
return feedbackRepository.findAll().stream()
208+
.map(AdminConverter::toAdminFeedbackResponse)
209+
.collect(Collectors.toList());
210+
}
203211
}

0 commit comments

Comments
 (0)