Files
sb-backend/src/main/java/com/sb/web/account/dto/WalletResponse.java
T
ByungCheol fb94df8112 feat: 시세 자동조회·퇴직연금 평가액·게시판 카테고리·태그 정렬·계좌번호 암호화
- 투자: 종목코드로 현재가 시세 자동조회(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>
2026-06-04 05:00:18 +09:00

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