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

hotfix : 0120 이슈 대응 #205

Merged
merged 2 commits into from
Jan 19, 2024
Merged

hotfix : 0120 이슈 대응 #205

merged 2 commits into from
Jan 19, 2024

Conversation

seungueonn
Copy link
Member

@seungueonn seungueonn commented Jan 19, 2024

PR 타입

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

개요

#204

  • 지난주에 모든 인증 완료한 인원 불던지기 리스트에 안뜨는 오류
  • 미션 인증 취소가 안되는 오류

변경 사항

  • 조건 기준 추가

    public Optional<List<FireReceiveRes>> getFireReceivers(Long teamId, Long missionId, Long memberId) {
    BooleanExpression dateInRange = createRepeatTypeConditionByArchive();
    JPQLQuery<Long> missionDonePeople = select(missionArchive.member.memberId)
    .from(missionArchive, mission)
    .where(missionArchive.mission.id.eq(missionId),
    mission.id.eq(missionId)
    )
    .groupBy(missionArchive.member.memberId,
    missionArchive.mission.id,
    missionArchive.count,
    mission.number)
    .having(
    missionArchive.mission.id.eq(missionId),
    missionArchive.count.max().goe(mission.number),
    (missionArchive.mission.type.eq(MissionType.REPEAT).and(dateInRange)).or(missionArchive.mission.type.eq(MissionType.ONCE))
    );
    LocalDateTime oneHourAgo = LocalDateTime.now().minusHours(1); // 현재 시간에서 1시간을 뺀 시간
    BooleanExpression oneHourStatus = JPAExpressions
    .select()
    .from(fire)
    .where(
    fire.throwMemberId.eq(memberId),
    fire.receiveMemberId.notIn(missionDonePeople),
    fire.createdDate.after(oneHourAgo) // createdDate가 oneHourAgo 이후인 데이터
    )
    .exists();
    return Optional.ofNullable(queryFactory
    .select(Projections.constructor(FireReceiveRes.class,
    teamMember.member.memberId,
    teamMember.member.nickName,
    teamMember.member.profileImage
    // oneHourStatus.stringValue()
    // teamMember.member.nickName
    ))
    .from(teamMember)
    .where(
    teamMember.team.teamId.eq(teamId),
    teamMember.member.memberId.ne(memberId),
    teamMember.member.memberId.notIn(missionDonePeople),
    teamMember.isDeleted.ne(Boolean.TRUE)
    )
    .fetch());
    }

  • missionState에서 기한 내 missionState를 필터링 할 수 있는 장치가 없어서 .. 큰일입니다 .. 그치만 미션 다시 인증하기는 당일만 되는데, 다시 인증 하기를 호출할 때가 당일만 호출할 테니 최신순으로 정렬하여 fetchFirst 하려 합니다!

    public Optional<MissionState> findMissionStateByMemberAndMission(Member member, Mission mission) {
    return Optional.ofNullable(queryFactory
    .selectFrom(missionState)
    .where(missionState.mission.eq(mission),
    missionState.member.eq(member))
    .orderBy(missionState.createdDate.desc())
    .fetchFirst());
    }
    }

@seungueonn seungueonn changed the title hotfix : hotfix : 0120 이슈 대응 Jan 19, 2024
@seungueonn seungueonn merged commit d42bdd4 into main Jan 19, 2024
1 check 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