### 펀딩 기능 - 사용자는 상품를 신청할 수 있다. - 신청 시 카테고리를 설정 해야한다. - 메이커 유형을 선택해야 한다. (개인, 법인 사업자, 개인 사업자) - 옵션 관련 서류 제출을 해야한다. - 옵션은 설정한 카테고리와 일치해야 한다. - 목표 금액을 설정해야 한다. - 상품 제목을 설정해야한다. - 대표 이미지를 설정해야한다. - 상품 종료일을 설정해야한다. - 검색용 태그를 설정해야한다. - 상품 요약을 작성해야한다. - 상품 스토리를 작성해야한다. (사진, 영상) - 옵션을 설계 해야한다. (후원 금액에 따른 보상) - 제한 수량을 설정할 수 있다. - 가격을 설정해야 한다. - 발송 시작일을 설정해야한다. ex) 상품 종료일+5영업일째 - 세부옵션등을 설정할 수 있다. (사이즈, 색상) - 배송비를 설정해야한다. - 메이커의 정보를 입력해야한다. - 문의 이메일 - 문의 전화번호 - 대표자의 정보를 입력해야한다. - 대표자 이메일 - 대표자 정보 - 정산 정보를 입력해야한다. - 은행 - 계좌번호 - 예금주 - 세금 계산서 발행 이메일 - 사용자는 펀딩목록에서 펀딩 정보를 확인 할 수 있다. - 카테고리 별로 상품을 확인할 수 잇다. - 펀딩 모금액을 확인할 수 있다. - 목표 금액을 퍼센트로 확인할 수 있다. - 대표 이미지를 확인할 수 있다. - 남은 기간을 확인 할 수 있다. - 인기순, 최신순, 모집금액순, 마감임박 순으로 정렬하여 확인할 수 있다. - 사용자는 상품에 대한 좋아요를 누를 수 있다. - 좋아요를 누른 상품은 목록으로 확인이 가능하다. - 사용자는 펀딩을 진행할 수 있다. - 옵션을 선택해야한다. - 수량을 선택할 수 있다. - 선택 시 재고를 확인 할 수 있다. - 다중 선택이 가능하다. - 결제예약을 진행해야 한다. - 수량을 확인 할 수 있다 - 배송비를 확인 할 수 있다. - 결제 예약 금액을 확인 할 수 있다. (포인트, 쿠폰할인 금액, 배송비) - 서포터 정보를 입력해야 한다. - 아이디, 이메일을 입력해야한다. - 휴대폰 인증을 진행해야한다. - 배송지를 입력해야한다. - 배송지 정보를 검색하여 찾을 수 있다. - 배송 요청 사항을 선택적으로 입력할 수 있다. - 결제 정보를 입력해야 한다. (카드번호, 유효기간, 카드 번호, 생년월일) - 펀딩이 완료 된 프로젝트는 목록에서 확인할 수 있다. - 결제 예약, 결제 완료, 결제 취소, 결제 실패, 프로젝트 실패로 분리하여 확인할 수 있다. - 사용자는 펀딩 취소를 할 수 있다. - 펀딩 기간 내에 결제를 취소할 수 있다. ### 게시판 - 사용자는 글을 확인할 수 있다. - 로그인을 하지 않아도 된다. - 작성일, 제목, 내용, 작성자를 확인할 수 있다. - 사용자는 댓글을 확인할 수 있다. - 사용자는 글을 쓸 수 작성 할 수 있다. - 사용자는 이미지를 첨부 할 수 있다. - 사용자는 댓글을 작성 할 수 있다. - 공지사항 (홍보 게시판) 양식 - 제목, 내용, 홍보 이미지 첨부 활동 공지 게시글은 참여 지원서를 작성할 수 있는 버튼 사용 - 폼 연결 (+ 환경사이트 이름을 따로 추가 → 환경사이트마다 검색이 가능하게?) - 환경 사이트의 봉사 활동 예정 안내 ex ) 서해바다 쓰레기 줍기 활동 안내 - 북극곰을 후원하는 새로운 굿즈 안내 - 뉴스 - 네이버 환경 뉴스 크롤링 - 몇시간 마다 크롤링을 할지 정하기 - 어떤 형식으로 보여줄 것인지 정하기 - 커뮤니티 (자유 게시판) 양식 - 제목, 내용, 이미지 첨부 - 본인의 환경 봉사활동 자랑 및 후기 - 굿즈 구매 후기 등등 - 정보 - 환경 사이트 링크로 넘어갈 수 있게 사이트 로고 이미지를 띄워놓는 느낌 ### 채팅 - 채팅방 생성 (제목) - 1 : 1 - 그룹 - 채팅방 목록 - 오픈채팅 (그룹) - 1 : 1 - 채팅방 접속 - 채팅 보내기 - 채팅 받기 - 채팅 나가기 ### 회원 - 회원가입 양식 - 이메일(id), 비밀번호, 닉네임, (+ 전화번호, 주소) - 이메일 인증 - 자체 로그인 - 카카오 / 네이버 연동 회원가입 - 로그인 양식 - 이메일, 비밀번호 (카카오, 네이버, 구글) - 자체 로그인 - 카카오 / 네이버 연동 로그인 - 아이디 찾기 - 비밀번호 재설정 - 회원 정보 - 회원 정보 수정 - 회원 탈퇴 - 로그아웃 - 마이 페이지 → 아래 글에 새로운 댓글이나 수정이 있다면 알림 - 좋아요 누른 글 - 좋아요 누른 펀딩 - 작성한 글 - 작성한 댓글 - 사용자 등급 - 일반 사용자 - 일반 사용자는 펀딩, 정보, 자유 게시판에 글 작성 권한 있음 - 펀딩, 정보게시판에는 관리자가 수락 전까지는 글이 보이지 않음 - 관리자 - 관리자는 펀딩, 정보 게시판에 대한 수락 / 거절 권한 있음 - 관리자가 수락 할 때 -> 펀딩, 정보게시판에 글이 보임 - 관리자는 프로젝트를 심사할 수 있다. - 관리자는 심사 결과를 신청자에게 전달해야한다. - 관리자는 펀딩, 댓글에 대한 수정을 할 수 있다. - 관리자는 공지를 작성 할 수 있다. - 관리자는 뉴스 정보를 작성할 수 있다. - 관리자는 게시글 수정, 삭제를 할 수 있다. ------------------------------------------------------------------- 오창민 BaseEntity @create create @update update Member Long id String email String username String nickname String phone String provider Enum role List<ChatRoomAppend> List<Maker> List<Funding> List<PostComment> List<ProjectComment> List<ProjectLike> List<PostLike> Maker Stirng name FileImage profileImage String email String phone FileImage submitFile Member List<Project> Individual : Maker FileImage IDImage Business : Maker String 사업자 등록 번호 (10자리) String 상호 또는 법인명 FileImage 사업자 등록증 CorpBusiness : Business FileImage 법인 인감 증명서 -------------------------------------------------------------- 김소영 Project String title String summary String story int targetAmount Period fundingDate FileImage repImage Maker List<Tag> searchTags List<Reward> List<FileImage> List<ProjectComment> List<ProjectLike> Tag String name Project Reward int price String title String description ~~int stock~~ int initStock String expectedSendDate int deliveryFee Project List<Option> Option Long id Reward reward String name List<OptionValue> values OptionValue Long id String value; Option SkuValue Long id Option OptionValue int initStock <주문> RewardSku Long id int stock Reward List<SkuValue> skuValues FundingReward int optionCount int totalPrice RewardSku Funding Funding Member Enum status List<FundingReward> Delivery Enum status Address Funding Address (값) String detail 서울시 평화로 20번지 String zipcode 우편번호 ------------------------------------------------------------------- 신은화 Board Long id String title // 카테고리 String summary // 카테고리 설명 List<Post> Post Long id String title String text int views List<FileImage> images List<PostLike> List<PostComment> Member Board Activity String title String content String organization String place Period applicateDate; // 등록기간 Period activityDate; // 활동기간 int maxMember; // 모집인원 Enum status // 수락 거절 여부 List<ActivityFileImage> images List<Member> members // 신청하면 add Period (값) LocalDateTime start; LocalDateTime end; ------------------------------------------------------------- 박서현 FileImage (값) -> common String originalName String storedName ActivityFileImage Activity FileImage PostFileImage Post FileImage ProjectFileImage Project FileImage PostLike Long id Member Post ProjectLike Long id Member Product PostComment Long id String content Member Post ProjectComment Long id String content Member Project ----------------------------------------------------------- 서재혁 ChatRoom Long id String roomName String description int memberCount List<ChatRoomAppend> ChatRoomAppend Long id ChatRoom Member List<ChatMessage> ChatMessage Long id String nickname String message ChatRoomAppend ------------------------------------ 뉴스 엔티티 구현 vs Post로 이용 ----------------------------------------------- config exception web api ComtrollerAdvice Member DTO Controller domain common Member repo service entity Post repo service entity - 얻을 수 있는 것 : domain이 웹 계층에 의존 관계가 없도록 구현가능. web계층 교체가능 - default 접근제어자로 직접 패키지 접근을 막을 수 있다. Post controller service repo entity Item controller service repo entity Member controller service repo entity MemberEntity Maker - 도메인 간(패키지 간)에 의존 관계 생각하지 않고 구현 가능하긴 함 -> 하지만 이렇게 패키지 구조를 해서 얻을 수 있는 이점이 없음 - 실력 상 도메인간(패키지간)의 의존관계 없애면서 구현하기 힘듬 ![](https://hackmd.io/_uploads/r10ReCY33.png)