Compare commits

...

2 Commits

4 changed files with 89 additions and 2 deletions

View File

@ -32,6 +32,7 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
const [bbsTypeList, setBbsTypeList] = useState([]); const [bbsTypeList, setBbsTypeList] = useState([]);
const [roleList, setRoleList] = useState([]); const [roleList, setRoleList] = useState([]);
const [duplicateYn, setDuplicateYn] = useState("");
const retrieveList = useCallback(() => { const retrieveList = useCallback(() => {
const retrieveListURL = '/admin/boards/mgt/get-option-list'; const retrieveListURL = '/admin/boards/mgt/get-option-list';
@ -72,6 +73,20 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
function editBoard(e) { function editBoard(e) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); 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 form = e.target;
const info = { const info = {
bbsId: form.bbsId.value, bbsId: form.bbsId.value,
@ -103,7 +118,7 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
} else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) { } else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) {
console.log("토큰 갱신중.") console.log("토큰 갱신중.")
} else { } 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.log("------------------------------EgovAdminBoardEdit [End]");
console.groupEnd("EgovAdminBoardEdit"); console.groupEnd("EgovAdminBoardEdit");
@ -157,7 +210,12 @@ function EgovAdminBoardEdit({props, reloadFunction}) {
<dt><label htmlFor="bbsId">게시판 ID</label><span className="req">필수</span></dt> <dt><label htmlFor="bbsId">게시판 ID</label><span className="req">필수</span></dt>
<dd> <dd>
<Form.Control className="f_input2 w_full" type="text" name="bbsId" placeholder="게시판 ID" required <Form.Control className="f_input2 w_full" type="text" name="bbsId" placeholder="게시판 ID" required
defaultValue={props?.bbsId} readOnly={props!==undefined}/> defaultValue={props?.bbsId} readOnly={modeInfo.mode === CODE.MODE_MODIFY} onChange={handleInputChange}/>
</dd>
<dd>
{modeInfo.mode !== CODE.MODE_MODIFY && (
<button type="button" className="btn btn_skyblue_h46 w_100" onClick={handleCheckDuplicate}>중복확인</button>
)}
</dd> </dd>
</dl> </dl>
<dl> <dl>

View File

@ -83,6 +83,25 @@ public class AdminBoardsController extends BaseController {
return resultVO; 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<String, Object> resultMap = new HashMap<>();
resultMap.put("duplicateYn", adminBoardsService.checkDuplicate(bbsId));
resultVO.setResult(resultMap);
return resultVO;
}
@Operation( @Operation(
summary = "게시판 저장", summary = "게시판 저장",
description = "게시판 저장", description = "게시판 저장",

View File

@ -4,9 +4,12 @@ import com.dbnt.kcscbackend.admin.boards.entity.TnBbs;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List; import java.util.List;
import java.util.Optional;
public interface TnBbsRepository extends JpaRepository<TnBbs, Long> { public interface TnBbsRepository extends JpaRepository<TnBbs, Long> {
List<TnBbs> findAllByOrderByBbsSeqDesc(); List<TnBbs> findAllByOrderByBbsSeqDesc();
Optional<TnBbs> findByBbsId(String bbsId);
} }

View File

@ -33,6 +33,13 @@ public class AdminBoardsService extends EgovAbstractServiceImpl {
return tnBbsRepository.findAllByOrderByBbsSeqDesc(); return tnBbsRepository.findAllByOrderByBbsSeqDesc();
} }
public String checkDuplicate(String bbsId) {
Optional<TnBbs> result = tnBbsRepository.findByBbsId(bbsId);
String duplicateYn = result.isPresent() ? "Y" : "N";
System.out.println("@@@ duplicateYn : " + duplicateYn);
return duplicateYn;
}
@Transactional @Transactional
public void saveBoard(TnBbs bbs, String userId) { public void saveBoard(TnBbs bbs, String userId) {
if (bbs.getBbsSeq() == null) { if (bbs.getBbsSeq() == null) {