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
5 changes: 5 additions & 0 deletions src/main/java/young/blaybus/domain/center/Center.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import young.blaybus.config.jpa.BooleanToYNConverter;
import young.blaybus.config.jpa.CryptoConverter;
import young.blaybus.domain.address.Address;
import young.blaybus.domain.member.Member;
import young.blaybus.domain.senior.Senior;
Expand All @@ -34,6 +35,10 @@ public class Center {
@Comment("센터명")
private String name;

@Convert(converter = CryptoConverter.class)
@Comment("센터 전화번호")
private String phoneNumber;

@Convert(converter = BooleanToYNConverter.class)
@Column(columnDefinition = "char(1) default 'N'")
@Comment("목욕 차량 보유 여부")
Expand Down
160 changes: 80 additions & 80 deletions src/main/java/young/blaybus/domain/center/service/CenterService.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,89 +26,89 @@
@RequiredArgsConstructor
public class CenterService {

private final CenterRepository centerRepository;
private final MemberRepository memberRepository;
private final SeniorRepository seniorRepository;

private final CenterRepository centerRepository;
private final SeniorRepository seniorRepository;
private final MemberRepository memberRepository;


// 센터 등록
@Transactional
public GetCenterResponse registerCenter(String centerName) {
Center center = Center.builder()
.name(centerName)
.build();

centerRepository.save(center);

Center center1 = centerRepository.findByName(centerName);
return GetCenterResponse.builder()
.id(String.valueOf(center1.getId()))
.name(center1.getName())
.build();
}

// 센터 조회
@Transactional
public GetCenterResponse getCenterCheck(String centerName) {
Center center1 = centerRepository.findByName(centerName);
return GetCenterResponse.builder()
.id(String.valueOf(center1.getId()))
.name(center1.getName())
.build();
}

// 센터 상세 조회
@Transactional
public GetCenterDetailInforResponse getCenterDetailInfor(String centerName) {
Center center = centerRepository.findByName(centerName);
return GetCenterDetailInforResponse.builder()
.id(String.valueOf(center.getId()))
.name(center.getName())
.city(center.getAddress().getCity())
.gu(center.getAddress().getDistrict())
.dong(center.getAddress().getDong())
.operationPeriod(center.getOperationPeriod())
.grade(center.getGrade())
.bathCarYn(center.getBathCarYn())
.introduction(center.getIntroduction())
.build();
@Transactional
public GetCenterResponse registerCenter(String centerName) {
Center center = Center.builder()
.name(centerName)
.build();

centerRepository.save(center);

Center center1 = centerRepository.findByName(centerName);
return GetCenterResponse.builder()
.id(String.valueOf(center1.getId()))
.name(center1.getName())
.build();
}

// 센터 조회
@Transactional
public GetCenterResponse getCenterCheck(String centerName) {
Center center1 = centerRepository.findByName(centerName);
return GetCenterResponse.builder()
.id(String.valueOf(center1.getId()))
.name(center1.getName())
.build();
}

// 센터 상세 조회
@Transactional
public GetCenterDetailInforResponse getCenterDetailInfor(String centerName) {
Center center = centerRepository.findByName(centerName);
return GetCenterDetailInforResponse.builder()
.id(String.valueOf(center.getId()))
.name(center.getName())
.city(center.getAddress().getCity())
.gu(center.getAddress().getDistrict())
.dong(center.getAddress().getDong())
.operationPeriod(center.getOperationPeriod())
.grade(center.getGrade())
.bathCarYn(center.getBathCarYn())
.introduction(center.getIntroduction())
.build();
}

// 센터 상세 정보 등록 (등록된 센터에 상세 정보 포함해 수정)
@Transactional
public void registerCenterDetailInfor(Member member, CreateAdminRequest adminRequest) {
if (member != null) System.out.println(member.getId());

Center center = centerRepository.findByName(adminRequest.center().name());

center = center.toBuilder()
.id(center.getId())
.name(adminRequest.center().name())
.bathCarYn(adminRequest.center().bathCarYn())
.grade(adminRequest.center().grade())
.operationPeriod(adminRequest.center().operationPeriod())
.address(new Address(adminRequest.center().city(), adminRequest.center().gu(), adminRequest.center().dong(), null))
.introduction(adminRequest.center().introduction())
.phoneNumber(adminRequest.phoneNumber())
.build();

centerRepository.save(center);
}

// 센터 이름으로 센터 등록 여부 조회
public GetCenter isRegistrationCenterByName(String name) {
Optional<List<Center>> centers = centerRepository.findByNameContaining(name);

String centerName = null;
if (centers.isPresent()) {
for (Center center : centers.get()) {
if (center.getName().equals(name)) centerName = center.getName();
}
}

// 센터 상세 정보 등록 (등록된 센터에 상세 정보 포함해 수정)
@Transactional
public void registerCenterDetailInfor(Member member, CreateAdminRequest adminRequest) {
if (member != null) System.out.println(member.getId());

Center center = centerRepository.findByName(adminRequest.center().name());
LocalDateTime now = LocalDateTime.now();

center = center.toBuilder()
.id(center.getId())
.name(adminRequest.center().name())
.bathCarYn(adminRequest.center().bathCarYn())
.grade(adminRequest.center().grade())
.operationPeriod(adminRequest.center().operationPeriod())
.address(new Address(adminRequest.center().city(), adminRequest.center().gu(), adminRequest.center().dong(), null))
.introduction(adminRequest.center().introduction())
.updatedTime(now)
.build();

centerRepository.save(center);
}

// 센터 이름으로 센터 등록 여부 조회
public GetCenter isRegistrationCenterByName(String name) {
Optional<List<Center>> centers = centerRepository.findByNameContaining(name);

String centerName = null;
if (centers.isPresent()) {
for (Center center : centers.get()) {
if (center.getName().equals(name)) centerName = center.getName();
}
}

if (centerName != null) return new GetCenter("해당 센터는 현재 등록되어 있습니다.", true);
return new GetCenter("해당 센터는 현재 등록되어 있지 않습니다.", false);
}
if (centerName != null) return new GetCenter("해당 센터는 현재 등록되어 있습니다.", true);
return new GetCenter("해당 센터는 현재 등록되어 있지 않습니다.", false);
}

// 소속 센터에 등록된 어르신 수
public GetSeniorCountResponse getSeniorCount() {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/young/blaybus/domain/matching/Matching.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ public class Matching {
@Comment("매칭 상태")
private MatchingStatus status;

@Comment("적합도(%)")
private Integer fitness;

@CreatedDate
@Column(updatable = false)
private LocalDateTime createdTime;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import young.blaybus.domain.matching.controller.request.PatchStatusRequest;
import young.blaybus.domain.matching.controller.response.*;
import young.blaybus.domain.matching.service.MatchingService;
import young.blaybus.domain.senior.controller.response.DetailMatchingSeniorResponse;
import young.blaybus.domain.senior.service.SeniorService;

@RestController
@RequiredArgsConstructor
Expand All @@ -20,6 +22,7 @@
public class MatchingController {

private final MatchingService matchingService;
private final SeniorService seniorService;

// 매칭 요청
@PostMapping(value = "/request/{worker-id}/{senior-id}")
Expand Down Expand Up @@ -79,4 +82,13 @@ public ApiResponse<?> update(@RequestBody PatchStatusRequest statusRequest) {
return ApiResponse.onSuccess();
}


@GetMapping("/{senior-id}")
@Operation(summary = "매칭 요청 어르신 상세 조회")
public ApiResponse<DetailMatchingSeniorResponse> getMatchingSenior(
@PathVariable("senior-id") Long seniorId
) {
return ApiResponse.onSuccess(seniorService.getMatchingSenior(seniorId));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package young.blaybus.domain.senior.controller.response;

import io.swagger.v3.oas.annotations.media.Schema;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Builder.Default;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import young.blaybus.domain.senior.enums.CareGrade;
import young.blaybus.domain.senior.enums.Sex;
import young.blaybus.util.enums.CareStyle;

@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "어르신 상세 조회 응답 객체")
public class DetailMatchingSeniorResponse {

private long seniorId;

private String profileUrl;

private String name;

private Sex sex;

private LocalDate birthday;

private String address;

private Integer salary;

private CareGrade careGrade;

private CareStyle careStyle;

@Setter
private List<String> dayList;

@Setter
@Default
private List<String> careList = new ArrayList<>();

private LocalTime startTime;

private LocalTime endTime;

private Integer fitness;

private String phoneNumber;


public String getStartTime() {
return startTime.format(DateTimeFormatter.ofPattern("a HH:mm").withLocale(Locale.forLanguageTag("ko")));
}
public String getEndTime() {
return endTime.format(DateTimeFormatter.ofPattern("HH:mm").withLocale(Locale.forLanguageTag("ko")));
}

public String getCareGrade() {
return careGrade.getValue();
}

public String getCareStyle() {
String emojiRegex = "[\uD83C-\uDBFF\uDC00-\uDFFF\u2600-\u26FF]+";
return careStyle.getValue().replaceAll(emojiRegex, "").strip();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,20 +40,20 @@ public class DetailSeniorResponse {

private CareGrade careGrade;

@Setter
private List<String> dayValueList;

@Setter
private List<String> foodAssistValueList;

@Setter
private List<String> moveAssistValueList;

@Setter
private List<String> lifeAssistValueList;

@Setter
private List<String> toiletAssistValueList;
// @Setter
// private List<String> dayValueList;
//
// @Setter
// private List<String> foodAssistValueList;
//
// @Setter
// private List<String> moveAssistValueList;
//
// @Setter
// private List<String> lifeAssistValueList;
//
// @Setter
// private List<String> toiletAssistValueList;

@Setter
private List<DayOfWeek> dayList;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
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;
import static young.blaybus.domain.senior.QSeniorFoodAssist.seniorFoodAssist;
Expand All @@ -13,6 +14,8 @@
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import young.blaybus.domain.member.Member;
import young.blaybus.domain.senior.controller.response.DetailMatchingSeniorResponse;
import young.blaybus.domain.senior.controller.response.DetailSeniorResponse;
import young.blaybus.util.enums.DayOfWeek;
import young.blaybus.util.enums.assist.FoodAssist;
Expand Down Expand Up @@ -93,4 +96,30 @@ public List<ToiletAssist> getToiletAssistList(Long seniorId) {
.where(seniorToiletAssist.senior.id.eq(seniorId))
.fetch();
}

public DetailMatchingSeniorResponse getMatchingSenior(Long seniorId, Member worker) {
return queryFactory.select(
Projections.fields(
DetailMatchingSeniorResponse.class,
senior.id.as("seniorId"),
senior.name,
senior.careGrade,
senior.careStyle,
senior.profileUrl,
senior.sex,
senior.birthday,
senior.address,
jobSeek.salary,
senior.startTime,
senior.endTime,
matching.fitness,
senior.center.phoneNumber
)
)
.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();
}
}
Loading
Loading