Skip to content

Commit dcc3550

Browse files
authored
Merge pull request #90 from kookmin-sw/backend
[Backend] merge: 3차 API 연동
2 parents d900d3e + 268b575 commit dcc3550

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

backend/src/main/java/com/example/backend/dashboard/controller/AlarmListController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.example.backend.dashboard.controller;
22

3+
import com.example.backend.dashboard.dto.AlarmRequest;
34
import com.example.backend.dashboard.dto.AlarmResponse;
45
import com.example.backend.dashboard.service.AlarmListService;
56
import jakarta.servlet.http.HttpSession;
67
import lombok.RequiredArgsConstructor;
78
import org.springframework.http.ResponseEntity;
89
import org.springframework.web.bind.annotation.*;
910

11+
import java.util.Collections;
1012
import java.util.List;
1113

1214
@RestController
@@ -30,9 +32,9 @@ public ResponseEntity<?> getCaseById(@PathVariable("id") int id, HttpSession se
3032

3133
// 출동 | 미출동 클릭 시 => 1. 이미 출동인 상태 or 2. state를 업데이트
3234
@PutMapping("/ready/{id}")
33-
public ResponseEntity<?> updateCaseState(@PathVariable("id") int id, HttpSession session) {
34-
String message = alarmListService.updateCaseState(id, session);
35-
return ResponseEntity.ok(message);
35+
public ResponseEntity<?> updateCaseState(@PathVariable("id") int id, @RequestBody AlarmRequest request, HttpSession session) {
36+
String message = alarmListService.updateCaseState(id, request.getState(), session);
37+
return ResponseEntity.ok(Collections.singletonMap("message", message));
3638
}
3739

3840
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.example.backend.dashboard.dto;
2+
3+
import com.example.backend.common.domain.CaseEntity.CaseState;
4+
import lombok.Getter;
5+
import lombok.Setter;
6+
7+
@Getter
8+
@Setter
9+
public class AlarmRequest {
10+
private CaseState state; // "출동" or "미출동"
11+
}

backend/src/main/java/com/example/backend/dashboard/service/AlarmListService.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,30 +66,42 @@ public List<AlarmResponse> getReadyCases(HttpSession session) {
6666
public AlarmResponse getCaseById(Integer id, HttpSession session) {
6767
CaseEntity caseEntity = getAuthorizedCase(id, session);
6868

69-
if(caseEntity.getState() != CaseEntity.CaseState.확인 && caseEntity.getState() != CaseEntity.CaseState.미확인) {
70-
throw new IllegalStateException("해당 사건은 이미 출동 되었거나 완료된 사건입니다.");
69+
if (caseEntity.getState() == CaseState.출동 || caseEntity.getState() == CaseState.미출동 || caseEntity.getState() == CaseState.완료) {
70+
throw new IllegalStateException("해당 사건은 이미 출동 처리되었거나 완료된 사건입니다.");
71+
}
72+
73+
if(caseEntity.getState() == CaseState.미확인){
74+
caseEntity.setState(CaseState.확인);
75+
alarmListRepository.save(caseEntity);
7176
}
7277

7378
return AlarmResponse.fromEntityWithVideo(caseEntity);
7479
}
7580

76-
public String updateCaseState(Integer id, HttpSession session) {
81+
public String updateCaseState(Integer id, CaseState state, HttpSession session) {
7782
CaseEntity caseEntity = getAuthorizedCase(id, session);
7883
int policeId = getAuthenticatedPoliceId(session);
7984

80-
// 이미 state가 "출동"이면 메시지 반환
81-
if (caseEntity.getState() == CaseEntity.CaseState.출동) {
82-
return "이미 출동된 사건입니다.";
83-
} else {
84-
// 그 외의 경우, state를 "출동"으로 변경 후 저장
85-
caseEntity.setState(CaseEntity.CaseState.출동);
85+
if (caseEntity.getState() == CaseState.출동 || caseEntity.getState() == CaseState.미출동 || caseEntity.getState() == CaseState.완료) {
86+
throw new IllegalStateException("해당 사건은 이미 출동 처리되었거나 완료된 사건입니다.");
87+
}
88+
89+
if (state == CaseState.출동) {
90+
// state를 "출동"으로 변경 후 저장
91+
caseEntity.setState(CaseState.출동);
8692

8793
// 경찰관 배정: 현재 로그인한 경찰관의 id를 PoliceEntity에 할당
8894
PoliceEntity assignedPolice = PoliceEntity.builder().id(policeId).build();
8995
caseEntity.setPolice(assignedPolice);
9096

9197
alarmListRepository.save(caseEntity);
9298
return "지금 출동합니다.";
99+
} else {
100+
// state를 "미출동"으로 변경 후 저장
101+
caseEntity.setState(CaseState.미출동);
102+
103+
alarmListRepository.save(caseEntity);
104+
return "미출동 사건으로 변경합니다.";
93105
}
94106
}
95107

0 commit comments

Comments
 (0)