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) {