반응형
DB에 id 저장
memberId 받아와서 db에 저장하기
token으로 받아와야 함.
@PostMapping("/submitTest")
public ResponseEntity<ResultData> submitTest(@RequestBody ResultData resultData,
@CookieValue(value = "token", required = false) String token) {
System.out.println(resultData + "토큰 submit test");
TestResult (entity)
해당 테이블에 memberId 컬럼을 만들어줌
@Column(name = "member_id")
@Comment("회원 ID")
private int memberId;
컨트롤러
@CookieValue를 사용해서 토큰을 받아온다. 받아지는지 출력문으로 확인 필수!
int memberId = jwtService.getId(token);
@PostMapping("/submitTest")
public ResponseEntity<ResultData> submitTest(@RequestBody ResultData resultData,
@CookieValue(value = "token", required = false) String token) {
System.out.println(resultData + "토큰 submit test");
System.out.println(token+"토큰입니다");
// 토큰값이 유효하지 않으면
if (!jwtService.isValid(token)) {
System.out.println("유효하지 않은 토큰: " + token);
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED);
}
// 토큰값으로부터 id 값 추출하기
int memberId = jwtService.getId(token);
System.out.println("추출된 memberId: " + memberId);
List<TestResult> testResults = new ArrayList<>();
int totalScore = 0;
// 응답 배열 가져옴
List<Integer> userAnswersArray = resultData.getUserAnswersArray();
for (int i = 0; i < userAnswersArray.size(); i++) {
Integer answer = userAnswersArray.get(i);
if (answer != null && answer >= 1 && answer <= 3) {
int score = calculateScore(answer);
totalScore += score;
TestResult testResult = new TestResult();
testResult.setQid(i + 1);
//testResult.setSid(1);
testResult.setTanswer(answer);
testResult.setMemberId(memberId);
testResult.setTdate(LocalDateTime.now());
testResult.setTotalScore(totalScore);
testResults.add(testResult);
}
}
// 결과 데이터 저장
if (!testResults.isEmpty()) {
testService.saveTestResults(testResults);
}
ResultData result = generateResultData(totalScore);
return ResponseEntity.ok(result);
}
클라이언트 코드
/submitTest의 aixos에 { withCredentials: true } 값을 넣어서 같이 보내준다.
submitTest() {
axios.post('http://localhost:3000/api/submitTest', {
userAnswersArray: userAnswersArray,
totalScore: userAnswersArray.reduce((acc, cur) => acc + cur, 0)},
{ withCredentials: true }) // id값 받아오게?
.then(response => {
console.log('성공적으로 제출됨:', response.data);
const { totalScore, recommendedJobs, personalTraits } = response.data;
this.result.totalScore = totalScore;
this.result.recommendedJobs = recommendedJobs;
this.result.personalTraits = personalTraits;
this.$router.push({ name: 'ResultPage', query: { userAnswers: JSON.stringify(userAnswersArray) } });
})
.catch(error => {
console.error('Error submitting test:', error);
});
}
-> member_id 받아와진다.
반응형
'프로젝트' 카테고리의 다른 글
마이페이지에 DB값 불러와서 출력하기 (0) | 2024.05.20 |
---|---|
DB에 있는 List값을 불러오지 못하는 경우 (0) | 2024.05.20 |
심리검사 총점 받아오기 (0) | 2024.05.17 |
[GeoServer] 시도, 시군구, 범례 레이어 겹치지 않게 (0) | 2024.04.04 |
[GeoServer] spring과 DB연동해서 차트 그리기 (0) | 2024.04.01 |
댓글