Skip to content
30 changes: 10 additions & 20 deletions src/main/java/young/blaybus/domain/job_search/JobSearch.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import young.blaybus.domain.job_search.request.JobSearchAreaRequest;
import young.blaybus.domain.job_search.request.JobSearchTimeSlotRequest;
import young.blaybus.domain.job_search.request.UpdateJobSearchRequest;
import young.blaybus.domain.member.Member;
import young.blaybus.util.enums.DayOfWeek;


@Entity
@Builder
Expand All @@ -33,12 +34,6 @@ public class JobSearch {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Comment("시작 시간")
private LocalTime startTime;

@Comment("종료 시간")
private LocalTime endTime;

@Comment("희망 급여")
private Integer salary;

Expand All @@ -59,16 +54,9 @@ public class JobSearch {

@Builder.Default
@OneToMany(mappedBy = "jobSearch", cascade = CascadeType.ALL, orphanRemoval = true)
private List<JobSearchDay> dayList = new ArrayList<>();
private List<JobSearchTimeSlot> timeSlots = new ArrayList<>();

public void updateFromDto(UpdateJobSearchRequest request){
if(request.startTime()!=null) {
this.startTime = LocalTime.parse(request.startTime());
}

if(request.endTime()!=null) {
this.endTime = LocalTime.parse(request.endTime());
}

if(request.salary()!=null) {
this.salary = request.salary();
Expand All @@ -84,12 +72,14 @@ public void updateFromDto(UpdateJobSearchRequest request){
}
}

if(!request.dayList().isEmpty()) {
this.dayList.clear();
for (DayOfWeek dayOfWeek : request.dayList()) {
this.dayList.add(JobSearchDay.builder()
if (!request.timeSlots().isEmpty()) {
this.timeSlots.clear();
for (JobSearchTimeSlotRequest timeSlot : request.timeSlots()) {
this.timeSlots.add(JobSearchTimeSlot.builder()
.jobSearch(this)
.day(dayOfWeek)
.day(timeSlot.day())
.startTime(LocalTime.parse(timeSlot.startTime()))
.endTime(LocalTime.parse(timeSlot.endTime()))
.build());
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package young.blaybus.domain.job_search;

import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.Comment;
import young.blaybus.util.enums.DayOfWeek;

import java.time.LocalTime;

@Entity
@Builder
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class JobSearchTimeSlot {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Enumerated(EnumType.STRING)
private DayOfWeek day;

@Comment("시작 시간")
private LocalTime startTime;

@Comment("종료 시간")
private LocalTime endTime;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "job_search_id")
private JobSearch jobSearch;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,13 @@ public record CreateJobSearchRequest(
@Schema(description = "회원 ID")
String memberId,

@Schema(description = "근무 시작 시간 (09:30)")
String startTime,

@Schema(description = "근무 종료 시간(18:00)")
String endTime,

@Schema(description = "희망 시급")
Integer salary,

@Schema(description = "근무 가능 지역")
List<JobSearchAreaRequest> jobSearchAreas,

@Schema(description = "근무 가능 요일 목록")
List<DayOfWeek> dayList
@Schema(description = "근무 가능 요일&시간대 목록")
List<JobSearchTimeSlotRequest> timeSlots
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package young.blaybus.domain.job_search.request;

import io.swagger.v3.oas.annotations.media.Schema;
import young.blaybus.util.enums.DayOfWeek;

@Schema(description = "근무 가능 시간대 요청 객체")
public record JobSearchTimeSlotRequest(
@Schema(description = "근무 요일")
DayOfWeek day,

@Schema(description = "근무 시작 시간 (HH:mm)")
String startTime,

@Schema(description = "근무 종료 시간 (HH:mm)")
String endTime
){
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@

@Schema(description = "구직 정보 수정 객체")
public record UpdateJobSearchRequest(
@Schema(description = "근무 시작 시간 (09:30)")
String startTime,

@Schema(description = "근무 종료 시간(18:00)")
String endTime,

@Schema(description = "희망 시급")
Integer salary,
Expand All @@ -20,6 +15,9 @@ public record UpdateJobSearchRequest(
List<JobSearchAreaRequest> jobSearchAreas,

@Schema(description = "근무 가능 요일 목록")
List<DayOfWeek> dayList
List<DayOfWeek> dayList,

@Schema(description = "근무 가능 요일&시간대 목록")
List<JobSearchTimeSlotRequest> timeSlots
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,13 @@
public class DetailJobSearchResponse {
@Schema(description = "구직 정보 ID")
private Long jobSearchId;
@Schema(description = "근무 시작 시간")
private String startTime;

@Schema(description = "근무 종료 시간")
private String endTime;

@Schema(description = "희망 급여")
private Integer salary;

@Schema(description = "근무 가능 지역 목록")
private List<JobSearchAreaResponse> jobSearchAreas;

@Schema(description = "근무 가능 요일 목록")
private List<String> dayList;
@Schema(description = "근무 가능 요일&시간대 목록")
private List<JobSearchTimeSlotResponse> timeSlots;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package young.blaybus.domain.job_search.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import young.blaybus.util.enums.DayOfWeek;

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Schema(description = "근무 가능 요일&시간대 응답 객체")
public class JobSearchTimeSlotResponse {
@Schema(description = "근무 요일")
DayOfWeek day;

@Schema(description = "근무 시작 시간 (HH:mm)")
String startTime;

@Schema(description = "근무 종료 시간 (HH:mm)")
String endTime;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
import org.springframework.transaction.annotation.Transactional;
import young.blaybus.domain.job_search.JobSearch;
import young.blaybus.domain.job_search.JobSearchArea;
import young.blaybus.domain.job_search.JobSearchDay;
import young.blaybus.domain.job_search.JobSearchTimeSlot;
import young.blaybus.domain.job_search.repository.JobSearchRepository;
import young.blaybus.domain.job_search.request.CreateJobSearchRequest;
import young.blaybus.domain.job_search.request.UpdateJobSearchRequest;
import young.blaybus.domain.job_search.response.DetailJobSearchResponse;
import young.blaybus.domain.job_search.response.JobSearchAreaResponse;
import young.blaybus.domain.job_search.response.JobSearchTimeSlotResponse;
import young.blaybus.domain.member.Member;
import young.blaybus.domain.member.repository.MemberRepository;
import young.blaybus.util.enums.DayOfWeek;

import java.time.LocalDateTime;
import java.time.LocalTime;
Expand All @@ -35,28 +35,28 @@ public void createJobSearch(CreateJobSearchRequest jobSearchRequest) {

JobSearch jobSearch = JobSearch.builder()
.member(member)
.startTime(LocalTime.parse(jobSearchRequest.startTime()))
.endTime(LocalTime.parse(jobSearchRequest.endTime()))
.salary(jobSearchRequest.salary())
.createdTime(LocalDateTime.now())
.build();

List<JobSearchArea> jobSearchAreas = jobSearchRequest.jobSearchAreas().stream()
List<JobSearchArea> areas = jobSearchRequest.jobSearchAreas().stream()
.map(areaRequest -> JobSearchArea.builder()
.address(areaRequest.address())
.jobSearch(jobSearch)
.build())
.toList();
jobSearch.getJobSearchAreas().addAll(jobSearchAreas);
jobSearch.getJobSearchAreas().addAll(areas);


List<JobSearchDay> jobSearchDays = jobSearchRequest.dayList().stream()
.map(day -> JobSearchDay.builder()
.day(day)
List<JobSearchTimeSlot> timeSlots = jobSearchRequest.timeSlots().stream()
.map(slot -> JobSearchTimeSlot.builder()
.jobSearch(jobSearch)
.day(slot.day())
.startTime(LocalTime.parse(slot.startTime()))
.endTime(LocalTime.parse(slot.endTime()))
.build())
.toList();
jobSearch.getDayList().addAll(jobSearchDays);
jobSearch.getTimeSlots().addAll(timeSlots);

jobSearchRepository.save(jobSearch);
}
Expand All @@ -76,22 +76,24 @@ public DetailJobSearchResponse getJobSearch(String memberId) {
JobSearch jobSearch= jobSearchRepository.findByMemberId(memberId)
.orElseThrow(()->new IllegalArgumentException("해당 회원의 구직 정보가 존재하지 않습니다."));

List<JobSearchAreaResponse> jobSearchAreaResponses = jobSearch.getJobSearchAreas().stream().map(jobSearchArea ->
List<JobSearchAreaResponse> areaResponses = jobSearch.getJobSearchAreas().stream().map(jobSearchArea ->
JobSearchAreaResponse.builder().address(jobSearchArea.getAddress()).build()
).toList();

List<String> dayList = jobSearch.getDayList().stream()
.map(JobSearchDay::getDay)
.map(DayOfWeek::toString)
.collect(Collectors.toList());
List<JobSearchTimeSlotResponse> timeSlotResponses = jobSearch.getTimeSlots().stream()
.map(slot -> JobSearchTimeSlotResponse.builder()
.day(slot.getDay())
.startTime(slot.getStartTime().toString())
.endTime(slot.getEndTime().toString())
.build())
.toList();

return DetailJobSearchResponse.builder()
.jobSearchId(jobSearch.getId())
.startTime(jobSearch.getStartTime().toString())
.endTime(jobSearch.getEndTime().toString())
.salary(jobSearch.getSalary())
.jobSearchAreas(jobSearchAreaResponses)
.dayList(dayList)
.jobSearchAreas(areaResponses)
.timeSlots(timeSlotResponses)
.build();

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import young.blaybus.domain.job_search.response.JobSearchTimeSlotResponse;
import young.blaybus.util.enums.DayOfWeek;

@Builder
Expand All @@ -26,15 +27,8 @@ public class ListRecommendDto {
@Schema(description = "프로필 사진")
private String profileUrl;

@Setter
@Schema(description = "희망 요일 목록")
private List<DayOfWeek> dayList;

@Schema(description = "희망 시작 시간")
private LocalTime startTime;

@Schema(description = "희망 종료 시간")
private LocalTime endTime;
@Schema(description = "근무 가능 요일&시간대 목록")
private List<TimeSlotDto> timeSlots;

@Schema(description = "돌봄 스타일")
private String careStyle;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package young.blaybus.domain.senior.controller.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import young.blaybus.util.enums.DayOfWeek;

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Schema(description = "근무 요일&시간대 DTO")
public class TimeSlotDto {
@Schema(description = "근무 요일")
DayOfWeek day;

@Schema(description = "근무 시작 시간 (HH:mm)")
String startTime;

@Schema(description = "근무 종료 시간 (HH:mm)")
String endTime;
}
Loading
Loading