-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
close #11
- Loading branch information
Showing
24 changed files
with
323 additions
and
51 deletions.
There are no files selected for viewing
13 changes: 13 additions & 0 deletions
13
src/main/java/org/mockInvestment/advice/exception/InvalidStockOrderException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package org.mockInvestment.advice.exception; | ||
|
||
import org.mockInvestment.advice.exception.general.BadRequestException; | ||
|
||
public class InvalidStockOrderException extends BadRequestException { | ||
|
||
private static final String MESSAGE = "주식 구매 요청이 유효하지 않습니다."; | ||
|
||
public InvalidStockOrderException() { | ||
super(MESSAGE); | ||
} | ||
} | ||
|
14 changes: 14 additions & 0 deletions
14
src/main/java/org/mockInvestment/advice/exception/InvalidStockOrderTypeException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package org.mockInvestment.advice.exception; | ||
|
||
import org.mockInvestment.advice.exception.general.BadRequestException; | ||
|
||
public class InvalidStockOrderTypeException extends BadRequestException { | ||
|
||
private static final String MESSAGE = "주식 구매 요청이 유효하지 않습니다."; | ||
|
||
public InvalidStockOrderTypeException() { | ||
super(MESSAGE); | ||
} | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
54 changes: 54 additions & 0 deletions
54
src/main/java/org/mockInvestment/stock/domain/MemberOwnStock.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package org.mockInvestment.stock.domain; | ||
|
||
import jakarta.persistence.*; | ||
import lombok.Getter; | ||
import org.mockInvestment.advice.exception.InvalidStockOrderException; | ||
import org.mockInvestment.member.domain.Member; | ||
import org.mockInvestment.stockOrder.domain.StockOrder; | ||
|
||
import java.util.List; | ||
|
||
@Getter | ||
@Entity | ||
public class MemberOwnStock { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long id; | ||
|
||
@ManyToOne(fetch = FetchType.LAZY) | ||
private Member member; | ||
|
||
@ManyToOne(fetch = FetchType.LAZY) | ||
private Stock stock; | ||
|
||
@OneToMany(mappedBy = "memberOwnStock") | ||
private List<StockOrder> stockOrders; | ||
|
||
private Long volume; | ||
|
||
private double averageCost; | ||
|
||
|
||
public void apply(double price, long volume, boolean isBuy) { | ||
if (isBuy) | ||
buy(price, volume); | ||
else | ||
sell(price, volume); | ||
} | ||
|
||
private void buy(double price, long volume) { | ||
double total = (averageCost * this.volume) + (price * volume); | ||
this.volume += volume; | ||
averageCost = total / (double) volume; | ||
} | ||
|
||
private void sell(double price, long volume) { | ||
double total = (averageCost * this.volume) - (price * volume); | ||
if (this.volume - volume < 0) | ||
throw new InvalidStockOrderException(); | ||
this.volume -= volume; | ||
averageCost = total / (double) volume; | ||
} | ||
|
||
} |
4 changes: 4 additions & 0 deletions
4
src/main/java/org/mockInvestment/stock/domain/UpdateStockCurrentPriceEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
package org.mockInvestment.stock.domain; | ||
|
||
public record UpdateStockCurrentPriceEvent(long stockId, String code, double curr) { | ||
} |
17 changes: 17 additions & 0 deletions
17
src/main/java/org/mockInvestment/stock/dto/MemberOwnStockResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package org.mockInvestment.stock.dto; | ||
|
||
|
||
import org.mockInvestment.stock.domain.MemberOwnStock; | ||
|
||
public record MemberOwnStockResponse(long id, double averageCost, long volume, String code, String symbol, String name) { | ||
|
||
public static MemberOwnStockResponse of(MemberOwnStock entity) { | ||
return new MemberOwnStockResponse(entity.getId(), | ||
entity.getAverageCost(), | ||
entity.getVolume(), | ||
entity.getStock().getCode(), | ||
entity.getStock().getSymbol(), | ||
entity.getStock().getName()); | ||
} | ||
|
||
} |
6 changes: 6 additions & 0 deletions
6
src/main/java/org/mockInvestment/stock/dto/MemberOwnStocksResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package org.mockInvestment.stock.dto; | ||
|
||
import java.util.List; | ||
|
||
public record MemberOwnStocksResponse(List<MemberOwnStockResponse> stocks) { | ||
} |
14 changes: 14 additions & 0 deletions
14
src/main/java/org/mockInvestment/stock/repository/MemberOwnStockRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package org.mockInvestment.stock.repository; | ||
|
||
import org.mockInvestment.member.domain.Member; | ||
import org.mockInvestment.stock.domain.MemberOwnStock; | ||
import org.mockInvestment.stock.domain.Stock; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
import java.util.Optional; | ||
|
||
public interface MemberOwnStockRepository extends JpaRepository<MemberOwnStock, Long> { | ||
|
||
Optional<MemberOwnStock> findByMemberAndStock(Member member, Stock stock); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.