- wallet 테이블: loan_amount(실행금액), loan_rate(연이자율%), loan_method(상환방식), loan_months(기간), loan_start(시작일) ALTER TABLE 추가 - Wallet 도메인/DTO/Mapper/Service 동기화 - WalletResponse.from()에 대출 필드 반영 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
62 lines
2.4 KiB
Java
62 lines
2.4 KiB
Java
package com.sb.web.account.dto;
|
|
|
|
import com.sb.web.account.domain.Wallet;
|
|
import lombok.Builder;
|
|
import lombok.Data;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.time.LocalDate;
|
|
|
|
/**
|
|
* 계좌/카드/대출 응답. balance 는 현재 잔액(서비스에서 계산해 채움).
|
|
*/
|
|
@Data
|
|
@Builder
|
|
public class WalletResponse {
|
|
|
|
private Long id;
|
|
private String type;
|
|
private String name;
|
|
private String issuer;
|
|
private String accountNumber;
|
|
private String cardType;
|
|
private Long openingBalance;
|
|
private LocalDate openingDate;
|
|
private Long balance; // 현재 잔액(부호있음). INVEST는 총평가(예수금+주식)
|
|
|
|
// 투자(INVEST) 전용 — 서비스에서 포트폴리오로 산출
|
|
private Long investedAmount; // 순입금(투입원금) = 입금−출금
|
|
private Long deposit; // 예수금(미투자 현금) = 투입원금 + 매도 − 매수
|
|
private Long stockValue; // 주식 평가금액
|
|
private Long valuationGain; // 총손익(실현+평가) = 총평가 − 투입원금
|
|
private Long currentValue; // 평가액 직접입력값(퇴직연금·연금 등 수동 갱신). 있으면 총평가로 사용
|
|
private Boolean manualValuation; // true면 평가액 직접입력형(종목 자동계산 대신)
|
|
|
|
// 대출(LOAN) 전용
|
|
private Long loanAmount; // 대출 실행 금액(원금)
|
|
private BigDecimal loanRate; // 연이자율(%) e.g. 5.25
|
|
private String loanMethod; // EQUAL_PAYMENT / EQUAL_PRINCIPAL / BULLET
|
|
private Integer loanMonths; // 대출기간(개월)
|
|
private LocalDate loanStart; // 대출시작일
|
|
|
|
public static WalletResponse from(Wallet w, long balance) {
|
|
return WalletResponse.builder()
|
|
.id(w.getId())
|
|
.type(w.getType())
|
|
.name(w.getName())
|
|
.issuer(w.getIssuer())
|
|
.accountNumber(w.getAccountNumber())
|
|
.cardType(w.getCardType())
|
|
.openingBalance(w.getOpeningBalance())
|
|
.openingDate(w.getOpeningDate())
|
|
.balance(balance)
|
|
.currentValue(w.getCurrentValue())
|
|
.loanAmount(w.getLoanAmount())
|
|
.loanRate(w.getLoanRate())
|
|
.loanMethod(w.getLoanMethod())
|
|
.loanMonths(w.getLoanMonths())
|
|
.loanStart(w.getLoanStart())
|
|
.build();
|
|
}
|
|
}
|