Skip to content

Commit

Permalink
feat(Delivery): add getDelviery
Browse files Browse the repository at this point in the history
  • Loading branch information
junhyeongkim2 committed May 20, 2024
1 parent d50d46c commit 6f6c2b1
Show file tree
Hide file tree
Showing 9 changed files with 105 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.junhyeong.heroglass.controller;

import com.junhyeong.heroglass.domain.dto.response.DeliveryResponse;
import com.junhyeong.heroglass.service.DeliveryService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1")
@RequiredArgsConstructor
public class DeliveryController {

private final DeliveryService deliveryService;

@GetMapping("/delivery/{id}")
public ResponseEntity<DeliveryResponse> getDelivery(@PathVariable("id") Long id) {
return ResponseEntity.ok(deliveryService.getDelivery(id));
}
}
3 changes: 3 additions & 0 deletions src/main/java/com/junhyeong/heroglass/domain/Address.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.junhyeong.heroglass.domain;

import jakarta.annotation.Nullable;
import jakarta.persistence.Embeddable;
import lombok.Getter;
import org.hibernate.annotations.ColumnDefault;
import org.springframework.boot.context.properties.bind.DefaultValue;

@Embeddable
@Getter
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/com/junhyeong/heroglass/domain/Delivery.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static jakarta.persistence.FetchType.LAZY;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.annotation.Nullable;
import jakarta.persistence.Column;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
Expand All @@ -28,9 +29,13 @@ public class Delivery {
@OneToOne(mappedBy = "delivery", fetch = LAZY)
private Order order;

@Embedded
@Embeddedz
private Address address;

public Address getAddress() {
return this.address == null ? new Address() : this.address;
}

@Enumerated(EnumType.STRING)
private DeliveryStatus status;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.junhyeong.heroglass.domain.dto.response;

import com.junhyeong.heroglass.domain.DeliveryStatus;
import jakarta.annotation.Nullable;

public record DeliveryResponse(String address, String detail, DeliveryStatus status) {
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.junhyeong.heroglass.domain.dto.response;

import com.junhyeong.heroglass.domain.Delivery;
import java.util.List;

public record OrderResponse(String orderUUID, List<OrderItemResponse> orderItems, int count, int price) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.junhyeong.heroglass.repository;

import com.junhyeong.heroglass.domain.Delivery;
import com.junhyeong.heroglass.repository.querydsl.DeliveryRepositoryCustom;
import org.springframework.data.jpa.repository.JpaRepository;

public interface DeliveryRepository extends JpaRepository<Delivery, Long>, DeliveryRepositoryCustom {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.junhyeong.heroglass.repository.querydsl;

import com.junhyeong.heroglass.domain.Delivery;

public interface DeliveryRepositoryCustom {
Delivery findDeliveryByOrderId(Long orderId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.junhyeong.heroglass.repository.querydsl.impl;

import com.junhyeong.heroglass.domain.Delivery;
import com.junhyeong.heroglass.domain.QOrder;
import com.junhyeong.heroglass.repository.querydsl.DeliveryRepositoryCustom;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

@Repository
@RequiredArgsConstructor
public class DeliveryRepositoryImpl implements DeliveryRepositoryCustom {
private final JPAQueryFactory queryFactory;

@Override
public Delivery findDeliveryByOrderId(Long orderId) {

return queryFactory.select(QOrder.order.delivery)
.from(QOrder.order)
.where(QOrder.order.id.eq(orderId))
.fetchOne();

}

}
25 changes: 25 additions & 0 deletions src/main/java/com/junhyeong/heroglass/service/DeliveryService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.junhyeong.heroglass.service;

import com.junhyeong.heroglass.domain.Delivery;
import com.junhyeong.heroglass.domain.dto.response.DeliveryResponse;
import com.junhyeong.heroglass.repository.DeliveryRepository;
import com.junhyeong.heroglass.repository.OrderRepository;
import jakarta.annotation.Nullable;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class DeliveryService {

private final DeliveryRepository deliveryRepository;

public DeliveryResponse getDelivery(Long id) {

Delivery delivery = deliveryRepository.findDeliveryByOrderId(id);
return new DeliveryResponse(
delivery.getAddress().getAddress(),
delivery.getAddress().getDetail(),
delivery.getStatus());
}
}

0 comments on commit 6f6c2b1

Please sign in to comment.