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
48 changes: 28 additions & 20 deletions src/main/java/young/blaybus/domain/address/Address.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,32 @@
@NoArgsConstructor
public class Address {

@Comment("시/도")
private String city;

@Comment("구/군")
private String district;

@Comment("동")
private String dong;

@Column(name = "address_detail")
@Comment("상세 주소")
private String detail;

@Override
public String toString() {
String str = city + " " + district + " " + dong;
if (StringUtils.hasText(detail)) str += " " + detail;

return str;
}
@Comment("시/도")
private String city;

@Comment("구/군")
private String district;

@Comment("동")
private String dong;

@Column(name = "address_detail")
@Comment("상세 주소")
private String detail;

@Override
public String toString() {
String str = city + " " + district + " " + dong;
if (StringUtils.hasText(detail)) str += " " + detail;

return str;
}

public static int calculateDistanceScore(Address address1, Address address2) {
int score = 0;
if (address1.city.equals(address2.city)) score += 10;
if (address1.district.equals(address2.district)) score += 10;
if (address1.dong.equals(address2.dong)) score += 10;
return score;
}
}
50 changes: 0 additions & 50 deletions src/main/java/young/blaybus/domain/job_seek/JobSeek.java

This file was deleted.

This file was deleted.

17 changes: 16 additions & 1 deletion src/main/java/young/blaybus/domain/senior/Senior.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import young.blaybus.util.enums.CareStyle;

@Entity
@Builder(toBuilder = true)
@Builder
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand Down Expand Up @@ -65,6 +65,9 @@ public class Senior {
@Comment("프로필 사진")
private String profileUrl;

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

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

Expand Down Expand Up @@ -106,4 +109,16 @@ public class Senior {
@OneToMany(mappedBy = "senior", cascade = CascadeType.ALL, orphanRemoval = true)
private List<SeniorLifeAssist> lifeAssistList = new ArrayList<>();

public void update(String name, LocalDate birthday, Sex sex, String address, String profileUrl,
LocalTime startTime, LocalTime endTime, CareStyle careStyle, Integer salary) {
this.name = name;
this.birthday = birthday;
this.sex = sex;
this.address = address;
this.profileUrl = profileUrl;
this.startTime = startTime;
this.endTime = endTime;
this.careStyle = careStyle;
this.salary = salary;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package young.blaybus.domain.senior.repository;

import static young.blaybus.domain.job_seek.QJobSeek.jobSeek;
import static young.blaybus.domain.matching.QMatching.matching;
import static young.blaybus.domain.senior.QSenior.senior;
import static young.blaybus.domain.senior.QSeniorDay.seniorDay;
Expand Down Expand Up @@ -41,13 +40,12 @@ public DetailSeniorResponse getSenior(Long seniorId) {
senior.sex,
senior.birthday,
senior.address,
jobSeek.salary,
senior.salary,
senior.startTime,
senior.endTime
)
)
.from(senior)
.leftJoin(jobSeek).on(senior.eq(jobSeek.senior))
.where(senior.id.eq(seniorId))
.fetchOne();
}
Expand Down Expand Up @@ -109,7 +107,7 @@ public DetailMatchingSeniorResponse getMatchingSenior(Long seniorId, Member work
senior.sex,
senior.birthday,
senior.address,
jobSeek.salary,
senior.salary,
senior.startTime,
senior.endTime,
matching.fitness,
Expand All @@ -118,7 +116,6 @@ public DetailMatchingSeniorResponse getMatchingSenior(Long seniorId, Member work
)
.from(senior)
.innerJoin(matching).on(matching.senior.eq(senior), matching.member.eq(worker))
.leftJoin(jobSeek).on(senior.eq(jobSeek.senior))
.where(senior.id.eq(seniorId))
.fetchOne();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
import org.springframework.util.StringUtils;
import young.blaybus.api_response.exception.GeneralException;
import young.blaybus.api_response.status.ErrorStatus;
import young.blaybus.domain.job_seek.JobSeek;
import young.blaybus.domain.job_seek.repository.JobSeekRepository;
import young.blaybus.domain.member.Member;
import young.blaybus.domain.member.repository.MemberRepository;
import young.blaybus.domain.member.security.SecurityUtils;
Expand All @@ -27,7 +25,6 @@
public class CreateSeniorService {

private final SeniorRepository seniorRepository;
private final JobSeekRepository jobSeekRepository;
private final MemberRepository memberRepository;

public void createSenior(CreateSeniorRequest request) {
Expand Down Expand Up @@ -107,16 +104,18 @@ public void updateSenior(Long seniorId, UpdateSeniorRequest request) {
String profileUrl = senior.getProfileUrl();
if (StringUtils.hasText(request.profileUrl())) profileUrl = request.profileUrl();

senior.toBuilder()
.name(request.name())
.birthday(request.birthday())
.sex(request.sex())
.address(request.address())
.profileUrl(profileUrl)
.startTime(request.startTime())
.endTime(request.endTime())
.careStyle(request.careStyle())
.build();
senior.update(
request.name(),
request.birthday(),
request.sex(),
request.address(),
profileUrl,
request.startTime(),
request.endTime(),
request.careStyle(),
request.salary()
);


senior.getDayList().clear();
senior.getLifeAssistList().clear();
Expand Down Expand Up @@ -168,12 +167,5 @@ public void updateSenior(Long seniorId, UpdateSeniorRequest request) {
.build()
));

jobSeekRepository.save(
JobSeek.builder()
.senior(senior)
.salary(request.salary())
.build()
);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,13 @@
import org.springframework.transaction.annotation.Transactional;
import young.blaybus.api_response.exception.GeneralException;
import young.blaybus.api_response.status.ErrorStatus;
import young.blaybus.domain.address.Address;
import young.blaybus.domain.certificate.Certificate;
import young.blaybus.domain.certificate.enums.CertificateType;
import young.blaybus.domain.certificate.repository.ListCertificateRepository;
import young.blaybus.domain.job_search.JobSearch;
import young.blaybus.domain.job_search.JobSearchDay;
import young.blaybus.domain.job_search.repository.JobSearchRepository;
import young.blaybus.domain.job_seek.JobSeek;
import young.blaybus.domain.job_seek.repository.JobSeekRepository;
import young.blaybus.domain.matching.repository.ListMatchingRepository;
import young.blaybus.domain.member.Member;
import young.blaybus.domain.senior.Senior;
Expand All @@ -39,7 +38,6 @@ public class RecommendService {
private final ListRecommendRepository listRecommendRepository;
private final SeniorRepository seniorRepository;
private final JobSearchRepository jobSearchRepository;
private final JobSeekRepository jobSeekRepository;
private final ListMatchingRepository listMatchingRepository;
private final ListCertificateRepository listCertificateRepository;
private final MapService mapService;
Expand Down Expand Up @@ -80,17 +78,20 @@ public int calculateFitness(Member member, Senior senior) {
double fitness = 0.0;

JobSearch jobSearch = jobSearchRepository.findByMemberId(member.getId()).orElse(null);
JobSeek jobSeek = jobSeekRepository.findBySenior(senior);

// 거리 : 0km 최고점, 350km 최하점 → 30점 만점
fitness += 30;
// todo 429 시 로직 추가
// Coordinate memberGeocoding = mapService.geocoding(member.getAddress().toString());
// Coordinate seniorGeocoding = mapService.geocoding(senior.getAddress());
// Double distance = mapService.getDistance(memberGeocoding, seniorGeocoding);
double maxDistance = 350_000;

// fitness -= Math.min(30, distance * 30 / maxDistance);
try {
fitness += 30;
Coordinate memberGeocoding = mapService.geocoding(member.getAddress().toString());
Coordinate seniorGeocoding = mapService.geocoding(senior.getAddress());
Double distance = mapService.getDistance(memberGeocoding, seniorGeocoding);
double maxDistance = 350_000;
fitness -= Math.min(30, distance * 30 / maxDistance);
} catch (Exception e) { // API 무료 요청 횟수 초과 시
fitness += 15;
// fitness += Address.calculateDistanceScore(member.getAddress(), senior.getAddress());
}

// 요일 → (노인의 희망 요일이 보호사의 요일과 겹치는 개수) * 15 / (노인의 희망 요일 개수) 점 → 15점 만점
assert jobSearch != null;
Expand Down Expand Up @@ -124,8 +125,8 @@ public int calculateFitness(Member member, Senior senior) {

// 노인 시급 < 보호사 시급일 때, 10 - 0.001 * (보호사 시급 - 노인 시급) → 1000원 차이당 1점 감소, 최소 0점 (10 만점)
fitness += 10;
if (jobSeek.getSalary() < jobSearch.getSalary())
fitness -= Math.max(10, 0.001 * (jobSearch.getSalary() - jobSeek.getSalary()));
if (senior.getSalary() < jobSearch.getSalary())
fitness -= Math.max(10, 0.001 * (jobSearch.getSalary() - senior.getSalary()));

// 요양 스타일 일치하면 5점
if (member.getCareStyle().equals(senior.getCareStyle())) fitness += 5;
Expand Down
Loading