-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
chore: 회원탈퇴
- Loading branch information
Showing
20 changed files
with
697 additions
and
28 deletions.
There are no files selected for viewing
49 changes: 49 additions & 0 deletions
49
src/main/java/kr/hs/dgsw/SOPO_server_v2/domain/board/controller/BoardController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package kr.hs.dgsw.SOPO_server_v2.domain.board.controller; | ||
|
||
import kr.hs.dgsw.SOPO_server_v2.domain.board.dto.BoardLoadRes; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.board.dto.BoardUpdateReq; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.board.service.BoardService; | ||
import kr.hs.dgsw.SOPO_server_v2.global.response.Response; | ||
import kr.hs.dgsw.SOPO_server_v2.global.response.ResponseData; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.web.bind.annotation.DeleteMapping; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.PatchMapping; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
import java.util.List; | ||
|
||
@RestController | ||
@RequestMapping("/board") | ||
@RequiredArgsConstructor | ||
public class BoardController { | ||
private final BoardService boardService; | ||
|
||
@GetMapping("/all") | ||
public ResponseData<List<BoardLoadRes>> getBoards() { | ||
return boardService.getBoards(); | ||
} | ||
|
||
@PostMapping | ||
public ResponseData<Long> createBoard() { | ||
return boardService.createBoard(); | ||
} | ||
|
||
@GetMapping | ||
public ResponseData<BoardLoadRes> getBoard(Long boardId) { | ||
return boardService.findOneBoard(boardId); | ||
} | ||
|
||
@PatchMapping | ||
public Response loadBoard(Long boardId, BoardUpdateReq updateReq) { | ||
return boardService.loadBoard(boardId, updateReq); | ||
} | ||
|
||
@DeleteMapping | ||
public Response deleteBoard(Long boardId) { | ||
return boardService.deleteBoard(boardId); | ||
} | ||
|
||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/kr/hs/dgsw/SOPO_server_v2/domain/board/repository/BoardRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package kr.hs.dgsw.SOPO_server_v2.domain.board.repository; | ||
|
||
import kr.hs.dgsw.SOPO_server_v2.domain.board.entity.BoardEntity; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.stereotype.Repository; | ||
|
||
@Repository | ||
public interface BoardRepository extends JpaRepository<BoardEntity, Long> { | ||
} |
95 changes: 95 additions & 0 deletions
95
src/main/java/kr/hs/dgsw/SOPO_server_v2/domain/board/service/BoardService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
package kr.hs.dgsw.SOPO_server_v2.domain.board.service; | ||
|
||
import jakarta.transaction.Transactional; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.board.dto.BoardLoadRes; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.board.dto.BoardUpdateReq; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.board.entity.BoardEntity; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.board.repository.BoardRepository; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.member.entity.MemberEntity; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.member.enums.MemberCategory; | ||
import kr.hs.dgsw.SOPO_server_v2.global.error.custom.board.BoardNotFound; | ||
import kr.hs.dgsw.SOPO_server_v2.global.error.custom.member.MemberNotCoincideException; | ||
import kr.hs.dgsw.SOPO_server_v2.global.infra.security.GetCurrentMember; | ||
import kr.hs.dgsw.SOPO_server_v2.global.response.ResponseData; | ||
import kr.hs.dgsw.SOPO_server_v2.global.response.Response; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.stereotype.Service; | ||
|
||
import java.util.List; | ||
|
||
@Service | ||
@Transactional | ||
@RequiredArgsConstructor | ||
public class BoardService { | ||
|
||
private final BoardRepository boardRepository; | ||
private final GetCurrentMember getCurrentMember; | ||
|
||
// 게시글 전체 조회 | ||
public ResponseData<List<BoardLoadRes>> getBoards() { | ||
List<BoardEntity> boardList = boardRepository.findAll(); | ||
List<BoardLoadRes> boardLoadResList = boardList.stream().map( | ||
BoardLoadRes::of | ||
).toList(); | ||
|
||
return ResponseData.of(HttpStatus.OK, "게시물 전체 조회 완료", boardLoadResList); | ||
} | ||
|
||
// 빈 게시글 생성 | ||
public ResponseData<Long> createBoard() { | ||
MemberEntity curMember = getCurrentMember.current(); | ||
|
||
BoardEntity board = BoardEntity.builder() | ||
.boardTitle(null) | ||
.boardContent(null) | ||
.file(null) | ||
.member(curMember) | ||
.build(); | ||
|
||
return ResponseData.of(HttpStatus.OK, "빈 게시물 생성 완료", board.getBoardId()); | ||
} | ||
|
||
// 게시글 업데이트 | ||
public Response loadBoard(Long boardId, BoardUpdateReq updateReq) { | ||
MemberEntity curMember = getCurrentMember.current(); | ||
|
||
BoardEntity board = boardRepository.findById(boardId) | ||
.orElseThrow(() -> BoardNotFound.EXCEPTION); | ||
|
||
// 만약 현재 로그인 유저와 Load 하려는 유저가 다르고, admin 아니라면 | ||
if (!board.getMember().getMemberId().equals(curMember.getMemberId()) && curMember.getMemberCategory() == MemberCategory.USER) { | ||
throw MemberNotCoincideException.EXCEPTION; | ||
} | ||
|
||
board.update(updateReq); | ||
return Response.of(HttpStatus.OK, "게시물 업데이트 완료"); | ||
} | ||
|
||
// 게시글 단일 조회 | ||
public ResponseData<BoardLoadRes> findOneBoard(Long boardId) { | ||
BoardEntity board = boardRepository.findById(boardId) | ||
.orElseThrow(() -> BoardNotFound.EXCEPTION); | ||
BoardLoadRes boardLoadRes = BoardLoadRes.of(board); | ||
return ResponseData.of(HttpStatus.OK, "게시물 단일 조회 완료", boardLoadRes); | ||
} | ||
|
||
// 게시글 삭제 | ||
@Transactional | ||
public Response deleteBoard(Long boardId) { | ||
MemberEntity curMember = getCurrentMember.current(); | ||
|
||
BoardEntity board = boardRepository.findById(boardId) | ||
.orElseThrow(() -> BoardNotFound.EXCEPTION); | ||
|
||
// 만약 만든 사람과 삭제하려는 사람이 일치하지 않고 admin 아니라면.. error | ||
if (!board.getMember().getMemberId().equals(curMember.getMemberId()) && curMember.getMemberCategory() == MemberCategory.USER) { | ||
throw MemberNotCoincideException.EXCEPTION; | ||
} | ||
|
||
boardRepository.deleteById(boardId); | ||
return Response.of(HttpStatus.OK, "게시물 삭제 완료"); | ||
} | ||
|
||
|
||
} |
63 changes: 63 additions & 0 deletions
63
src/main/java/kr/hs/dgsw/SOPO_server_v2/domain/comment/entity/CommentEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package kr.hs.dgsw.SOPO_server_v2.domain.comment.entity; | ||
|
||
import jakarta.persistence.CascadeType; | ||
import jakarta.persistence.Column; | ||
import jakarta.persistence.Entity; | ||
import jakarta.persistence.FetchType; | ||
import jakarta.persistence.GeneratedValue; | ||
import jakarta.persistence.GenerationType; | ||
import jakarta.persistence.Id; | ||
import jakarta.persistence.JoinColumn; | ||
import jakarta.persistence.ManyToOne; | ||
import jakarta.persistence.OneToMany; | ||
import jakarta.persistence.Table; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.board.entity.BoardEntity; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.member.entity.MemberEntity; | ||
import kr.hs.dgsw.SOPO_server_v2.global.common.entity.BaseTimeEntity; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import lombok.ToString; | ||
import lombok.experimental.SuperBuilder; | ||
import org.hibernate.annotations.DynamicUpdate; | ||
import org.hibernate.annotations.OnDelete; | ||
import org.hibernate.annotations.OnDeleteAction; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
@Getter | ||
@Entity | ||
@Table(name = "tbl_comment") | ||
@NoArgsConstructor | ||
@DynamicUpdate | ||
@ToString | ||
@SuperBuilder | ||
public class CommentEntity extends BaseTimeEntity { // 부모 | ||
|
||
// 댓글 아이디 | ||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
@Column(name = "comment_id") | ||
private Long commentId; | ||
|
||
// 댓글 내용 | ||
@Column(name = "comment_content") | ||
private String commentContent; | ||
|
||
// 자식 댓글 | ||
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) | ||
private List<SubCommentEntity> children = new ArrayList<>(); | ||
|
||
// 게시물 아이디 | ||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "board_id", nullable = false) | ||
private BoardEntity board; | ||
|
||
// 유저 아이디 | ||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "member_id", nullable = false) | ||
@OnDelete(action = OnDeleteAction.CASCADE) | ||
private MemberEntity member; | ||
|
||
|
||
} |
46 changes: 46 additions & 0 deletions
46
src/main/java/kr/hs/dgsw/SOPO_server_v2/domain/comment/entity/SubCommentEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package kr.hs.dgsw.SOPO_server_v2.domain.comment.entity; | ||
|
||
import jakarta.persistence.Entity; | ||
import jakarta.persistence.FetchType; | ||
import jakarta.persistence.GeneratedValue; | ||
import jakarta.persistence.GenerationType; | ||
import jakarta.persistence.Id; | ||
import jakarta.persistence.JoinColumn; | ||
import jakarta.persistence.ManyToOne; | ||
import jakarta.persistence.Table; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.member.entity.MemberEntity; | ||
import kr.hs.dgsw.SOPO_server_v2.global.common.entity.BaseTimeEntity; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import lombok.experimental.SuperBuilder; | ||
import org.hibernate.annotations.DynamicUpdate; | ||
import org.hibernate.annotations.OnDelete; | ||
import org.hibernate.annotations.OnDeleteAction; | ||
|
||
@Getter | ||
@Entity | ||
@Table(name = "tbl_sub_comment") | ||
@NoArgsConstructor | ||
@DynamicUpdate | ||
@SuperBuilder | ||
public class SubCommentEntity extends BaseTimeEntity { | ||
|
||
// 대댓글 아이디 | ||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long subCommentId; | ||
|
||
// 대댓글 내용 | ||
private String content; | ||
|
||
// 부모 댓글 | ||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "parent_id") | ||
private CommentEntity parent; | ||
|
||
// 유저 아이디 | ||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "member_id", nullable = false) | ||
@OnDelete(action = OnDeleteAction.CASCADE) | ||
private MemberEntity member; | ||
} |
53 changes: 53 additions & 0 deletions
53
src/main/java/kr/hs/dgsw/SOPO_server_v2/domain/contest/controller/ContestController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package kr.hs.dgsw.SOPO_server_v2.domain.contest.controller; | ||
|
||
import kr.hs.dgsw.SOPO_server_v2.domain.contest.dto.ContestLoadRes; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.contest.dto.ContestUpdateReq; | ||
import kr.hs.dgsw.SOPO_server_v2.domain.contest.service.ContestService; | ||
import kr.hs.dgsw.SOPO_server_v2.global.response.Response; | ||
import kr.hs.dgsw.SOPO_server_v2.global.response.ResponseData; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.web.bind.annotation.DeleteMapping; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.PatchMapping; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
import java.util.List; | ||
|
||
@RestController | ||
@RequestMapping("/contest") | ||
@RequiredArgsConstructor | ||
public class ContestController { | ||
private final ContestService contestService; | ||
|
||
@GetMapping("/all") | ||
public ResponseData<List<ContestLoadRes>> getContests() { | ||
return contestService.getContests(); | ||
} | ||
|
||
@PostMapping | ||
public ResponseData<Long> createContest() { | ||
return contestService.createContest(); | ||
} | ||
|
||
@GetMapping | ||
public ResponseData<ContestLoadRes> getContest(Long contestId) { | ||
return contestService.findOneContest(contestId); | ||
} | ||
|
||
@PatchMapping | ||
public Response loadContest(Long contestId, ContestUpdateReq updateReq) { | ||
return contestService.loadContest(contestId, updateReq); | ||
} | ||
|
||
@DeleteMapping | ||
public Response deleteContest(Long contestId) { | ||
return contestService.deleteContest(contestId); | ||
} | ||
|
||
@PatchMapping("/state") | ||
public Response changeContestState(Long contestId) { | ||
return contestService.changeContestState(contestId); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 9 additions & 0 deletions
9
src/main/java/kr/hs/dgsw/SOPO_server_v2/domain/contest/repository/ContestRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package kr.hs.dgsw.SOPO_server_v2.domain.contest.repository; | ||
|
||
import kr.hs.dgsw.SOPO_server_v2.domain.contest.entity.ContestEntity; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.stereotype.Repository; | ||
|
||
@Repository | ||
public interface ContestRepository extends JpaRepository<ContestEntity, Long> { | ||
} |
Oops, something went wrong.