1010import java .util .Collections ;
1111import java .util .List ;
1212import java .util .Map ;
13- import java .util .NoSuchElementException ;
1413
1514@ RestController
1615@ RequestMapping ("/api/v1/stats" )
@@ -22,33 +21,26 @@ public class CaseStatsController {
2221 // 개요 조회
2322 @ GetMapping ("/overview" )
2423 public ResponseEntity <?> getOverview (HttpSession session ) {
25- try {
26- CaseStatsOverviewResponse response = caseStatsService .getOverview (session );
27- return ResponseEntity .ok (response );
28- } catch (IllegalStateException e ) {
29- return ResponseEntity .status (401 ).body (Collections .singletonMap ("message" , e .getMessage ()));
30- } catch (NoSuchElementException e ) {
31- return ResponseEntity .status (404 ).body (Collections .singletonMap ("message" , e .getMessage ()));
32- } catch (Exception e ) {
33- return ResponseEntity .status (500 ).body (Collections .singletonMap ("message" , "내부 서버 오류 발생" ));
24+ // 결과가 없으면 404, 있으면 200
25+ CaseStatsOverviewResponse response = caseStatsService .getOverview (session );
26+ if (response == null ) {
27+ return ResponseEntity .status (404 )
28+ .body (Collections .singletonMap ("message" , "개요 정보가 없습니다." ));
3429 }
30+ return ResponseEntity .ok (response );
3531 }
3632
3733 // 시간대별 사건 수 조회 (0시~23시 모두 반환)
3834 @ GetMapping ("/hour" )
3935 public ResponseEntity <?> getHourlyCaseStats (@ RequestParam ("date" ) String date ,
4036 @ RequestParam (value = "category" , required = false ) String category ,
4137 HttpSession session ) {
42- try {
43- List <HourlyCaseStatsResponse > stats = caseStatsService .getHourlyCaseStats (date , category , session );
44- return ResponseEntity .ok (stats );
45- } catch (IllegalStateException e ) {
46- return ResponseEntity .status (401 ).body (Collections .singletonMap ("message" , e .getMessage ()));
47- } catch (NoSuchElementException e ) {
48- return ResponseEntity .status (404 ).body (Collections .singletonMap ("message" , e .getMessage ()));
49- } catch (Exception e ) {
50- return ResponseEntity .status (500 ).body (Collections .singletonMap ("message" , "내부 서버 오류가 발생했습니다." ));
38+ List <HourlyCaseStatsResponse > stats = caseStatsService .getHourlyCaseStats (date , category , session );
39+ if (stats .isEmpty ()) {
40+ return ResponseEntity .status (404 )
41+ .body (Collections .singletonMap ("message" , "시간대별 사건 정보가 없습니다." ));
5142 }
43+ return ResponseEntity .ok (stats );
5244 }
5345
5446 // 월별/일별 사건 수 조회 (month 파라미터 존재 여부에 따라 분기; 전체 범위를 0으로 채워 반환)
@@ -57,70 +49,36 @@ public ResponseEntity<?> getCaseStats(@RequestParam("year") int year,
5749 @ RequestParam (value = "month" , required = false ) Integer month ,
5850 @ RequestParam (value = "category" , required = false ) String category ,
5951 HttpSession session ) {
60- try {
61- if (month == null ) {
62- List <MonthlyCaseStatsResponse > monthlyStats = caseStatsService .getMonthlyCaseStats (year , category , session );
63- return ResponseEntity .ok (monthlyStats );
64- }
65- List <DailyCaseStatsResponse > dailyStats = caseStatsService .getDailyCaseStats (year , month , category , session );
66- return ResponseEntity .ok (dailyStats );
67- } catch (IllegalStateException e ) {
68- return ResponseEntity .status (401 ).body (Collections .singletonMap ("message" , e .getMessage ()));
69- } catch (NoSuchElementException e ) {
70- return ResponseEntity .status (404 ).body (Collections .singletonMap ("message" , e .getMessage ()));
71- } catch (Exception e ) {
72- return ResponseEntity .status (500 ).body (Collections .singletonMap ("message" , "내부 서버 오류가 발생했습니다." ));
52+ // month가 없으면 월별 데이터
53+ if (month == null ) {
54+ List <MonthlyCaseStatsResponse > monthlyStats = caseStatsService .getMonthlyCaseStats (year , category , session );
55+ return ResponseEntity .ok (monthlyStats );
7356 }
57+
58+ // month가 있으면 일별 데이터
59+ List <DailyCaseStatsResponse > dailyStats = caseStatsService .getDailyCaseStats (year , month , category , session );
60+ return ResponseEntity .ok (dailyStats );
7461 }
7562
7663 // 유형별 사건 수 조회 (기본 카테고리 0 포함)
7764 @ GetMapping ("/category" )
7865 public ResponseEntity <?> getCategoryCaseStats (@ RequestParam ("period" ) String period , HttpSession session ) {
79- try {
80- Map <String , Integer > stats = caseStatsService .getCategoryCaseStats (period , session );
81- return ResponseEntity .ok (stats );
82- } catch (IllegalStateException e ) {
83- return ResponseEntity .status (401 ).body (Collections .singletonMap ("message" , e .getMessage ()));
84- } catch (IllegalArgumentException e ) {
85- return ResponseEntity .status (400 ).body (Collections .singletonMap ("message" , e .getMessage ()));
86- } catch (NoSuchElementException e ) {
87- return ResponseEntity .status (404 ).body (Collections .singletonMap ("message" , e .getMessage ()));
88- } catch (Exception e ) {
89- return ResponseEntity .status (500 ).body (Collections .singletonMap ("message" , "내부 서버 오류가 발생했습니다." ));
90- }
66+ Map <String , Integer > stats = caseStatsService .getCategoryCaseStats (period , session );
67+ return ResponseEntity .ok (stats );
9168 }
9269
9370 // 장소별 사건 수 조회
9471 @ GetMapping ("/location" )
9572 public ResponseEntity <?> getLocationCaseStats (@ RequestParam ("period" ) String period , HttpSession session ) {
96- try {
97- List <LocationCaseStatsResponse > stats = caseStatsService .getLocationCaseStats (period , session );
98- return ResponseEntity .ok (stats );
99- } catch (IllegalStateException e ) {
100- return ResponseEntity .status (401 ).body (Collections .singletonMap ("message" , e .getMessage ()));
101- } catch (IllegalArgumentException e ) {
102- return ResponseEntity .status (400 ).body (Collections .singletonMap ("message" , e .getMessage ()));
103- } catch (NoSuchElementException e ) {
104- return ResponseEntity .status (404 ).body (Collections .singletonMap ("message" , e .getMessage ()));
105- } catch (Exception e ) {
106- return ResponseEntity .status (500 ).body (Collections .singletonMap ("message" , "내부 서버 오류가 발생했습니다." ));
107- }
73+ List <LocationCaseStatsResponse > stats = caseStatsService .getLocationCaseStats (period , session );
74+ return ResponseEntity .ok (stats );
10875 }
10976
11077 // 지도용 장소별 사건 수 조회
11178 @ GetMapping ("/map" )
11279 public ResponseEntity <?> getMapCaseStats (@ RequestParam ("period" ) String period , HttpSession session ) {
113- try {
114- List <MapCaseStatsResponse > stats = caseStatsService .getMapCaseStats (period , session );
115- return ResponseEntity .ok (stats );
116- } catch (IllegalStateException e ) {
117- return ResponseEntity .status (401 ).body (Collections .singletonMap ("message" , e .getMessage ()));
118- } catch (IllegalArgumentException e ) {
119- return ResponseEntity .status (400 ).body (Collections .singletonMap ("message" , e .getMessage ()));
120- } catch (NoSuchElementException e ) {
121- return ResponseEntity .status (404 ).body (Collections .singletonMap ("message" , e .getMessage ()));
122- } catch (Exception e ) {
123- return ResponseEntity .status (500 ).body (Collections .singletonMap ("message" , "내부 서버 오류가 발생했습니다." ));
124- }
80+ List <MapCaseStatsResponse > stats = caseStatsService .getMapCaseStats (period , session );
81+ return ResponseEntity .ok (stats );
12582 }
83+
12684}
0 commit comments