Skip to content

Commit 2ca463e

Browse files
committed
fix: 데이터 복구 후 유저 정보 변경 로직 추가
1 parent 2f0bd67 commit 2ca463e

File tree

11 files changed

+53
-14
lines changed

11 files changed

+53
-14
lines changed

src/main/java/com/dsm/repo/external/web/rest/resume/dto/ResumeElementDto.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public enum Status {
2020
}
2121

2222
public record Writer(
23-
String accountId,
23+
String id,
2424
String name,
2525
SchoolInfo schoolInfo,
2626
String major,
@@ -29,7 +29,7 @@ public record Writer(
2929
String url
3030
) {
3131
public Writer update(String major, String email, List<String> skillSet, String url) {
32-
return new Writer(accountId, name, schoolInfo, major, email, skillSet, url);
32+
return new Writer(id, name, schoolInfo, major, email, skillSet, url);
3333
}
3434

3535
public record SchoolInfo(

src/main/java/com/dsm/repo/external/web/rest/student/dto/StudentElementDto.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,8 @@ public record ClassInfo(
77
Integer number,
88
String schoolNumber
99
) {
10+
public ClassInfo(Integer grade, Integer classNumber, Integer number) {
11+
this(grade, classNumber, number, String.format("%1d%1d%02d", grade, classNumber, number));
12+
}
1013
}
1114
}

src/main/java/com/dsm/repo/internal/core/domain/component/student/impl/CurrentStudentImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ public StudentModel getStudent() {
3232
@Override
3333
@Transactional
3434
public ResumeModel getResume() {
35-
return resumeRepository.findByWriterAccountId(getStudent().accountId())
35+
return resumeRepository.findByWriterId(getStudent().accountId())
3636
.orElseThrow(() -> ResumeNotFoundException.EXCEPTION);
3737
}
3838

3939
@Override
4040
@Transactional
41-
public ResumeModel getResume(String accountId) {
42-
return resumeRepository.findByWriterAccountId(accountId)
41+
public ResumeModel getResume(String studentId) {
42+
return resumeRepository.findById(studentId)
4343
.orElseThrow(() -> ResumeNotFoundException.EXCEPTION);
4444
}
4545

src/main/java/com/dsm/repo/internal/core/domain/model/resume/ResumeModel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ public static ResumeModel createInitialResume(String id, String name, ResumeElem
3131
);
3232
}
3333

34+
public ResumeModel updateYear() {
35+
return new ResumeModel(id, Year.now().getValue(), status, writer, introduce, projectList, achievementList, activityList);
36+
}
37+
3438
public ResumeModel release() {
3539
return new ResumeModel(id, year, ResumeElementDto.Status.RELEASED, writer, introduce, projectList, achievementList, activityList);
3640
}

src/main/java/com/dsm/repo/internal/core/domain/model/student/StudentModel.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ public StudentModel updateMajor(String majorName) {
1717
return new StudentModel(id, accountId, password, name, classInfo, profileImagePath, majorName);
1818
}
1919

20+
public StudentModel updateClassInfo(StudentElementDto.ClassInfo classInfo) {
21+
return new StudentModel(id, accountId, password, name, classInfo, profileImagePath, major);
22+
}
23+
2024
public StudentModel(String accountId, String password, String name, Integer grade, Integer classNumber, Integer number, String profileImagePath, String majorName) {
2125
this(null,
2226
accountId,
@@ -25,8 +29,7 @@ public StudentModel(String accountId, String password, String name, Integer grad
2529
new StudentElementDto.ClassInfo(
2630
grade,
2731
classNumber,
28-
number,
29-
String.format("%1d%1d%02d", grade, classNumber, number)
32+
number
3033
),
3134
profileImagePath,
3235
majorName

src/main/java/com/dsm/repo/internal/core/domain/service/auth/StudentLoginService.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.dsm.repo.internal.core.domain.service.auth;
22

3+
import com.dsm.repo.external.exception.domain.resume.ResumeNotFoundException;
4+
import com.dsm.repo.external.web.rest.student.dto.StudentElementDto;
5+
import com.dsm.repo.internal.core.domain.model.resume.ResumeModel;
36
import com.dsm.repo.internal.core.usecase.auth.StudentLoginUseCase;
47
import com.dsm.repo.external.exception.error.ErrorCode;
58
import com.dsm.repo.external.exception.ExternalException;
69
import com.dsm.repo.internal.core.domain.model.student.StudentModel;
10+
import com.dsm.repo.internal.data.repository.resume.ResumeRepository;
711
import com.dsm.repo.internal.data.repository.student.StudentRepository;
812
import com.dsm.repo.external.web.rest.auth.dto.AuthElementDto;
913
import com.dsm.repo.external.web.rest.auth.dto.request.LoginRequest;
@@ -23,6 +27,8 @@
2327
import org.springframework.stereotype.Service;
2428
import org.springframework.transaction.annotation.Transactional;
2529

30+
import java.time.Year;
31+
2632
@Service
2733
@RequiredArgsConstructor
2834
class StudentLoginService implements StudentLoginUseCase {
@@ -34,6 +40,8 @@ class StudentLoginService implements StudentLoginUseCase {
3440
private final CreateResumeComponent createResumeComponent;
3541
private final DefaultProfileImageProperties defaultProfileImageProperties;
3642

43+
private final ResumeRepository resumeRepository; // TODO: 3/19/25 안티패턴
44+
3745
@Override
3846
@Transactional
3947
public TokenResponse studentLogin(LoginRequest request) {
@@ -43,13 +51,34 @@ public TokenResponse studentLogin(LoginRequest request) {
4351
}
4452

4553
private TokenResponse loginExistingStudent(LoginRequest request) {
46-
final var student = studentRepository.findByAccountId(request.accountId())
54+
final StudentModel student = studentRepository.findByAccountId(request.accountId())
4755
.orElseThrow(() -> StudentNotFoundException.EXCEPTION);
4856

4957
if (!passwordEncoder.matches(request.password(), student.password())) {
5058
throw PasswordMismatchException.EXCEPTION;
5159
}
5260

61+
final ResumeModel resume = resumeRepository.findByWriterId(student.id())
62+
.orElseThrow(() -> ResumeNotFoundException.EXCEPTION);
63+
64+
if ( // TODO: 3/19/25 안티패턴
65+
resume.year() != Year.now().getValue() // 현재 년도와 다르면 xquare 요청 후 유저 정보 업데이트
66+
) {
67+
final XquareUserResponse xquareUserResponse = xquareClient.xquareUser(request);
68+
69+
final StudentModel updatedStudent = student.updateClassInfo(
70+
new StudentElementDto.ClassInfo(
71+
xquareUserResponse.getGrade(),
72+
xquareUserResponse.getClassNum(),
73+
xquareUserResponse.getNum()
74+
)
75+
);
76+
studentRepository.save(updatedStudent);
77+
78+
final ResumeModel updatedResume = resume.updateYear();
79+
resumeRepository.save(updatedResume);
80+
}
81+
5382
return getTokenResponse(student.id());
5483
}
5584

src/main/java/com/dsm/repo/internal/core/domain/service/resume/ResumeReviseService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class ResumeReviseService implements ResumeReviseUseCase {
2525
@Override
2626
public void revise(final ResumeElementDto.ReviseRequest request) {
2727
final var student = currentStudent.getStudent();
28-
final var resume = currentStudent.getResume(student.accountId());
28+
final var resume = currentStudent.getResume(student.id());
2929

3030
reviseProcess(request, resume);
3131
publishMajorUpdateEvent(request.writer().major(), student.id());

src/main/java/com/dsm/repo/internal/data/repository/resume/AbstractResumeRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public Optional<ResumeModel> findById(String resumeId) {
1919
}
2020

2121
@Override
22-
public Optional<ResumeModel> findByWriterAccountId(String accountId) {
23-
return resumeEntityMapper.toOptionalModel(resumeMongoRepository.findByWriterAccountId(accountId));
22+
public Optional<ResumeModel> findByWriterId(String accountId) {
23+
return resumeEntityMapper.toOptionalModel(resumeMongoRepository.findByWriterId(accountId));
2424
}
2525

2626
@Override

src/main/java/com/dsm/repo/internal/data/repository/resume/ResumeEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ enum Type {
8080
}
8181

8282
record Writer(
83-
String accountId, //todo 현재 유저 고유 아이디 저장 중 -> 변경후 -> 유저
83+
String id,
8484
String name,
8585
SchoolInfo schoolInfo,
8686
String major,

src/main/java/com/dsm/repo/internal/data/repository/resume/ResumeMongoRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import java.util.stream.Stream;
77

88
interface ResumeMongoRepository extends MongoRepository<ResumeEntity, String> {
9-
Optional<ResumeEntity> findByWriterAccountId(String accountId);
9+
Optional<ResumeEntity> findByWriterId(String id);
1010
Stream<ResumeEntity> findAllByStatus(ResumeEntity.Status status);
1111
Stream<ResumeEntity> findAllByWriterSchoolInfoGenerationAndYearAndStatus(int generation, int year, ResumeEntity.Status status);
1212

0 commit comments

Comments
 (0)