Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions http/resume/ResumeControllerHttpRequest.http
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ Authorization: Bearer {{access_token}}
Content-Type: application/json

{
"language_name": "{{resume.API_7_7.language_name}}",
"level": {{resume.API_7_7.level}}
"language_name": "Korean",
"level": "FLUENT"
}

### 7.8 (유학생) 자기소개 수정하기
Expand Down Expand Up @@ -220,6 +220,13 @@ GET {{host_url}}/v1/owners/resumes/79efbfbd-32ef-bfbd-efbf-bdefbfbd4306/details
Authorization: Bearer {{access_token}}


### 7.6 (유학생) 이력서 완성도 조회하기
// @no-log
GET {{host_url}}/v1/users/resumes/completion-rate
Authorization: Bearer {{access_token}}



### 15.1 (고용주) 인재 스크랩 추가/삭제
// @no-log
PUT {{host_url}}/v1/owners/resumes/79efbfbd-32ef-bfbd-efbf-bdefbfbd4306/book-mark-resumes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.inglo.giggle.resume.application.dto.request;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.inglo.giggle.resume.domain.type.EAdditionalLanguageLevelType;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
Expand All @@ -14,9 +15,6 @@ public record CreateUserAdditionalLanguageSkillRequestDto(
String languageName,

@JsonProperty("level")
@Max(value = 10, message = "언어 레벨은 10 이하로 입력 가능합니다.")
@Min(value = 0, message = "언어 레벨은 0 이상으로 입력 가능합니다.")
@NotNull(message = "언어 레벨은 필수 입력 값입니다.")
Integer level
String level
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ public record UpdateUserAdditionalLanguageSkillRequestDto(

@JsonProperty("level")
@NotNull(message = "언어 레벨은 필수 입력 값입니다.")
@Max(value = 10, message = "언어 레벨은 10 이하로 입력 가능합니다.")
@Min(value = 0, message = "언어 레벨은 0 이상으로 입력 가능합니다.")
Integer level
String additionalLanguageLevelType
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -284,10 +284,10 @@ public static class LanguageDetailDto {
private final String languageName;

@JsonProperty("level")
private final Integer level;
private final String level;

@Builder
public LanguageDetailDto(Long id, String languageName, Integer level) {
public LanguageDetailDto(Long id, String languageName, String level) {
this.id = id;
this.languageName = languageName;
this.level = level;
Expand All @@ -297,7 +297,7 @@ public static LanguageDetailDto fromEntity(AdditionalLanguage language) {
return LanguageDetailDto.builder()
.id(language.getId())
.languageName(language.getLanguageName())
.level(language.getLevel())
.level(language.getLevel().toString())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,10 +307,10 @@ public static class LanguageDetailDto extends SelfValidating<LanguageDetailDto>
private final String languageName;

@JsonProperty("level")
private final Integer level;
private final String level;

@Builder
public LanguageDetailDto(Long id, String languageName, Integer level) {
public LanguageDetailDto(Long id, String languageName, String level) {
this.id = id;
this.languageName = languageName;
this.level = level;
Expand All @@ -322,7 +322,7 @@ public static LanguageDetailDto fromEntity(AdditionalLanguage language) {
return LanguageDetailDto.builder()
.id(language.getId())
.languageName(language.getLanguageName())
.level(language.getLevel())
.level(language.getLevel().toString())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,10 +313,10 @@ public static class LanguageDetailDto extends SelfValidating<LanguageDetailDto>
private final String languageName;

@JsonProperty("level")
private final Integer level;
private final String level;

@Builder
public LanguageDetailDto(Long id, String languageName, Integer level) {
public LanguageDetailDto(Long id, String languageName, String level) {
this.id = id;
this.languageName = languageName;
this.level = level;
Expand All @@ -328,7 +328,7 @@ public static LanguageDetailDto fromEntity(AdditionalLanguage language) {
return LanguageDetailDto.builder()
.id(language.getId())
.languageName(language.getLanguageName())
.level(language.getLevel())
.level(language.getLevel().toString())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,10 +284,10 @@ public static class LanguageDetailDto {
private final String languageName;

@JsonProperty("level")
private final Integer level;
private final String level;

@Builder
public LanguageDetailDto(Long id, String languageName, Integer level) {
public LanguageDetailDto(Long id, String languageName, String level) {
this.id = id;
this.languageName = languageName;
this.level = level;
Expand All @@ -297,7 +297,7 @@ public static LanguageDetailDto fromEntity(AdditionalLanguage language) {
return LanguageDetailDto.builder()
.id(language.getId())
.languageName(language.getLanguageName())
.level(language.getLevel())
.level(language.getLevel().toString())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,10 +307,10 @@ public static class LanguageDetailDto extends SelfValidating<LanguageDetailDto>
private final String languageName;

@JsonProperty("level")
private final Integer level;
private final String level;

@Builder
public LanguageDetailDto(Long id, String languageName, Integer level) {
public LanguageDetailDto(Long id, String languageName, String level) {
this.id = id;
this.languageName = languageName;
this.level = level;
Expand All @@ -322,7 +322,7 @@ public static LanguageDetailDto fromEntity(AdditionalLanguage language) {
return LanguageDetailDto.builder()
.id(language.getId())
.languageName(language.getLanguageName())
.level(language.getLevel())
.level(language.getLevel().toString())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ public static class AdditionalLanguageDto {
private final String languageName;

@JsonProperty("level")
private final Integer level;
private final String level;

@Builder
public AdditionalLanguageDto(Long id, String languageName, Integer level) {
public AdditionalLanguageDto(Long id, String languageName, String level) {
this.id = id;
this.languageName = languageName;
this.level = level;
Expand All @@ -51,7 +51,7 @@ public static AdditionalLanguageDto fromEntity(AdditionalLanguage additionalLang
return AdditionalLanguageDto.builder()
.id(additionalLanguage.getId())
.languageName(additionalLanguage.getLanguageName())
.level(additionalLanguage.getLevel())
.level(additionalLanguage.getLevel().toString())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.inglo.giggle.resume.application.dto.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.inglo.giggle.core.dto.SelfValidating;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;

@Getter
public class ReadUserResumeCompletionRateResponseDto extends SelfValidating<ReadUserResumeCompletionRateResponseDto> {

@JsonProperty("completion_rate")
@NotNull(message = "completionRate는 필수입니다.")
private final Integer completionRate;

@JsonProperty("completion_text")
@NotNull(message = "completionText는 필수입니다.")
private final String completionText;

@Builder
public ReadUserResumeCompletionRateResponseDto(Integer completionRate) {
this.completionRate = completionRate;
this.completionText = "이력서를 완성하면 연락 올 확률이 90% 올라가요!";
this.validateSelf();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -289,10 +289,10 @@ public static class LanguageDetailDto {
private final String languageName;

@JsonProperty("level")
private final Integer level;
private final String level;

@Builder
public LanguageDetailDto(Long id, String languageName, Integer level) {
public LanguageDetailDto(Long id, String languageName, String level) {
this.id = id;
this.languageName = languageName;
this.level = level;
Expand All @@ -302,7 +302,7 @@ public static LanguageDetailDto fromEntity(AdditionalLanguage language) {
return LanguageDetailDto.builder()
.id(language.getId())
.languageName(language.getLanguageName())
.level(language.getLevel())
.level(language.getLevel().toString())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,10 +312,10 @@ public static class LanguageDetailDto extends SelfValidating<LanguageDetailDto>
private final String languageName;

@JsonProperty("level")
private final Integer level;
private final String level;

@Builder
public LanguageDetailDto(Long id, String languageName, Integer level) {
public LanguageDetailDto(Long id, String languageName, String level) {
this.id = id;
this.languageName = languageName;
this.level = level;
Expand All @@ -327,7 +327,7 @@ public static LanguageDetailDto fromEntity(AdditionalLanguage language) {
return LanguageDetailDto.builder()
.id(language.getId())
.languageName(language.getLanguageName())
.level(language.getLevel())
.level(language.getLevel().toString())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.inglo.giggle.resume.domain.AdditionalLanguage;
import com.inglo.giggle.resume.domain.Resume;
import com.inglo.giggle.resume.domain.service.AdditionalLanguageService;
import com.inglo.giggle.resume.domain.type.EAdditionalLanguageLevelType;
import com.inglo.giggle.resume.repository.AdditionalLanguageRepository;
import com.inglo.giggle.resume.repository.ResumeRepository;
import com.inglo.giggle.security.domain.mysql.Account;
Expand Down Expand Up @@ -49,7 +50,7 @@ public void execute(UUID accountId, CreateUserAdditionalLanguageSkillRequestDto
// AdditionalLanguage 생성
AdditionalLanguage additionalLanguage = additionalLanguageService.createAdditionalLanguage(
requestDto.languageName(),
requestDto.level(),
EAdditionalLanguageLevelType.fromString(requestDto.level()),
resume.getLanguageSkill()
);
additionalLanguageRepository.save(additionalLanguage);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.inglo.giggle.resume.application.service;

import com.inglo.giggle.resume.application.dto.response.ReadUserResumeCompletionRateResponseDto;
import com.inglo.giggle.resume.application.usecase.ReadUserResumeCompletionRateUseCase;
import com.inglo.giggle.resume.domain.Resume;
import com.inglo.giggle.resume.repository.ResumeRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.UUID;

@Service
@RequiredArgsConstructor
public class ReadUserResumeCompletionRateService implements ReadUserResumeCompletionRateUseCase {

private final ResumeRepository resumeRepository;

@Override
@Transactional(readOnly = true)
public ReadUserResumeCompletionRateResponseDto execute(UUID resumeId) {
Resume resume = resumeRepository.findByIdOrElseThrow(resumeId);

Integer completionRate = resume.getCompletionRate();

return ReadUserResumeCompletionRateResponseDto.builder()
.completionRate(completionRate)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.inglo.giggle.resume.application.usecase.UpdateUserAdditionalLanguageSkillUseCase;
import com.inglo.giggle.resume.domain.AdditionalLanguage;
import com.inglo.giggle.resume.domain.service.AdditionalLanguageService;
import com.inglo.giggle.resume.domain.type.EAdditionalLanguageLevelType;
import com.inglo.giggle.resume.repository.AdditionalLanguageRepository;
import com.inglo.giggle.security.domain.mysql.Account;
import com.inglo.giggle.security.domain.service.AccountService;
Expand Down Expand Up @@ -42,7 +43,7 @@ public void execute(UUID accountId,Long additionalLanguageSkillId, UpdateUserAdd

// AdditionalLanguage 업데이트
additionalLanguage = additionalLanguageService.updateAdditionalLanguage(
additionalLanguage, requestDto.languageName(), requestDto.level()
additionalLanguage, requestDto.languageName(), EAdditionalLanguageLevelType.fromString(requestDto.additionalLanguageLevelType())
);
additionalLanguageRepository.save(additionalLanguage);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.inglo.giggle.resume.application.usecase;

import com.inglo.giggle.core.annotation.bean.UseCase;
import com.inglo.giggle.resume.application.dto.response.ReadUserResumeCompletionRateResponseDto;

import java.util.UUID;

@UseCase
public interface ReadUserResumeCompletionRateUseCase {

/**
* 이력서의 완성도를 조회하는 UseCase
*
* @param resumeId 이력서 ID
* @return 이력서 완성도 응답 DTO
*/
ReadUserResumeCompletionRateResponseDto execute(
UUID resumeId
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,8 @@

import com.inglo.giggle.core.annotation.security.AccountID;
import com.inglo.giggle.core.dto.ResponseDto;
import com.inglo.giggle.resume.application.dto.response.ReadUserEducationDetailResponseDto;
import com.inglo.giggle.resume.application.dto.response.ReadUserLanguageSummaryResponseDto;
import com.inglo.giggle.resume.application.dto.response.ReadUserResumeDetailResponseDtoV1;
import com.inglo.giggle.resume.application.dto.response.ReadUserWorkExperienceDetailResponseDto;
import com.inglo.giggle.resume.application.dto.response.ReadUserWorkPreferenceDetailResponseDto;
import com.inglo.giggle.resume.application.usecase.ReadUserEducationDetailUseCase;
import com.inglo.giggle.resume.application.usecase.ReadUserLanguageSummaryUseCase;
import com.inglo.giggle.resume.application.usecase.ReadUserResumeDetailUseCase;
import com.inglo.giggle.resume.application.usecase.ReadUserWorkExperienceDetailUseCase;
import com.inglo.giggle.resume.application.usecase.ReadUserWorkPreferenceDetailUseCase;
import com.inglo.giggle.resume.application.dto.response.*;
import com.inglo.giggle.resume.application.usecase.*;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
Expand All @@ -29,6 +21,7 @@ public class ResumeUsersQueryV1Controller {
private final ReadUserEducationDetailUseCase readUserEducationDetailUseCase;
private final ReadUserLanguageSummaryUseCase readUserLanguageSummaryUseCase;
private final ReadUserWorkPreferenceDetailUseCase readUserWorkPreferenceDetailUseCase;
private final ReadUserResumeCompletionRateUseCase readUserResumeCompletionRateUseCase;

/**
* 7.1 (유학생) 이력서 조회하기
Expand Down Expand Up @@ -81,4 +74,14 @@ public ResponseDto<ReadUserWorkPreferenceDetailResponseDto> readUserWorkPreferen
) {
return ResponseDto.ok(readUserWorkPreferenceDetailUseCase.execute(accountId));
}

/**
* 7.26 (유학생) 이력서 완성도 조회하기
*/
@GetMapping("/completion-rate")
public ResponseDto<ReadUserResumeCompletionRateResponseDto> readUserResumeCompletionRate(
@AccountID UUID accountId
) {
return ResponseDto.ok(readUserResumeCompletionRateUseCase.execute(accountId));
}
}
Loading