Skip to content

Commit a55b2cb

Browse files
authored
deploy 1.10.1
배포 1.10.1
2 parents 7bb968b + 1acde2a commit a55b2cb

File tree

3 files changed

+114
-0
lines changed

3 files changed

+114
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.day_walk.backend.domain.click_log.controller;
2+
3+
import com.day_walk.backend.domain.click_log.data.dto.in.SaveClickLogDto;
4+
import com.day_walk.backend.domain.click_log.service.ClickLogService;
5+
import io.swagger.v3.oas.annotations.Operation;
6+
import io.swagger.v3.oas.annotations.tags.Tag;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.http.HttpStatus;
9+
import org.springframework.http.ResponseEntity;
10+
import org.springframework.web.bind.annotation.*;
11+
12+
import java.util.HashMap;
13+
import java.util.Map;
14+
15+
@RequestMapping("/api/click-log")
16+
@Tag(name = "Click-log 관련 API", description = "Click-log 관련된 API 명세서입니다.")
17+
@RequiredArgsConstructor
18+
@RestController
19+
public class ClickLogController {
20+
21+
private final ClickLogService clickLogService;
22+
23+
@Operation(summary = "클릭 로그 저장", description = "한 유저의 클릭 기록을 저장합니다.")
24+
@PostMapping
25+
public ResponseEntity<Map<String, Object>> saveClickLog(@RequestBody SaveClickLogDto saveClickLogDto) {
26+
SaveClickLogDto saveResult = clickLogService.saveClickLog(saveClickLogDto);
27+
boolean success = saveResult != null;
28+
29+
Map<String, Object> response = new HashMap<>();
30+
response.put("success", success);
31+
response.put("message", success ? "클릭 기록 저장 완료!" : "클릭 기록 저장 실패..");
32+
33+
return ResponseEntity.status(HttpStatus.OK).body(response);
34+
}
35+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.day_walk.backend.domain.click_log.data.dto.in;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
6+
import java.util.UUID;
7+
8+
@Data
9+
@AllArgsConstructor
10+
public class SaveClickLogDto {
11+
12+
private UUID userId;
13+
private UUID placeId;
14+
private String timestamp;
15+
16+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.day_walk.backend.domain.click_log.service;
2+
3+
import com.day_walk.backend.domain.click_log.data.dto.in.SaveClickLogDto;
4+
import com.day_walk.backend.global.error.CustomException;
5+
import com.day_walk.backend.global.error.ErrorCode;
6+
import lombok.RequiredArgsConstructor;
7+
import lombok.extern.slf4j.Slf4j;
8+
import org.springframework.beans.factory.annotation.Value;
9+
import org.springframework.http.*;
10+
import org.springframework.stereotype.Service;
11+
import org.springframework.web.client.HttpStatusCodeException;
12+
import org.springframework.web.client.RestTemplate;
13+
import org.springframework.web.util.UriComponentsBuilder;
14+
15+
@Slf4j
16+
@RequiredArgsConstructor
17+
@Service
18+
public class ClickLogService {
19+
20+
private final RestTemplate restTemplate;
21+
22+
@Value("${elk-server-uri}")
23+
private String ELK_SERVER_URI;
24+
25+
public SaveClickLogDto saveClickLog(SaveClickLogDto saveClickLogDto) {
26+
String uri = UriComponentsBuilder
27+
.fromUriString(ELK_SERVER_URI)
28+
.pathSegment("click-log")
29+
.toUriString();
30+
31+
HttpHeaders headers = new HttpHeaders();
32+
headers.setContentType(MediaType.APPLICATION_JSON);
33+
34+
HttpEntity<SaveClickLogDto> requestEntity = new HttpEntity<>(saveClickLogDto, headers);
35+
36+
try {
37+
ResponseEntity<SaveClickLogDto> response = restTemplate.exchange(
38+
uri,
39+
HttpMethod.POST,
40+
requestEntity,
41+
SaveClickLogDto.class
42+
);
43+
44+
log.info("ELK 응답 상태 코드: {}", response.getStatusCode());
45+
log.info("ELK 응답 본문: {}", response.getBody());
46+
47+
if (response.getBody() == null) {
48+
log.warn("ELK 응답 body가 null입니다. 요청 URI: {}", uri);
49+
throw new CustomException(ErrorCode.ELK_SERVER_ERROR);
50+
}
51+
52+
return response.getBody();
53+
54+
} catch (HttpStatusCodeException e) {
55+
log.error("ELK 서버 HTTP 오류 발생: {}", e.getStatusCode());
56+
log.error("오류 응답 본문: {}", e.getResponseBodyAsString());
57+
} catch (Exception e) {
58+
log.error("ELK 서버 요청 중 예외 발생: ", e);
59+
}
60+
61+
return null;
62+
}
63+
}

0 commit comments

Comments
 (0)