Commit 1dbfbfbf by Rex Zhou

userid long type

parents 6fb2e418 97373c42
...@@ -2,6 +2,8 @@ package edu.uchicago.mpcs.topics.auction; ...@@ -2,6 +2,8 @@ package edu.uchicago.mpcs.topics.auction;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import edu.uchicago.mpcs.topics.user.User;
import org.apache.tomcat.jni.Local;
import javax.persistence.*; import javax.persistence.*;
import java.util.Date; import java.util.Date;
...@@ -28,16 +30,18 @@ public class Item ...@@ -28,16 +30,18 @@ public class Item
private Double shippingCost; private Double shippingCost;
private Boolean canBuyNow; private Boolean canBuyNow;
private Date startTime; //Start the auction when the current time matches the start time defined by the user private String 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 private String 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; //seller private Long sellerId; //seller
private Status status; private Status status;
private Long currentBidderID;
@ManyToMany(mappedBy = "items") @ManyToMany(mappedBy = "items")
@JsonIgnore @JsonIgnore
private Set<ShoppingCart> shopping_carts = new HashSet<>(); //must have the same name as the table private Set<ShoppingCart> shopping_carts = new HashSet<>(); //must have the same name as the table
...@@ -47,7 +51,8 @@ public class Item ...@@ -47,7 +51,8 @@ public class Item
} }
public Item(String title, String description, Long categoryId, double currentPrice, public Item(String title, String description, Long categoryId, double currentPrice,
double buyNowPrice, String photoUrl, Long userId, Boolean canBuyNow) double buyNowPrice, String photoUrl, Long sellerId, Boolean canBuyNow,
String startTime, String endTime)
{ {
this.title = title; this.title = title;
this.description = description; this.description = description;
...@@ -55,8 +60,10 @@ public class Item ...@@ -55,8 +60,10 @@ public class Item
this.currentPrice = currentPrice; this.currentPrice = currentPrice;
this.buyNowPrice = buyNowPrice; this.buyNowPrice = buyNowPrice;
this.photoUrl = photoUrl; this.photoUrl = photoUrl;
this.userId = userId; this.sellerId = sellerId;
this.canBuyNow = canBuyNow; this.canBuyNow = canBuyNow;
this.startTime = startTime;
this.endTime = endTime;
} }
public Long getItemId() public Long getItemId()
...@@ -130,14 +137,14 @@ public class Item ...@@ -130,14 +137,14 @@ public class Item
this.photoUrl = photoUrl; this.photoUrl = photoUrl;
} }
public Long getUserId() public Long getSellerId()
{ {
return userId; return sellerId;
} }
public void setUserId(Long userId) public void setSellerId(Long sellerId)
{ {
this.userId = userId; this.sellerId = sellerId;
} }
@JsonIgnore @JsonIgnore
...@@ -193,23 +200,33 @@ public class Item ...@@ -193,23 +200,33 @@ public class Item
this.canBuyNow = canBuyNow; this.canBuyNow = canBuyNow;
} }
public Date getStartTime() public String getStartTime()
{ {
return startTime; return startTime;
} }
public void setStartTime(Date startTime) public void setStartTime(String startTime)
{ {
this.startTime = startTime; this.startTime = startTime;
} }
public Date getEndTime() public String getEndTime()
{ {
return endTime; return endTime;
} }
public void setEndTime(Date endTime) public void setEndTime(String endTime)
{ {
this.endTime = endTime; this.endTime = endTime;
} }
public Long getCurrentBidderID()
{
return currentBidderID;
}
public void setCurrentBidderID(Long currentBidderID)
{
this.currentBidderID = currentBidderID;
}
} }
...@@ -5,5 +5,5 @@ package edu.uchicago.mpcs.topics.auction; ...@@ -5,5 +5,5 @@ package edu.uchicago.mpcs.topics.auction;
*/ */
public enum Status public enum Status
{ {
ACTIVE, INACTIVE, FAILED, INAPPROPRIATE, COUNTERFEIT, SUSPENDED, DELETED, HASBID, SOLD ACTIVE, INACTIVE, FAILED, INAPPROPRIATE, COUNTERFEIT, SUSPENDED, DELETED, HASBID, SOLD, ENDED
} }
package edu.uchicago.mpcs.topics.auction; package edu.uchicago.mpcs.topics.auction;
import java.util.Date; import edu.uchicago.mpcs.topics.db.ItemRepository;
import java.util.Timer; import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import org.springframework.beans.factory.annotation.Autowired;
public class TimeTracker { import java.time.Duration;
private Timer timer; import java.time.LocalDateTime;
private long timeWindow; import java.util.concurrent.Executors;
private Date start; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public Timer getTimer() { public class TimeTracker
return timer; {
} private Long itemId;
public void setTimer(Timer timer) { @Autowired
this.timer = timer; private ItemRepository itemRepository;
}
public long getTimeWindow() { @Autowired
return timeWindow; private ShoppingCartRepository shoppingCartRepository;
}
//Please use format 2018-11-30T01:37:17
public TimeTracker(Item item)
{
this.itemId = item.getItemId();
LocalDateTime startTime = LocalDateTime.parse(item.getStartTime());
LocalDateTime endTime = LocalDateTime.parse(item.getEndTime());
public void setTimeWindow(long timeWindow) { LocalDateTime currentTime = LocalDateTime.now();
this.timeWindow = timeWindow;
Duration durationStart = Duration.between(startTime, currentTime);
ScheduledExecutorService startTimer = Executors.newSingleThreadScheduledExecutor();
startTimer.schedule(() -> timeStart(), durationStart.getSeconds(), TimeUnit.SECONDS);
Duration durationEnd = Duration.between(startTime, endTime);
ScheduledExecutorService endTimer = Executors.newSingleThreadScheduledExecutor();
endTimer.schedule(() -> timeEnd(), durationEnd.getSeconds(), TimeUnit.SECONDS);
} }
public Date getStart() { private void timeStart()
return start; {
Item itemToUpdate = itemRepository.findById(this.itemId).orElse(null);
itemToUpdate.setStatus(Status.ACTIVE);
itemRepository.save(itemToUpdate);
} }
public void setStart(Date start) { private void timeEnd()
this.start = start; {
//set status to ENDED
Item itemToUpdate = itemRepository.findById(this.itemId).orElse(null);
itemToUpdate.setStatus(Status.ENDED);
itemRepository.save(itemToUpdate);
//add the item to user shopping cart
ShoppingCart shoppingCart = shoppingCartRepository.findById(itemToUpdate.getCurrentBidderID()).orElse(null);
shoppingCartRepository.save(shoppingCart.addItem(itemToUpdate));
} }
} }
...@@ -7,6 +7,7 @@ import edu.uchicago.mpcs.topics.db.ShoppingCartRepository; ...@@ -7,6 +7,7 @@ import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import edu.uchicago.mpcs.topics.service.CheckoutService; import edu.uchicago.mpcs.topics.service.CheckoutService;
import edu.uchicago.mpcs.topics.service.ShoppingCartService; import edu.uchicago.mpcs.topics.service.ShoppingCartService;
import edu.uchicago.mpcs.topics.auction.ShoppingCart; import edu.uchicago.mpcs.topics.auction.ShoppingCart;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
......
...@@ -18,7 +18,7 @@ public class itemCategoryController ...@@ -18,7 +18,7 @@ public class itemCategoryController
{ {
//repository //repository
ItemCategoryRepository itemCategoryRepository; private ItemCategoryRepository itemCategoryRepository;
public itemCategoryController(ItemCategoryRepository itemCategoryRepository) public itemCategoryController(ItemCategoryRepository itemCategoryRepository)
{ {
......
...@@ -32,10 +32,15 @@ public class BidService ...@@ -32,10 +32,15 @@ public class BidService
{ {
itemToUpdate.setItemId(bid.getItemId()); itemToUpdate.setItemId(bid.getItemId());
itemToUpdate.setCurrentPrice(bid.getAmount()); itemToUpdate.setCurrentPrice(bid.getAmount());
//Assign highest bidder
itemToUpdate.setCurrentBidderID(bid.getUserId());
itemRepository.save(itemToUpdate); itemRepository.save(itemToUpdate);
bid.setStatus(Status.ACTIVE); bid.setStatus(Status.ACTIVE);
//set highestBidder
return bidRepository.save(bid); return bidRepository.save(bid);
} }
else else
......
...@@ -2,6 +2,7 @@ package edu.uchicago.mpcs.topics.service; ...@@ -2,6 +2,7 @@ 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.auction.Status;
import edu.uchicago.mpcs.topics.auction.TimeTracker;
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;
...@@ -30,9 +31,13 @@ public class ItemService ...@@ -30,9 +31,13 @@ public class ItemService
public Item addItem(Item item) public Item addItem(Item item)
{ {
Item savedItem = itemRepository.save(item);
//start timer //start timer
return itemRepository.save(item); TimeTracker timeTracker = new TimeTracker(savedItem);
return savedItem;
} }
public Item deleteItem(Long id) public Item deleteItem(Long id)
......
...@@ -5,6 +5,7 @@ import edu.uchicago.mpcs.topics.auction.Status; ...@@ -5,6 +5,7 @@ import edu.uchicago.mpcs.topics.auction.Status;
import edu.uchicago.mpcs.topics.db.ItemRepository; import edu.uchicago.mpcs.topics.db.ItemRepository;
import edu.uchicago.mpcs.topics.db.ShoppingCartRepository; import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import edu.uchicago.mpcs.topics.auction.ShoppingCart; import edu.uchicago.mpcs.topics.auction.ShoppingCart;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
......
spring.data.rest.base-path=/api spring.data.rest.base-path=/api
spring.h2.console.enabled=true spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto = update #spring.jpa.hibernate.ddl-auto = update
spring.datasource.url=jdbc:h2:file:./target/h2db;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE #spring.datasource.url=jdbc:h2:file:./target/h2db;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE
spring.datasource.driver-class-name=org.h2.Driver #spring.datasource.driver-class-name=org.h2.Driver
\ No newline at end of file \ 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