Skip to content

Commit b2473ff

Browse files
authored
Merge pull request #115 from prgrms-web-devcourse-final-project/feat/mission
fix : task 다시 수정
2 parents ebc88a9 + d1f3f5b commit b2473ff

File tree

6 files changed

+49
-34
lines changed

6 files changed

+49
-34
lines changed

backend/src/main/java/com/back/domain/mission/dto/response/TaskResponse.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.back.domain.mission.dto.response;
22

33
import com.back.domain.mission.enums.TaskStatus;
4+
import com.fasterxml.jackson.annotation.JsonInclude;
45
import lombok.*;
56

67
import java.time.LocalDate;
@@ -23,20 +24,23 @@ public class TaskResponse {
2324
private boolean canEdit; // 지금 시점에 수정 가능한지 여부
2425
private LocalDate editDeadline; // 수정 마감일
2526

26-
private Integer missionId;
27+
28+
//today 전용
29+
@JsonInclude(JsonInclude.Include.NON_NULL)
2730
private String missionTitle;
28-
private Integer subGoalId;
29-
private String subGoalTitle; // "1주차: 기초 체력 다지기"
30-
private Integer weekNum;
3131

32-
private PartyTaskProgressDto partyProgress; // 파티 미션일 때만
32+
@JsonInclude(JsonInclude.Include.NON_NULL)
33+
private String subGoalTitle;
34+
35+
@JsonInclude(JsonInclude.Include.NON_NULL)
36+
private PartyCompletionDto partyCompletion;
3337
@Getter
3438
@Setter
3539
@NoArgsConstructor
3640
@AllArgsConstructor
3741
@Builder
38-
public static class PartyTaskProgressDto {
39-
private Integer completedMembers; // 완료한 인원
40-
private Integer totalMembers; // 전체 인원 (ACCEPTED)
42+
public static class PartyCompletionDto {
43+
private Integer completedMembers;
44+
private Integer totalMembers;
4145
}
4246
}

backend/src/main/java/com/back/domain/mission/service/MissionCalculateService.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,8 @@ public Integer calculatePartyWeekAverage(SubGoal subGoal) {
215215
return (int) (totalProgress / activeMembers.size());
216216
}
217217

218-
219-
public TaskResponse.PartyTaskProgressDto calculatePartyTaskProgress(Task task, LocalDate date) {
218+
//특정 테스크를 특정 날짜에 완료한 팀원 수 계산
219+
public TaskResponse.PartyCompletionDto calculateTaskCompletion(Task task, LocalDate date) {
220220
Mission mission = task.getSubGoal().getMission();
221221

222222
if (!mission.isPartyMission()) {
@@ -227,11 +227,19 @@ public TaskResponse.PartyTaskProgressDto calculatePartyTaskProgress(Task task, L
227227
.filter(pm -> pm.getStatus() == PartyMemberStatus.ACCEPTED)
228228
.toList();
229229

230-
long completedCount = activeMembers.stream()
230+
int totalMembers = activeMembers.size();
231+
232+
long completedMembers = activeMembers.stream()
231233
.filter(pm -> taskLogRepository.existsByTaskIdAndMemberIdAndDateAndStatus(
232-
task.getId(), pm.getMember().getId(), date, TaskStatus.COMPLETED))
234+
task.getId(),
235+
pm.getMember().getId(),
236+
date,
237+
TaskStatus.COMPLETED
238+
))
233239
.count();
234240

235-
return new TaskResponse.PartyTaskProgressDto((int) completedCount, activeMembers.size());
236-
}
241+
return TaskResponse.PartyCompletionDto.builder()
242+
.completedMembers((int) completedMembers)
243+
.totalMembers(totalMembers)
244+
.build(); }
237245
}

backend/src/main/java/com/back/domain/mission/service/MissionService.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,7 @@ public MissionOverviewResponse getAllMissionsForAdmin() {
118118
List<MissionResponse> completedMissions = new ArrayList<>();
119119

120120
for (Mission m : allMissions) {
121-
MissionResponse response = partyMissionService.convertToSimpleResponse(
122-
m, m.getMember().getId()
123-
);
121+
MissionResponse response = partyMissionService.convertToDetailResponseAdmin(m);
124122

125123
if (m.isCompleted()) {
126124
completedMissions.add(response);

backend/src/main/java/com/back/domain/mission/service/TaskService.java

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public List<TaskResponse> getTodayTasks(Integer memberId) {
108108
List<Task> tasks = taskRepository.findTodayTasks(memberId, today, todayDayNum);
109109

110110
return tasks.stream()
111-
.map(task -> convertToTaskResponse(task, memberId, today))
111+
.map(task -> convertToTaskResponseForToday(task, memberId, today))
112112
.collect(Collectors.toList());
113113
}
114114

@@ -202,20 +202,19 @@ public TaskResponse toTaskResponse(Task task, Integer memberId, LocalDate date)
202202
return convertToTaskResponse(task, memberId, date);
203203
}
204204

205+
205206
private TaskResponse convertToTaskResponse(Task task, Integer memberId, LocalDate date) {
206207
Optional<TaskLog> taskLog = taskLogRepository.findByTaskIdAndMemberIdAndDate(
207208
task.getId(), memberId, date);
208209

209210
TaskStatus status = taskLog.map(TaskLog::getStatus).orElse(TaskStatus.PENDING);
211+
210212
LocalDate lastCompletedDate = taskLogRepository
211213
.findTopByTaskIdAndMemberIdOrderByDateDesc(task.getId(), memberId)
212214
.map(TaskLog::getDate)
213215
.orElse(null);
214216

215-
SubGoal subGoal = task.getSubGoal();
216-
Mission mission = subGoal.getMission();
217-
218-
TaskResponse.TaskResponseBuilder builder = TaskResponse.builder()
217+
return TaskResponse.builder()
219218
.taskId(task.getId())
220219
.title(task.getTitle())
221220
.dayNum(task.getDayNum())
@@ -225,17 +224,7 @@ private TaskResponse convertToTaskResponse(Task task, Integer memberId, LocalDat
225224
.hasBeenEdited(task.getHasBeenEdited())
226225
.canEdit(task.canEdit())
227226
.editDeadline(task.getEditDeadline())
228-
.missionId(mission.getId())
229-
.missionTitle(mission.getTitle())
230-
.subGoalId(subGoal.getId())
231-
.subGoalTitle(subGoal.getTitle())
232-
.weekNum(subGoal.getOrderNum());
233-
234-
if (mission.isPartyMission()) {
235-
builder.partyProgress(calculateService.calculatePartyTaskProgress(task, date));
236-
}
237-
238-
return builder.build();
227+
.build();
239228
}
240229

241230
// 배치 변환 메서드 추가
@@ -301,4 +290,20 @@ private TaskResponse convertToTaskResponseWithMaps(
301290
.editDeadline(task.getEditDeadline())
302291
.build();
303292
}
293+
294+
private TaskResponse convertToTaskResponseForToday(Task task, Integer memberId, LocalDate date) {
295+
TaskResponse response = convertToTaskResponse(task, memberId, date);
296+
297+
Mission mission = task.getSubGoal().getMission();
298+
SubGoal subGoal = task.getSubGoal();
299+
300+
response.setMissionTitle(mission.getTitle());
301+
response.setSubGoalTitle(subGoal.getTitle());
302+
303+
if (mission.isPartyMission()) {
304+
response.setPartyCompletion(calculateService.calculateTaskCompletion(task, date));
305+
}
306+
307+
return response;
308+
}
304309
}

backend/src/main/resources/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ spring:
3939
base-url: https://openrouter.ai/api
4040
chat:
4141
options:
42-
model: x-ai/grok-4-fast:free
42+
model: x-ai/grok-4-fast
4343

4444
security:
4545
oauth2:

db_dev.mv.db

-28 KB
Binary file not shown.

0 commit comments

Comments
 (0)