### 펀딩 기능
- 사용자는 상품를 신청할 수 있다.
- 신청 시 카테고리를 설정 해야한다.
- 메이커 유형을 선택해야 한다. (개인, 법인 사업자, 개인 사업자)
- 옵션 관련 서류 제출을 해야한다.
- 옵션은 설정한 카테고리와 일치해야 한다.
- 목표 금액을 설정해야 한다.
- 상품 제목을 설정해야한다.
- 대표 이미지를 설정해야한다.
- 상품 종료일을 설정해야한다.
- 검색용 태그를 설정해야한다.
- 상품 요약을 작성해야한다.
- 상품 스토리를 작성해야한다. (사진, 영상)
- 옵션을 설계 해야한다. (후원 금액에 따른 보상)
- 제한 수량을 설정할 수 있다.
- 가격을 설정해야 한다.
- 발송 시작일을 설정해야한다. 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
- 도메인 간(패키지 간)에 의존 관계 생각하지 않고 구현 가능하긴 함 -> 하지만 이렇게 패키지 구조를 해서 얻을 수 있는 이점이 없음
- 실력 상 도메인간(패키지간)의 의존관계 없애면서 구현하기 힘듬
