diff --git a/src/main/java/com/yu/yurentcar/domain/branch/entity/Notice.java b/src/main/java/com/yu/yurentcar/domain/branch/entity/Notice.java index 64dd007..1b7e724 100644 --- a/src/main/java/com/yu/yurentcar/domain/branch/entity/Notice.java +++ b/src/main/java/com/yu/yurentcar/domain/branch/entity/Notice.java @@ -71,7 +71,7 @@ public Notice updateNotice(NoticeDto noticeDto, Admin admin, String fileName) { if (finishDate != null) this.finishDate = noticeDto.getFinishDate(); this.description = noticeDto.getDescription(); - if (photoUrl != null) + if (fileName != null) this.photoUrl = fileName; this.admin = admin; return this; diff --git a/src/main/java/com/yu/yurentcar/domain/branch/entity/ParkingSpot.java b/src/main/java/com/yu/yurentcar/domain/branch/entity/ParkingSpot.java index 644f9d4..fafd580 100644 --- a/src/main/java/com/yu/yurentcar/domain/branch/entity/ParkingSpot.java +++ b/src/main/java/com/yu/yurentcar/domain/branch/entity/ParkingSpot.java @@ -46,7 +46,12 @@ public class ParkingSpot extends BaseTimeEntity { public ParkingSpot updateState(ParkingSpotType parkingSpotType) { if (parkingSpotType != null) + { + if(parkingSpotType == ParkingSpotType.PARKINGSPOT_NO_CAR){ + this.car = null; + } this.type = parkingSpotType; + } return this; } diff --git a/src/main/java/com/yu/yurentcar/domain/branch/service/KioskService.java b/src/main/java/com/yu/yurentcar/domain/branch/service/KioskService.java index 27873a5..c9f89d4 100644 --- a/src/main/java/com/yu/yurentcar/domain/branch/service/KioskService.java +++ b/src/main/java/com/yu/yurentcar/domain/branch/service/KioskService.java @@ -126,6 +126,8 @@ public Long returnKey(Long kioskId) { request = new HttpEntity<>(map, headers); ResponseEntity response2 = restTemplate.postForEntity(piBaseUrl + "/rfid-return", request, String.class); + System.out.println("response2: "); + System.out.println(response2); String rfid = response2.getBody(); if (rfid == null) { throw new RuntimeException("응답이 정상적이지 않습니다. 다시 시도해주세요"); @@ -134,7 +136,9 @@ public Long returnKey(Long kioskId) { throw new RuntimeException("RFID가 태그되지 않았습니다."); } + rfid = rfid.replaceAll("\"", ""); + log.info("받은 rfid : "+ rfid); // rfid로 차 키 조회 Key key = keyRepository.findByRfid(rfid) .orElseThrow(() -> new RuntimeException("없는 차키입니다.")); @@ -163,7 +167,7 @@ public Long returnKey(Long kioskId) { request = new HttpEntity<>(map, headers); - ResponseEntity response3 = restTemplate.postForEntity(piBaseUrl + "/receive-car-key", request, Boolean.class); + ResponseEntity response3 = restTemplate.postForEntity(piBaseUrl + "/return-car-key", request, Boolean.class); if (!Boolean.TRUE.equals(response3.getBody())) { throw new RuntimeException("응답이 정상적이지 않습니다. 다시 시도해주세요."); } else { diff --git a/src/main/java/com/yu/yurentcar/domain/branch/service/NoticeService.java b/src/main/java/com/yu/yurentcar/domain/branch/service/NoticeService.java index e5bd0ad..1f371ef 100644 --- a/src/main/java/com/yu/yurentcar/domain/branch/service/NoticeService.java +++ b/src/main/java/com/yu/yurentcar/domain/branch/service/NoticeService.java @@ -100,14 +100,14 @@ public Boolean patchNotice(NoticePatchDto noticePatchDto, String adminUsername, File lookupFile; String projectPath; - String fileName = ""; + String fileName = null; // 사진이 변경된 경우 if (noticePatchDto.getIsModified()) { log.info("사진이 변경되었습니다."); // 기존의 사진이 있으면 지우기 if (!notice.getPhotoUrl().equals("")) { log.info("기존의 이미지를 지웁니다."); - log.info(System.getProperty("user.dir") + "\\files\\" + URLDecoder.decode(notice.getPhotoUrl())); + log.info(System.getProperty("user.dir") + "\\files\\" + URLDecoder.decode(notice.getPhotoUrl(), "UTF-8")); try { lookupFile = new File(System.getProperty("user.dir") + "\\files\\" + URLDecoder.decode(notice.getPhotoUrl(), "UTF-8")); lookupFile.delete(); diff --git a/src/main/java/com/yu/yurentcar/domain/branch/service/ParkingSpotService.java b/src/main/java/com/yu/yurentcar/domain/branch/service/ParkingSpotService.java index f506061..6c74fac 100644 --- a/src/main/java/com/yu/yurentcar/domain/branch/service/ParkingSpotService.java +++ b/src/main/java/com/yu/yurentcar/domain/branch/service/ParkingSpotService.java @@ -90,10 +90,11 @@ public Boolean postParkingSpots(ParkingSpotRequestList parkingSpotRequestList, S return true; } + @Transactional public Point findCarLocationByCarNumber(String carNumber, String siDo, String branchName) { return parkingSpotRepository.findCarLocationByCarNumber(carNumber, EnumValueConvertUtils.ofDesc(SiDoType.class, siDo), branchName); } - + @Transactional public Boolean reportParkingStatus(ReportParkingSpotDto reportParkingSpotDto) { ParkingSpot parkingSpot = parkingSpotRepository.findById(reportParkingSpotDto.getParkingSpotId()) .orElseThrow((() -> new RuntimeException("없는 주차장 자리입니다."))); @@ -102,13 +103,13 @@ public Boolean reportParkingStatus(ReportParkingSpotDto reportParkingSpotDto) { parkingSpotRepository.save(parkingSpot.updateState(reportParkingSpotDto.getIsParking() ? ParkingSpotType.PARKINGSPOT_CAR : ParkingSpotType.PARKINGSPOT_NO_CAR)); return true; } - //주차봉 rfid 태그 + @Transactional public Boolean reportRfid(ReportRfidDto reportRfidDto) { - //rfid 내역 저장 - if (!reportRfidDto.getIsRfidTagged()) + if (!reportRfidDto.getIsRfidTagged()) { log.info("rfid 미인식"); - + return true; + } ParkingSpot parkingSpot = parkingSpotRepository.findById(reportRfidDto.getParkingSpotId()) .orElseThrow(() -> new RuntimeException("없는 주차장입니다.")); Key key = keyRepository.findByRfid(reportRfidDto.getRfid()) diff --git a/src/main/java/com/yu/yurentcar/domain/car/dto/UsableCarResponseDto.java b/src/main/java/com/yu/yurentcar/domain/car/dto/UsableCarResponseDto.java index 29bc0d3..20a27c4 100644 --- a/src/main/java/com/yu/yurentcar/domain/car/dto/UsableCarResponseDto.java +++ b/src/main/java/com/yu/yurentcar/domain/car/dto/UsableCarResponseDto.java @@ -12,15 +12,15 @@ public class UsableCarResponseDto { private Integer beforePrice; private Integer afterPrice; private Integer discountRatio; - private String imageUri; + private String photoUrl; - public UsableCarResponseDto(String carName, String carNumber, Integer totalDistance, Integer beforePrice, Integer discountRatio) { + public UsableCarResponseDto(String carName, String carNumber, Integer totalDistance, Integer beforePrice, Integer discountRatio, String photoUrl) { this.carName = carName; this.carNumber = carNumber; this.totalDistance = totalDistance; this.beforePrice = beforePrice; this.afterPrice = (int) Math.ceil((beforePrice - (beforePrice * discountRatio * 0.01))); this.discountRatio = discountRatio; - this.imageUri = "http://"; + this.photoUrl = photoUrl; } } diff --git a/src/main/java/com/yu/yurentcar/domain/car/repository/CarRepositoryImpl.java b/src/main/java/com/yu/yurentcar/domain/car/repository/CarRepositoryImpl.java index 2a17c75..fa4bc10 100644 --- a/src/main/java/com/yu/yurentcar/domain/car/repository/CarRepositoryImpl.java +++ b/src/main/java/com/yu/yurentcar/domain/car/repository/CarRepositoryImpl.java @@ -36,7 +36,8 @@ public List searchUsableCar(UsableCarSearchRequestDto requ car.carNumber, car.totalDistance, car.carPrice, - car.discountRate + car.discountRate, + car.photoUrl )) .from(car) .innerJoin(car.carSpec, carSpec); diff --git a/src/main/java/com/yu/yurentcar/domain/insurance/entity/InsuranceCompany.java b/src/main/java/com/yu/yurentcar/domain/insurance/entity/InsuranceCompany.java index 31ee340..a64c621 100644 --- a/src/main/java/com/yu/yurentcar/domain/insurance/entity/InsuranceCompany.java +++ b/src/main/java/com/yu/yurentcar/domain/insurance/entity/InsuranceCompany.java @@ -4,15 +4,13 @@ import com.yu.yurentcar.global.BaseTimeEntity; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; +import lombok.*; @Entity @Getter @NoArgsConstructor -@AllArgsConstructor @Table(name = "insurance_company") +@ToString public class InsuranceCompany extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -20,14 +18,21 @@ public class InsuranceCompany extends BaseTimeEntity { private Long companyId; @NotNull - @Column(name = "company_name",length = 40) + @Column(name = "company_name", length = 40) private String companyName; @NotNull - @Column(name = "phone_number",length = 15) + @Column(name = "phone_number", length = 15) private String phoneNumber; @NotNull - @Column(name = "site_link",length = 100) + @Column(name = "site_link", length = 100) private String siteLink; + + @Builder + public InsuranceCompany(@NotNull String companyName, @NotNull String phoneNumber, @NotNull String siteLink) { + this.companyName = companyName; + this.phoneNumber = phoneNumber; + this.siteLink = siteLink; + } } diff --git a/src/main/java/com/yu/yurentcar/domain/insurance/entity/InsuranceContract.java b/src/main/java/com/yu/yurentcar/domain/insurance/entity/InsuranceContract.java index 6382724..e11c5a1 100644 --- a/src/main/java/com/yu/yurentcar/domain/insurance/entity/InsuranceContract.java +++ b/src/main/java/com/yu/yurentcar/domain/insurance/entity/InsuranceContract.java @@ -5,17 +5,15 @@ import com.yu.yurentcar.global.BaseTimeEntity; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; +import lombok.*; import java.time.LocalDateTime; @Entity @Getter @NoArgsConstructor -@AllArgsConstructor @Table(name = "insurance_contract") +@ToString public class InsuranceContract extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -25,11 +23,13 @@ public class InsuranceContract extends BaseTimeEntity { @NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "insurance_company_id") + @ToString.Exclude private InsuranceCompany insuranceCompany; @NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "reservation_id") + @ToString.Exclude private Reservation reservation; @NotNull @@ -39,4 +39,20 @@ public class InsuranceContract extends BaseTimeEntity { @NotNull @Column(name = "contraction_date") private LocalDateTime contractionDate; + + public void setReservation(Reservation reservation) { + this.reservation = reservation; + } + + public void setInsuranceCompany(InsuranceCompany insuranceCompany) { + this.insuranceCompany = insuranceCompany; + } + + @Builder + public InsuranceContract(@NotNull InsuranceCompany insuranceCompany, @NotNull Reservation reservation, @NotNull Integer contractionPrice, @NotNull LocalDateTime contractionDate) { + this.insuranceCompany = insuranceCompany; + this.reservation = reservation; + this.contractionPrice = contractionPrice; + this.contractionDate = contractionDate; + } } diff --git a/src/main/java/com/yu/yurentcar/domain/insurance/repository/InsuranceCompanyRepository.java b/src/main/java/com/yu/yurentcar/domain/insurance/repository/InsuranceCompanyRepository.java new file mode 100644 index 0000000..0e9ca35 --- /dev/null +++ b/src/main/java/com/yu/yurentcar/domain/insurance/repository/InsuranceCompanyRepository.java @@ -0,0 +1,7 @@ +package com.yu.yurentcar.domain.insurance.repository; + +import com.yu.yurentcar.domain.insurance.entity.InsuranceCompany; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface InsuranceCompanyRepository extends JpaRepository { +} \ No newline at end of file diff --git a/src/main/java/com/yu/yurentcar/domain/insurance/repository/InsuranceContractRepository.java b/src/main/java/com/yu/yurentcar/domain/insurance/repository/InsuranceContractRepository.java new file mode 100644 index 0000000..b0488c3 --- /dev/null +++ b/src/main/java/com/yu/yurentcar/domain/insurance/repository/InsuranceContractRepository.java @@ -0,0 +1,7 @@ +package com.yu.yurentcar.domain.insurance.repository; + +import com.yu.yurentcar.domain.insurance.entity.InsuranceContract; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface InsuranceContractRepository extends JpaRepository { +} \ No newline at end of file diff --git a/src/main/java/com/yu/yurentcar/domain/reservation/dto/ReservationDetailDto.java b/src/main/java/com/yu/yurentcar/domain/reservation/dto/ReservationDetailDto.java index 35270d5..19229c3 100644 --- a/src/main/java/com/yu/yurentcar/domain/reservation/dto/ReservationDetailDto.java +++ b/src/main/java/com/yu/yurentcar/domain/reservation/dto/ReservationDetailDto.java @@ -1,6 +1,9 @@ package com.yu.yurentcar.domain.reservation.dto; -import lombok.*; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; import java.time.LocalDateTime; import java.util.List; @@ -16,16 +19,18 @@ public class ReservationDetailDto { private String carNumber; private List drivers; private String photoUrl; + private Long reservationId; @Builder - public ReservationDetailDto(LocalDateTime startDate, LocalDateTime endDate, String branchName, String carName, String carNumber) { + public ReservationDetailDto(LocalDateTime startDate, LocalDateTime endDate, String branchName, String carName, String carNumber, String photoUrl, Long reservationId) { this.startDate = startDate; this.endDate = endDate; this.branchName = branchName; this.carName = carName; this.carNumber = carNumber; this.drivers = null; - this.photoUrl = "http://"; + this.photoUrl = photoUrl; + this.reservationId = reservationId; } public ReservationDetailDto updateDrivers(List drivers) { diff --git a/src/main/java/com/yu/yurentcar/domain/reservation/dto/ReservationListResponseDto.java b/src/main/java/com/yu/yurentcar/domain/reservation/dto/ReservationListResponseDto.java index e5b9028..1f42efe 100644 --- a/src/main/java/com/yu/yurentcar/domain/reservation/dto/ReservationListResponseDto.java +++ b/src/main/java/com/yu/yurentcar/domain/reservation/dto/ReservationListResponseDto.java @@ -26,7 +26,7 @@ public class ReservationListResponseDto { private String photoUrl; - public ReservationListResponseDto(Long reservationId, String carName, String carNumber, Integer totalDistance, LocalDateTime startDate, LocalDateTime endDate, String branchName, Integer price, Boolean isWritten) { + public ReservationListResponseDto(Long reservationId, String carName, String carNumber, Integer totalDistance, LocalDateTime startDate, LocalDateTime endDate, String branchName, Integer price, Boolean isWritten, String photoUrl) { this.reservationId = reservationId; this.carName = carName; this.carNumber = carNumber; @@ -48,6 +48,6 @@ else if (diff < 30) else this.reviewType = ReviewType.IMPOSSIBLE.getDbValue(); - this.photoUrl="http://"; + this.photoUrl = photoUrl; } } \ No newline at end of file diff --git a/src/main/java/com/yu/yurentcar/domain/reservation/entity/Card.java b/src/main/java/com/yu/yurentcar/domain/reservation/entity/Card.java index 21c2b34..7273901 100644 --- a/src/main/java/com/yu/yurentcar/domain/reservation/entity/Card.java +++ b/src/main/java/com/yu/yurentcar/domain/reservation/entity/Card.java @@ -6,9 +6,7 @@ import jakarta.validation.constraints.Future; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PastOrPresent; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; +import lombok.*; import org.hibernate.validator.constraints.Length; import java.time.LocalDateTime; @@ -16,8 +14,8 @@ @Entity @Getter @NoArgsConstructor -@AllArgsConstructor @Table(name = "card") +@ToString public class Card { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -47,4 +45,13 @@ public class Card { @PastOrPresent // 현재 또는 현재 이전 @Column(name = "register_date") private LocalDateTime registerDate; + + @Builder + public Card(@NotNull User user, @NotNull String cardNumber, @NotNull String CVC, @NotNull LocalDateTime expiredDate, @NotNull LocalDateTime registerDate) { + this.user = user; + this.cardNumber = cardNumber; + this.CVC = CVC; + this.expiredDate = expiredDate; + this.registerDate = registerDate; + } } diff --git a/src/main/java/com/yu/yurentcar/domain/reservation/repository/ReservationRepositoryImpl.java b/src/main/java/com/yu/yurentcar/domain/reservation/repository/ReservationRepositoryImpl.java index fed193f..dfe3ac4 100644 --- a/src/main/java/com/yu/yurentcar/domain/reservation/repository/ReservationRepositoryImpl.java +++ b/src/main/java/com/yu/yurentcar/domain/reservation/repository/ReservationRepositoryImpl.java @@ -112,7 +112,7 @@ public Point getBranchPointByUsername(String username) { @Override public ReservationDetailDto findNowReservationDetailByUsername(String username) { return queryFactory - .select(Projections.constructor(ReservationDetailDto.class, reservation.startDate, reservation.endDate, branch.branchName, carSpecification.carName, car.carNumber)) + .select(Projections.constructor(ReservationDetailDto.class, reservation.startDate, reservation.endDate, branch.branchName, carSpecification.carName, car.carNumber, car.photoUrl, reservation.reservationId)) .from(reservation) .innerJoin(reservation.car, car) .innerJoin(car.carSpec, carSpecification) @@ -142,7 +142,8 @@ public List getReservationListByUsername(String user reservation.endDate, branch.branchName, reservation.reservationPrice, - review.reviewId.isNotNull())) + review.reviewId.isNotNull(), + car.photoUrl)) .from(reservation) .leftJoin(review).on(reservation.eq(review.reservation)) .innerJoin(reservation.car.branch, branch) @@ -184,7 +185,7 @@ public List getReservationListByBranchId(Long branchId, Bo .from(reservation) .where(reservation.car.branch.branchId.eq(branchId)); if (isDone != null) { - if(isDone) + if (isDone) query = query.where(reservation.endDate.before(LocalDateTime.now())); else query = query.where(reservation.endDate.after(LocalDateTime.now())); @@ -206,7 +207,7 @@ public ReservationBranchDto getReservationListByBranchIdAndNickname(Long branchI .where(reservation.user.nickname.eq(nickname)) .where(reservation.car.branch.branchId.eq(branchId)); if (isDone != null) { - if(isDone) + if (isDone) query = query.where(reservation.endDate.before(LocalDateTime.now())); else query = query.where(reservation.endDate.after(LocalDateTime.now())); diff --git a/src/main/java/com/yu/yurentcar/domain/user/service/CustomOAuth2UserService.java b/src/main/java/com/yu/yurentcar/domain/user/service/CustomOAuth2UserService.java index 229cbe6..189f297 100644 --- a/src/main/java/com/yu/yurentcar/domain/user/service/CustomOAuth2UserService.java +++ b/src/main/java/com/yu/yurentcar/domain/user/service/CustomOAuth2UserService.java @@ -107,7 +107,7 @@ public User saveSocialUser(String username, String name, Gender gender, LocalDat .username(username) .name(name) .password(passwordEncoder.encode("1111")) - .nickname("hi") + .nickname(name) .gender(gender) .birthday(birthday) .phoneNumber(phoneNumber) diff --git a/src/main/java/com/yu/yurentcar/security/config/SecurityConfig.java b/src/main/java/com/yu/yurentcar/security/config/SecurityConfig.java index f218ba2..cafd05d 100644 --- a/src/main/java/com/yu/yurentcar/security/config/SecurityConfig.java +++ b/src/main/java/com/yu/yurentcar/security/config/SecurityConfig.java @@ -40,6 +40,18 @@ public class SecurityConfig { @Value("${my.web.base-url}") private String webBaseUrl; + @Value("${my.admin.base-url}") + private String adminBaseUrl; + + @Value("${my.pi.base-url}") + private String piBaseUrl; + + @Value("${my.pi2.base-url}") + private String pi2BaseUrl; + + @Value("${my.kiosk.base-url}") + private String kioskBaseUrl; + @Value("${my.web.domain}") private String DOMAIN; @@ -87,7 +99,7 @@ public SecurityFilterChain springSecurity(HttpSecurity http) throws Exception { http.authorizeHttpRequests((authz) -> authz .requestMatchers("/api/v1/**").permitAll() - .anyRequest().denyAll()); + .anyRequest().denyAll()); //로컬 로그인 @@ -142,10 +154,10 @@ public SecurityFilterChain springSecurity(HttpSecurity http) throws Exception { CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); //configuration.setAllowedOrigins(Collections.singletonList("http://42.82.185.184:3000")); // singletonList : 하나짜리 리스트 - configuration.setAllowedOrigins(Arrays.asList(webBaseUrl, "http://localhost:3000", "http://localhost:3001")); + configuration.setAllowedOrigins(Arrays.asList(webBaseUrl, adminBaseUrl, piBaseUrl, pi2BaseUrl, kioskBaseUrl)); configuration.setAllowedMethods(Collections.singletonList("*")); configuration.setAllowedHeaders(Collections.singletonList("*")); - configuration.setExposedHeaders(Arrays.asList("X-Page-Count", "Access-Control-Allow-Origin","Access-Control-Allow-Credentials")); + configuration.setExposedHeaders(Arrays.asList("X-Page-Count", "Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")); configuration.setAllowCredentials(true); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", configuration); diff --git a/src/main/java/com/yu/yurentcar/security/config/WebMvcConfig.java b/src/main/java/com/yu/yurentcar/security/config/WebMvcConfig.java deleted file mode 100644 index 0cbed13..0000000 --- a/src/main/java/com/yu/yurentcar/security/config/WebMvcConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.yu.yurentcar.security.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -@EnableWebMvc -public class WebMvcConfig implements WebMvcConfigurer { - - @Override - public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**") - .allowedOrigins("http://localhost:3000") - .allowedMethods("OPTIONS","GET","POST","PUT","DELETE"); - } - -} \ No newline at end of file