Skip to content

Commit 315cfaf

Browse files
authored
refactor/KD-57 (#305)
* refactor: 상세 조회 시 각 파일의 id도 반환하도록 변경 * fix: data.sql, schema.sql department 컬럼 추가 * fix: 파일 id가 아닌 Thesis or Certificate의 id를 반환하도록 수정 * refactor: GraduationUserStatusResponse 생성 시 fileId를 thesisId or certificateId로 변경
1 parent 882304f commit 315cfaf

File tree

4 files changed

+32
-19
lines changed

4 files changed

+32
-19
lines changed

aics-admin/src/main/java/kgu/developers/admin/graduationUser/application/GraduationUserAdminFacade.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,12 @@ private GraduationUserStatusResponse buildSubmissionStatus(GraduationUser user)
9393

9494
private GraduationUserStatusResponse.Certificate buildCertificateStatus(Long certificateId) {
9595
if (certificateId == null) {
96-
return GraduationUserStatusResponse.Certificate.of(GraduationType.CERTIFICATE,false,false,null);
96+
return GraduationUserStatusResponse.Certificate.of(GraduationType.CERTIFICATE,false, null,false,null);
9797
}
9898

9999
Certificate certificate = certificateQueryService.getById(certificateId);
100100

101-
return GraduationUserStatusResponse.Certificate.of(GraduationType.CERTIFICATE, true, certificate.isApproved(), certificate.getCreatedAt());
101+
return GraduationUserStatusResponse.Certificate.of(GraduationType.CERTIFICATE, true, certificate.getId(), certificate.isApproved(), certificate.getCreatedAt());
102102
}
103103

104104
private GraduationUserStatusResponse.Thesis buildThesisStatus(Long middleThesisId, Long finalThesisId) {
@@ -107,19 +107,19 @@ private GraduationUserStatusResponse.Thesis buildThesisStatus(Long middleThesisI
107107
GraduationUserStatusResponse.Thesis.Final finalThesisStatus;
108108

109109
if(middleThesisId == null) {
110-
midThesisStatus = GraduationUserStatusResponse.Thesis.Middle.of(false, false, null);
110+
midThesisStatus = GraduationUserStatusResponse.Thesis.Middle.of(false, null, false, null);
111111
} else {
112112
Thesis midThesis = thesisQueryService.getById(middleThesisId);
113113

114-
midThesisStatus = GraduationUserStatusResponse.Thesis.Middle.of(true, midThesis.isApproved(), midThesis.getCreatedAt());
114+
midThesisStatus = GraduationUserStatusResponse.Thesis.Middle.of(true, midThesis.getId(), midThesis.isApproved(), midThesis.getCreatedAt());
115115
}
116116

117117
if(finalThesisId == null) {
118-
finalThesisStatus = GraduationUserStatusResponse.Thesis.Final.of(false, false, null);
118+
finalThesisStatus = GraduationUserStatusResponse.Thesis.Final.of(false, null, false, null);
119119
} else {
120-
Thesis midThesis = thesisQueryService.getById(middleThesisId);
120+
Thesis finalThesis = thesisQueryService.getById(finalThesisId);
121121

122-
finalThesisStatus = GraduationUserStatusResponse.Thesis.Final.of(true, midThesis.isApproved(), midThesis.getCreatedAt());
122+
finalThesisStatus = GraduationUserStatusResponse.Thesis.Final.of(true, finalThesis.getId(), finalThesis.isApproved(), finalThesis.getCreatedAt());
123123
}
124124

125125
return GraduationUserStatusResponse.Thesis.of(GraduationType.THESIS, midThesisStatus, finalThesisStatus);

aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserStatusResponse.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ record Certificate(
2525
@Schema(description = "졸업 타입", example = "CERTIFICATE")
2626
String type,
2727

28+
@Schema(description = "파일 id", example = "1")
29+
Long id,
30+
2831
@Schema(description = "파일 제출 여부", example = "true")
2932
boolean submitted,
3033

@@ -36,13 +39,14 @@ record Certificate(
3639
String createdAt
3740

3841
) implements GraduationUserStatusResponse {
39-
public static Certificate of(GraduationType type, boolean submitted, boolean approval, LocalDateTime createdAt) {
42+
public static Certificate of(GraduationType type, boolean submitted,Long certificateId, boolean approval, LocalDateTime createdAt) {
4043
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
4144
return Certificate.builder()
4245
.type(type.name())
46+
.id(certificateId)
4347
.submitted(submitted)
4448
.approval(approval)
45-
.createdAt(createdAt.format(formatter))
49+
.createdAt(createdAt != null ? createdAt.format(formatter) : null)
4650
.build();
4751
}
4852
}
@@ -73,19 +77,23 @@ public record Middle(
7377
@Schema(description = "파일 제출 여부", example = "true")
7478
boolean submitted,
7579

80+
@Schema(description = "파일 id", example = "1")
81+
Long id,
82+
7683
@Schema(description = "승인 여부", example = "true")
7784
boolean approval,
7885

7986
@Schema(description = "제출일", example = "2024-08-11", requiredMode = REQUIRED)
8087
@DateTimeFormat(pattern = "yyyy-MM-dd")
8188
String createdAt
8289
) {
83-
public static Middle of(boolean submitted, boolean approval, LocalDateTime createdAt) {
90+
public static Middle of(boolean submitted, Long thesisId, boolean approval, LocalDateTime createdAt) {
8491
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
8592
return Middle.builder()
93+
.id(thesisId)
8694
.submitted(submitted)
8795
.approval(approval)
88-
.createdAt(createdAt.format(formatter))
96+
.createdAt(createdAt != null ? createdAt.format(formatter) : null)
8997
.build();
9098
}
9199
}
@@ -96,19 +104,23 @@ public record Final(
96104
@Schema(description = "파일 제출 여부", example = "false")
97105
boolean submitted,
98106

107+
@Schema(description = "파일 id", example = "2")
108+
Long id,
109+
99110
@Schema(description = "승인 여부", example = "false")
100111
boolean approval,
101112

102113
@Schema(description = "제출일", example = "2024-08-11", requiredMode = REQUIRED)
103114
@DateTimeFormat(pattern = "yyyy-MM-dd")
104115
String createdAt
105116
) {
106-
public static Final of(boolean submitted, boolean approval, LocalDateTime createdAt) {
117+
public static Final of(boolean submitted, Long thesisId, boolean approval, LocalDateTime createdAt) {
107118
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
108119
return Final.builder()
120+
.id(thesisId)
109121
.submitted(submitted)
110122
.approval(approval)
111-
.createdAt(createdAt.format(formatter))
123+
.createdAt(createdAt != null ? createdAt.format(formatter) : null)
112124
.build();
113125
}
114126
}

aics-api/src/main/resources/db/data.sql

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,13 @@ VALUES ('참여 신청 방법을 자세히 알고 싶습니다.', '2025-03-03 00
133133
('연구 참여 방법이 있나요?', '2025-03-03 07:02:00', '2025-03-03 07:02:00', 8, '202412346');
134134

135135
INSERT INTO graduation_user (name, email, advisor_professor, graduation_type, graduation_date, capstone_completion,
136-
mid_thesis_id, final_thesis_id, certificate_id, user_id, created_at, updated_at)
136+
department, mid_thesis_id, final_thesis_id, certificate_id, user_id, created_at, updated_at)
137137
VALUES
138-
('김철수', 'chulsoo@kyonggi.ac.kr', '이순신', 'THESIS', '2028-02-01', true, 1, 2, NULL, '202512345', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
139-
('이영희', 'younghee@kyonggi.ac.kr', '홍길동', 'CERTIFICATE', '2028-08-01', true, NULL, NULL, 1, '202512346', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
140-
('박민수', 'minsu@kyonggi.ac.kr', '정약용', 'THESIS', '2029-02-01', true, 3, NULL, NULL, '202512347', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
141-
('정수진', 'sujin@kyonggi.ac.kr', '김이박', 'THESIS', '2030-02-01', false, 4, 5, NULL, '202512349', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
142-
('최동욱', 'dongwook@kyonggi.ac.kr', '이교수', 'CERTIFICATE', '2027-08-01', false, NULL, NULL, 2, '202512348', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
138+
('김철수', 'chulsoo@kyonggi.ac.kr', '이순신', 'THESIS', '2028-02-01', true,"컴퓨터공학전공", 1, 2, NULL, '202512345', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
139+
('이영희', 'younghee@kyonggi.ac.kr', '홍길동', 'CERTIFICATE', '2028-08-01',true, "인공지능전공", NULL, NULL, 1, '202512346', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
140+
('박민수', 'minsu@kyonggi.ac.kr', '정약용', 'THESIS', '2029-02-01', true, "컴퓨터공학전공", 3, NULL, NULL, '202512347', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
141+
('정수진', 'sujin@kyonggi.ac.kr', '김이박', 'THESIS', '2030-02-01', false,"컴퓨터공학전공", 4, 5, NULL, '202512349', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
142+
('최동욱', 'dongwook@kyonggi.ac.kr', '이교수', 'CERTIFICATE', '2027-08-01', false,"SW안전보안전공", NULL, NULL, 2, '202512348', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
143143

144144
-- schedule
145145
INSERT INTO schedule (submission_type, content, start_date, end_date, created_at, updated_at)

aics-api/src/main/resources/db/schema.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ CREATE TABLE graduation_user
157157
CHECK ((graduation_type)::TEXT = ANY (ARRAY ['THESIS', 'CERTIFICATE'])),
158158
graduation_date DATE,
159159
capstone_completion BOOLEAN,
160+
department VARCHAR(255),
160161
mid_thesis_id BIGINT,
161162
final_thesis_id BIGINT,
162163
certificate_id BIGINT,

0 commit comments

Comments
 (0)