-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathBoardController.java
More file actions
87 lines (75 loc) · 3.33 KB
/
BoardController.java
File metadata and controls
87 lines (75 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package com.study.joiner.web;
import com.study.joiner.config.auth.LoginUser;
import com.study.joiner.config.auth.dto.SessionUser;
import com.study.joiner.domain.user.Board;
import com.study.joiner.domain.user.SocialUser;
import com.study.joiner.repository.BoardRepository;
import com.study.joiner.repository.UserRepository;
import com.study.joiner.service.BoardService;
import com.study.joiner.web.dto.BoardDto;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.NoSuchElementException;
@RequiredArgsConstructor
@Controller
@Slf4j
public class BoardController {
private final BoardService boardService;
private final UserRepository userRepository;
private final BoardRepository boardRepository;
// 글 목록
@GetMapping("/list")
public String index(@LoginUser SessionUser user, Model model,
@RequestParam(required = false) String keyword,
@PageableDefault(sort = "createdDate", direction = Sort.Direction.DESC) Pageable pageable) {
SocialUser socialUser = userRepository.findById(user.getId()).orElseThrow(() -> new NoSuchElementException("사용자가 존재하지 않습니다."));
Page<Board> paging;
paging = keyword == null ? boardService.getList(pageable) : boardService.getSearchList(pageable, keyword);
model.addAttribute("boards", socialUser.getBoardList());
model.addAttribute("user", user);
model.addAttribute("paging", paging);
return "view/list";
}
// 글 작성 -- 완
@GetMapping("/user/write")
public String userBoardWrite(Model model) {
model.addAttribute("board", new BoardDto());
return "view/board";
}
// 글 작성 처리 -- 완
@PostMapping("/user/write")
public String userBoardSave(@LoginUser SessionUser user, @ModelAttribute BoardDto boardDto) {
SocialUser socialUser = userRepository.findByEmail(user.getEmail()).orElseThrow();
boardService.addBoard(socialUser, boardDto);
return "redirect:/";
}
// 글 상세 정보 -- 완
@GetMapping("/detail/{id}")
public String detail(@PathVariable Long id, @LoginUser SessionUser user, Model model) {
BoardDto boardDto = boardService.getOtherUserBoard(id);
model.addAttribute("user", user);
model.addAttribute("board", boardDto);
return "view/detail";
}
// 글 수정 처리
@GetMapping("/edit/{id}")
public String userBoardUpdate(@PathVariable Long id, @LoginUser SessionUser user, @ModelAttribute BoardDto boardDto) {
SocialUser socialUser = userRepository.findByEmailFetchBL(user.getEmail()).orElseThrow();
log.info("boardDto = {}", boardDto);
boardService.updateBoard(id, socialUser, boardDto);
return "view/detail";
}
// 글 삭제 -- 완
@DeleteMapping("/delete/{id}")
public String userBoardDelete(@PathVariable Long id, @LoginUser SessionUser user) {
boardService.deleteBoard(id, user.getEmail());
return "redirect:/";
}
}