From fd85702c3b8d6c98e1e7c5efb545e7385ceb3c09 Mon Sep 17 00:00:00 2001 From: pig <2634968536@qq.com> Date: Wed, 13 Dec 2023 10:19:17 +0800 Subject: [PATCH] fix payment and cancel order --- .../edu/ecnu/stu/bookstore/service/impl/BuyerService.java | 14 ++++++++------ .../edu/ecnu/stu/bookstore/service/impl/OrderService.java | 9 +++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/BuyerService.java b/src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/BuyerService.java index 0940332..e47773f 100644 --- a/src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/BuyerService.java +++ b/src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/BuyerService.java @@ -103,22 +103,24 @@ public class BuyerService { User user = userMapper.selectOneById(userId); if(!encoder.matches(password, user.getPassword())) throw new AppException(Constants.CLIENT_ERROR, Constants.PASSWORD_ERROR); + buyerService.updateBalanceAndOrder(orderId, user.getBalance()); + } + + @Transactional + public void updateBalanceAndOrder(String orderId, BigDecimal balance) { Order order = orderMapper.selectById(orderId); if(order == null) throw new AppException(Constants.CLIENT_ERROR, Constants.ORDER_NON_EXIST_ERROR); + if(!order.getStatus().equals(OrderStatus.WAIT_PAYMENT)) throw new AppException(Constants.CLIENT_ERROR, Constants.ORDER_HAS_PAID_ERROR); - if(order.getPrice().compareTo(user.getBalance()) > 0) + if(order.getPrice().compareTo(balance) > 0) throw new AppException(Constants.CLIENT_ERROR, Constants.BALANCE_ERROR); - buyerService.updateBalanceAndOrder(storeMapper.getStoreById(order.getStoreId()).getSellerId(), order); - } - @Transactional - public void updateBalanceAndOrder(Integer sellerId, Order order) { orderMapper.updateOrderStatus(order.getOrderId(), OrderStatus.WAIT_SEND); BigDecimal price = order.getPrice(); userMapper.minusBalance(order.getBuyerId(), price); - userMapper.addBalance(sellerId, price); + userMapper.addBalance(storeMapper.getStoreById(order.getStoreId()).getSellerId(), price); } public void addFunds(String username, String password, BigDecimal addValue) { diff --git a/src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/OrderService.java b/src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/OrderService.java index 8bf211f..2e8f71d 100644 --- a/src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/OrderService.java +++ b/src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/OrderService.java @@ -43,14 +43,15 @@ public class OrderService { } public void cancel(String orderId) { - Order order = orderMapper.selectById(orderId); List books = orderMapper.getBookListByOrder(orderId); - orderService.updateOrderAndStockLevel(order, books); + orderService.updateOrderAndStockLevel(orderId, books); } @Transactional - public void updateOrderAndStockLevel(Order order, List books) { - String orderId = order.getOrderId(); + public void updateOrderAndStockLevel(String orderId, List books) { + Order order = orderMapper.selectById(orderId); + if(!order.getStatus().equals(OrderStatus.WAIT_PAYMENT)) + throw new AppException(Constants.CLIENT_ERROR, Constants.STATUS_ERROR); String storeId = order.getStoreId(); orderMapper.updateOrderStatus(orderId, OrderStatus.CANCEL); for (OrderBookDO book : books) {