diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx
index 1d4bf1b..935c2ca 100644
--- a/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx
+++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx
@@ -32,6 +32,7 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
const [bbsTypeList, setBbsTypeList] = useState([]);
const [roleList, setRoleList] = useState([]);
+ const [duplicateYn, setDuplicateYn] = useState("");
const retrieveList = useCallback(() => {
const retrieveListURL = '/admin/boards/mgt/get-option-list';
@@ -72,6 +73,20 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
function editBoard(e) {
e.preventDefault();
e.stopPropagation();
+
+ if (modeInfo.mode === CODE.MODE_CREATE) {
+ if (duplicateYn === "") {
+ alert("중복확인을 해주세요.");
+ return;
+ } else if (duplicateYn === "Y") {
+ alert("중복된 아이디 입니다.");
+ return;
+ } else if (duplicateYn === "C") {
+ alert("중복확인을 다시 해주세요.");
+ return;
+ }
+ }
+
const form = e.target;
const info = {
bbsId: form.bbsId.value,
@@ -103,7 +118,7 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
} else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) {
console.log("토큰 갱신중.")
} else {
- alert(resp.result.resultMessage)
+ alert(resp.resultMessage);
}
}
)
@@ -133,6 +148,44 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
}
}
+ const handleInputChange = (e) => {
+ setDuplicateYn("C");
+ };
+
+ const handleCheckDuplicate = () => {
+ const bbsId = document.querySelector('[name="bbsId"]').value;
+ if (!bbsId.trim()) {
+ alert("게시판 ID를 입력해주세요.");
+ return;
+ }
+
+ const checkDuplicateURL = '/admin/boards/mgt/check-duplicate?bbsId=' + bbsId;
+
+ const requestOptions = {
+ method: "GET",
+ headers: {
+ 'Content-type': 'application/json',
+ }
+ }
+
+ EgovNet.requestFetch(checkDuplicateURL,
+ requestOptions,
+ (resp) => {
+ setDuplicateYn(resp.result.duplicateYn);
+ console.log("@@@ duplicateYn : " + JSON.stringify(resp.result.duplicateYn));
+ if (resp.result.duplicateYn === "Y") {
+ alert("중복된 아이디 입니다.");
+ }
+ else if (resp.result.duplicateYn === "N") {
+ alert("사용 가능한 아이디 입니다.");
+ }
+ },
+ function (resp) {
+ console.log("err response : ", resp);
+ }
+ );
+ }
+
console.log("------------------------------EgovAdminBoardEdit [End]");
console.groupEnd("EgovAdminBoardEdit");
@@ -157,7 +210,12 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
필수
+ defaultValue={props?.bbsId} readOnly={modeInfo.mode === CODE.MODE_MODIFY} onChange={handleInputChange}/>
+
+
+ {modeInfo.mode !== CODE.MODE_MODIFY && (
+
+ )}
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 2ae995b..b851ff6 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
@@ -83,6 +83,25 @@ public class AdminBoardsController extends BaseController {
return resultVO;
}
+ @Operation(
+ summary = "게시판 ID 중복 확인",
+ description = "게시판 ID 중복 확인",
+ tags = {"AdminBoardsController"}
+ )
+ @ApiResponses(value = {
+ @ApiResponse(responseCode = "200", description = "조회 성공"),
+ @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
+ })
+ @RequestMapping(method = RequestMethod.GET, value = "/mgt/check-duplicate", consumes = MediaType.APPLICATION_JSON_VALUE)
+ public ResultVO checkDuplicate(String bbsId) throws Exception {
+ ResultVO resultVO = new ResultVO();
+ Map resultMap = new HashMap<>();
+
+ resultMap.put("duplicateYn", adminBoardsService.checkDuplicate(bbsId));
+ resultVO.setResult(resultMap);
+ return resultVO;
+ }
+
@Operation(
summary = "게시판 저장",
description = "게시판 저장",
diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsRepository.java
index b700de4..393b11d 100644
--- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsRepository.java
+++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/boards/repository/TnBbsRepository.java
@@ -4,9 +4,12 @@ import com.dbnt.kcscbackend.admin.boards.entity.TnBbs;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
+import java.util.Optional;
public interface TnBbsRepository extends JpaRepository {
List findAllByOrderByBbsSeqDesc();
+ Optional findByBbsId(String bbsId);
+
}
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 1a60c3f..9bd1902 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
@@ -33,6 +33,13 @@ public class AdminBoardsService extends EgovAbstractServiceImpl {
return tnBbsRepository.findAllByOrderByBbsSeqDesc();
}
+ public String checkDuplicate(String bbsId) {
+ Optional result = tnBbsRepository.findByBbsId(bbsId);
+ String duplicateYn = result.isPresent() ? "Y" : "N";
+ System.out.println("@@@ duplicateYn : " + duplicateYn);
+ return duplicateYn;
+ }
+
@Transactional
public void saveBoard(TnBbs bbs, String userId) {
if (bbs.getBbsSeq() == null) {