Skip to content

Commit d95b8e2

Browse files
authored
Merge pull request #192 from Modagbul/feat/block
fix : 반복미션 점수 업데이트 버그 수정 및 불필요한 메소드 삭제
2 parents b5df456 + 1332505 commit d95b8e2

File tree

8 files changed

+42
-69
lines changed

8 files changed

+42
-69
lines changed

src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveCreateUseCase.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import com.moing.backend.domain.missionArchive.application.dto.res.MissionArchiveRes;
1111
import com.moing.backend.domain.missionArchive.application.mapper.MissionArchiveMapper;
1212
import com.moing.backend.domain.missionArchive.domain.entity.MissionArchive;
13-
import com.moing.backend.domain.missionArchive.domain.entity.MissionArchiveStatus;
1413
import com.moing.backend.domain.missionArchive.domain.service.MissionArchiveDeleteService;
1514
import com.moing.backend.domain.missionArchive.domain.service.MissionArchiveQueryService;
1615
import com.moing.backend.domain.missionArchive.domain.service.MissionArchiveSaveService;
@@ -21,6 +20,7 @@
2120
import com.moing.backend.domain.missionHeart.domain.service.MissionHeartQueryService;
2221
import com.moing.backend.domain.team.domain.entity.Team;
2322
import com.moing.backend.domain.teamScore.application.service.TeamScoreLogicUseCase;
23+
import com.moing.backend.global.utils.BaseService;
2424
import lombok.RequiredArgsConstructor;
2525
import org.springframework.stereotype.Service;
2626
import org.springframework.transaction.annotation.Transactional;
@@ -48,15 +48,12 @@ public MissionArchiveRes createArchive(String userSocialId, Long missionId, Miss
4848

4949
Member member = memberGetService.getMemberBySocialId(userSocialId);
5050
Long memberId = member.getMemberId();
51+
5152
Mission mission = missionQueryService.findMissionById(missionId);
5253
Team team = mission.getTeam();
5354

5455
MissionArchive newArchive = MissionArchiveMapper.mapToMissionArchive(missionReq, member, mission);
5556

56-
// 단일 미션인 경우 미션 인증 시도 시 ongoing 으로 변경
57-
if (mission.getType() == MissionType.ONCE && mission.getStatus() == MissionStatus.WAIT) {
58-
mission.updateStatus(MissionStatus.ONGOING);
59-
}
6057
// 인증 완료한 미션인지 확인
6158
if (isDoneMission(memberId,mission)) {
6259
throw new NoMoreMissionArchiveException();
@@ -66,30 +63,39 @@ public MissionArchiveRes createArchive(String userSocialId, Long missionId, Miss
6663

6764
// 반복 미션일 경우
6865
if (mission.getType() == MissionType.REPEAT) {
69-
// 예정된 반복미션 접근 제한
66+
// 아직 열리지 않은 반복미션 접근 제한
7067
if (mission.getStatus() == MissionStatus.WAIT) {
7168
throw new NotYetMissionArchiveException();
7269
}
70+
7371
// 당일 1회 인증만 가능
74-
if(!missionArchiveQueryService.findDoneTodayArchive(memberId,missionId))
75-
newArchive.updateCount(missionArchiveQueryService.findMyDoneArchives(memberId, missionId)+1);
76-
else
72+
if (missionArchiveQueryService.isAbleToArchiveToday(memberId, missionId)) {
7773
throw new NoMoreMissionArchiveException();
74+
} else {
75+
newArchive.updateCount(missionArchiveQueryService.findMyDoneArchives(memberId, missionId) + 1);
76+
}
7877

7978
missionStateUseCase.updateMissionState(member, mission, newArchive);
8079
missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive), memberId);
8180

81+
}
82+
83+
// 한번 미션일 경우
84+
else {
85+
86+
// 미션 생성 후 처음 미션 인증 시도 시 ongoing 으로 변경
87+
if(mission.getStatus() == MissionStatus.WAIT) {
88+
mission.updateStatus(MissionStatus.ONGOING);
89+
}
8290

83-
} else {
8491
newArchive.updateCount(missionArchiveQueryService.findMyDoneArchives(memberId, missionId)+1);
8592

8693
missionStateUseCase.updateMissionState(member, mission, newArchive);
8794
missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive), memberId);
95+
96+
// 인증 후 n/n명 인증 성공 리턴값 업데이트
8897
missionArchiveRes.updateCount(missionArchiveQueryService.findDoneSingleArchives(missionId));
8998
}
90-
91-
// missionStateUseCase.updateMissionState(member, mission, newArchive);
92-
// missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveRes(missionArchiveSaveService.save(newArchive), memberId);
9399
return missionArchiveRes;
94100

95101
}
@@ -99,8 +105,4 @@ public Boolean isDoneMission(Long memberId,Mission mission) {
99105
return missionArchiveQueryService.findMyDoneArchives(memberId, mission.getId()) >= mission.getNumber();
100106
}
101107

102-
103-
104-
105-
106108
}

src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveReadUseCase.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.moing.backend.domain.missionArchive.application.service;
22

3-
import com.moing.backend.domain.member.domain.entity.Member;
43
import com.moing.backend.domain.member.domain.service.MemberGetService;
54
import com.moing.backend.domain.mission.domain.entity.Mission;
65
import com.moing.backend.domain.mission.domain.entity.constant.MissionType;
@@ -9,7 +8,6 @@
98
import com.moing.backend.domain.missionArchive.application.mapper.MissionArchiveMapper;
109
import com.moing.backend.domain.missionArchive.domain.service.MissionArchiveQueryService;
1110
import com.moing.backend.domain.team.domain.entity.Team;
12-
import com.moing.backend.domain.team.domain.repository.TeamRepository;
1311
import com.moing.backend.domain.team.domain.service.TeamGetService;
1412
import lombok.RequiredArgsConstructor;
1513
import org.springframework.stereotype.Service;
@@ -40,7 +38,7 @@ public MyMissionArchiveRes getMyArchive(String userSocialId, Long missionId) {
4038
List<MissionArchiveRes> missionArchiveRes = MissionArchiveMapper.mapToMissionArchiveResList(missionArchiveQueryService.findMyArchive(memberId, missionId), memberId);
4139
myMissionArchiveRes.updateArchives(missionArchiveRes);
4240

43-
myMissionArchiveRes.updateTodayStatus(missionArchiveQueryService.findDoneTodayArchive(memberId, missionId));
41+
myMissionArchiveRes.updateTodayStatus(missionArchiveQueryService.isAbleToArchiveToday(memberId, missionId));
4442

4543
return myMissionArchiveRes;
4644

src/main/java/com/moing/backend/domain/missionArchive/application/service/MissionArchiveUpdateUseCase.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class MissionArchiveUpdateUseCase {
4646
private final MissionStateUseCase missionStateUseCase;
4747

4848

49-
// 미션 재인증 (수정하기도 포함됨)
49+
// 미션 재인증 (수정하기도 포함됨) -> 사용하지 않음
5050
public MissionArchiveRes updateArchive(String userSocialId, Long missionId, MissionArchiveReq missionReq) {
5151

5252
Member member = memberGetService.getMemberBySocialId(userSocialId);
@@ -58,13 +58,12 @@ public MissionArchiveRes updateArchive(String userSocialId, Long missionId, Miss
5858
if (mission.getWay() == MissionWay.PHOTO && missionArchiveQueryService.isDone(memberId, missionId)) {
5959
//s3삭제
6060

61-
6261
}
6362

6463
MissionArchive updateArchive = missionArchiveQueryService.findMyArchive(memberId, missionId).get(0);
6564

6665
// 단일 미션 && 미션 종료 직전인지 확인
67-
if (mission.getType() == MissionType.ONCE && missionStateUseCase.isAbleToEnd(missionId)) {
66+
if (mission.getType() == MissionType.ONCE && missionStateUseCase.isAbleToEnd(mission)) {
6867
mission.updateStatus(MissionStatus.SUCCESS);
6968
// 점수 반영 로직
7069

src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepository.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.moing.backend.domain.missionArchive.application.dto.res.MissionArchivePhotoRes;
99
import com.moing.backend.domain.missionArchive.application.dto.res.MyArchiveStatus;
1010
import com.moing.backend.domain.missionArchive.domain.entity.MissionArchive;
11-
import com.moing.backend.domain.missionArchive.domain.entity.MissionArchiveStatus;
1211
import org.springframework.stereotype.Repository;
1312

1413
import java.util.List;
@@ -22,7 +21,7 @@ public interface MissionArchiveCustomRepository {
2221

2322
Optional<List<MissionArchive>> findOthersArchives(Long memberId, Long missionId) ;
2423

25-
Optional<Long> findDonePeopleByMissionId(Long missionId);
24+
Optional<Long> findDonePeopleBySingleMissionId(Long missionId);
2625
Optional<Long> findDonePeopleByRepeatMissionId(Long missionId);
2726
Optional<Long> findMyDoneCountByMissionId(Long missionId,Long memberId);
2827

src/main/java/com/moing/backend/domain/missionArchive/domain/repository/MissionArchiveCustomRepositoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ public Optional<List<MissionArchive>> findOthersArchives(Long memberId, Long mis
199199

200200

201201
@Override
202-
public Optional<Long> findDonePeopleByMissionId(Long missionId) {
202+
public Optional<Long> findDonePeopleBySingleMissionId(Long missionId) {
203203

204204
BooleanExpression dateInRange = createRepeatTypeConditionByArchive();
205205

src/main/java/com/moing/backend/domain/missionArchive/domain/service/MissionArchiveQueryService.java

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@ public MissionArchive findByMissionArchiveId(Long missionArchiveId) {
3131
return missionArchiveRepository.findById(missionArchiveId).orElseThrow(NotFoundMissionArchiveException::new);
3232
}
3333

34-
public MissionArchive findArchive(Long memberId, Long missionId) {
35-
return missionArchiveRepository.findByMissionIdAndMemberId(memberId, missionId).orElseThrow(NotFoundMissionArchiveException::new);
36-
}
3734

3835
public List<MissionArchive> findMyArchive(Long memberId, Long missionId) {
3936

@@ -60,9 +57,6 @@ public List<MissionArchive> findOthersArchive(Long memberId, Long missionId) {
6057
return missionArchiveRepository.findOthersArchives(memberId, missionId).orElseThrow(NotFoundMissionArchiveException::new);
6158
}
6259

63-
public List<MissionArchive> findArchivesByMemberId(Long memberId) {
64-
return missionArchiveRepository.findByMemberId(memberId).orElseThrow(NotFoundMissionArchiveException::new);
65-
}
6660

6761
public Boolean isDone(Long memberId, Long missionId) {
6862
Optional<List<MissionArchive>> byMemberId = missionArchiveRepository.findArchivesByMissionIdAndMemberId(memberId, missionId);
@@ -73,18 +67,6 @@ public Boolean isDone(Long memberId, Long missionId) {
7367
}
7468
}
7569

76-
public Boolean isTodayDone(Long memberId, Long missionId) {
77-
Optional<List<MissionArchive>> byMemberId = missionArchiveRepository.findArchivesByMissionIdAndMemberId(memberId, missionId);
78-
if (byMemberId.isPresent()) {
79-
80-
return Boolean.TRUE;
81-
} else {
82-
return Boolean.FALSE;
83-
}
84-
}
85-
86-
// team의 mission id 들 가져와서 나의 mission archive 리턴
87-
8870
/**
8971
* mission.getTeam() 팀의 단일미션 미션 인증 보드
9072
*/
@@ -107,7 +89,7 @@ public List<RepeatMissionBoardRes> findMyRepeatMissionArchives(Long memberId, Lo
10789

10890

10991
public Long findDoneSingleArchives(Long missionId) {
110-
return missionArchiveRepository.findDonePeopleByMissionId(missionId).orElseThrow(NotFoundMissionArchiveException::new);
92+
return missionArchiveRepository.findDonePeopleBySingleMissionId(missionId).orElseThrow(NotFoundMissionArchiveException::new);
11193
}
11294
public Long findDoneRepeatArchives(Long missionId) {
11395
return missionArchiveRepository.findDonePeopleByRepeatMissionId(missionId).orElseThrow(NotFoundMissionArchiveException::new);
@@ -126,7 +108,7 @@ public List<MissionArchivePhotoRes> findTop5ArchivesByTeam(List<Long> teamIds) {
126108
return missionArchiveRepository.findTop5ArchivesByTeam(teamIds).orElse(null);
127109
}
128110

129-
public boolean findDoneTodayArchive(Long memberId, Long missionId) {
111+
public boolean isAbleToArchiveToday(Long memberId, Long missionId) {
130112
return missionArchiveRepository.findMyArchivesToday(memberId, missionId);
131113
}
132114

src/main/java/com/moing/backend/domain/missionState/application/service/MissionStateUseCase.java

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,47 +36,40 @@ public class MissionStateUseCase {
3636
private final TeamScoreLogicUseCase teamScoreLogicUseCase;
3737

3838

39-
public boolean isAbleToEnd(Long missionId) {
39+
/*
40+
모든 모임원이 미션을 완료했는지 여부 확인
41+
*/
42+
public boolean isAbleToEnd(Mission mission) {
4043

41-
Mission mission = missionQueryService.findMissionById(missionId);
4244
Long total = totalPeople(mission);
4345
Long done = donePeople(mission);
4446

4547
return done >= total;
4648

4749
}
48-
public boolean isAbleToScoreUp(Long missionId) {
49-
50-
Mission mission = missionQueryService.findMissionById(missionId);
51-
Long total = totalPeople(mission);
52-
Long done = donePeople(mission);
53-
54-
log.info("done/total -> "+ done+ total);
55-
56-
return done >= total;
57-
58-
}
59-
6050

6151
public Long donePeople(Mission mission) {
6252
return Long.valueOf(missionStateQueryService.stateCountByMissionId(mission.getId()));
6353
}
6454

6555
public Long totalPeople(Mission mission) {
6656
return Long.valueOf(mission.getTeam().getNumOfMember());
67-
6857
}
6958

7059
public void updateMissionState(Member member, Mission mission, MissionArchive missionArchive) {
7160

72-
// 마지막 인증 시
73-
if (mission.getType().equals(MissionType.ONCE) && isAbleToEnd(mission.getId())) {
74-
mission.updateStatus(MissionStatus.SUCCESS);
75-
}
61+
MissionType missionType = mission.getType();
62+
Long missionId = mission.getId();
63+
7664
missionStateSaveService.saveMissionState(member,mission, missionArchive.getStatus());
7765

78-
if (isAbleToScoreUp(mission.getId())) {
79-
teamScoreLogicUseCase.updateTeamScore(mission.getId());
66+
if (missionType == MissionType.ONCE) {
67+
68+
if (isAbleToEnd(mission)) {
69+
mission.updateStatus(MissionStatus.SUCCESS);
70+
teamScoreLogicUseCase.updateTeamScore(missionId);
71+
}
72+
8073
}
8174

8275
}

src/main/java/com/moing/backend/domain/missionState/domain/repository/MissionStateCustomRepositoryImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ public int getCountsByMissionId(Long missionId) {
3838
LocalDate startOfWeek = now.with(TemporalAdjusters.previousOrSame(firstDayOfWeek));
3939
LocalDate endOfWeek = startOfWeek.plusDays(6); // 한 주의 마지막일을 일요일로 설정
4040

41-
BooleanExpression repeatTypeCondition = missionState.mission.type.eq(MissionType.REPEAT)
41+
BooleanExpression repeatTypeCondition = (missionState.mission.type.eq(MissionType.REPEAT)
4242
.and(missionState.createdDate.goe(startOfWeek.atStartOfDay()))
43-
.and(missionState.createdDate.loe(endOfWeek.atStartOfDay().plusDays(1).minusNanos(1)));
43+
.and(missionState.createdDate.loe(endOfWeek.atStartOfDay().plusDays(1).minusNanos(1)))).or(missionState.mission.type.eq(MissionType.ONCE));
4444

4545
// 기본 조건
4646
BooleanExpression baseCondition = missionState.mission.id.eq(missionId);

0 commit comments

Comments
 (0)