Skip to content

Commit

Permalink
Merge pull request #149 from Modagbul/feat/mission-alarm
Browse files Browse the repository at this point in the history
Feat/mission alarm
  • Loading branch information
seungueonn authored Dec 14, 2023
2 parents 2e4eb51 + 2119f91 commit 79f3b03
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,9 @@ public class MissionArchiveRes {
private String heartStatus;
private Long hearts;

public void updateCount(Long count) {
this.count = count;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ public MissionArchiveRes createArchive(String userSocialId, Long missionId, Miss
throw new NoMoreMissionArchiveException();
}

MissionArchiveRes missionArchiveRes;

// 반복 미션일 경우
if (mission.getType() == MissionType.REPEAT) {
// 예정된 반복미션 접근 제한
Expand All @@ -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;

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public interface MissionArchiveCustomRepository {
Optional<List<MissionArchive>> findOthersArchives(Long memberId, Long missionId) ;

Optional<Long> findDonePeopleByMissionId(Long missionId);
Optional<Long> findDonePeopleByRepeatMissionId(Long missionId);
Optional<Long> findMyDoneCountByMissionId(Long missionId,Long memberId);

Optional<List<RepeatMissionBoardRes>> findRepeatMissionArchivesByMemberId(Long memberId, Long teamId, MissionStatus status);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,26 @@ public Optional<Long> findDonePeopleByMissionId(Long missionId) {

);
}
@Override
public Optional<Long> 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<Long> findMyDoneCountByMissionId(Long missionId, Long memberId) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -109,9 +105,12 @@ public List<RepeatMissionBoardRes> 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);
Expand Down

0 comments on commit 79f3b03

Please sign in to comment.