From a357df161df55861fa9927133fb520d125d33bbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EB=AF=BC=ED=98=95?= Date: Tue, 20 Feb 2024 15:06:42 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EB=AC=BC=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=EC=9E=91=EC=97=85=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/admin/board/AdminPostMgtList.jsx | 199 ++++++++++++++++++ .../admin/boards/AdminBoardsController.java | 21 ++ .../admin/boards/entity/TnBbsContents.java | 83 ++++++++ .../repository/TnBbsContentsRepository.java | 8 + .../boards/service/AdminBoardsService.java | 7 + 5 files changed, 318 insertions(+) create mode 100644 egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx create mode 100644 kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbsContents.java create mode 100644 kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsContentsRepository.java diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx new file mode 100644 index 0000000..cb7bf47 --- /dev/null +++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx @@ -0,0 +1,199 @@ +import React, { useState, useEffect, useCallback, useRef } from 'react'; +import { Link, useLocation } from 'react-router-dom'; + +import * as EgovNet from 'api/egovFetch'; +import URL from 'constants/url'; + +import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin'; +import EgovPaging from 'components/EgovPaging'; + +import { itemIdxByPage } from 'utils/calc'; + +function EgovAdminBoardList(props) { + console.group("EgovAdminBoardList"); + console.log("[Start] EgovAdminBoardList ------------------------------"); + console.log("EgovAdminBoardList [props] : ", props); + + const location = useLocation(); + console.log("EgovAdminBoardList [location] : ", location); + + // eslint-disable-next-line no-unused-vars + const [searchCondition, setSearchCondition] = useState(location.state?.searchCondition || { pageIndex: 1, searchCnd: '0', searchWrd: '' });// 기존 조회에서 접근 했을 시 || 신규로 접근 했을 시 + const [paginationInfo, setPaginationInfo] = useState({}); + + const cndRef = useRef(); + const wrdRef = useRef(); + + const [listTag, setListTag] = useState([]); + + const retrieveList = useCallback((srchCnd) => { + console.groupCollapsed("EgovAdminBoardList.retrieveList()"); + + const retrieveListURL = '/cop/bbs/selectBBSMasterInfsAPI.do'; + + const requestOptions = { + method: "POST", + headers: { + 'Content-type': 'application/json', + + }, + body: JSON.stringify(srchCnd) + } + + EgovNet.requestFetch(retrieveListURL, + requestOptions, + (resp) => { + setPaginationInfo(resp.result.paginationInfo); + + let mutListTag = []; + listTag.push(

검색된 결과가 없습니다.

); // 게시판 목록 초기값 + + const resultCnt = parseInt(resp.result.resultCnt); + const currentPageNo = resp.result.paginationInfo.currentPageNo; + const pageSize = resp.result.paginationInfo.pageSize; + + // 리스트 항목 구성 + resp.result.resultList.forEach(function (item, index) { + if (index === 0) mutListTag = []; // 목록 초기화 + const listIdx = itemIdxByPage(resultCnt , currentPageNo, pageSize, index); + + mutListTag.push( + +
{listIdx}
+
{item.bbsNm}
+
{item.bbsTyCodeNm}
+
{item.bbsAttrbCodeNm}
+
{item.frstRegisterPnttm}
+
{item.useAt === "Y" ? "사용" : "사용안함"}
+ + ); + }); + + setListTag(mutListTag); + }, + function (resp) { + console.log("err response : ", resp); + } + ); + console.groupEnd("EgovAdminBoardList.retrieveList()"); + },[listTag, searchCondition]); + + useEffect(() => { + retrieveList(searchCondition); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + console.log("------------------------------EgovAdminBoardList [End]"); + console.groupEnd("EgovAdminBoardList"); + return ( +
+
+ {/* */} +
+
    +
  • Home
  • +
  • 사이트관리
  • +
  • 게시판생성 관리
  • +
+
+ {/* */} + +
+ {/* */} + + {/* */} + +
+ {/* */} + +
+

사이트관리

+
+ +

게시판생성 관리

+ + {/* */} +
+
    +
  • + 검색유형선택 + +
  • +
  • + 검색어 + + { + wrdRef.current.value = e.target.value; + }} + /> + + +
  • +
  • + 등록 +
  • +
+
+ {/* */} + + {/* */} +
+
+ 번호 + 게시판명 + 게시판유형 + 게시판속성 + 생성일 + 사용여부 +
+
+ {listTag} +
+
+ {/* */} + +
+ {/* */} + { + retrieveList({ ...searchCondition, pageIndex: passedPage, searchCnd: cndRef.current.value, searchWrd: wrdRef.current.value }) + }} /> + {/* */} +
+ + {/* */} +
+
+
+
+ + + + + + + + + ); +} + +export default EgovAdminBoardList; \ No newline at end of file diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/AdminBoardsController.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/AdminBoardsController.java index 67ece4a..d3769ed 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/AdminBoardsController.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/AdminBoardsController.java @@ -33,6 +33,7 @@ public class AdminBoardsController extends BaseController { private final AdminBoardsService adminBoardsService; + /* ---- 게시판관리 ----- */ @Operation( summary = "게시판 목록 조회", description = "게시판 목록 조회", @@ -109,4 +110,24 @@ public class AdminBoardsController extends BaseController { } return resultVO; } + + /* ---- 게시물관리 ----- */ + @Operation( + summary = "게시물 목록 조회", + description = "게시물 목록 조회", + tags = {"AdminBoardsController"} + ) + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "조회 성공"), + @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") + }) + @RequestMapping(method = RequestMethod.GET, value = "/post-list", consumes = MediaType.APPLICATION_JSON_VALUE) + public ResultVO getPostList() throws Exception { + ResultVO resultVO = new ResultVO(); + Map resultMap = new HashMap<>(); + + resultMap.put("boardList", adminBoardsService.selectBoardList()); + resultVO.setResult(resultMap); + return resultVO; + } } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbsContents.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbsContents.java new file mode 100644 index 0000000..e7cb424 --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbsContents.java @@ -0,0 +1,83 @@ +package com.dbnt.kcscbackend.admin.boards.entity; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.time.LocalDateTime; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "tn_bbs_contents") +public class TnBbsContents { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "bbs_cont_seq") + private Integer bbsContSeq; + + @Column(name = "bbs_seq", nullable = false) + private Integer bbsSeq; + + @Column(name = "bbs_cont_title") + private String bbsContTitle; + + @Column(name = "bbs_contents", columnDefinition = "TEXT") + private String bbsContents; + + @Column(name = "bbs_cont_seq_group") + private Integer bbsContSeqGroup; + + @Column(name = "bbs_cont_seq_parent") + private Integer bbsContSeqParent; + + @Column(name = "bbs_cont_level", nullable = false) + private Integer bbsContLevel; + + @Column(name = "bbs_cont_sort") + private Integer bbsContSort; + + @Column(name = "file_grp_id") + private String fileGrpId; + + @Column(name = "bbs_read_cnt", nullable = false) + private Integer bbsReadCnt; + + @Column(name = "fixed_yn", nullable = false) + private String fixedYn; + + @Column(name = "secret_yn", nullable = false) + private String secretYn; + + @Column(name = "secret_pwd") + private String secretPwd; + + @Column(name = "doc_info_seq") + private Integer docInfoSeq; + + @Column(name = "ip_address", nullable = false) + private String ipAddress; + + @Column(name = "frst_crt_id", nullable = false) + private String frstCrtId; + + @Column(name = "frst_crt_dt", nullable = false) + private LocalDateTime frstCrtDt; + + @Column(name = "last_chg_id") + private String lastChgId; + + @Column(name = "last_chg_dt") + private LocalDateTime lastChgDt; + + @Column(name = "use_yn", nullable = false) + private String useYn; + + @Column(name = "old_seq") + private Integer oldSeq; +} \ No newline at end of file diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsContentsRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsContentsRepository.java new file mode 100644 index 0000000..d10ad7d --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsContentsRepository.java @@ -0,0 +1,8 @@ +package com.dbnt.kcscbackend.admin.boards.repository; + +import com.dbnt.kcscbackend.admin.boards.entity.TnBbsContents; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TnBbsContentsRepository extends JpaRepository { + +} diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/service/AdminBoardsService.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/service/AdminBoardsService.java index f20dd4f..48a4bca 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/service/AdminBoardsService.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/service/AdminBoardsService.java @@ -1,6 +1,8 @@ package com.dbnt.kcscbackend.admin.boards.service; import com.dbnt.kcscbackend.admin.boards.entity.TnBbs; +import com.dbnt.kcscbackend.admin.boards.entity.TnBbsContents; +import com.dbnt.kcscbackend.admin.boards.repository.TnBbsContentsRepository; import com.dbnt.kcscbackend.admin.boards.repository.TnBbsRepository; import com.dbnt.kcscbackend.admin.config.entity.TcMenu; import lombok.RequiredArgsConstructor; @@ -17,6 +19,7 @@ import java.util.Optional; public class AdminBoardsService extends EgovAbstractServiceImpl { private final TnBbsRepository tnBbsRepository; + private final TnBbsContentsRepository tnBbsContentsRepository; public List selectBoardList() { return tnBbsRepository.findAllByOrderByBbsSeqDesc(); @@ -61,4 +64,8 @@ public class AdminBoardsService extends EgovAbstractServiceImpl { } } + public List selectPostList() { + return tnBbsContentsRepository.findAll(); + } + }