@@ -114,32 +198,18 @@ function Detail(){
{/* */}
diff --git a/egovframe-template-simple-react-contribution/src/pages/support/List.jsx b/egovframe-template-simple-react-contribution/src/pages/support/List.jsx
index edbaa18..6c07025 100644
--- a/egovframe-template-simple-react-contribution/src/pages/support/List.jsx
+++ b/egovframe-template-simple-react-contribution/src/pages/support/List.jsx
@@ -42,9 +42,9 @@ function List(){
handleClose();
const params = EgovNet.convParams(searchCondition);
- console.groupCollapsed("EgovAdminPostList.retrieveList()");
+ console.groupCollapsed("EgovUserPostList.retrieveList()");
- const retrieveListURL = '/admin/boards/posts/post-list' + params;
+ const retrieveListURL = '/user/boards/posts/post-list' + params;
const requestOptions = {
method: "GET",
@@ -84,7 +84,7 @@ function List(){
mutListTag.push(
{resp.result.resultCnt - (resp.result.paginationInfo.pageIndex -1) * resp.result.paginationInfo.rowCnt - index}
-
{item?.bbsContTitle}
+
{Detail(item)}}>{item?.bbsContTitle}
{item?.frstCrtId}
{item?.bbsReadCnt}
{formattedDate}
@@ -99,7 +99,7 @@ function List(){
console.log("err response : ", resp);
}
);
- console.groupEnd("EgovAdminPostList.retrieveList()");
+ console.groupEnd("EgovUserPostList.retrieveList()");
},[listTag]);
useEffect(() => {
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 cf27d3d..3f73120 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
@@ -2,10 +2,9 @@ package com.dbnt.kcscbackend.admin.boards;
import com.dbnt.kcscbackend.admin.boards.entity.TnBbs;
import com.dbnt.kcscbackend.admin.boards.entity.TnBbsContents;
+import com.dbnt.kcscbackend.admin.boards.entity.TnBbsRepl;
import com.dbnt.kcscbackend.admin.boards.service.AdminBoardsService;
-import com.dbnt.kcscbackend.admin.config.entity.TcMenu;
import com.dbnt.kcscbackend.auth.entity.LoginVO;
-import com.dbnt.kcscbackend.commonCode.CommonCodeController;
import com.dbnt.kcscbackend.commonCode.service.CommonCodeService;
import com.dbnt.kcscbackend.config.common.BaseController;
import com.dbnt.kcscbackend.config.common.ResponseCode;
@@ -26,7 +25,6 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbsRepl.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbsRepl.java
new file mode 100644
index 0000000..550c59b
--- /dev/null
+++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/entity/TnBbsRepl.java
@@ -0,0 +1,57 @@
+package com.dbnt.kcscbackend.admin.boards.entity;
+import com.dbnt.kcscbackend.config.common.BoardParams;
+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_repl")
+public class TnBbsRepl extends BoardParams {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "repl_seq")
+ private Long replSeq;
+
+ @Column(name = "bbs_cont_seq", nullable = false)
+ private Long bbsContSeq;
+
+ @Column(name = "repl_cont", nullable = false, length = 550)
+ private String replCont;
+
+ @Column(name = "repl_cont_parent")
+ private Long replContParent;
+
+ @Column(name = "repl_cont_level", nullable = false)
+ private Long replContLevel;
+
+ @Column(name = "ip_address", nullable = false, length = 50)
+ private String ipAddress;
+
+ @Column(name = "frst_crt_id", nullable = false, length = 50)
+ private String frstCrtId;
+
+ @Column(name = "frst_crt_dt", nullable = false)
+ private LocalDateTime frstCrtDt;
+
+ @Column(name = "last_chg_id", length = 50)
+ private String lastChgId;
+
+ @Column(name = "last_chg_dt")
+ private LocalDateTime lastChgDt;
+
+ @Column(name = "use_yn", nullable = false, columnDefinition = "bpchar(1)")
+ private String useYn;
+
+ @Column(name = "old_seq")
+ private Long oldSeq;
+}
\ No newline at end of file
diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsReplRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsReplRepository.java
new file mode 100644
index 0000000..d42d72d
--- /dev/null
+++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsReplRepository.java
@@ -0,0 +1,14 @@
+package com.dbnt.kcscbackend.admin.boards.repository;
+
+import com.dbnt.kcscbackend.admin.boards.entity.TnBbs;
+import com.dbnt.kcscbackend.admin.boards.entity.TnBbsRepl;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface TnBbsReplRepository extends JpaRepository
{
+
+ List findByBbsContSeq(Long bbsContSeq);
+ Long countByBbsContSeq(Long bbsContSeq);
+}
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 9bd1902..69ab231 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,11 +2,13 @@ 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.entity.TnBbsRepl;
import com.dbnt.kcscbackend.admin.boards.mapper.AdminBoardsMapper;
import com.dbnt.kcscbackend.admin.boards.repository.TnBbsContentsRepository;
+import com.dbnt.kcscbackend.admin.boards.repository.TnBbsReplRepository;
import com.dbnt.kcscbackend.admin.boards.repository.TnBbsRepository;
-import com.dbnt.kcscbackend.admin.config.entity.TcMenu;
import com.dbnt.kcscbackend.auth.entity.LoginVO;
+import com.dbnt.kcscbackend.config.util.ClientUtils;
import com.dbnt.kcscbackend.file.entity.TnAttachFile;
import com.dbnt.kcscbackend.file.service.FileService;
import lombok.RequiredArgsConstructor;
@@ -26,6 +28,7 @@ public class AdminBoardsService extends EgovAbstractServiceImpl {
private final TnBbsRepository tnBbsRepository;
private final TnBbsContentsRepository tnBbsContentsRepository;
+ private final TnBbsReplRepository tnBbsReplRepository;
private final AdminBoardsMapper adminBoardsMapper;
private final FileService fileService;
diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/user/UserBoardsController.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/user/UserBoardsController.java
new file mode 100644
index 0000000..25d9b55
--- /dev/null
+++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/user/UserBoardsController.java
@@ -0,0 +1,228 @@
+package com.dbnt.kcscbackend.user;
+
+import com.dbnt.kcscbackend.admin.boards.entity.TnBbsContents;
+import com.dbnt.kcscbackend.admin.boards.entity.TnBbsRepl;
+import com.dbnt.kcscbackend.admin.boards.service.AdminBoardsService;
+import com.dbnt.kcscbackend.auth.entity.LoginVO;
+import com.dbnt.kcscbackend.commonCode.service.CommonCodeService;
+import com.dbnt.kcscbackend.config.common.BaseController;
+import com.dbnt.kcscbackend.config.common.ResponseCode;
+import com.dbnt.kcscbackend.config.common.ResultVO;
+import com.dbnt.kcscbackend.config.util.ClientUtils;
+import com.dbnt.kcscbackend.file.entity.TnAttachFile;
+import com.dbnt.kcscbackend.file.service.FileService;
+import com.dbnt.kcscbackend.user.service.UserBoardsService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.MediaType;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.validation.Errors;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/user/boards")
+@Tag(name = "UserBoardsController", description = "사이트관리 게시판현황")
+public class UserBoardsController extends BaseController {
+
+ private final AdminBoardsService adminBoardsService;
+ private final UserBoardsService userBoardsService;
+ private final CommonCodeService commonCodeService;
+ private final FileService fileService;
+
+ /* ---- 게시물관리 ----- */
+ @Operation(
+ summary = "게시물 목록 조회",
+ description = "게시물 목록 조회",
+ tags = {"UserBoardsController"}
+ )
+ @ApiResponses(value = {
+ @ApiResponse(responseCode = "200", description = "조회 성공"),
+ @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
+ })
+ @RequestMapping(method = RequestMethod.GET, value = "/posts/post-list", consumes = MediaType.APPLICATION_JSON_VALUE)
+ public ResultVO getPostList(TnBbsContents tnBbsContents) throws Exception {
+ ResultVO resultVO = new ResultVO();
+ tnBbsContents.setQueryInfo();
+ Map resultMap = adminBoardsService.selectPostList(tnBbsContents);
+ resultMap.put("categoryList", adminBoardsService.selectBoardList());
+ int totCnt = Integer.parseInt((String)resultMap.get("resultCnt"));
+ tnBbsContents.setContentCnt(totCnt);
+ tnBbsContents.setPaginationInfo();
+ resultMap.put("paginationInfo", tnBbsContents);
+ resultVO.setResult(resultMap);
+ return resultVO;
+ }
+
+ @Operation(
+ summary = "게시물 카테고리 셀렉트박스 옵션, 파일 목록 조회",
+ description = "게시물 카테고리 셀렉트박스 옵션, 파일 목록 조회",
+ tags = {"UserBoardsController"}
+ )
+ @ApiResponses(value = {
+ @ApiResponse(responseCode = "200", description = "조회 성공"),
+ @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
+ })
+ @RequestMapping(method = RequestMethod.POST, value = "/posts/get-category-and-file-list", consumes = MediaType.APPLICATION_JSON_VALUE)
+ public ResultVO getCategoryList(@RequestBody TnBbsContents tnBbsContents) throws Exception {
+ ResultVO resultVO = new ResultVO();
+ Map resultMap = new HashMap<>();
+
+ resultMap.put("categoryList", adminBoardsService.selectBoardList());
+ //첨부파일명을 가져온다.
+ List tnAttachFileList = fileService.findByFileGrpId(tnBbsContents.getFileGrpId());
+ System.out.println("@@@ fileGrpId : " + tnBbsContents.getFileGrpId());
+
+ if (tnAttachFileList != null) {
+ List