Skip to content

Commit

Permalink
Merge pull request #21 from potenday-project/develop
Browse files Browse the repository at this point in the history
면접 삭제 기능 추가
  • Loading branch information
HwangHoYoon authored Dec 15, 2023
2 parents 88585a5 + 5144947 commit 709295f
Show file tree
Hide file tree
Showing 10 changed files with 83 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,20 @@

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.nio.charset.StandardCharsets;

@Configuration
public class CommonConfig {

@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
return restTemplate;
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration config = new CorsConfiguration();

config.setAllowCredentials(true);
config.setAllowedOrigins(List.of("http://localhost:3000"));
config.setAllowedOrigins(List.of("http://localhost:3000", "https://tikitaka.chat"));
config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"));
config.setAllowedHeaders(List.of("*"));
config.setExposedHeaders(List.of("*"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public enum ExceptionCode {

RESUME_LIST_OVER("861", "이력서 최대 개수를 초과하였습니다."),

RESUME_TOKEN_OVER("862", "이력서의 글자 수를 5,000자 이하로 줄여주세요"),

RECRUIT_CONTENT_NULL("870", "채용공고 정보가 올바르지 않습니다."),

INTERVIEW_NULL("880", "면접 정보가 올바르지 않습니다."),
Expand All @@ -45,7 +47,19 @@ public enum ExceptionCode {

QA_NULL("890", "질문 정보가 올바르지 않습니다."),

TOKEN_NULL("950", "토큰정보가 올바르지 않습니다.")
TOKEN_NULL("950", "토큰정보가 올바르지 않습니다."),

API_NULL("980", "API 결과 NULL"),

API_JSON_MAPPING_FAIL("981", "API JSON 매핑에 실패했습니다."),

API_NOT_OK("982", "API 성공 응답이 아닙니다."),

API_RESUME_FAIL("983", "이력서 API 호출 실패"),

API_RESUME_SUMMARY_NULL("984", "이력서 요약 결과가 비어있습니다."),

API_TOKEN_COUNT_FAIL("985", "토큰 계산기 호출 실패")

;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ public interface FeedbackRepository extends JpaRepository<Feedback, Long> {
List<Feedback> findByQaQaIdOrderByFeedbackId(Long qaId);

Optional<Feedback> findByQaQaIdAndType(Long qaId, Integer Type);

void deleteByQaQaId(Long qaId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -150,4 +150,9 @@ public void insertAllFeedback(List<FeedBackApiRes> feedBackApiListRes) {
}
});
}

@Transactional
public void deleteFeedback(Long qaId) {
feedbackRepository.deleteByQaQaId(qaId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@

import com.chwipoClova.common.response.CommonResponse;
import com.chwipoClova.feedback.request.FeedbackGenerateReq;
import com.chwipoClova.interview.request.InterviewFeedbackGenerateReq;
import com.chwipoClova.interview.request.InterviewInitQaReq;
import com.chwipoClova.interview.request.InterviewInsertReq;
import com.chwipoClova.interview.request.InterviewQaAnswerInsertReq;
import com.chwipoClova.interview.request.*;
import com.chwipoClova.interview.response.InterviewInsertRes;
import com.chwipoClova.interview.response.InterviewListRes;
import com.chwipoClova.interview.response.InterviewQaListRes;
Expand Down Expand Up @@ -87,6 +84,15 @@ public InterviewQaListRes getQaList(
return interviewService.selectQaList(userId, interviewId);
}

@Operation(summary = "면접 삭제", description = "면접 삭제")
@DeleteMapping(path = "/deleteInterview")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = String.class)))}
)
public CommonResponse deleteInterview(
@RequestBody InterviewDeleteReq interviewDeleteReq
) {
return interviewService.deleteInterview(interviewDeleteReq);
}

@Operation(summary = "답변 초기화", description = "답변 초기화")
@PostMapping("/initQa")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.chwipoClova.interview.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Data
public class InterviewDeleteReq {

@Schema(description = "유저 ID", example = "1", name = "userId")
private Long userId;
@Schema(description = "면접 ID", example = "1", name = "interviewId")
private Long interviewId;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,20 @@
import com.chwipoClova.common.exception.ExceptionCode;
import com.chwipoClova.common.response.CommonResponse;
import com.chwipoClova.common.response.MessageCode;
import com.chwipoClova.common.utils.ApiUtils;
import com.chwipoClova.feedback.request.FeedbackGenerateReq;
import com.chwipoClova.feedback.service.FeedbackService;
import com.chwipoClova.interview.entity.Interview;
import com.chwipoClova.interview.repository.InterviewRepository;
import com.chwipoClova.interview.request.InterviewDeleteReq;
import com.chwipoClova.interview.request.InterviewFeedbackGenerateReq;
import com.chwipoClova.interview.request.InterviewInitQaReq;
import com.chwipoClova.interview.request.InterviewInsertReq;
import com.chwipoClova.interview.response.InterviewInsertRes;
import com.chwipoClova.interview.response.InterviewListRes;
import com.chwipoClova.interview.response.InterviewQaListRes;
import com.chwipoClova.interview.response.InterviewRes;
import com.chwipoClova.qa.entity.Qa;
import com.chwipoClova.qa.request.QaAnswerInsertReq;
import com.chwipoClova.qa.request.QaQuestionInsertReq;
import com.chwipoClova.qa.response.QaCountRes;
Expand Down Expand Up @@ -277,7 +280,28 @@ public CommonResponse generateFeedback(FeedbackGenerateReq feedbackGenerateReq)
return feedbackService.generateFeedback(feedbackGenerateReq);
}

@Transactional
public CommonResponse insertAnswer(QaAnswerInsertReq qaAnswerInsertReq) throws IOException {
return qaService.insertAnswer(qaAnswerInsertReq);
}

@Transactional
public CommonResponse deleteInterview(InterviewDeleteReq interviewDeleteReq) {
Long userId = interviewDeleteReq.getUserId();
Long interviewId = interviewDeleteReq.getInterviewId();
userRepository.findById(userId).orElseThrow(() -> new CommonException(ExceptionCode.USER_NULL.getMessage(), ExceptionCode.USER_NULL.getCode()));
Interview interview = interviewRepository.findByUserUserIdAndInterviewId(userId, interviewId).orElseThrow(() -> new CommonException(ExceptionCode.INTERVIEW_NULL.getMessage(), ExceptionCode.INTERVIEW_NULL.getCode()));

// 피드백 삭제
qaService.selectQaList(interviewId).stream().forEach(qaListRes -> {
feedbackService.deleteFeedback(qaListRes.getQaId());
});

// 질문 삭제
qaService.deleteQa(interviewId);

// 면접 삭제
interviewRepository.delete(interview);
return new CommonResponse<>(MessageCode.OK.getCode(), null, MessageCode.OK.getMessage());
}
}
2 changes: 2 additions & 0 deletions src/main/java/com/chwipoClova/qa/repository/QaRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@ public interface QaRepository extends JpaRepository<Qa, Long> {
@Modifying
@Query(value = "update Qa q set q.answer = null where q.interviewId = :interviewId and answer is not null", nativeQuery = true)
int initQa(@Param("interviewId") Long interviewId);

void deleteByInterviewInterviewId(Long interviewId);
}
4 changes: 4 additions & 0 deletions src/main/java/com/chwipoClova/qa/service/QaService.java
Original file line number Diff line number Diff line change
Expand Up @@ -203,4 +203,8 @@ public QaCountRes selectQaListUseCount(Long interviewId) {
public void initQa(Long interviewId) {
qaRepository.initQa(interviewId);
}

public void deleteQa(Long interviewId) {
qaRepository.deleteByInterviewInterviewId(interviewId);
}
}

0 comments on commit 709295f

Please sign in to comment.