99
1010import org .springframework .data .domain .Page ;
1111import org .springframework .stereotype .Service ;
12+ import org .springframework .transaction .annotation .Propagation ;
1213import org .springframework .transaction .annotation .Transactional ;
1314
1415import com .kt .common .exception .CustomException ;
@@ -131,6 +132,12 @@ public void save(Long orderId){
131132 order .updateStatus (OrderStatus .PAID );
132133 }
133134
135+ @ Transactional (propagation = Propagation .REQUIRES_NEW )
136+ public void rollback (Long orderId ){
137+ var order = orderRepository .findByIdOrThrow (orderId , ErrorCode .NOT_FOUND_ORDER );
138+ order .failPayment ();
139+ }
140+
134141 public Page <OrderListResponse > getOrderList (Long userId , Paging paging ) {
135142 Page <Order > orders = orderRepositoryCustom .getOrders (userId , paging .toPageable ());
136143
@@ -176,7 +183,8 @@ public void cancel(Long orderId, Long userId) {
176183 Preconditions .validate (order .getUser ().getId ().equals (userId ), ErrorCode .NOT_ORDER_OWNER );
177184
178185 // ์ฃผ๋ฌธ ์ทจ์ ๊ฐ๋ฅ ์ฌ๋ถ ๊ฒ์ฆ
179- Preconditions .validate (order .getOrderStatus () == OrderStatus .ORDERED ||
186+ Preconditions .validate (order .getOrderStatus () == OrderStatus .PENDING_PAYMENT ||
187+ order .getOrderStatus () == OrderStatus .PAYMENT_FAILED ||
180188 order .getOrderStatus () == OrderStatus .PAID , ErrorCode .CANNOT_CANCEL_ORDER );
181189
182190 order .cancel ();
@@ -224,8 +232,9 @@ public void update(OrderUpdateRequest request, Long orderId, Long userId) {
224232
225233 Preconditions .validate (order .getUser ().getId ().equals (userId ), ErrorCode .NOT_ORDER_OWNER );
226234
227- Preconditions .validate (order .getOrderStatus () == OrderStatus .ORDERED ||
228- order .getOrderStatus () == OrderStatus .PAID , ErrorCode .CANNOT_UPDATE_ORDER_INFO );
235+ Preconditions .validate (order .getOrderStatus () == OrderStatus .PENDING_PAYMENT ||
236+ order .getOrderStatus () == OrderStatus .PAID ||
237+ order .getOrderStatus () == OrderStatus .PAYMENT_FAILED , ErrorCode .CANNOT_UPDATE_ORDER_INFO );
229238
230239 String updatedAddress = request .receiverAddressId () != null
231240 ? shoppingAddressRepository .findByIdAndUserIdOrThrow (request .receiverAddressId (), userId , ErrorCode .NOT_SHOPPING_ADDRESS_OWNER ).getAddress ()
@@ -243,7 +252,8 @@ public void cancelByAdmin(Long orderId) {
243252 var order = orderRepository .findByIdOrThrow (orderId , ErrorCode .NOT_FOUND_ORDER );
244253
245254 // ์ฃผ๋ฌธ ์ทจ์ ๊ฐ๋ฅ ์ฌ๋ถ ๊ฒ์ฆ
246- Preconditions .validate (order .getOrderStatus () == OrderStatus .ORDERED ||
255+ Preconditions .validate (order .getOrderStatus () == OrderStatus .PENDING_PAYMENT ||
256+ order .getOrderStatus () == OrderStatus .PAYMENT_FAILED ||
247257 order .getOrderStatus () == OrderStatus .PAID , ErrorCode .CANNOT_CANCEL_ORDER );
248258
249259 order .cancel ();
0 commit comments