riyenas0925 / Sejong_Track_Management

:school: 세종대학교 트랙관리 프로그램
Apache License 2.0
6 stars 2 forks source link

BUG, ENH, TST : 전체 트랙 판정 결과가 업데이트되지 않는 오류 수정, 테스트 코드 수정 #245

Closed riyenas0925 closed 4 years ago

riyenas0925 commented 4 years ago

@kimhanui 전체 트랙 판정 결과가 반영이 안되는 오류가 있어서 수정했음 자잘한 코드도 살짝 수정했는데 아래 참고 하고 코멘트 달아주십셔

오류

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);
        }
    }
}

변경 후

@Transactional
public void save(List<JudgeLogRequestDto> JudgeLogRequestDtos) throws Exception {
    for (JudgeLogRequestDto dto: JudgeLogRequestDtos) {
        Member member = memberRepository.findByUserId(dto.getUserId()).get();
        Track track = trackRepository.findById(dto.getTrackId()).get();
        Optional<JudgeLog> memberJudgeLog = judgeLogRepository.findByMemberAndTrack(dto.getUserId(), dto.getTrackId());

        log.info(member.getName() + " : " + track.getTitle() + " : " + memberJudgeLog.toString());

        if (memberJudgeLog.isPresent()) {
            log.info("judgeLog update.....");
            JudgeLog judgeLog = memberJudgeLog.get();
            judgeLog.updateJudgeLog(member, track, dto.getPercent(), dto.getPnp());
            judgeLogRepository.save(judgeLog);
        } else {
            log.info("not found judgeLog, create judgeLog....");
            JudgeLog judgeLog = dto.toEntity(member, track);
            judgeLogRepository.save(judgeLog);
        }
    }
}