Skip to content

Commit 62a1b79

Browse files
authored
Fix/402 관리자대시보드 null 처리 추가 (#403)
* refactor/336 입금 환전 내역 수정 * refactor/336 입금 환전 내역 수정 * refactor/336 작가 수익 테스트 수정 * refactor/336 대시보드 메인현황 팔로우수 추가 * refactor/336 대시보드 메인현황 팔로우수 테스트 케이스 작성 * refactor/336 대시보드 팔로우 작가 조회 * refactor/336 대시보드 팔로우 작가 조회 * refactor/336 Response 수정 * refactor/354리뷰 mock 제거 실제 db연동 * refactor/354 레파지토리에 찜 기능 조회 추가 * refactor/354 찜 테스트 기능 추가 및 테스트 오류 수정 * refactor/354 찜 기능 수정 및 팔로우 기능 수정 * refactor/354 찜 기능 수정 및 팔로우 기능 수정 * refactor/354 찜 기능 수정 및 팔로우 기능 수정 * refactor/367 이미지 사용 우선 순위 변경 * refactor/367 상품명 정렬 수정 * refactor/367 교환 요청 조회 정렬 메모리->db 정렬로 변경 * refactor/367 메인현황-상품명 정렬 추가, * refactor/367 관리자대시보드-카테고리 조회 제거 * refactor/367 관리자대시보드-사용자관리 수수료율 정리 수정 * refactor/367 관리자대시보드-전체 펀딩 목록보기 Resoponse간소화 * refactor/367 관리자대시보드-전체 펀딩 목록보기 Resoponse간소화 * refactor/367 관리자대시보드-입점 승인 정렬 수정 * refactor/367 에러코드 추가 * refactor/367 관리자 대시보드 null처리 추가
1 parent 0bf39f1 commit 62a1b79

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/main/java/com/back/domain/dashboard/admin/service/AdminDashboardServiceImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ public AdminOverviewResponse getOverview(AdminOverviewRequest request) {
121121
.getContent();
122122

123123
List<AdminOverviewResponse.ArtistApproval> artistApprovals = pendingApplications.stream()
124+
.filter(app -> app.getUser() != null) // User가 null인 경우 필터링
124125
.map(app -> new AdminOverviewResponse.ArtistApproval(
125126
app.getUser().getId(),
126127
app.getArtistName(),
@@ -137,6 +138,7 @@ public AdminOverviewResponse getOverview(AdminOverviewRequest request) {
137138
.getContent();
138139

139140
List<AdminOverviewResponse.FundingApproval> fundingApprovals = pendingFundings.stream()
141+
.filter(funding -> funding.getUser() != null) // User가 null인 경우 필터링
140142
.map(funding -> new AdminOverviewResponse.FundingApproval(
141143
funding.getId(),
142144
funding.getTitle(),
@@ -649,6 +651,13 @@ public AdminFundingResponse getFundings(AdminFundingSearchRequest request) {
649651
* Funding Entity → DTO 변환 (화면 표시 필드만, 평면 구조)
650652
*/
651653
private AdminFundingResponse.Funding convertToFundingDto(Funding funding) {
654+
// User null 체크 (FK 제약조건상 발생하면 안되지만 방어적 처리)
655+
if (funding.getUser() == null) {
656+
log.error("Funding의 User가 null입니다 - fundingId: {}", funding.getId());
657+
throw new ServiceException("DATA_INTEGRITY_ERROR",
658+
"펀딩 데이터 무결성 오류 - fundingId: " + funding.getId());
659+
}
660+
652661
// 달성률 계산
653662
int achievementRate = funding.getTargetAmount() > 0
654663
? (int) ((funding.getCollectedAmount() * 100) / funding.getTargetAmount())
@@ -791,6 +800,13 @@ public AdminArtistApplicationResponse getArtistApplications(AdminArtistApplicati
791800
* ArtistApplication Entity → DTO 변환
792801
*/
793802
private AdminArtistApplicationResponse.Application convertToApplicationDto(ArtistApplication application) {
803+
// User null 체크 (FK 제약조건상 발생하면 안되지만 방어적 처리)
804+
if (application.getUser() == null) {
805+
log.error("ArtistApplication의 User가 null입니다 - applicationId: {}", application.getId());
806+
throw new ServiceException("DATA_INTEGRITY_ERROR",
807+
"입점 신청 데이터 무결성 오류 - applicationId: " + application.getId());
808+
}
809+
794810
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
795811

796812
return new AdminArtistApplicationResponse.Application(

0 commit comments

Comments
 (0)