Browse Source

fix payment and cancel order

master
朱天祥 1 year ago
parent
commit
fd85702c3b
2 changed files with 13 additions and 10 deletions
  1. +8
    -6
      src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/BuyerService.java
  2. +5
    -4
      src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/OrderService.java

+ 8
- 6
src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/BuyerService.java View File

@ -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) {

+ 5
- 4
src/main/java/cn/edu/ecnu/stu/bookstore/service/impl/OrderService.java View File

@ -43,14 +43,15 @@ public class OrderService {
}
public void cancel(String orderId) {
Order order = orderMapper.selectById(orderId);
List<OrderBookDO> books = orderMapper.getBookListByOrder(orderId);
orderService.updateOrderAndStockLevel(order, books);
orderService.updateOrderAndStockLevel(orderId, books);
}
@Transactional
public void updateOrderAndStockLevel(Order order, List<OrderBookDO> books) {
String orderId = order.getOrderId();
public void updateOrderAndStockLevel(String orderId, List<OrderBookDO> 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) {

Loading…
Cancel
Save