Files
sb-backend/src/main/java/com/sb/web/account/dto/WalletResponse.java
T
ByungCheolandClaude Sonnet 4.6 947c7a1f68 feat(account): 대출 계좌 loan_amount/loan_rate/loan_method/loan_months/loan_start 필드 추가
- 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>
2026-07-02 00:45:42 +09:00

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();
}
}