- Entity/Order
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Getter
@Entity
@Table(name = "Orders")
public class Order extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;
@ManyToOne
@JoinColumn(name = "store_id")
private Store store;
@CreatedDate
@Column
private LocalDateTime orderDate;
public static Order createOrder(OrderDto dto, Member member, Store store) {
if (dto.getId() != null) {
throw new IllegalArgumentException("생성 실패, 주문에는 ID가 없어야 함.");
}
// if (dto.getMemberId() != member.getId()) {
// throw new IllegalArgumentException("생성 실패, 회원의 ID가 다름");
// }
return new Order(
dto.getId(),
member,
store,
dto.getOrderDate()
);
}
}
- OrderDto
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
public class OrderDto {
private Long id;
@JsonProperty("member_id")
private Long memberId;
@JsonProperty("store_id")
private Long storeId;
private LocalDateTime orderDate;
public static OrderDto createOrderDto(Order order) {
return new OrderDto(
order.getId(),
order.getMember().getId(),
order.getStore().getId(),
order.getOrderDate()
);
}
}
- OrderRepository
public interface OrderRepository extends JpaRepository<Order, Long> {
//회원 전화번호 별 주문 조회
@Query(value = "SELECT * FROM orders WHERE member_id = " +
"(SELECT id FROM member WHERE phone_num = :PhoneNum);", nativeQuery = true)
List<Order> findByPhoneNum(@Param("PhoneNum")String PhoneNum);
//지점 별 주문 조회
@Query(value = "SELECT * FROM orders WHERE store_id = (SELECT id FROM store WHERE name = :StoreName)", nativeQuery = true)
List<Order> listByStoreName(@Param("StoreName")String StoreName);
}
- OrderAPIController
@RestController
public class OrderAPIController {
@Autowired
private OrderService orderService;
//전체 주문 조회
@GetMapping("/api/orders")
public List<Order> list() {
return orderService.list();
}
//회원 전화번호 별 주문 조회
@GetMapping("/api/orders/{PhoneNum}")
public List<Order> listByPhone(@PathVariable String PhoneNum) {
return orderService.findByPhoneNum(PhoneNum);
}
//지점 별 주문 조회
@GetMapping("/api/orders/store/{StoreName}")
public List<Order> listByStoreName(@PathVariable String StoreName) {
return orderService.listByStoreName(StoreName);
}
//주문 생성
@PostMapping("/api/orders/{memberId}/{storeId}")
public ResponseEntity<OrderDto> create(@PathVariable Long memberId, @PathVariable Long storeId, @RequestBody OrderDto dto) {
OrderDto createdDto = orderService.create(memberId, storeId, dto);
return ResponseEntity.status(HttpStatus.OK).body(createdDto);
}
//주문 삭제
@DeleteMapping("/api/orders/{id}")
public ResponseEntity<Order> delete(@PathVariable Long id) {
Order deleted = orderService.delete(id);
return deleted != null ?
ResponseEntity.status(HttpStatus.OK).build() :
ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
}
GitHub - Pearlmoon997/CoffeeShop: CoffeeShop
CoffeeShop. Contribute to Pearlmoon997/CoffeeShop development by creating an account on GitHub.
github.com
'프로젝트_ 커피주문 서비스' 카테고리의 다른 글
네이버 로그인 API (+구글 로그인 API) (0) | 2022.08.11 |
---|---|
레이아웃, Member 변경 (0) | 2022.08.11 |
Store CRUD (0) | 2022.08.08 |
Order 삭제 (0) | 2022.08.07 |
Order 조회, Order_Product 등록, 삭제 (0) | 2022.08.05 |