1.
CouponDAO
C에서 흐름을 보면, 다음과 같다.
사용자가 책 구매하기 기능을 이용할 때,
구매를 바로할건지, 장바구니에 담을건지 여부를 물어본 후,
바로 구매를 하게 되면,
쿠폰을 사용할건지 여부를 물어보게 된다.
쿠폰 사용을 안한다면, 쿠폰 사용 로직을 들어가지 않고,
구매 로직으로 넘어 가게 된다.
쿠폰을 사용 한다면,
일단 사용자가 쿠폰을 들고 있는지를 확인 해야 한다.
쿠폰이 있다면, 어떤 쿠폰을 사용할건지를 사용자에게 입력 받게 된다.
해당 쿠폰이 뭔지를 DB 를 통해 확인하고 와야하니,
cDAO.selectOne() 메서드의 인자로 필요한 객체 정보를 넣고,
책이 가지고 있는 가격의 정보를 인자로 해서,
쿠폰을 주체로 해서 가격 정보를 set 해줘야 한다.
그래야, 가격정보를 받고, update() 메서드를 통해서
쿠폰 할인률이 적용된 가격으로 새롭게 set을 할 수 있게 된다.
update() 메서드는 DB를 들어갔다 나오는 상황이 아니라서, JDBC 인터페이스가 필요없고,
단지 자바에서 그냥 쿠폰 적용을 하는 로직을 구현하면 되는 것이다.
C에서는
위의 과정까지 끝낸 다음에,
할인이 적용된 책의 가격등을 보여주는 로직이 짜여있다.
그리고 사용한 쿠폰을 -1개 차감하는것으로 설계를 했기 때문에,
이런 로직을 확인할 수 있다.
참조변수명은 ocVO 등으로 통일 하면 좋을듯 하다.
2.
MemberDAO
책 구매를 완료하면,
이런식으로, 구매한 책의 정보를 보여주는 로직이 C에 구현 되어 있다.
구매를 했을 때, 구매한 가격에 따라
누적 금액에 정보를 반영하여, 회원의 등급을 올리는 기능을 구현했는데,
흐름은 아래와 같다.
무언가 회원의 등급이 변경되는 상황이니, mDAO.update() 메서드 이다.
이때 필요한 정보는, 구매한 총 가격이다.
update() 메서드 내부에 기능이 2개 이상이라, 키워드 값도 set 해서 C가 M에게 보내주게 된다.
위와같이, MemberDAO의 update() 메서드는
2개 이상의 기능을 가지고 있다.
따라서, 각 경우에 맞게 기능을 수행 하려면, 올바른 키워드 값을 받아야 한다.
키워드로 등급 변경을 받게 되고,
사용자의 현재 등급 정보도 같이 받게 되면,
update() 메서드를 실행 하게 된다.
위에 이미지는 C의 로직 인데,
사용자가 구매한 총 금액이 기준 금액보다 크거나 같으면서 (&&)
사용자의 등급이 어떠한 등급이면서 (&&)
사용자의 현재 등급이 어떤 등급의 번호에 해당하면,
각각의 if문에 걸리게 되면서,
멤버의 update() 메서드와
본인 쿠폰의 insert() 메서드를 수행 하게 되는 상황이다.
mDAO.update()는 이제, 회원 등급을 변경하기 위한 update() 이고
ocDAO.insert()는 이제, 회원 등급이 올랐기 때문에,
쿠폰을 증정하기 위한 insert() 이다.
member = mDAO.selectOne(member)는
DB에는 바로바로 정보 업데이트를 반영되는데, 자바에서는
그게 바로바로 안보이는 상황이니까,
등급이 변경됬거나 등의 상황에 바로 그 업데이트된 정보를 보여주기 위한,
코드 이다.
MemberDAO 에서 update() 메서드 이다.
멤버 테이블의 MGRADE 열이랑 GRADEUP 열이랑 새롭게 SET 해줄거야.
어디를 ?
WHERE MID = 현재 로그인한 회원의 mid
의 정보를 받아서 해당 조건에 부합되는 ROW 값을 변경 할거야.
GRADEUP은 로직을 그렇게 구현해서 등급업을 식별하기 위한 것이고,
MGRADE는 회원의 등급을 의미하는 것이다.
그외의 update() 메서드의 기능은,
회원의 비밀번호 변경 기능
회원의 이름 변경 기능
회원이 구매한 책의 총 누적금액
이 있다.
MemberDAO의 insert() 메서드는 회원 가입 기능 이다.
사용할 아이디, 비밀번호, 이름 (닉네임) 입력받고,
객체에서 정보들을 get 해서 sql 문에 set 해준 다음에,
pstmt.executeUpdate() 하면 끝이다.
pstmt.executeUpdate() 이 메서드는 return 값을 int 로 토해내긴 해서,
결과 값으로 무엇을 하고 싶으면 아래와 같이 표현하면 된다.
selectAll() 메서드는 회원 목록을 전부 출력하는 기능을 가진 메서드 이다.
while문을 돌면서, DB에 조건에 부합되는 칼럼에 있는 ROW 값들을 객체에 저장해서,
mdatas 배열리스트에 하나씩 add() 한다.
그리고 mdatas 배열리스트 자체를 반환 한다.
selectOne() 메서드는
회원 로그인 할 때랑,
회원 가입 할 때랑,
추천인 등록 할 때랑
3번 사용 된다.
회원 로그인 할 때는, 사용자로부터 회원 정보 입력 받아서, (id하고 pw)
맞으면 로그인 성공 되는 기능이다.
맞으면 DB에 유효한 회원의 정보를 객체로 반환 한다.
회원 가입은 중복 여부 검사 기능이고,
추천인 등록도 중복 여부 검사 기능이라고 생각 하면 된다.
사용자가 입력한 추천인 아이디가, 유효한 회원인지를 확인 하는 것이니까,
중복되면 return 값으로 객체 자체를 반환 한다.
중복이지 않으면 유효하지 않는 추천인 이라는 말이니까, return null 이다.
delete() 메서드는 회원 탈퇴 이다.
회원 정보를 DB에서 확인 하고, 유효하면 삭제.
유효 하지 않으면 삭제 불가능 멘트 출력을 위해 return 값으로 false 를 반환 한다.
3.
OwnCouponDAO
23.06.25 추가하기
'Team Project (국비) > Team Project' 카테고리의 다른 글
중간프로젝트 PPT (0) | 2023.07.29 |
---|---|
중간프로젝트 크롤링 샘플 데이터 (0) | 2023.07.19 |
6월 19일 프로젝트 View 파트 (0) | 2023.06.24 |
6월 19일 프로젝트 Model 파트 (0) | 2023.06.24 |
6월 19일 프로젝트 PPT (0) | 2023.06.19 |