From 5310d664f144e69ed64a72bf4be675bcaa33cad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=20=EC=8A=B9=20=EC=97=B0?= <53565255+seungyeonnnnnni@users.noreply.github.com> Date: Thu, 14 Dec 2023 12:21:48 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix=20:=20=EB=B0=98=EB=B3=B5=EB=AF=B8?= =?UTF-8?q?=EC=85=98=20=EC=9D=B8=EC=A6=9D=20=EB=8B=A4=ED=95=9C=20=EC=9D=B8?= =?UTF-8?q?=EC=9B=90=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MissionArchiveReadUseCase.java | 11 +++++++++- .../MissionArchiveCustomRepository.java | 1 + .../MissionArchiveCustomRepositoryImpl.java | 20 +++++++++++++++++++ .../service/MissionArchiveQueryService.java | 9 ++++----- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveReadUseCase.java b/src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveReadUseCase.java index 4b018484..497ddb9a 100644 --- a/src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveReadUseCase.java +++ b/src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveReadUseCase.java @@ -3,6 +3,7 @@ import com.moing.backend.domain.member.domain.entity.Member; import com.moing.backend.domain.member.domain.service.MemberGetService; import com.moing.backend.domain.mission.domain.entity.Mission; +import com.moing.backend.domain.mission.domain.entity.constant.MissionType; import com.moing.backend.domain.mission.domain.service.MissionQueryService; import com.moing.backend.domain.missionArchive.application.dto.res.*; import com.moing.backend.domain.missionArchive.application.mapper.MissionArchiveMapper; @@ -58,9 +59,17 @@ public MissionArchiveStatusRes getMissionDoneStatus(Long missionId) { Mission mission = missionQueryService.findMissionById(missionId); Team team = mission.getTeam(); + String done = "0"; + + if (mission.getType().equals(MissionType.ONCE)) { + done = missionArchiveQueryService.findDoneSingleArchives(missionId).toString(); + } else { + done = missionArchiveQueryService.findDoneRepeatArchives(missionId).toString(); + } + return MissionArchiveStatusRes.builder() .total(team.getNumOfMember().toString()) - .done(missionArchiveQueryService.findDoneArchives(missionId).toString()) + .done(done) .build(); } diff --git a/src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepository.java b/src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepository.java index db18bb38..d5514aaa 100644 --- a/src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepository.java +++ b/src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepository.java @@ -22,6 +22,7 @@ public interface MissionArchiveCustomRepository { Optional> findOthersArchives(Long memberId, Long missionId) ; Optional findDonePeopleByMissionId(Long missionId); + Optional findDonePeopleByRepeatMissionId(Long missionId); Optional findMyDoneCountByMissionId(Long missionId,Long memberId); Optional> findRepeatMissionArchivesByMemberId(Long memberId, Long teamId, MissionStatus status); diff --git a/src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepositoryImpl.java b/src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepositoryImpl.java index d0b635ca..a330416e 100644 --- a/src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepositoryImpl.java +++ b/src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepositoryImpl.java @@ -208,6 +208,26 @@ public Optional findDonePeopleByMissionId(Long missionId) { ); } + @Override + public Optional findDonePeopleByRepeatMissionId(Long missionId) { + + BooleanExpression dateInRange = createRepeatTypeConditionByArchive(); + + return Optional.of(queryFactory + .select(missionArchive) + .from(missionArchive) + .where( + missionArchive.mission.id.eq(missionId), + + missionArchive.mission.type.eq(MissionType.REPEAT).and(dateInRange) + .or(missionArchive.mission.type.eq(MissionType.ONCE)) + ) + .groupBy(missionArchive.member,missionArchive.mission.number) + .having(missionArchive.count().goe(missionArchive.mission.number)) + .fetchCount() + + ); + } @Override public Optional findMyDoneCountByMissionId(Long missionId, Long memberId) { diff --git a/src/main/java/com/moing/backend/domain/missionArchive/domain/service/MissionArchiveQueryService.java b/src/main/java/com/moing/backend/domain/missionArchive/domain/service/MissionArchiveQueryService.java index 9e081919..a374bbbd 100644 --- a/src/main/java/com/moing/backend/domain/missionArchive/domain/service/MissionArchiveQueryService.java +++ b/src/main/java/com/moing/backend/domain/missionArchive/domain/service/MissionArchiveQueryService.java @@ -1,7 +1,6 @@ package com.moing.backend.domain.missionArchive.domain.service; import com.moing.backend.domain.mission.application.dto.res.FinishMissionBoardRes; -import com.moing.backend.domain.mission.application.dto.res.GatherSingleMissionRes; import com.moing.backend.domain.mission.application.dto.res.RepeatMissionBoardRes; import com.moing.backend.domain.mission.application.dto.res.SingleMissionBoardRes; import com.moing.backend.domain.mission.domain.entity.constant.MissionStatus; @@ -18,9 +17,6 @@ import java.util.*; -import static com.moing.backend.domain.missionArchive.domain.entity.MissionArchiveStatus.*; -import static com.moing.backend.domain.missionArchive.domain.entity.MissionArchiveStatus.INCOMPLETE; - @DomainService @Transactional @RequiredArgsConstructor @@ -109,9 +105,12 @@ public List findMyRepeatMissionArchives(Long memberId, Lo } - public Long findDoneArchives(Long missionId) { + public Long findDoneSingleArchives(Long missionId) { return missionArchiveRepository.findDonePeopleByMissionId(missionId).orElseThrow(NotFoundMissionArchiveException::new); } + public Long findDoneRepeatArchives(Long missionId) { + return missionArchiveRepository.findDonePeopleByRepeatMissionId(missionId).orElseThrow(NotFoundMissionArchiveException::new); + } public Long findMyDoneArchives(Long memberId, Long missionId) { return missionArchiveRepository.findMyDoneCountByMissionId(missionId, memberId).orElseThrow(NotFoundMissionArchiveException::new); From 2119f9181855d84e9d39b18f0592db1888943408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=20=EC=8A=B9=20=EC=97=B0?= <53565255+seungyeonnnnnni@users.noreply.github.com> Date: Thu, 14 Dec 2023 12:44:17 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix=20:=20=EB=8B=A8=EC=9D=BC=20=EB=AF=B8?= =?UTF-8?q?=EC=85=98=20=EC=9D=B8=EC=A6=9D=20=EC=A7=81=ED=9B=84=20=EC=9D=B8?= =?UTF-8?q?=EC=9B=90=EC=88=98=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/dto/res/MissionArchiveRes.java | 4 ++++ .../service/MissionArchiveCreateUseCase.java | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/moing/backend/domain/missionArchive/application/dto/res/MissionArchiveRes.java b/src/main/java/com/moing/backend/domain/missionArchive/application/dto/res/MissionArchiveRes.java index d562fcfd..10b73af9 100644 --- a/src/main/java/com/moing/backend/domain/missionArchive/application/dto/res/MissionArchiveRes.java +++ b/src/main/java/com/moing/backend/domain/missionArchive/application/dto/res/MissionArchiveRes.java @@ -19,5 +19,9 @@ public class MissionArchiveRes { private String heartStatus; private Long hearts; + public void updateCount(Long count) { + this.count = count; + } + } diff --git a/src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveCreateUseCase.java b/src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveCreateUseCase.java index 5a1463fd..97dc7273 100644 --- a/src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveCreateUseCase.java +++ b/src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveCreateUseCase.java @@ -62,6 +62,8 @@ public MissionArchiveRes createArchive(String userSocialId, Long missionId, Miss throw new NoMoreMissionArchiveException(); } + MissionArchiveRes missionArchiveRes; + // 반복 미션일 경우 if (mission.getType() == MissionType.REPEAT) { // 예정된 반복미션 접근 제한 @@ -74,12 +76,21 @@ public MissionArchiveRes createArchive(String userSocialId, Long missionId, Miss else throw new NoMoreMissionArchiveException(); - }else { + missionStateUseCase.updateMissionState(member, mission, newArchive); + missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive), memberId); + + + } else { newArchive.updateCount(missionArchiveQueryService.findMyDoneArchives(memberId, missionId)+1); + + missionStateUseCase.updateMissionState(member, mission, newArchive); + missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive), memberId); + missionArchiveRes.updateCount(missionArchiveQueryService.findDoneSingleArchives(missionId)); } - missionStateUseCase.updateMissionState(member, mission, newArchive); - return MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive),memberId); +// missionStateUseCase.updateMissionState(member, mission, newArchive); +// missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive), memberId); + return missionArchiveRes; }