diff --git a/http/resume/ResumeControllerHttpRequest.http b/http/resume/ResumeControllerHttpRequest.http index dbdbc55e..8d9e021d 100644 --- a/http/resume/ResumeControllerHttpRequest.http +++ b/http/resume/ResumeControllerHttpRequest.http @@ -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 (유학생) 자기소개 수정하기 @@ -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 diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/request/CreateUserAdditionalLanguageSkillRequestDto.java b/src/main/java/com/inglo/giggle/resume/application/dto/request/CreateUserAdditionalLanguageSkillRequestDto.java index 7e0861f6..1a67ad7e 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/request/CreateUserAdditionalLanguageSkillRequestDto.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/request/CreateUserAdditionalLanguageSkillRequestDto.java @@ -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; @@ -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 ) { } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/request/UpdateUserAdditionalLanguageSkillRequestDto.java b/src/main/java/com/inglo/giggle/resume/application/dto/request/UpdateUserAdditionalLanguageSkillRequestDto.java index 95681af6..86b6f4c6 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/request/UpdateUserAdditionalLanguageSkillRequestDto.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/request/UpdateUserAdditionalLanguageSkillRequestDto.java @@ -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 ) { } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadAdminResumeDetailResponseDtoV1.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadAdminResumeDetailResponseDtoV1.java index 705c3f3c..63d4cf21 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadAdminResumeDetailResponseDtoV1.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadAdminResumeDetailResponseDtoV1.java @@ -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; @@ -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(); } } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadAdminResumeDetailResponseDtoV2.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadAdminResumeDetailResponseDtoV2.java index 54db2c00..e000fa17 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadAdminResumeDetailResponseDtoV2.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadAdminResumeDetailResponseDtoV2.java @@ -307,10 +307,10 @@ public static class LanguageDetailDto extends SelfValidating 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; @@ -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(); } } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailByResumeIdResponseDto.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailByResumeIdResponseDto.java index b4f1879d..521f40b1 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailByResumeIdResponseDto.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailByResumeIdResponseDto.java @@ -313,10 +313,10 @@ public static class LanguageDetailDto extends SelfValidating 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; @@ -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(); } } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailResponseDtoV1.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailResponseDtoV1.java index 9914e5ad..2b70b9e3 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailResponseDtoV1.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailResponseDtoV1.java @@ -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; @@ -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(); } } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailResponseDtoV2.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailResponseDtoV2.java index d81b0ec0..a653fb7f 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailResponseDtoV2.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadOwnerResumeDetailResponseDtoV2.java @@ -307,10 +307,10 @@ public static class LanguageDetailDto extends SelfValidating 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; @@ -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(); } } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserLanguageSummaryResponseDto.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserLanguageSummaryResponseDto.java index e9d37770..96f75483 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserLanguageSummaryResponseDto.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserLanguageSummaryResponseDto.java @@ -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; @@ -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(); } } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeCompletionRateResponseDto.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeCompletionRateResponseDto.java new file mode 100644 index 00000000..56ffc027 --- /dev/null +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeCompletionRateResponseDto.java @@ -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 { + + @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(); + } +} diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeDetailResponseDtoV1.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeDetailResponseDtoV1.java index 582fc67a..641c01d7 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeDetailResponseDtoV1.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeDetailResponseDtoV1.java @@ -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; @@ -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(); } } diff --git a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeDetailResponseDtoV2.java b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeDetailResponseDtoV2.java index 6121e3dd..c8b46d8a 100644 --- a/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeDetailResponseDtoV2.java +++ b/src/main/java/com/inglo/giggle/resume/application/dto/response/ReadUserResumeDetailResponseDtoV2.java @@ -312,10 +312,10 @@ public static class LanguageDetailDto extends SelfValidating 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; @@ -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(); } } diff --git a/src/main/java/com/inglo/giggle/resume/application/service/CreateUserAdditionalLanguageSkillService.java b/src/main/java/com/inglo/giggle/resume/application/service/CreateUserAdditionalLanguageSkillService.java index 3000a7f1..f182d7ac 100644 --- a/src/main/java/com/inglo/giggle/resume/application/service/CreateUserAdditionalLanguageSkillService.java +++ b/src/main/java/com/inglo/giggle/resume/application/service/CreateUserAdditionalLanguageSkillService.java @@ -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; @@ -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); diff --git a/src/main/java/com/inglo/giggle/resume/application/service/ReadUserResumeCompletionRateService.java b/src/main/java/com/inglo/giggle/resume/application/service/ReadUserResumeCompletionRateService.java new file mode 100644 index 00000000..bb96d784 --- /dev/null +++ b/src/main/java/com/inglo/giggle/resume/application/service/ReadUserResumeCompletionRateService.java @@ -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(); + } +} diff --git a/src/main/java/com/inglo/giggle/resume/application/service/UpdateUserAdditionalLanguageSkillService.java b/src/main/java/com/inglo/giggle/resume/application/service/UpdateUserAdditionalLanguageSkillService.java index 1bb3975d..dad00a27 100644 --- a/src/main/java/com/inglo/giggle/resume/application/service/UpdateUserAdditionalLanguageSkillService.java +++ b/src/main/java/com/inglo/giggle/resume/application/service/UpdateUserAdditionalLanguageSkillService.java @@ -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; @@ -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); } diff --git a/src/main/java/com/inglo/giggle/resume/application/usecase/ReadUserResumeCompletionRateUseCase.java b/src/main/java/com/inglo/giggle/resume/application/usecase/ReadUserResumeCompletionRateUseCase.java new file mode 100644 index 00000000..cbe0902e --- /dev/null +++ b/src/main/java/com/inglo/giggle/resume/application/usecase/ReadUserResumeCompletionRateUseCase.java @@ -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 + ); +} diff --git a/src/main/java/com/inglo/giggle/resume/controller/query/ResumeUsersQueryV1Controller.java b/src/main/java/com/inglo/giggle/resume/controller/query/ResumeUsersQueryV1Controller.java index 65879c67..56dc12bc 100644 --- a/src/main/java/com/inglo/giggle/resume/controller/query/ResumeUsersQueryV1Controller.java +++ b/src/main/java/com/inglo/giggle/resume/controller/query/ResumeUsersQueryV1Controller.java @@ -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; @@ -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 (유학생) 이력서 조회하기 @@ -81,4 +74,14 @@ public ResponseDto readUserWorkPreferen ) { return ResponseDto.ok(readUserWorkPreferenceDetailUseCase.execute(accountId)); } + + /** + * 7.26 (유학생) 이력서 완성도 조회하기 + */ + @GetMapping("/completion-rate") + public ResponseDto readUserResumeCompletionRate( + @AccountID UUID accountId + ) { + return ResponseDto.ok(readUserResumeCompletionRateUseCase.execute(accountId)); + } } diff --git a/src/main/java/com/inglo/giggle/resume/domain/AdditionalLanguage.java b/src/main/java/com/inglo/giggle/resume/domain/AdditionalLanguage.java index 9c9aaa64..2ff27eb3 100644 --- a/src/main/java/com/inglo/giggle/resume/domain/AdditionalLanguage.java +++ b/src/main/java/com/inglo/giggle/resume/domain/AdditionalLanguage.java @@ -1,15 +1,8 @@ package com.inglo.giggle.resume.domain; import com.inglo.giggle.core.dto.BaseEntity; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; +import com.inglo.giggle.resume.domain.type.EAdditionalLanguageLevelType; +import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; @@ -38,8 +31,9 @@ public class AdditionalLanguage extends BaseEntity { @Column(name = "language_name", length = 50, nullable = false) private String languageName; + @Enumerated(EnumType.STRING) @Column(name = "level", nullable = false) - private Integer level; + private EAdditionalLanguageLevelType level; /* -------------------------------------------- */ /* Many To One Mapping ------------------------ */ @@ -52,7 +46,7 @@ public class AdditionalLanguage extends BaseEntity { /* Methods ------------------------------------ */ /* -------------------------------------------- */ @Builder - public AdditionalLanguage(String languageName, Integer level, LanguageSkill languageSkill) { + public AdditionalLanguage(String languageName, EAdditionalLanguageLevelType level, LanguageSkill languageSkill) { this.languageName = languageName; this.level = level; this.languageSkill = languageSkill; @@ -62,7 +56,7 @@ public void updateLanguageName(String languageName) { this.languageName = languageName; } - public void updateLevel(Integer level) { + public void updateLevel(EAdditionalLanguageLevelType level) { this.level = level; } } \ No newline at end of file diff --git a/src/main/java/com/inglo/giggle/resume/domain/LanguageSkill.java b/src/main/java/com/inglo/giggle/resume/domain/LanguageSkill.java index 49273ccf..d512f2b0 100644 --- a/src/main/java/com/inglo/giggle/resume/domain/LanguageSkill.java +++ b/src/main/java/com/inglo/giggle/resume/domain/LanguageSkill.java @@ -85,4 +85,8 @@ public void updateSocialIntegrationLevel(Integer socialIntegrationLevel) { public void updateSejongInstituteLevel(Integer sejongInstituteLevel) { this.sejongInstituteLevel = sejongInstituteLevel; } + + public boolean isEmpty() { + return topikLevel == 0 && socialIntegrationLevel == 0 && sejongInstituteLevel == 0 && additionalLanguages.isEmpty(); + } } \ No newline at end of file diff --git a/src/main/java/com/inglo/giggle/resume/domain/Resume.java b/src/main/java/com/inglo/giggle/resume/domain/Resume.java index 3422b203..eed5baef 100644 --- a/src/main/java/com/inglo/giggle/resume/domain/Resume.java +++ b/src/main/java/com/inglo/giggle/resume/domain/Resume.java @@ -116,4 +116,26 @@ public void updateResume(String title, String introduction) { public void updatePublicStatus(boolean isPublic) { this.isPublic = isPublic; } + + public Integer getCompletionRate() { + int completionRate = 0; + + if(this.introduction != null) { + completionRate += 20; + } + if(!this.educations.isEmpty()) { + completionRate += 20; + } + if(!this.languageSkill.isEmpty()){ + completionRate += 20; + } + if(!this.workExperiences.isEmpty()) { + completionRate += 20; + } + if(!this.workPreference.isEmpty()){ + completionRate += 20; + } + + return completionRate; + } } \ No newline at end of file diff --git a/src/main/java/com/inglo/giggle/resume/domain/WorkPreference.java b/src/main/java/com/inglo/giggle/resume/domain/WorkPreference.java index 6f56a677..1c242d19 100644 --- a/src/main/java/com/inglo/giggle/resume/domain/WorkPreference.java +++ b/src/main/java/com/inglo/giggle/resume/domain/WorkPreference.java @@ -106,4 +106,8 @@ public void updateSelf( this.preferenceAddresses.clear(); this.preferenceAddresses.addAll(preferenceAddresses); } + + public boolean isEmpty() { + return this.jobCategories.isEmpty() && this.employmentTypes.isEmpty() && this.preferenceAddresses.isEmpty(); + } } diff --git a/src/main/java/com/inglo/giggle/resume/domain/service/AdditionalLanguageService.java b/src/main/java/com/inglo/giggle/resume/domain/service/AdditionalLanguageService.java index 480e6ab7..bd7c40dc 100644 --- a/src/main/java/com/inglo/giggle/resume/domain/service/AdditionalLanguageService.java +++ b/src/main/java/com/inglo/giggle/resume/domain/service/AdditionalLanguageService.java @@ -4,6 +4,7 @@ import com.inglo.giggle.core.exception.type.CommonException; import com.inglo.giggle.resume.domain.AdditionalLanguage; import com.inglo.giggle.resume.domain.LanguageSkill; +import com.inglo.giggle.resume.domain.type.EAdditionalLanguageLevelType; import org.springframework.stereotype.Service; import java.util.List; @@ -13,7 +14,7 @@ public class AdditionalLanguageService { public AdditionalLanguage createAdditionalLanguage( String language, - Integer level, + EAdditionalLanguageLevelType level, LanguageSkill languageSkill ) { return AdditionalLanguage.builder() @@ -26,10 +27,10 @@ public AdditionalLanguage createAdditionalLanguage( public AdditionalLanguage updateAdditionalLanguage( AdditionalLanguage additionalLanguage, String language, - Integer level + EAdditionalLanguageLevelType additionalLanguageLevelType ) { additionalLanguage.updateLanguageName(language); - additionalLanguage.updateLevel(level); + additionalLanguage.updateLevel(additionalLanguageLevelType); return additionalLanguage; } diff --git a/src/main/java/com/inglo/giggle/resume/domain/type/.keep b/src/main/java/com/inglo/giggle/resume/domain/type/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/main/java/com/inglo/giggle/resume/domain/type/EAdditionalLanguageLevelType.java b/src/main/java/com/inglo/giggle/resume/domain/type/EAdditionalLanguageLevelType.java new file mode 100644 index 00000000..c6486e34 --- /dev/null +++ b/src/main/java/com/inglo/giggle/resume/domain/type/EAdditionalLanguageLevelType.java @@ -0,0 +1,31 @@ +package com.inglo.giggle.resume.domain.type; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum EAdditionalLanguageLevelType { + + NOT_ABLE_TO_USE_AT_ALL("전혀 사용할 수 없음", "NOT_ABLE_TO_USE_AT_ALL"), + CAN_UNDERSTAND_BASIC_WORDS("기초 단어 이해 가능", "CAN_UNDERSTAND_BASIC_WORDS"), + BASIC_CONVERSATION_POSSIBLE("기본 대화 가능", "BASIC_CONVERSATION_POSSIBLE"), + COMFORTABLE_FOR_WORK("업무에 무리 없음", "COMFORTABLE_FOR_WORK"), + FLUENT("유창함", "FLUENT"), + NATIVE_OR_NEAR_NATIVE("모국어 수준", "NATIVE_OR_NEAR_NATIVE"); + + private final String krName; + private final String enName; + + public static EAdditionalLanguageLevelType fromString(String value) { + return switch (value.toUpperCase()) { + case "NOT_ABLE_TO_USE_AT_ALL" -> NOT_ABLE_TO_USE_AT_ALL; + case "CAN_UNDERSTAND_BASIC_WORDS" -> CAN_UNDERSTAND_BASIC_WORDS; + case "BASIC_CONVERSATION_POSSIBLE" -> BASIC_CONVERSATION_POSSIBLE; + case "COMFORTABLE_FOR_WORK" -> COMFORTABLE_FOR_WORK; + case "FLUENT" -> FLUENT; + case "NATIVE_OR_NEAR_NATIVE" -> NATIVE_OR_NEAR_NATIVE; + default -> throw new IllegalArgumentException("언어 수준 값이 잘못되었습니다: " + value); + }; + } +}