Merge branch 'server_side_template' of https://github.com/c-my/mall-website into server_side_template

This commit is contained in:
lihang19980418
2019-09-04 21:22:12 +08:00
5 changed files with 50 additions and 9 deletions
@@ -2,6 +2,7 @@ package edu.neu.neumall.controller;
import edu.neu.neumall.entity.User;
import edu.neu.neumall.repository.ShoppingCartRepository;
import edu.neu.neumall.service.SettleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Controller;
@@ -19,10 +20,13 @@ import java.util.List;
public class SettleController {
private ShoppingCartRepository shoppingCartRepository;
private SettleService settleService;
@Autowired
public SettleController(ShoppingCartRepository shoppingCartRepository) {
public SettleController(ShoppingCartRepository shoppingCartRepository,
SettleService settleService) {
this.shoppingCartRepository = shoppingCartRepository;
this.settleService = settleService;
}
@PostMapping
@@ -32,13 +36,17 @@ public class SettleController {
System.out.println(cartID);
}
}
var shoppingCartList = shoppingCartRepository.findAllById(shoppingCartItems);
model.addAttribute("shoppingCartList", shoppingCartList);
model.addAttribute("shippingAddrList", user.getShippingAddrAddrList());
return "settle.html";
}
@PostMapping("/process")
public String processSettle(@RequestParam("purchaseList[]") List<Long> purchaseItem, @AuthenticationPrincipal User user) {
public String processSettle(@RequestParam("purchaseList[]") List<Long> purchaseItem,
@RequestParam("addressID") int addressID,
@AuthenticationPrincipal User user) {
settleService.ProcessPurchase(user, purchaseItem, addressID);
return "settleSuccess.html";
}
@@ -55,6 +55,10 @@ public class Order {
@Column(name = "type")
private OrderType type;
@NotNull
@ManyToOne
private ShippingAddr address;
@CreationTimestamp
private Date create_time;
@@ -109,6 +113,14 @@ public class Order {
this.ID = ID;
}
public ShippingAddr getAddress() {
return address;
}
public void setAddress(ShippingAddr address) {
this.address = address;
}
public enum OrderStatus {
FINISHED
}
@@ -1,12 +1,14 @@
package edu.neu.neumall.entity;
import com.fasterxml.jackson.annotation.JsonBackReference;
import org.aspectj.weaver.ast.Or;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@Entity
@Table(name = "ShippingAddress")
@@ -81,6 +83,9 @@ public class ShippingAddr {
@UpdateTimestamp
private Date updateTime;
@OneToMany(mappedBy = "address")
private List<Order> orderList;
public Integer getID() {
return ID;
}
@@ -1,9 +1,7 @@
package edu.neu.neumall.service;
import edu.neu.neumall.entity.Order;
import edu.neu.neumall.entity.Product;
import edu.neu.neumall.entity.ShoppingCart;
import edu.neu.neumall.entity.User;
import edu.neu.neumall.entity.*;
import edu.neu.neumall.repository.ShippingAddrRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -15,15 +13,26 @@ public class SettleService {
private ProductService productService;
private OrderService orderService;
private ShoppingCartService shoppingCartService;
private ShippingAddrRepository shippingAddrRepository;
@Autowired
public SettleService(ProductService productService,
OrderService orderService) {
OrderService orderService,
ShoppingCartService shoppingCartService,
ShippingAddrRepository shippingAddrRepository) {
this.productService = productService;
this.orderService = orderService;
this.shoppingCartService = shoppingCartService;
this.shippingAddrRepository = shippingAddrRepository;
}
public boolean Purchase(User user, List<ShoppingCart> shoppingCart) {
public boolean ProcessPurchase(User user, List<Long> shoppingCartsID, int addressID) {
var shoppingCarts = shoppingCartService.getShoppingCartsByID(shoppingCartsID);
return Purchase(user, shoppingCarts, addressID);
}
boolean Purchase(User user, List<ShoppingCart> shoppingCart, int addressID) {
if (!canPurchase(shoppingCart)) {
return false;
}
@@ -38,6 +47,7 @@ public class SettleService {
var product = productOptional.get();
product.setCount(product.getCount() - item.getCount());
productService.save(product);
var address = shippingAddrRepository.findById(addressID).get();
// add a order record
Order record = new Order();
@@ -45,6 +55,7 @@ public class SettleService {
record.setOwner(item.getOwner());
record.setProduct(item.getProduct());
record.setPrice(product.getPrice());
record.setAddress(address);
record.setType(Order.OrderType.PURCHASE);
orderService.save(record);
}
@@ -8,6 +8,7 @@ import edu.neu.neumall.repository.ProductRepository;
import edu.neu.neumall.repository.ShoppingCartRepository;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
@@ -61,4 +62,8 @@ public class ShoppingCartService {
public void save(ShoppingCart cart) {
shoppingCartRepository.save(cart);
}
public List<ShoppingCart> getShoppingCartsByID(List<Long> idList) {
return shoppingCartRepository.findAllById(idList);
}
}