From 0007dcf171b255f0064fcf558454293cc7661b80 Mon Sep 17 00:00:00 2001 From: bum12ark Date: Thu, 17 Mar 2022 18:53:12 +0900 Subject: [PATCH] =?UTF-8?q?feat(owner-vue):=20=EC=A0=90=EC=A3=BC=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=A3=BC=EB=AC=B8=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=B3=80=EA=B2=BD=20=EB=A1=9C=EC=A7=81=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 픽업완료, 픽업대기, 거절 상태에 따른 상태값 변경 이벤트 추가 --- .../repository/OrderRepositoryCustom.java | 9 +- .../order/service/OrderServiceImpl.java | 2 +- .../domain/order/web/OrderController.java | 4 +- owner-vue/src/components/OrderCard.vue | 101 ++++++++++++++---- owner-vue/src/views/LoginUser.vue | 12 ++- owner-vue/src/views/Order.vue | 11 +- 6 files changed, 105 insertions(+), 34 deletions(-) diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/repository/OrderRepositoryCustom.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/repository/OrderRepositoryCustom.java index 36132cf..c72df97 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/repository/OrderRepositoryCustom.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/repository/OrderRepositoryCustom.java @@ -49,8 +49,7 @@ public class OrderRepositoryCustom { orderIdLt(condition.getLastOrderId()), order.orderTime.between(start, end), order.storeId.eq(storeId), - order.orderStatus.ne(OrderStatus.PENDING), - order.orderStatus.ne(OrderStatus.FAILED) + order.orderStatus.ne(OrderStatus.PENDING) ) .orderBy(order.id.desc()) .limit(pageSize + 1) @@ -88,6 +87,7 @@ public class OrderRepositoryCustom { .leftJoin(order.transaction).fetchJoin() .where( order.orderTime.between(search.getStartDateTime(), search.getEndDateTime()), + order.orderStatus.ne(OrderStatus.PENDING), order.storeId.eq(storeId) ) .orderBy(order.orderTime.desc()) @@ -105,7 +105,8 @@ public class OrderRepositoryCustom { .selectFrom(order) .leftJoin(order.transaction).fetchJoin() .where( - order.userId.eq(userId) + order.userId.eq(userId), + order.orderStatus.ne(OrderStatus.PENDING) ) .orderBy(order.orderTime.desc()) .offset(pageable.getOffset()) @@ -122,7 +123,7 @@ public class OrderRepositoryCustom { return new SliceImpl<>(contents, pageable, hasNext); } - public Optional fetchOrder(Long userId){ + public Optional fetchOrderBasket(Long userId){ return Optional.ofNullable(queryFactory.selectFrom(order) .leftJoin(order.orderItems, orderItem).fetchJoin() diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java index 88982ff..ee6bfbf 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java @@ -184,7 +184,7 @@ public class OrderServiceImpl implements OrderService { @Override public FetchOrderDto fetchOrder(Long userId) { - Order order = orderRepositoryCustom.fetchOrder(userId) + Order order = orderRepositoryCustom.fetchOrderBasket(userId) .orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다.")); GetStoreReseponse store = storeClient.getStore(String.valueOf(order.getStoreId())).getData(); diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderController.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderController.java index 86b9eb2..7639088 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderController.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderController.java @@ -26,8 +26,8 @@ public class OrderController { public ResponseEntity patchOrder(@PathVariable("orderId") Long orderId, @RequestBody PatchOrderRequest patchOrderRequest) { OrderStatus orderStatus = patchOrderRequest.getOrderStatus(); - if (orderStatus != OrderStatus.PLACED && orderStatus != OrderStatus.REJECTED) { - throw new OrderException("주문 수락, 거절 외에는 변경 불가능합니다."); + if (orderStatus == OrderStatus.PENDING && orderStatus != OrderStatus.FAILED) { + throw new OrderException(orderStatus.getMessage() + "는 변경 불가능합니다."); } orderService.modifyOrder(orderId, orderStatus); diff --git a/owner-vue/src/components/OrderCard.vue b/owner-vue/src/components/OrderCard.vue index 193eb7f..eed4cd5 100644 --- a/owner-vue/src/components/OrderCard.vue +++ b/owner-vue/src/components/OrderCard.vue @@ -3,7 +3,11 @@ {{ userName }} - 상세보기 + + 상세보기 + {{ itemNames[0] }} @@ -11,40 +15,58 @@ {{ itemNames[0] }} 외 {{ itemNames.length - 1 }}건 - + {{this.getOrderStatusName(orderStatus)}} {{ orderTime }} - + - 주문 수령 + 주문수락하기 - - 주문 거절 + 주문거절하기 - + - - 수락됨 + + 픽업 요청하기 - + - + 거절됨 + + + + 고객 수령완료하기 + + + + + + + 픽업 완료됨 + + + @@ -67,24 +89,63 @@ export default { orderStatus: String }, methods: { - placed: async function() { + accepted: async function() { try { - await orderApi.patchOrder(this.id, 'PLACED'); - this.$emit("placed"); + await orderApi.patchOrder(this.id, 'ACCEPTED'); + this.$emit("accepted"); alert("해당 주문이 수락 되었습니다."); } catch(error) { console.log(error); } }, - reject: async function() { + rejected: async function() { try { - await orderApi.patchOrder(this.id, 'REJECT'); - this.$emit("reject"); + await orderApi.patchOrder(this.id, 'REJECTED'); + this.$emit("rejected"); alert("해당 주문이 거절 되었습니다."); } catch(error) { console.log(error); } + }, + waiting: async function() { + try { + await orderApi.patchOrder(this.id, 'WAITING'); + this.$emit("waiting"); + alert("해당 주문의 픽업이 요청 되었습니다."); + + } catch(error) { + console.log(error); + } + }, + finished: async function() { + try { + await orderApi.patchOrder(this.id, 'FINISHED'); + this.$emit("finished"); + alert("해당 주문이 픽업완료 처리 되었습니다."); + + } catch(error) { + console.log(error); + } + }, + getOrderStatusName: function(orderStatus) { + switch (orderStatus) { + case "PLACED": + return "주문신청됨"; + case "ACCEPTED": + return "주문수락됨"; + case "REJECTED": + return "주문거절됨"; + case "WAITING": + return "픽업대기중"; + case "FINISHED": + return "픽업완료됨"; + default: + break; + } + }, + clickDetail: function() { + alert("준비중 입니다..."); } } } diff --git a/owner-vue/src/views/LoginUser.vue b/owner-vue/src/views/LoginUser.vue index f257c4c..30884a0 100644 --- a/owner-vue/src/views/LoginUser.vue +++ b/owner-vue/src/views/LoginUser.vue @@ -10,6 +10,7 @@ :rules="[v => /.+@.+\..+/.test(v) || 'E-mail must be valid', v => !!v || '이메일은 필수 값입니다']" label="이메일" prepend-icon="mdi-account-circle" + v-on:keydown.enter="login" > @@ -25,7 +27,11 @@ Register - Login + + Login + @@ -37,8 +43,8 @@ export default { name: "LoginUser", data: function() { return { - email: '', - password: '' + email: 'owner@gmail.com', + password: '1234' } }, methods: { diff --git a/owner-vue/src/views/Order.vue b/owner-vue/src/views/Order.vue index 53e066d..51c353c 100644 --- a/owner-vue/src/views/Order.vue +++ b/owner-vue/src/views/Order.vue @@ -20,18 +20,21 @@ :itemNames="card.itemNames" :orderTime="card.orderTime" :orderStatus="card.orderStatus" - @placed="card.orderStatus = 'PLACED'" - @reject="card.orderStatus = 'REJECT'" + @accepted="card.orderStatus = 'ACCEPTED'" + @rejected="card.orderStatus = 'REJECTED'" + @waiting="card.orderStatus = 'WAITING'" + @finished="card.orderStatus = 'FINISHED'" > -


+

- 더보기 +