Skip to content

Commit

Permalink
Merge pull request #95 from prgrms-web-devcourse-final-project/refact…
Browse files Browse the repository at this point in the history
…or/mid-stock/SCRUM-122

[Fix] 중급 주식 데이터 서버측 생성 버그 픽스
  • Loading branch information
chanspar authored Dec 3, 2024
2 parents 2e24e2e + 6e6c895 commit ae91be6
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.annotation.Profile;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -21,7 +20,6 @@
@Component
@RequiredArgsConstructor
@Slf4j
@Profile("dev")
public class InitMidDb {
private static final int DAYS_TO_KEEP = 15;

Expand All @@ -34,6 +32,7 @@ public class InitMidDb {
public void init() {
// 데이터가 이미 존재하는지 확인
if (isDataExists()) {
log.info("중급 초기 데이터 이미 존재");
return; // 데이터가 있으면 초기화 건너뛰기
}
log.info("중급 초기 데이터 생성");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.prgrms.ijuju.domain.stock.mid.controller;

import com.prgrms.ijuju.domain.stock.mid.config.InitMidDb;
import com.prgrms.ijuju.domain.stock.mid.dto.request.MidStockTradePointRequest;
import com.prgrms.ijuju.domain.stock.mid.dto.response.*;
import com.prgrms.ijuju.domain.stock.mid.service.MidStockService;
Expand All @@ -9,11 +10,13 @@
import jakarta.validation.constraints.Positive;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;
import java.util.Map;
Expand All @@ -27,6 +30,10 @@
public class MidStockController {
private final MidStockService midStockService;
private final MidStockTradeService midStockTradeService;
private final InitMidDb initMidDb;

@Value("${admin.key}")
private String adminKey;

// 중급거래목록 3가지 가져오기
@GetMapping("/list")
Expand Down Expand Up @@ -96,4 +103,20 @@ public ResponseEntity<Map<String, Long>> sellMidStock(@PathVariable @Positive Lo

return ResponseEntity.ok(response);
}

@PostMapping("/init-data")
@ResponseStatus(HttpStatus.OK)
public void initMidStock(@RequestHeader("Admin-Key") String requestKey) {
// 보안을 위한 관리자 키 검증
if (!adminKey.equals(requestKey)) {
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Invalid admin key");
}

initMidDb.init();
}

private boolean isValidAdminKey(String adminKey) {
// 환경 변수나 설정에서 관리자 키 확인
return adminKey.equals(System.getenv("ADMIN_SECRET_KEY"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,16 @@ public Optional<MidStockPrice> findLatestPrice(MidStock stock) {
public List<MidStockPrice> find2WeeksPriceInfo(Long midStockId) {
QMidStockPrice midStockPrice = QMidStockPrice.midStockPrice;

LocalDateTime endDate = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59);
LocalDateTime startDate = endDate.minusWeeks(2).withHour(0).withMinute(0).withSecond(0);

return queryFactory
.selectFrom(midStockPrice)
.where(midStockPrice.midStock.id.eq(midStockId))
.where(
midStockPrice.midStock.id.eq(midStockId),
midStockPrice.priceDate.between(startDate, endDate)
)
.orderBy(midStockPrice.priceDate.asc())
.limit(16)
.fetch();
}

Expand Down

0 comments on commit ae91be6

Please sign in to comment.