fb94df8112
- 투자: 종목코드로 현재가 시세 자동조회(StockQuoteService, 투자탭/포트폴리오 진입 시 갱신) - 투자: 퇴직연금 등 평가액 직접입력형 계좌(currentValue 활성화, manualValuation) - 게시판: community/saving/tips 카테고리 분리(post.category + 목록 필터) - 태그: 순서 변경(account_tag.sort_order, /tags/reorder) - 보안: 계좌번호 AES-256-GCM 암호화 저장/복호화(EncryptedStringTypeHandler, account_number VARCHAR(255)) 키는 서버 .env ACCOUNT_CRYPTO_KEY 로 주입(미설정 시 평문 통과) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
1.8 KiB
Java
49 lines
1.8 KiB
Java
package com.sb.web.account.dto;
|
|
|
|
import com.sb.web.account.domain.Wallet;
|
|
import lombok.Builder;
|
|
import lombok.Data;
|
|
|
|
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면 평가액 직접입력형(종목 자동계산 대신)
|
|
|
|
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())
|
|
.build();
|
|
}
|
|
}
|