댓글 삭제 작업중

thkim
유민형 2024-07-24 17:59:58 +09:00
parent ff761d4385
commit aa3f52b7cf
3 changed files with 71 additions and 5 deletions

View File

@ -34,6 +34,7 @@ function Detail(){
}; };
const retrieveList = useCallback(() => { const retrieveList = useCallback(() => {
console.log("@@@ retrieveList 호출됨");
const retrieveListURL = '/user/boards/reply/reply-list?bbsContSeq=' + bbsContSeq; const retrieveListURL = '/user/boards/reply/reply-list?bbsContSeq=' + bbsContSeq;
const requestOptions = { const requestOptions = {
@ -49,13 +50,13 @@ function Detail(){
let mutListTag = []; let mutListTag = [];
setListTag([]); setListTag([]);
resp.result.replyList.forEach(function (item) { resp.result.replyList.forEach(function (item) {
const finalModifiedDate = item?.lastChgDt ? item?.lastChgDt : item?.frstCrtDt; const finalModifiedDate = item?.lastChgDt || item?.frstCrtDt;
const formattedDate = finalModifiedDate ? format(finalModifiedDate, "yyyy-MM-dd HH:mm:ss") : ""; const formattedDate = finalModifiedDate ? format(finalModifiedDate, "yyyy-MM-dd HH:mm:ss") : "";
mutListTag.push( mutListTag.push(
<li> <li key={item.replSeq}>
<span>{item?.frstCrtId}, {formattedDate}</span> <span>{item?.frstCrtId}, {formattedDate}</span>
{item?.replCont} {item?.replCont}
<Link to="#" className="btn delete">삭제</Link> <Link to="#" className="btn delete" onClick={() => deleteReply(item.replSeq)}>삭제</Link>
</li> </li>
); );
}); });
@ -66,7 +67,7 @@ function Detail(){
console.log("err response : ", resp); console.log("err response : ", resp);
} }
); );
},[]); },[bbsContSeq]);
useEffect(() => { useEffect(() => {
retrieveList(); retrieveList();
@ -81,7 +82,7 @@ function Detail(){
editReply(e); editReply(e);
}; };
function editReply(e) { const editReply = (e) => {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
@ -113,6 +114,33 @@ function Detail(){
) )
} }
const deleteReply = (replSeq) => {
if (window.confirm("삭제하시겠습니까?")) {
EgovNet.requestFetch(
'/user/boards/reply/reply-mgt',
{
method: "DELETE",
headers: {
'Content-type': 'application/json'
},
body: JSON.stringify({replSeq})
},
(resp) => {
if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) {
console.log("@@@ 삭제 성공, retrieveList 호출");
retrieveList();
} else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) {
console.log("토큰 갱신중.")
} else {
alert(resp.result.resultMessage)
}
}
)
}
}
return ( return (
<div className="container"> <div className="container">
<div className="c_wrap"> <div className="c_wrap">

View File

@ -225,4 +225,31 @@ public class UserBoardsController extends BaseController {
return resultVO; return resultVO;
} }
@Operation(
summary = "댓글 삭제",
description = "댓글 삭제",
tags = {"AdminBoardsController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "삭제 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@RequestMapping(method = RequestMethod.DELETE, value = "/reply/reply-mgt")
public ResultVO deleteReplyMgt(@RequestBody TnBbsRepl tnBbsRepl, HttpServletRequest request, @AuthenticationPrincipal LoginVO user) {
ResultVO resultVO = new ResultVO();
if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
} else {
tnBbsRepl.setIpAddress(ClientUtils.getRemoteIP(request));
String result = userBoardsService.deleteReply(tnBbsRepl);
if (result == null) {
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
} else if (result.equals("notFind")) {
resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode());
resultVO.setResultMessage("대상이 존재하지 않습니다.");
}
}
return resultVO;
}
} }

View File

@ -50,4 +50,15 @@ public class UserBoardsService extends EgovAbstractServiceImpl {
tnBbsReplRepository.save(tnBbsRepl); tnBbsReplRepository.save(tnBbsRepl);
} }
@Transactional
public String deleteReply(TnBbsRepl tnBbsRepl) {
TnBbsRepl savedReply = tnBbsReplRepository.findById(tnBbsRepl.getReplSeq()).orElse(null);
if (savedReply == null) {
return "notFind";
} else {
tnBbsReplRepository.deleteById(tnBbsRepl.getReplSeq());
return null;
}
}
} }