프로젝트

가전제품 대여 웹사이트 (세숫대여) - 로그인한 작성자로 기록

sejin2 2023. 10. 5. 14:07

FreeBoardMapper.java

@Select("select memberId "
        + "from Member "
        + "where memberNo = "
        + "(select memberNo "
        + "from FreeBoard "
        + "where freeBoardNo = #{ freeBoardNo })")
String getMemberId(@Param("freeBoardNo") int freeBoardNo);  // memberNo로 memberId 찾아오기

FreeBoardService.java

String getMemberId(int freeBoardNo);

FreeBoardServiceImpl.java

@Override 
public String getMemberId(int freeBoardNo) {
    String memberId = freeboardMapper.getMemberId(freeBoardNo);
    return memberId;
}

FreeBoardController.java 에서 게시물 조회 시 

@GetMapping(path= {"/freeboardlist"})
public String list(@RequestParam(defaultValue = "1") int pageNo, Model model) { 

    int pageSize = 10;
    int pagerSize = 5;
    String linkUrl = "freeboardlist";
    int dataCount = freeBoardService.getFreeBoardCount();

    int from = (pageNo -1) * pageSize;
    List<FreeBoardDto> freeBoardList = freeBoardService.listFreeBoardByPage(from, pageSize);

    for (FreeBoardDto freeboard : freeBoardList ) {  // 작성자 조회 // 기존 코드에 추가한 부분
        String memberId = freeBoardService.getMemberId(freeboard.getFreeBoardNo());
        freeboard.setMemberId(memberId);
    } 

    ThePager pager = new ThePager(dataCount, pageNo, pageSize, pagerSize, linkUrl);

    model.addAttribute("freeBoardList", freeBoardList);
    model.addAttribute("pager", pager);
    model.addAttribute("pageNo", pageNo);

    return "freeboard/freeboardlist";
}

FreeBoardController.java 에서 게시물 작성 시

@PostMapping(path= {"/freeboardwrite"})
	
    public String writeFreeBoard(FreeBoardDto freeboard, MultipartFile attach, 
                                 HttpServletRequest req) throws Exception {  
    // 파일업로드 처리
    String uploadAttachFile = req.getServletContext().getRealPath("/resources/upload/");
    ArrayList<FreeBoardAttachDto> freeBoardAttachList = handleUploadFile(attach, uploadAttachFile);
    freeboard.setFreeBoardAttachList(freeBoardAttachList);

    HttpSession session = req.getSession();   // 작성자로 글 등록하기   // 기존 코드에 추가한 부분
    int memberNo = ( (MemberDto) session.getAttribute("loginuser")).getMemberNo();
    freeboard.setMemberNo(memberNo);  

    freeBoardService.writeFreeBoard(freeboard);

    return String.format("redirect:freeboardlist?memberNo=%d", freeboard.getMemberNo()); 
}

FreeBoardController.java 에서 게시물 상세 조회 시

@GetMapping(path = {"/freeboarddetail"})
public String detail(@RequestParam(defaultValue = "-1") int freeBoardNo,
                     @RequestParam(defaultValue = "-1") int pageNo,
                     Model model) {

    if(freeBoardNo == -1 || pageNo == -1) {  // 주소창에 detail로 바로 접근하지 못하게 함 
        return "redirect:freeboardlist";
    } 
    FreeBoardDto freeboard = freeBoardService.findFreeBoardByFreeBoardNo(freeBoardNo);

    if(freeboard == null) { // 조회된 글이 없을때 리스트로  
        return "redirect:freeboardlist";
    }

     String memberId = freeBoardService.getMemberId(freeboard.getFreeBoardNo()); // 기존 코드에 추가한 부분
     freeboard.setMemberId(memberId); 

    model.addAttribute("freeBoard", freeboard);
    model.addAttribute("pageNo", pageNo);

    freeBoardService.updateFreeBoardviewCount(freeBoardNo);  // 조회수 증가 

    return "freeboard/freeboarddetail";

}