- [Springboot] 20. 입금 기능 만들기2024년 08월 08일
- Song hyun
- 작성자
- 2024.08.08.:09
728x90반응형[Springboot] 20. 입금 기능 만들기
1. 입금 화면 만들기 (deposit.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- header.jsp --> <%@ include file="/WEB-INF/view/layout/header.jsp"%> <!-- start of content.jsp(xxx.jsp) --> <div class="col-sm-8"> <h2>입금 요청(인증)</h2> <h5>Bank App에 오신걸 환영합니다</h5> <!-- 예외적으로 로그인은 보안 때문에 post로 던지자 --> <!-- insert into account_tb(number, password, balance, user_id, created_at) --> <form action="/account/deposit" method="post"> <div class="form-group"> <label for="amount">입금 금액:</label> <input type="number" class="form-control" placeholder="Enter amount" id="amount" name="amount" value="1000"> </div> <div class="form-group"> <label for="dAccountNumber">입금 계좌 번호:</label> <input type="text" class="form-control" placeholder="Enter account number" id="dAccountNumber" name="dAccountNumber" value="1111"> </div> <div class="text-right"> <button type="submit" class="btn btn-primary">입금</button> </div> </form> </div> <!-- end of col-sm-8 --> </div> </div> <!-- footer.jsp --> <%@ include file="/WEB-INF/view/layout/footer.jsp"%>
2. 입금 페이지 이동/입금 요청 처리 메서드 (AccountController)
/** * 입금 페이지 요청 */ @GetMapping("/deposit") public String depositPage() { // 1. 인증 검사 User principal=(User)session.getAttribute("principal"); if(principal==null) { throw new UnAuthorizedException(Define.NOT_AN_AUTHENTICATED_USER, HttpStatus.UNAUTHORIZED); } return "account/deposit"; } /** * */ /** * 입금 요청 처리 */ @PostMapping("/deposit") public String depositProc(DepositDTO dto) { // 1. 인증 검사 User principal=(User)session.getAttribute("principal"); if(principal==null) { throw new UnAuthorizedException(Define.NOT_AN_AUTHENTICATED_USER, HttpStatus.UNAUTHORIZED); } // 입금시 검사해야 할 것 // 1. 계좌가 존재하는지 // 2. 돈이 존재하는지 if (dto.getAmount() == null) { throw new DataDeliveryException(Define.ENTER_YOUR_BALANCE, HttpStatus.BAD_REQUEST); } if(dto.getAmount()<=0) { throw new DataDeliveryException(Define.ENTER_YOUR_BALANCE, HttpStatus.BAD_REQUEST); } if(dto.getDAccountNumber()==null) { throw new DataDeliveryException(Define.ENTER_YOUR_ACCOUNT_NUMBER, HttpStatus.BAD_REQUEST); } accountService.updateAccountDeposit(dto, principal.getId()); return "redirect:/account/list"; }
3. SQL 쿼리 전송&트랜잭션 처리
// 입금 기능 만들기- @Transactional public void updateAccountDeposit(DepositDTO dto, Integer principalId) { // 1. 계좌 존재 여부를 확인 Account accountEntity = accountRepository.findByNumber(dto.getDAccountNumber()); if(accountEntity==null) { throw new DataDeliveryException(Define.NOT_EXIST_ACCOUNT, HttpStatus.BAD_REQUEST); } // 2. 본인 계좌 여부 확인 if(accountEntity.getUserId()!=principalId) { throw new DataDeliveryException(Define.NOT_EXIST_ACCOUNT, HttpStatus.BAD_REQUEST); } // 2. 입금 처리 System.out.println("입금 전 ;"+ accountRepository.findByUserId(principalId)); accountEntity.deposit(dto.getAmount()); accountRepository.updateById(accountEntity); History history=History.builder() .amount(dto.getAmount()) .wBalance(null) .dBalance(accountEntity.getBalance()) .wAccountId(null) .dAccountId(accountEntity.getId()) .build(); int rowResultcount= historyRepository.insert(history); System.out.println("입금 전 ;"+ accountRepository.findByUserId(principalId)); System.out.println(history); if(rowResultcount!=1) { throw new DataDeliveryException(Define.FAILED_PROCESSING, HttpStatus.INTERNAL_SERVER_ERROR); } }
728x90반응형'Springboot' 카테고리의 다른 글
[Springboot] 22. 계좌 상세 보기 기능(2단계-화면 생성) (0) 2024.08.12 [Springboot] 21. 계좌 상세 보기 기능 (1단계) (0) 2024.08.09 [Springboot] 19. 출금 기능 만들기 (0) 2024.08.08 [SpringBoot] 18. 중간 리팩토링 (0) 2024.08.08 [SpringBoot] 17. 계좌 목록 기능 구현 (0) 2024.08.08 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)