From b4d0596992123c229dc532a39752642f917aa118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EB=AF=BC=ED=98=95?= Date: Mon, 8 Apr 2024 15:32:05 +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=EA=B2=8C=EC=8B=9C=ED=8C=90=EC=9C=A0=ED=98=95,=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=EC=96=B4,=20=ED=8E=98=EC=9D=B4=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/admin/board/AdminPostMgtList.jsx | 61 ++++++++----------- .../admin/boards/AdminBoardsController.java | 10 ++- .../admin/boards/entity/TnBbsContents.java | 3 +- .../boards/mapper/AdminBoardsMapper.java | 14 +++++ .../boards/service/AdminBoardsService.java | 13 ++-- .../mybatisMapper/AdminBoardsMapper.xml | 52 ++++++++++++++++ 6 files changed, 109 insertions(+), 44 deletions(-) create mode 100644 kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/mapper/AdminBoardsMapper.java create mode 100644 kcsc-back-end/src/main/resources/mybatisMapper/AdminBoardsMapper.xml 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 index 75cbf60..be33693 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx @@ -24,7 +24,7 @@ function AdminPostMgtList(props) { console.log("EgovAdminPostList [location] : ", location); // eslint-disable-next-line no-unused-vars - const [searchCondition, setSearchCondition] = useState(location.state?.searchCondition || { pageIndex: 1, searchCnd: '0', searchWrd: '' });// 기존 조회에서 접근 했을 시 || 신규로 접근 했을 시 + const [searchCondition, setSearchCondition] = useState(location.state?.searchCondition || { pageIndex: 1, searchCnd: '0', searchKeyword: '', bbsSeq:8 });// 기존 조회에서 접근 했을 시 || 신규로 접근 했을 시 const [paginationInfo, setPaginationInfo] = useState({}); const cndRef = useRef(); @@ -38,19 +38,19 @@ function AdminPostMgtList(props) { const handleClose = () => setShow(false); const handleShow = () => setShow(true); - const retrieveList = useCallback(() => { + const retrieveList = useCallback((searchCondition) => { handleClose(); + const params = EgovNet.convParams(searchCondition); console.groupCollapsed("EgovAdminPostList.retrieveList()"); - const retrieveListURL = '/admin/boards/post-list'; + const retrieveListURL = '/admin/boards/post-list' + params; const requestOptions = { method: "GET", headers: { 'Content-type': 'application/json', - - }, - body: JSON.stringify() + + } } EgovNet.requestFetch(retrieveListURL, @@ -60,27 +60,24 @@ function AdminPostMgtList(props) { setCategoryList(resp.result.categoryList); let mutListTag = []; - listTag.push(

검색된 결과가 없습니다.

); // 게시판 목록 초기값 + setListTag([]); - // 리스트 항목 구성 resp.result.postList.forEach(function (item, index) { - if (index === 0) mutListTag = []; // 목록 초기화 - const finalModifiedDate = item.lastChgDt ? item.lastChgDt : item.frstCrtDt; + const finalModifiedDate = item?.lastChgDt ? item?.lastChgDt : item?.frstCrtDt; const formattedDate = finalModifiedDate ? format(finalModifiedDate, "yyyy-MM-dd HH:mm") : ""; - mutListTag.push(
-
-
{item.bbsContTitle}
-
{item.frstCrtId}
+
{item?.bbsContSeq}
+
{item?.bbsContTitle}
+
{item?.frstCrtId}
{formattedDate}
-
{item.bbsReadCnt}
-
{item.fileGrpId}
+
{item?.bbsReadCnt}
+
{item?.fileGrpId}
); }); - + if(!mutListTag.length) mutListTag.push(

검색된 결과가 없습니다.

); // 게시판 목록 초기값 setListTag(mutListTag); }, function (resp) { @@ -88,15 +85,15 @@ function AdminPostMgtList(props) { } ); console.groupEnd("EgovAdminPostList.retrieveList()"); - },[listTag, searchCondition]); + },[listTag]); useEffect(() => { retrieveList(searchCondition); // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }, [searchCondition]); const handleSelectChange = (e) => { - + setSearchCondition({...searchCondition, bbsSeq: e.target.value}) } function editPost(item){ @@ -104,7 +101,7 @@ function AdminPostMgtList(props) { if(item != undefined) { item.mode = CODE.MODE_MODIFY; } - setModalBody() + setModalBody( retrieveList(searchCondition)}/>) } console.log("------------------------------EgovAdminPostList [End]"); @@ -139,12 +136,12 @@ function AdminPostMgtList(props) {
  • - 검색유형선택 + 게시판선택 @@ -152,15 +149,9 @@ function AdminPostMgtList(props) {
  • 검색어 - { - wrdRef.current.value = e.target.value; - }} - /> - + {setSearchCondition({...searchCondition, searchKeyword: e.target.value})}}/> +
@@ -170,7 +161,7 @@ function AdminPostMgtList(props) { {/* */}
- + 번호 제목 작성자 최종수정일 @@ -187,7 +178,7 @@ function AdminPostMgtList(props) {
{/* */} { - retrieveList({ ...searchCondition, pageIndex: passedPage, searchCnd: cndRef.current.value, searchWrd: wrdRef.current.value }) + retrieveList({ ...searchCondition, pageIndex: passedPage}) //, searchCnd: cndRef.current.value, searchKeyword: wrdRef.current.value }} /> {/* */}
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 1072a1f..dcb9a54 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 @@ -152,11 +152,15 @@ public class AdminBoardsController extends BaseController { @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") }) @RequestMapping(method = RequestMethod.GET, value = "/post-list", consumes = MediaType.APPLICATION_JSON_VALUE) - public ResultVO getPostList() throws Exception { + public ResultVO getPostList(TnBbsContents params) throws Exception { ResultVO resultVO = new ResultVO(); - Map resultMap = new HashMap<>(); + params.setQueryInfo(); + Map resultMap = adminBoardsService.selectPostList(params); resultMap.put("categoryList", adminBoardsService.selectBoardList()); - resultMap.put("postList", adminBoardsService.selectPostList()); + int totCnt = Integer.parseInt((String)resultMap.get("resultCnt")); + params.setContentCnt(totCnt); + params.setPaginationInfo(); + resultMap.put("paginationInfo", params); 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 index 42bd06c..f0a42e8 100644 --- 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 @@ -1,4 +1,5 @@ package com.dbnt.kcscbackend.admin.boards.entity; +import com.dbnt.kcscbackend.config.common.BoardParams; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -15,7 +16,7 @@ import java.time.LocalDateTime; @DynamicInsert @DynamicUpdate @Table(name = "tn_bbs_contents") -public class TnBbsContents { +public class TnBbsContents extends BoardParams { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "bbs_cont_seq") diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/mapper/AdminBoardsMapper.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/mapper/AdminBoardsMapper.java new file mode 100644 index 0000000..55b22ea --- /dev/null +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/mapper/AdminBoardsMapper.java @@ -0,0 +1,14 @@ +package com.dbnt.kcscbackend.admin.boards.mapper; + +import com.dbnt.kcscbackend.admin.boards.entity.TnBbsContents; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface AdminBoardsMapper { + + List selectPostList(TnBbsContents params); + + Integer selectPostListCnt(TnBbsContents params); +} 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 d8ba319..c65a8c8 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 @@ -2,6 +2,7 @@ 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.mapper.AdminBoardsMapper; import com.dbnt.kcscbackend.admin.boards.repository.TnBbsContentsRepository; import com.dbnt.kcscbackend.admin.boards.repository.TnBbsRepository; import com.dbnt.kcscbackend.admin.config.entity.TcMenu; @@ -17,9 +18,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; -import java.util.Optional; +import java.util.*; @Service @RequiredArgsConstructor @@ -27,6 +26,7 @@ public class AdminBoardsService extends EgovAbstractServiceImpl { private final TnBbsRepository tnBbsRepository; private final TnBbsContentsRepository tnBbsContentsRepository; + private final AdminBoardsMapper adminBoardsMapper; private final FileService fileService; public List selectBoardList() { @@ -70,8 +70,11 @@ public class AdminBoardsService extends EgovAbstractServiceImpl { } } - public List selectPostList() { - return tnBbsContentsRepository.findAll(); + public Map selectPostList(TnBbsContents params) { + Map resultMap = new HashMap<>(); + resultMap.put("resultCnt", String.valueOf(adminBoardsMapper.selectPostListCnt(params))); + resultMap.put("postList", adminBoardsMapper.selectPostList(params)); + return resultMap; } /** diff --git a/kcsc-back-end/src/main/resources/mybatisMapper/AdminBoardsMapper.xml b/kcsc-back-end/src/main/resources/mybatisMapper/AdminBoardsMapper.xml new file mode 100644 index 0000000..a65e26c --- /dev/null +++ b/kcsc-back-end/src/main/resources/mybatisMapper/AdminBoardsMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + and bbs_seq = #{bbsSeq} + + + and bbs_cont_title like '%'||#{searchKeyword}||'%' + + + + \ No newline at end of file