From 47ccbe30f1624c60268089439c83f5d4a521eaaf Mon Sep 17 00:00:00 2001 From: Tim <47184194+imgde@users.noreply.github.com> Date: Wed, 18 Jun 2025 19:17:26 +0200 Subject: [PATCH] Update stock management in orders and rename save methods --- .../htwsaar/webshop/controller/OrderController.java | 4 ++-- .../webshop/repository/entities/Article.java | 1 - .../de/htwsaar/webshop/service/ArticleService.java | 3 +++ .../de/htwsaar/webshop/service/OrderService.java | 4 ++-- .../webshop/service/impl/AccountServiceImpl.java | 2 ++ .../webshop/service/impl/ArticleServiceImpl.java | 13 ++++++++++++- .../webshop/service/impl/OrderServiceImpl.java | 7 ++++--- 7 files changed, 25 insertions(+), 9 deletions(-) diff --git a/00-backend/src/main/java/de/htwsaar/webshop/controller/OrderController.java b/00-backend/src/main/java/de/htwsaar/webshop/controller/OrderController.java index a9cd3b3..a2f284b 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/controller/OrderController.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/controller/OrderController.java @@ -81,7 +81,7 @@ public class OrderController { } order.setId(null); order.getOrderItems().forEach(orderItem -> orderItem.setId(null)); - Order saved = orderService.save(order); + Order saved = orderService.saveNew(order); return ResponseEntity.ok(saved != null); } @@ -104,7 +104,7 @@ public class OrderController { return ResponseEntity.notFound().build(); } order.setStatus(status); - return ResponseEntity.ok(orderService.save(order) != null); + return ResponseEntity.ok(orderService.saveNew(order) != null); } @RequestMapping(path = ORDER_BASE, method = RequestMethod.DELETE, produces = "application/json") diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Article.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Article.java index 0b2eb0d..41bfc96 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Article.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Article.java @@ -25,7 +25,6 @@ public class Article { @Column(name = "uuid", nullable = false, unique = true) private UUID uuid; - @Min(0) @Column(name = "stock", nullable = false) private Integer stock; diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/ArticleService.java b/00-backend/src/main/java/de/htwsaar/webshop/service/ArticleService.java index a83a47e..4c8c25b 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/ArticleService.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/ArticleService.java @@ -3,6 +3,7 @@ package de.htwsaar.webshop.service; import de.htwsaar.webshop.model.ArticleModel; import de.htwsaar.webshop.model.ArticleWithImageModel; import de.htwsaar.webshop.repository.entities.Article; +import de.htwsaar.webshop.repository.entities.OrderItem; import java.util.List; import java.util.UUID; @@ -25,6 +26,8 @@ public interface ArticleService { Article update(Article article); + void diffStock(OrderItem orderItem); + double getRating(Long id); double getRating(UUID uuid); diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/OrderService.java b/00-backend/src/main/java/de/htwsaar/webshop/service/OrderService.java index 2e0f912..35e3b7c 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/OrderService.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/OrderService.java @@ -9,9 +9,9 @@ import java.util.Map; public interface OrderService { List findAll(); - Order save(Order order); + Order saveNew(Order order); - Order save(OrderModel model); + Order saveNew(OrderModel model); void delete(Long orderId); diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/AccountServiceImpl.java b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/AccountServiceImpl.java index a3049a1..28123fb 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/AccountServiceImpl.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/AccountServiceImpl.java @@ -76,4 +76,6 @@ public class AccountServiceImpl implements AccountService { public boolean existsWithEmail(String email) { return accountRepository.existsAccountByEmail(email); } + + } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ArticleServiceImpl.java b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ArticleServiceImpl.java index a1079e0..4b3fabe 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ArticleServiceImpl.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ArticleServiceImpl.java @@ -6,9 +6,9 @@ import de.htwsaar.webshop.repository.ArticleRepository; import de.htwsaar.webshop.repository.ImageRepository; import de.htwsaar.webshop.repository.ReviewRepository; import de.htwsaar.webshop.repository.entities.Article; +import de.htwsaar.webshop.repository.entities.OrderItem; import de.htwsaar.webshop.repository.entities.Review; import de.htwsaar.webshop.service.ArticleService; -import de.htwsaar.webshop.service.ImageService; import jakarta.transaction.Transactional; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -75,6 +75,17 @@ public class ArticleServiceImpl implements ArticleService { return articleRepository.save(article); } + @Override + public void diffStock(OrderItem orderItem) { + Article a = orderItem.getArticle(); + if (a == null) { + return; + } + log.info("Change Stock {} to {}", a.getStock(), a.getStock() - orderItem.getAmount()); + a.setStock(a.getStock() - orderItem.getAmount()); + articleRepository.save(a); + } + @Override public double getRating(Long id) { return reviewRepository.streamReviewsByArticleId(id) diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/OrderServiceImpl.java b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/OrderServiceImpl.java index 7316203..15ecec5 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/OrderServiceImpl.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/OrderServiceImpl.java @@ -41,13 +41,13 @@ public class OrderServiceImpl implements OrderService { } @Override - public Order save(Order order) { + public Order saveNew(Order order) { return orderRepository.save(order); } @Override - public Order save(OrderModel model) { - Order order = save(new Order( + public Order saveNew(OrderModel model) { + Order order = saveNew(new Order( model.getId(), customerService.findById(model.getCustomerId()), model.getTime(), @@ -64,6 +64,7 @@ public class OrderServiceImpl implements OrderService { ); log.info("Created Order from Model: {}", order); orderItemRepository.saveAll(order.getOrderItems()); + order.getOrderItems().forEach(articleService::diffStock); return order; }