@kimhanui 전체 트랙 판정 결과가 반영이 안되는 오류가 있어서 수정했음 자잘한 코드도 살짝 수정했는데 아래 참고 하고 코멘트 달아주십셔
오류
JudgeLogService updateOrInsert 메서드 부분에서 if문에서 새로 생성하는 부분은 리포지토리에 save로 저장하고 있는데 기존에 있는걸 업데이트 하는 부분은 리포지토리에 save 하는게 없더라고 그래서 추가 했고
ApiTrackJudgeController에서 아래 코드에서 계속 NPE가 발생해서 아래 처럼 변경했음
ApiTrackJudgeController
변경 전
/** 판정 기록 --> 모든 트랙 대상**/
List<JudgeLogRequestDto> judgeLogRequestDtos = null;
trackStatistics.stream().forEach(trackStatisticSummary ->
{
JudgeLogRequestDto dto = new JudgeLogRequestDto(trackStatisticSummary, userModel.getUserId());
judgeLogRequestDtos.add(dto);
});//--> .map(JudgeLogRequestDto::new)쓰기엔 인자가 두개 허용안되는 것 같음.
변경 후
/** 판정 기록 --> 모든 트랙 대상**/
List<JudgeLogRequestDto> judgeLogRequestDtos = trackStatistics.stream()
.map(trackStatisticSummary -> {
return new JudgeLogRequestDto(trackStatisticSummary, userModel.getUserId());
})
.collect(Collectors.toList());
JudgeLogService updateOrInsert 메서드 부분
변경 전
@Transactional
public void updateOrInsert(List<JudgeLogRequestDto> dtos) throws Exception {
for (JudgeLogRequestDto dto: dtos) {
Member member = memberRepository.findByUserId(dto.getUserId()).get();
Track track = trackRepository.findById(dto.getTrackId()).get();
Optional<JudgeLog> judgeLog = repo.findByMemberAndTrack(dto.getUserId(), dto.getTrackId());
if (judgeLog.isPresent()) {
log.info("judgeLog update.....");
JudgeLog target = judgeLog.get();
target.updateAll(member, track, dto.getPercent(), dto.getPnp());
} else {
log.info("judgeLog update fail ! and being inserted.....");
JudgeLog target = dto.toEntity(member, track);
repo.save(target);
}
}
}
@kimhanui 전체 트랙 판정 결과가 반영이 안되는 오류가 있어서 수정했음 자잘한 코드도 살짝 수정했는데 아래 참고 하고 코멘트 달아주십셔
오류
ApiTrackJudgeController
변경 전
변경 후
JudgeLogService updateOrInsert 메서드 부분
변경 전
변경 후