Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[release] 반복미션 점수 로직 버그 수정 #193

Merged
merged 2 commits into from
Jan 6, 2024
Merged

Conversation

seungueonn
Copy link
Member

@seungueonn seungueonn commented Jan 6, 2024

PR 타입

  • 기능 추가
  • 버그 수정
  • 의존성, 환경 변수, 빌드 관련 업데이트
  • 기타 사소한 수정

개요

  • 미션 팀 스코어 로직 버그 수정
  • 미션 인증 관련 불필요한 로직 삭제
  • 미션 인증 관련 로직 단순화
  • 불필요한 메소드 삭제

변경 사항

  • 미션 인증 로직 단순화
    미션 인증 로직을 가독성 좋게 단순화 하고 불필요한 메소드를 삭제하였습니다.

    public MissionArchiveRes createArchive(String userSocialId, Long missionId, MissionArchiveReq missionReq) {
    Member member = memberGetService.getMemberBySocialId(userSocialId);
    Long memberId = member.getMemberId();
    Mission mission = missionQueryService.findMissionById(missionId);
    Team team = mission.getTeam();
    MissionArchive newArchive = MissionArchiveMapper.mapToMissionArchive(missionReq, member, mission);
    // 인증 완료한 미션인지 확인
    if (isDoneMission(memberId,mission)) {
    throw new NoMoreMissionArchiveException();
    }
    MissionArchiveRes missionArchiveRes;
    // 반복 미션일 경우
    if (mission.getType() == MissionType.REPEAT) {
    // 아직 열리지 않은 반복미션 접근 제한
    if (mission.getStatus() == MissionStatus.WAIT) {
    throw new NotYetMissionArchiveException();
    }
    // 당일 1회 인증만 가능
    if (missionArchiveQueryService.isAbleToArchiveToday(memberId, missionId)) {
    throw new NoMoreMissionArchiveException();
    } else {
    newArchive.updateCount(missionArchiveQueryService.findMyDoneArchives(memberId, missionId) + 1);
    }
    missionStateUseCase.updateMissionState(member, mission, newArchive);
    missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive), memberId);
    }
    // 한번 미션일 경우
    else {
    // 미션 생성 후 처음 미션 인증 시도 시 ongoing 으로 변경
    if(mission.getStatus() == MissionStatus.WAIT) {
    mission.updateStatus(MissionStatus.ONGOING);
    }
    newArchive.updateCount(missionArchiveQueryService.findMyDoneArchives(memberId, missionId)+1);
    missionStateUseCase.updateMissionState(member, mission, newArchive);
    missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive), memberId);
    // 인증 후 n/n명 인증 성공 리턴값 업데이트
    missionArchiveRes.updateCount(missionArchiveQueryService.findDoneSingleArchives(missionId));
    }
    return missionArchiveRes;
    }

  • 팀 스코어 로직 버그 수정
    기존 반복미션 인증 시 바로 팀 스코어가 반영되는 버그, 한번 미션 인증 시 팀 스코어가 반영되지 않는 버그, 한번 미션에서 모든 모임원이 인증 시 바로 종료되지 않는 버그 를 수정하였습니다.

    • updateMissionState 메소드에서는 한번 미션에서 모든 모임원이 인증 했는지 여부를 판단하여 미션 상태를 update 하고 teamScore 에 반영합니다. 기존에는 missionType 을 고려하지 않고 teamScore 에 반영되는 로직이었기에, 이 부분을 수정하여 버그를 고쳤습니다.
      public void updateMissionState(Member member, Mission mission, MissionArchive missionArchive) {
      MissionType missionType = mission.getType();
      Long missionId = mission.getId();
      missionStateSaveService.saveMissionState(member,mission, missionArchive.getStatus());
      if (missionType == MissionType.ONCE) {
      if (isAbleToEnd(mission)) {
      mission.updateStatus(MissionStatus.SUCCESS);
      teamScoreLogicUseCase.updateTeamScore(missionId);
      }
      }
      }

코드 리뷰 시 참고 사항

테스트 결과

개발 서버로 포스트맨 열심히 돌려보았습니다 ㅎㅎ

seungueonn and others added 2 commits January 6, 2024 16:32
@seungueonn seungueonn changed the title [release] 반복미션 점수 로직 버그 수정 및 [release] 반복미션 점수 로직 버그 수정 Jan 6, 2024
@seungueonn seungueonn merged commit 86e4001 into release Jan 6, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant