Merge branch 'server_side_template' of https://github.com/c-my/mall-website into server_side_template
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user