Skip to content

Commit

Permalink
Refactor/컬럼명 수정 및 컨버터 추가 (#78)
Browse files Browse the repository at this point in the history
* refactor: 컬럼명 수정

point -> location
description -> pay_types

* refactor: converter로 변환하도록 수정

- Association, Fee, Timeunit

* refactor: 주차장 조회시 결제 방식 기본 값 NO_INFO로 수정

- NO_INFO로 조회시 모든 결제 방식 허용하도록 수정
  • Loading branch information
This2sho authored May 8, 2024
1 parent b255da0 commit baed9ec
Show file tree
Hide file tree
Showing 26 changed files with 262 additions and 263 deletions.
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
package com.parkingcomestrue.parking.application.parking;

import com.parkingcomestrue.parking.application.SearchConditionMapper;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.FeeInfo;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.HolidayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.SaturdayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.WeekdayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse.ParkingResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingQueryRequest;
import com.parkingcomestrue.parking.application.parking.dto.ParkingSearchConditionRequest;
import com.parkingcomestrue.parking.application.review.ReviewService;
import com.parkingcomestrue.parking.application.review.dto.ReviewInfoResponse;
import com.parkingcomestrue.common.domain.favorite.Favorite;
import com.parkingcomestrue.common.domain.favorite.repository.FavoriteRepository;
import com.parkingcomestrue.common.domain.parking.Fee;
Expand All @@ -26,6 +14,18 @@
import com.parkingcomestrue.common.domain.parking.service.ParkingFilteringService;
import com.parkingcomestrue.common.domain.searchcondition.FeeType;
import com.parkingcomestrue.common.support.Association;
import com.parkingcomestrue.parking.application.SearchConditionMapper;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.FeeInfo;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.HolidayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.SaturdayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.WeekdayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse.ParkingResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingQueryRequest;
import com.parkingcomestrue.parking.application.parking.dto.ParkingSearchConditionRequest;
import com.parkingcomestrue.parking.application.review.ReviewService;
import com.parkingcomestrue.parking.application.review.dto.ReviewInfoResponse;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -82,10 +82,10 @@ private List<Favorite> findMemberFavorites(Long memberId) {
private List<Parking> findParkingLotsByOrderCondition(String priority, ParkingQueryRequest parkingQueryRequest,
Location middleLocation) {
if (priority.equals(DISTANCE_ORDER_CONDITION)) {
return parkingRepository.findAroundParkingLotsOrderByDistance(middleLocation.getPoint(),
return parkingRepository.findAroundParkingLotsOrderByDistance(middleLocation.toPoint(),
parkingQueryRequest.getRadius());
}
return parkingRepository.findAroundParkingLots(middleLocation.getPoint(), parkingQueryRequest.getRadius());
return parkingRepository.findAroundParkingLots(middleLocation.toPoint(), parkingQueryRequest.getRadius());
}

private SearchingCondition toSearchingCondition(ParkingSearchConditionRequest request) {
Expand Down Expand Up @@ -166,7 +166,7 @@ private ParkingDetailInfoResponse toParkingResponse(ReviewInfoResponse reviews,
parking.getSpace().getCapacity(),
diffMinute,
parking.getBaseInformation().getTel(),
parking.getBaseInformation().getPayTypes().getDescription(),
parking.getBaseInformation().getPayTypesDescription(),
new WeekdayOperatingTime(
parking.getOperatingTime().getWeekdayBeginTime(),
parking.getOperatingTime().getWeekdayEndTime()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ private ParkingSearchConditionRequest defaultRequest() {
searchConditionMapper.getValues(OperationType.class),
searchConditionMapper.getValues(ParkingType.class),
NOT_FREE,
searchConditionMapper.getValues(PayType.class),
List.of(PayType.NO_INFO.getDescription()),
BASE_HOURS,
RECOMMEND_ORDER_CONDITION
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

import static org.junit.jupiter.api.Assertions.assertAll;

import com.parkingcomestrue.parking.application.ContainerTest;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse;
import com.parkingcomestrue.parking.application.review.dto.ReviewCreateRequest;
import com.parkingcomestrue.common.domain.member.Member;
import com.parkingcomestrue.common.domain.member.Password;
import com.parkingcomestrue.common.domain.parking.BaseInformation;
Expand All @@ -16,13 +13,16 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeInfo;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
import com.parkingcomestrue.common.domain.review.Content;
import com.parkingcomestrue.common.support.exception.DomainException;
import com.parkingcomestrue.common.support.exception.DomainExceptionInformation;
import com.parkingcomestrue.parking.application.ContainerTest;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse;
import com.parkingcomestrue.parking.application.review.dto.ReviewCreateRequest;
import java.time.LocalTime;
import java.util.List;
import org.assertj.core.api.Assertions;
Expand All @@ -46,7 +46,7 @@ class ParkingServiceTest extends ContainerTest {
List<Parking> parkings = List.of(parking);
parkingService.saveAll(parkings);

Member member = new Member( "email", "하디", new Password("qwer1234"));
Member member = new Member("email", "하디", new Password("qwer1234"));
memberRepository.save(member);

ReviewCreateRequest reviewCreateRequest = new ReviewCreateRequest(
Expand All @@ -64,7 +64,7 @@ class ParkingServiceTest extends ContainerTest {
private Parking makeParking(String parkingName) {
return new Parking
(
new BaseInformation(parkingName, "010", "부산", PayTypes.DEFAULT, ParkingType.MECHANICAL,
new BaseInformation(parkingName, "010", "부산", List.of(PayType.NO_INFO), ParkingType.MECHANICAL,
OperationType.PRIVATE),
Location.of(30d, 30d),
Space.of(100, 30),
Expand All @@ -86,5 +86,4 @@ private Parking makeParking(String parkingName) {
Fee.from(50000))
);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeInfo;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
Expand Down Expand Up @@ -48,7 +48,7 @@ private BaseInformation getBaseInformation(final PusanPublicParkingResponse.Park
response.getParkingName(),
response.getTelephoneNumber(),
filterAddress(response),
PayTypes.DEFAULT,
List.of(PayType.NO_INFO),
ParkingType.find(response.getParkingTypeNM()),
OperationType.PUBLIC
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeInfo;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
Expand All @@ -33,20 +33,23 @@ public class SeoulPublicParkingAdapter {

public List<Parking> convert(SeoulPublicParkingResponse response) {
List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> rows = response.getParkingInfo().getRows();
List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> seoulCityParkingLots = calculateCapacity(filterByOperation(rows));
List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> seoulCityParkingLots = calculateCapacity(
filterByOperation(rows));

return seoulCityParkingLots.stream()
.map(this::toParking)
.toList();
}

private List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> filterByOperation(final List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> rows) {
private List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> filterByOperation(
final List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> rows) {
return rows.stream()
.filter(result -> TIMED_PARKING_RULES.contains(result.getOperationRule()))
.toList();
}

private List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> calculateCapacity(final List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> results) {
private List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> calculateCapacity(
final List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> results) {
final Map<String, List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking>> collect = results.stream()
.collect(Collectors.groupingBy(a -> a.getParkingCode()));

Expand Down Expand Up @@ -76,7 +79,7 @@ private BaseInformation getBaseInformation(final SeoulPublicParkingResponse.Park
response.getParkingName(),
response.getTel(),
response.getAddr(),
PayTypes.DEFAULT,
List.of(PayType.NO_INFO),
ParkingType.find(response.getParkingTypeNM()),
OperationType.PUBLIC
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.parkingcomestrue.fake;

import com.parkingcomestrue.external.parkingapi.ParkingApiService;
import com.parkingcomestrue.common.domain.parking.BaseInformation;
import com.parkingcomestrue.common.domain.parking.Fee;
import com.parkingcomestrue.common.domain.parking.FeePolicy;
Expand All @@ -10,9 +9,10 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
import com.parkingcomestrue.external.parkingapi.ParkingApiService;
import java.util.LinkedList;
import java.util.List;

Expand All @@ -34,7 +34,8 @@ public List<Parking> read() {
LinkedList<Parking> result = new LinkedList<>();
for (int i = 0; i < readSize; i++) {
Parking parking = new Parking(
new BaseInformation("not offer parking" + i, "051-000" + i, "부산시 어딘가 " + i, PayTypes.DEFAULT,
new BaseInformation("not offer parking" + i, "051-000" + i, "부산시 어딘가 " + i,
List.of(PayType.NO_INFO),
ParkingType.NO_INFO,
OperationType.PUBLIC),
Location.of("33.333" + i, "44.444" + i),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.parkingcomestrue.fake;

import com.parkingcomestrue.external.parkingapi.ParkingApiService;
import com.parkingcomestrue.common.domain.parking.BaseInformation;
import com.parkingcomestrue.common.domain.parking.Fee;
import com.parkingcomestrue.common.domain.parking.FeePolicy;
Expand All @@ -10,9 +9,10 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
import com.parkingcomestrue.external.parkingapi.ParkingApiService;
import java.util.LinkedList;
import java.util.List;

Expand All @@ -34,7 +34,7 @@ public List<Parking> read() {
LinkedList<Parking> result = new LinkedList<>();
for (int i = 0; i < readSize; i++) {
Parking parking = new Parking(
new BaseInformation("offer parking" + i, "02-000" + i, "서울시 어딘가 " + i, PayTypes.DEFAULT,
new BaseInformation("offer parking" + i, "02-000" + i, "서울시 어딘가 " + i, List.of(PayType.NO_INFO),
ParkingType.NO_INFO,
OperationType.PUBLIC),
Location.of("11.111" + i, "22.222" + i),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
import com.parkingcomestrue.common.domain.AuditingEntity;
import com.parkingcomestrue.common.domain.member.Member;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.infra.converter.AssociationConverter;
import com.parkingcomestrue.common.support.Association;
import jakarta.persistence.AttributeOverride;
import jakarta.persistence.Column;
import jakarta.persistence.Embedded;
import jakarta.persistence.Convert;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
Expand All @@ -33,12 +32,10 @@ public class Favorite extends AuditingEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Embedded
@AttributeOverride(name = "id", column = @Column(name = "member_id"))
@Convert(converter = AssociationConverter.class)
private Association<Member> memberId;

@Embedded
@AttributeOverride(name = "id", column = @Column(name = "parking_id"))
@Convert(converter = AssociationConverter.class)
private Association<Parking> parkingId;

public Favorite(Association<Member> memberId, Association<Parking> parkingId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import static jakarta.persistence.EnumType.STRING;

import com.parkingcomestrue.common.infra.converter.PayTypeConverter;
import jakarta.persistence.Convert;
import jakarta.persistence.Embeddable;
import jakarta.persistence.Embedded;
import jakarta.persistence.Enumerated;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -15,20 +17,22 @@
@Embeddable
public class BaseInformation {

private static final String DELIMITER = ", ";

private String name;
private String tel;
private String address;

@Embedded
private PayTypes payTypes;
@Convert(converter = PayTypeConverter.class)
private List<PayType> payTypes;

@Enumerated(STRING)
private ParkingType parkingType;

@Enumerated(STRING)
private OperationType operationType;

public BaseInformation(String name, String tel, String address, PayTypes payTypes, ParkingType parkingType,
public BaseInformation(String name, String tel, String address, List<PayType> payTypes, ParkingType parkingType,
OperationType operationType) {
this.name = name;
this.tel = tel;
Expand All @@ -49,6 +53,24 @@ public boolean containsParkingType(List<ParkingType> parkingTypes) {
}

public boolean containsPayType(List<PayType> memberPayTypes) {
return this.payTypes.contains(memberPayTypes);
if (memberPayTypes.contains(PayType.NO_INFO)) {
return true;
}
return memberPayTypes.stream()
.anyMatch(payType -> this.payTypes.contains(payType));
}

public String getPayTypesDescription() {
return payTypes.stream()
.map(PayType::getDescription)
.sorted()
.collect(Collectors.joining(DELIMITER));
}

public String getPayTypesName() {
return payTypes.stream()
.map(PayType::name)
.sorted()
.collect(Collectors.joining(DELIMITER));
}
}
Loading

0 comments on commit baed9ec

Please sign in to comment.