Commit e50f873f by Rex Zhou

admin services

parents ec21643a c51b3a02
Showing with 638 additions and 316 deletions
...@@ -61,19 +61,17 @@ ...@@ -61,19 +61,17 @@
<artifactId>junit-jupiter-api</artifactId> <artifactId>junit-jupiter-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.amazonaws</groupId> <groupId>org.springframework</groupId>
<artifactId>DynamoDBLocal</artifactId> <artifactId>spring-websocket</artifactId>
<version>RELEASE</version>
</dependency> </dependency>
</dependencies>
<repositories>
<repository>
<id>dynamodb-local-oregon</id>
<name>DynamoDB Local Release Repository</name>
<url>https://s3-us-west-2.amazonaws.com/dynamodb-local/release</url>
</repository>
</repositories>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
</dependency>
</dependencies>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
......
...@@ -53,16 +53,16 @@ public class Application { ...@@ -53,16 +53,16 @@ public class Application {
// }; // };
// } // }
@Bean // @Bean
public WebMvcConfigurer corsConfigurer() { // public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() { // return new WebMvcConfigurer() {
@Override // @Override
public void addCorsMappings(CorsRegistry registry) { // public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // registry.addMapping("/**")
.allowedOrigins("http://localhost:3000") // .allowedOrigins("http://localhost:3000")
.allowedMethods("GET", "POST","PUT", "DELETE"); // .allowedMethods("GET", "POST","PUT", "DELETE");
} // }
}; // };
} // }
} }
// end::code[] // end::code[]
\ No newline at end of file
...@@ -16,11 +16,17 @@ public class Bid ...@@ -16,11 +16,17 @@ public class Bid
@NotNull @NotNull
private Long userId; private Long userId;
private Long amount; private Double amount;
private String itemId;
private Long itemId;
private Date time; private Date time;
public Bid(Long userId, Long amount, String itemId, Date time)
private Status status;
public Bid(){}
public Bid(Long userId, Double amount, Long itemId, Date time)
{ {
this.userId = userId; this.userId = userId;
this.amount = amount; this.amount = amount;
...@@ -43,22 +49,22 @@ public class Bid ...@@ -43,22 +49,22 @@ public class Bid
this.userId = userId; this.userId = userId;
} }
public Long getAmount() public Double getAmount()
{ {
return amount; return amount;
} }
public void setAmount(Long amount) public void setAmount(Double amount)
{ {
this.amount = amount; this.amount = amount;
} }
public String getItemId() public Long getItemId()
{ {
return itemId; return itemId;
} }
public void setItemId(String itemId) public void setItemId(Long itemId)
{ {
this.itemId = itemId; this.itemId = itemId;
} }
...@@ -72,4 +78,14 @@ public class Bid ...@@ -72,4 +78,14 @@ public class Bid
{ {
this.time = time; this.time = time;
} }
public Status getStatus()
{
return status;
}
public void setStatus(Status status)
{
this.status = status;
}
} }
package edu.uchicago.mpcs.topics.auction; package edu.uchicago.mpcs.topics.auction;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence.*; import javax.persistence.*;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
@Entity @Entity
public class Item public class Item
...@@ -20,9 +25,19 @@ public class Item ...@@ -20,9 +25,19 @@ public class Item
private double currentPrice; private double currentPrice;
private double buyNowPrice; private double buyNowPrice;
private Date startTime; //Start the auction when the current time matches the start time defined by the user
private Date endTime; //Allowing auction window to be set by the bidder, and begin countdown to the end of the bidding window once auction begins
@Column(length = 2000) @Column(length = 2000)
private String photoUrl; private String photoUrl;
private Long userId; private Long userId; //seller
private Status status;
@ManyToMany(mappedBy = "items")
@JsonIgnore
private Set<ShoppingCart> shopping_carts = new HashSet<>(); //must have the same name as the table
public Item() public Item()
{ {
...@@ -44,6 +59,12 @@ public class Item ...@@ -44,6 +59,12 @@ public class Item
return itemId; return itemId;
} }
public void setItemId(Long itemId)
{
this.itemId = itemId;
}
public String getTitle() public String getTitle()
{ {
return title; return title;
...@@ -113,4 +134,27 @@ public class Item ...@@ -113,4 +134,27 @@ public class Item
{ {
this.userId = userId; this.userId = userId;
} }
@JsonIgnore
public Set<ShoppingCart> getShopping_carts()
{
return shopping_carts;
}
public Item addShoppingCart(ShoppingCart shoppingCart)
{
this.shopping_carts.add(shoppingCart);
shoppingCart.getItems().add(this);
return this;
}
public Status getStatus()
{
return status;
}
public void setStatus(Status status)
{
this.status = status;
}
} }
...@@ -5,34 +5,35 @@ import javax.persistence.GeneratedValue; ...@@ -5,34 +5,35 @@ import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Entity @Entity
public class ItemCategory public class ItemCategory
{ {
@Id @Id
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
private Long ItemCategoryId; private Long itemCategoryId;
@NotBlank @NotNull
private String ItemCategoryName; private String itemCategoryName;
public ItemCategory(String itemCategoryName) public ItemCategory(String itemCategoryName)
{ {
ItemCategoryName = itemCategoryName; itemCategoryName = itemCategoryName;
} }
public Long getItemCategoryId() public Long getItemCategoryId()
{ {
return ItemCategoryId; return itemCategoryId;
} }
public String getItemCategoryName() public String getItemCategoryName()
{ {
return ItemCategoryName; return itemCategoryName;
} }
public void setItemCategoryName(String itemCategoryName) public void setItemCategoryName(String itemCategoryName)
{ {
ItemCategoryName = itemCategoryName; itemCategoryName = itemCategoryName;
} }
} }
package edu.uchicago.mpcs.topics.auction;
import edu.uchicago.mpcs.topics.user.Seller;
import java.util.List;
public class Listing {
private String id;
private Item item;
private ItemCategory itemCategory;
private TimeTracker timeTracker;
private Seller owner;
private List<Bid> bids;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
public ItemCategory getItemCategory() {
return itemCategory;
}
public void setItemCategory(ItemCategory itemCategory) {
this.itemCategory = itemCategory;
}
public TimeTracker getTimeTracker() {
return timeTracker;
}
public void setTimeTracker(TimeTracker timeTracker) {
this.timeTracker = timeTracker;
}
public Seller getOwner() {
return owner;
}
public void setOwner(Seller owner) {
this.owner = owner;
}
public List<Bid> getBids() {
return bids;
}
public void setBids(List<Bid> bids) {
this.bids = bids;
}
}
package edu.uchicago.mpcs.topics.auction;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
/**
* Created by Bright on 2018-11-27.
*/
@Entity
public class Order
{
@Id
private Long orderId;
@ManyToMany(cascade = {CascadeType.PERSIST})
@JoinTable(name = "order_item",
joinColumns = @JoinColumn(name = "order_id", referencedColumnName = "orderId"),
inverseJoinColumns = @JoinColumn(name = "item_id", referencedColumnName = "itemId"))
private Set<Item> items = new HashSet<>();
public Order()
{}
public Order(Long orderId)
{
this.orderId = orderId;
}
public Set<Item> getItems()
{
return items;
}
}
package edu.uchicago.mpcs.topics.auction;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "shopping_cart")
public class ShoppingCart
{
@Id
private Long shoppingCartId;
@ManyToMany(cascade = {CascadeType.PERSIST})
@JoinTable(name = "cart_item",
joinColumns = @JoinColumn(name = "cart_id", referencedColumnName = "shoppingCartId"),
inverseJoinColumns = @JoinColumn(name = "item_id", referencedColumnName = "itemId"))
private Set<Item> items = new HashSet<>();
public ShoppingCart()
{}
public ShoppingCart(Long shoppingCartId)
{
this.shoppingCartId = shoppingCartId;
}
public ShoppingCart addItem(Item item)
{
this.items.add(item);
item.getShopping_carts().add(this);
return this;
}
public ShoppingCart removeItem(Item item)
{
this.items.remove(item);
item.getShopping_carts().remove(this);
return this;
}
public ShoppingCart removeAllItems()
{
for (Item item : items)
{
this.items.remove(item);
item.getShopping_carts().remove(this);
}
return this;
}
public Long getShoppingCartId()
{
return shoppingCartId;
}
public Set<Item> getItems()
{
return items;
}
}
package edu.uchicago.mpcs.topics.auction;
/**
* Created by Bright on 2018-11-29.
*/
public enum Status
{
ACTIVE, INACTIVE, FAILED, INAPPROPRIATE, COUNTERFEIT, SUSPENDED, DELETED, HASBID
}
package edu.uchicago.mpcs.topics.controller; //package edu.uchicago.mpcs.topics.controller;
//
import edu.uchicago.mpcs.topics.service.AdminService; //import edu.uchicago.mpcs.topics.service.AdminService;
import edu.uchicago.mpcs.topics.user.User; //import edu.uchicago.mpcs.topics.user.User;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; //import org.springframework.web.bind.annotation.*;
//
import java.util.List; //import java.util.List;
//
/** ///**
* Created by Rex on 2018-11-19 // * Created by Rex on 2018-11-19
*/ // */
//
@RestController //@RestController
@RequestMapping("/user") //@RequestMapping("/user")
public class AdminController { //public class AdminController {
//
@Autowired // @Autowired
private AdminService adminService; // private AdminService adminService;
//
@GetMapping("/list") // @GetMapping("/list")
public List<User> getAllUsers() // public List<User> getAllUsers()
{ // {
return adminService.getAllUsers(); // return adminService.getAllUsers();
} // }
//
@PostMapping("/add") // @PostMapping("/add")
public void addUser(@RequestBody User user) // public void addUser(@RequestBody User user)
{ // {
adminService.addUser(user); // adminService.addUser(user);
} // }
//
//
@DeleteMapping("/remove") // @DeleteMapping("/remove")
public void removeUser(@RequestBody User user) //or change to item ID // public void removeUser(@RequestBody User user) //or change to item ID
{ // {
adminService.deleteUser(user.getUserId()); // adminService.deleteUser(user.getUserId());
} // }
//
@PutMapping("/update") // @PutMapping("/update")
public void updateUser(@RequestBody User user) // public void updateUser(@RequestBody User user)
{ // {
adminService.updateUser(user); // adminService.updateUser(user);
} // }
//
} //}
...@@ -19,8 +19,8 @@ public class BidController ...@@ -19,8 +19,8 @@ public class BidController
private BidService bidService; private BidService bidService;
@PostMapping @PostMapping
public void addItem(@RequestBody Bid bid) public Bid addBid(@RequestBody Bid bid)
{ {
bidService.addBid(bid); return bidService.addBid(bid);
} }
} }
\ No newline at end of file
package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.Bid;
import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.transaction.ShoppingCart;
import edu.uchicago.mpcs.topics.user.User;
public interface BiddingController {
void placeBid(Listing listing, Bid bid);
void buyNow(Listing listing, ShoppingCart shoppingCart);
void notifyUser(Listing listing, User user);
void createListing(Listing listing);
Listing updateListing(Listing listing);
boolean removeListing(Listing listing, User user);
}
package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.transaction.ShoppingCart;
import edu.uchicago.mpcs.topics.user.Buyer;
public interface CheckoutController {
void manageShoppingCart(ShoppingCart shoppingCart);
void checkout(Buyer buyer);
}
package edu.uchicago.mpcs.topics.controller; package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.Item; import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Status;
import edu.uchicago.mpcs.topics.db.ItemRepository;
import edu.uchicago.mpcs.topics.service.ItemService; import edu.uchicago.mpcs.topics.service.ItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
...@@ -16,8 +17,14 @@ import java.util.Optional; ...@@ -16,8 +17,14 @@ import java.util.Optional;
@RequestMapping("/item") @RequestMapping("/item")
public class ItemController public class ItemController
{ {
@Autowired
private ItemService itemService; private ItemService itemService;
private ItemRepository itemRepository;
public ItemController(ItemService itemService, ItemRepository itemRepository)
{
this.itemService = itemService;
this.itemRepository = itemRepository;
}
@GetMapping @GetMapping
public Optional<Item> getItem(@RequestBody Item item) public Optional<Item> getItem(@RequestBody Item item)
...@@ -25,27 +32,40 @@ public class ItemController ...@@ -25,27 +32,40 @@ public class ItemController
return itemService.getItem(item); return itemService.getItem(item);
} }
@GetMapping("/{id}")
public Item getItem(@PathVariable Long id)
{
return itemRepository.findById(id).orElse(null);
}
@GetMapping("/list") @GetMapping("/list")
public List<Item> getAllItems() public List<Item> getAllItems()
{ {
return itemService.getAllItems(); return itemService.getAllItems();
} }
@PostMapping("/add") @PostMapping("/add") //add new item
public Item addItem(@RequestBody Item item) public Item addItem(@RequestBody Item item)
{ {
return itemService.addItem(item); return itemService.addItem(item);
} }
@DeleteMapping("/remove") @DeleteMapping("/{id}")
public void removeItem(@RequestBody Item item) //or change to item ID public Item deleteItem(@PathVariable Long id)
{ {
itemService.deleteItem(item.getItemId()); return itemService.deleteItem(id);
} }
@PutMapping("/update") @PutMapping("/update")
public void updateItem(@RequestBody Item item) public Item updateItem(@RequestBody Item item)
{
return itemRepository.save(item);
}
@PostMapping("/flag")
public Item flagItem(@RequestBody Item item)
{ {
itemService.updateItem(item); return itemRepository.save(item);
} }
} }
\ No newline at end of file
<<<<<<< HEAD
package edu.uchicago.mpcs.topics.controller; package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.ItemCategory; import edu.uchicago.mpcs.topics.auction.ItemCategory;
...@@ -12,3 +13,17 @@ public interface SearchController { ...@@ -12,3 +13,17 @@ public interface SearchController {
List<Listing> search(ItemCategory itemCategory); List<Listing> search(ItemCategory itemCategory);
} }
=======
//package edu.uchicago.mpcs.topics.controller;
//
//import edu.uchicago.mpcs.topics.auction.ItemCategory;
//import org.springframework.data.jpa.repository.Query;
//
//
//import java.util.List;
//
//public interface SearchController {
// List<Listing> search(Query query);
// List<Listing> search(ItemCategory itemCategory);
//}
>>>>>>> c51b3a02a6655c09eed52c7ca9c09fcc2327352a
package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Order;
import edu.uchicago.mpcs.topics.db.OrderRepository;
import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import edu.uchicago.mpcs.topics.service.OrderService;
import edu.uchicago.mpcs.topics.service.ShoppingCartService;
import edu.uchicago.mpcs.topics.auction.ShoppingCart;
import org.springframework.web.bind.annotation.*;
/**
* Created by Bright on 2018-11-26.
*/
@RestController
@RequestMapping("/shoppingcart")
public class ShoppingCartController
{
private ShoppingCartService shoppingCartService;
private ShoppingCartRepository shoppingCartRepository;
private OrderService orderService;
private OrderRepository orderRepository;
public ShoppingCartController(ShoppingCartService shoppingCartService, ShoppingCartRepository shoppingCartRepository)
{
this.shoppingCartService = shoppingCartService;
this.shoppingCartRepository = shoppingCartRepository;
}
@GetMapping("/{id}")
public ShoppingCart getShoppingCart(@PathVariable Long id)
{
return shoppingCartRepository.findById(id).orElse(null);
}
@PostMapping("/{id}/add_item") //add item to cart
public ShoppingCart addItem(@PathVariable Long id, @RequestBody Item item)
{
return shoppingCartService.addItem(id, item);
}
@DeleteMapping("/{id}/remove_item") //remove item from cart
public ShoppingCart removeItem(@PathVariable Long id, @RequestBody Item item)
{
return shoppingCartService.removeItem(shoppingCartRepository.findById(id).orElse(null), item);
}
@PostMapping ("/{id}/checkout")
public Order checkout(@PathVariable Long id, @RequestBody Order order)
{
// save order (checkout) to db
shoppingCartService.checkout(shoppingCartRepository.findById(id).orElse(null));
return orderService.checkout(order);
}
}
//package edu.uchicago.mpcs.topics.controller; //package edu.uchicago.mpcs.topics.controller;
// //
<<<<<<< HEAD
//import edu.uchicago.mpcs.topics.exceptions.UserAlreadyExistException; //import edu.uchicago.mpcs.topics.exceptions.UserAlreadyExistException;
//import edu.uchicago.mpcs.topics.exceptions.UserNotFoundException; //import edu.uchicago.mpcs.topics.exceptions.UserNotFoundException;
// //
=======
//
//import edu.uchicago.mpcs.topics.exceptions.UserAlreadyExistException;
//import edu.uchicago.mpcs.topics.exceptions.UserNotFoundException;
>>>>>>> c51b3a02a6655c09eed52c7ca9c09fcc2327352a
//import edu.uchicago.mpcs.topics.service.UserService; //import edu.uchicago.mpcs.topics.service.UserService;
//import edu.uchicago.mpcs.topics.user.User; //import edu.uchicago.mpcs.topics.user.User;
//import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
......
package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.Bid;
import edu.uchicago.mpcs.topics.auction.ItemCategory;
import edu.uchicago.mpcs.topics.db.ItemCategoryRepository;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Bright on 2018-11-29.
*/
@RestController
@RequestMapping("/category")
public class itemCategoryController
{
//repository
ItemCategoryRepository itemCategoryRepository;
public itemCategoryController(ItemCategoryRepository itemCategoryRepository)
{
this.itemCategoryRepository = itemCategoryRepository;
}
//get all category
@GetMapping
public List<ItemCategory> getAllCategories()
{
List<ItemCategory> categories = new ArrayList<>();
itemCategoryRepository.findAll().forEach(categories::add);
return categories;
}
//add category
@PostMapping
public ItemCategory addItemCategory(@RequestBody ItemCategory itemCategory)
{
return itemCategoryRepository.save(itemCategory);
}
//remove category ...disable remove category because of possible consequences
// @DeleteMapping("/{id}")
// public void removeItemCategory(@PathVariable Long id)
// {
// itemCategoryRepository.deleteById(id);
// }
}
package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.auction.ItemCategory;
import org.springframework.data.repository.CrudRepository;
/**
* Created by Bright on 2018-11-29.
*/
public interface ItemCategoryRepository extends CrudRepository<ItemCategory, Long>
{
}
package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.auction.Listing;
import java.util.List;
public interface ListingDB {
void create(Listing listing);
List<Listing> getAll(Listing listing);
void update(Listing listing);
}
package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.auction.Order;
import org.springframework.data.repository.CrudRepository;
/**
* Created by Bright on 2018-11-29.
*/
public interface OrderRepository extends CrudRepository<Order, Long>
{
}
package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.auction.ShoppingCart;
import org.springframework.data.repository.CrudRepository;
/**
* Created by Bright on 2018-11-26.
*/
public interface ShoppingCartRepository extends CrudRepository<ShoppingCart, Long>
{
}
<<<<<<< HEAD
package edu.uchicago.mpcs.topics.service; package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.db.UserDB; import edu.uchicago.mpcs.topics.db.UserDB;
...@@ -49,3 +50,57 @@ public class AdminService { ...@@ -49,3 +50,57 @@ public class AdminService {
} }
} }
=======
//package edu.uchicago.mpcs.topics.service;
//
//import edu.uchicago.mpcs.topics.db.UserRepository;
//import edu.uchicago.mpcs.topics.db.UserRepository;
//import edu.uchicago.mpcs.topics.user.User;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import java.util.List;
//import java.util.ArrayList;
//
///**
// * Modified by Rex on 2018-11-19
// */
//
//@Service
//public class AdminService {
//// void block(User user);
//// void remove(User user);
//// void suspend(User user);
//// void addCategory(ItemCategory itemCategory);
//// void modifyCategory(ItemCategory itemCategory);
//// void removeCategory(ItemCategory itemCategory);
//// void stopAuction(Listing listing, User user);
//// List<Listing> viewFlaggedItems();
//// List<Listing> viewInProgressItems();
//// List<Listing> viewClosed(Query query);
// @Autowired
// private UserRepository userDB;
//
// public List<User> getAllUsers()
// {
// List<User> users = new ArrayList<>();
// userDB.findAll().forEach(users::add);
// return users;
// }
//
// public void addUser(User user)
// {
// userDB.save(user);
// }
//
// public void deleteUser(String userId)
// {
// userDB.deleteById(userId);
// }
//
// public void updateUser(User user)
// {
// userDB.save(user);
// }
//
//}
>>>>>>> c51b3a02a6655c09eed52c7ca9c09fcc2327352a
package edu.uchicago.mpcs.topics.service; package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.Bid; import edu.uchicago.mpcs.topics.auction.Bid;
import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Status;
import edu.uchicago.mpcs.topics.db.BidRepository; import edu.uchicago.mpcs.topics.db.BidRepository;
import edu.uchicago.mpcs.topics.db.ItemRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Optional;
/** /**
* Created by Bright on 2018-11-18. * Created by Bright on 2018-11-18.
*/ */
...@@ -14,9 +19,29 @@ public class BidService ...@@ -14,9 +19,29 @@ public class BidService
{ {
@Autowired @Autowired
private BidRepository bidRepository; private BidRepository bidRepository;
@Autowired
private ItemRepository itemRepository;
public void addBid(Bid bid) public Bid addBid(Bid bid)
{ {
bidRepository.save(bid);
//update item current price
Item itemToUpdate = itemRepository.findById(bid.getItemId()).orElse(null);
if (itemToUpdate.getCurrentPrice() < bid.getAmount())
{
itemToUpdate.setItemId(bid.getItemId());
itemToUpdate.setCurrentPrice(bid.getAmount());
itemRepository.save(itemToUpdate);
bid.setStatus(Status.ACTIVE);
return bidRepository.save(bid);
}
else
{
bid.setStatus(Status.FAILED);
return bidRepository.save(bid);
}
} }
} }
package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.Bid;
import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.transaction.ShoppingCart;
import edu.uchicago.mpcs.topics.user.User;
public interface BiddingService {
void placeBid(Listing listing, Bid bid);
void buyNow(Listing listing, ShoppingCart shoppingCart);
void notifyUser(Listing listing, User user);
void createListing(Listing listing);
Listing updateListing(Listing listing);
boolean removeListing(Listing listing, User user);
}
package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.transaction.ShoppingCart;
import edu.uchicago.mpcs.topics.user.Buyer;
public interface CheckoutService {
void manageShoppingCart(ShoppingCart shoppingCart);
void checkout(Buyer buyer);
}
package edu.uchicago.mpcs.topics.service; package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.Item; import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Status;
import edu.uchicago.mpcs.topics.db.ItemRepository; import edu.uchicago.mpcs.topics.db.ItemRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -32,9 +33,17 @@ public class ItemService ...@@ -32,9 +33,17 @@ public class ItemService
return itemRepository.save(item); return itemRepository.save(item);
} }
public void deleteItem(Long id) public Item deleteItem(Long id)
{ {
itemRepository.deleteById(id); Item itemToRemove = itemRepository.findById(id).orElse(null);
// check if status is HASBID, if not then set it DELETED
if (itemToRemove.getStatus() != Status.HASBID)
{
itemToRemove.setStatus(Status.DELETED);
}
return itemRepository.save(itemToRemove);
} }
public void updateItem(Item item) public void updateItem(Item item)
......
package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Order;
import edu.uchicago.mpcs.topics.auction.Status;
import edu.uchicago.mpcs.topics.db.ItemRepository;
import edu.uchicago.mpcs.topics.db.OrderRepository;
import org.springframework.stereotype.Service;
/**
* Created by Bright on 2018-11-29.
*/
@Service
public class OrderService
{
private OrderRepository orderRepository;
private ItemRepository itemRepository;
public OrderService(OrderRepository orderRepository, ItemRepository itemRepository)
{
this.orderRepository = orderRepository;
}
//create an order
public Order checkout(Order order)
{
//set item status as DELETED
for (Item item : order.getItems())
{
item.setStatus(Status.DELETED);
itemRepository.save(item);
}
return orderRepository.save(order);
}
}
package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.db.ItemRepository;
import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import edu.uchicago.mpcs.topics.auction.ShoppingCart;
import org.springframework.stereotype.Service;
/**
* Created by Bright on 2018-11-26.
*/
@Service
public class ShoppingCartService
{
private final ShoppingCartRepository shoppingCartRepository;
private final ItemRepository itemRepository;
public ShoppingCartService(ShoppingCartRepository shoppingCartRepository, ItemRepository itemRepository)
{
this.shoppingCartRepository = shoppingCartRepository;
this.itemRepository = itemRepository;
}
public ShoppingCart addItem(Long shoppingCartId, Item item)
{
ShoppingCart shoppingCartToUpdate = shoppingCartRepository.findById(shoppingCartId)
.orElse(new ShoppingCart(shoppingCartId));
shoppingCartToUpdate.addItem(item);
return shoppingCartRepository.save(shoppingCartToUpdate);
}
//TODO: will it actually delete?
public ShoppingCart removeItem(ShoppingCart shoppingCart, Item item)
{
shoppingCart.removeItem(item);
return shoppingCartRepository.save(shoppingCart);
}
public ShoppingCart checkout(ShoppingCart shoppingCart)
{
//for each item in order delete item from shopping cart
return shoppingCart.removeAllItems();
}
}
\ No newline at end of file
package edu.uchicago.mpcs.topics.service.impl;
import edu.uchicago.mpcs.topics.auction.Bid;
import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.service.BiddingService;
import edu.uchicago.mpcs.topics.transaction.ShoppingCart;
import edu.uchicago.mpcs.topics.user.User;
/**
* Created by HSong on 2018/11/4.
*/
public class BiddingServiceImpl implements BiddingService {
@Override
public void placeBid(Listing listing, Bid bid) {
}
@Override
public void buyNow(Listing listing, ShoppingCart shoppingCart) {
}
@Override
public void notifyUser(Listing listing, User user) {
}
@Override
public void createListing(Listing listing) {
}
@Override
public Listing updateListing(Listing listing) {
return null;
}
@Override
public boolean removeListing(Listing listing, User user) {
return false;
}
}
...@@ -7,15 +7,21 @@ ...@@ -7,15 +7,21 @@
//import edu.uchicago.mpcs.topics.user.User; //import edu.uchicago.mpcs.topics.user.User;
//import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
<<<<<<< HEAD
//import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
// //
=======
>>>>>>> c51b3a02a6655c09eed52c7ca9c09fcc2327352a
// //
///** ///**
// * Created by Rex on 2018-11-20 // * Created by Rex on 2018-11-20
// */ // */
// //
//@Service //@Service
<<<<<<< HEAD
//@Slf4j //@Slf4j
=======
>>>>>>> c51b3a02a6655c09eed52c7ca9c09fcc2327352a
//public class UserServiceImpl implements UserService { //public class UserServiceImpl implements UserService {
// //
// @Autowired // @Autowired
......
package edu.uchicago.mpcs.topics.transaction;
import edu.uchicago.mpcs.topics.auction.Listing;
import java.util.List;
public class ShoppingCart {
private List<Listing> listings;
public List<Listing> getListings() {
return listings;
}
public void setListings(List<Listing> listings) {
this.listings = listings;
}
}
package edu.uchicago.mpcs.topics.transaction;
import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.user.Buyer;
public class Transaction {
private Listing listing;
private Buyer buyer;
public Listing getListing() {
return listing;
}
public void setListing(Listing listing) {
this.listing = listing;
}
public Buyer getBuyer() {
return buyer;
}
public void setBuyer(Buyer buyer) {
this.buyer = buyer;
}
}
package edu.uchicago.mpcs.topics.user; package edu.uchicago.mpcs.topics.user;
import edu.uchicago.mpcs.topics.transaction.ShoppingCart;
import javax.persistence.Entity; import javax.persistence.Entity;
/** /**
......
spring.data.rest.base-path=/api spring.data.rest.base-path=/api
spring.h2.console.enabled=true spring.h2.console.enabled=true
\ No newline at end of file spring.jpa.hibernate.ddl-auto = update
spring.datasource.url=jdbc:h2:file:./target/h2db;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE
spring.datasource.driver-class-name=org.h2.Driver
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment