좋아욧/싫어요, 게시물 삭제,댓글삭제와 대댓글 삭제 쿼리 수정
This commit is contained in:
parent
81813a7d30
commit
aaa172c50d
@ -265,9 +265,10 @@ public class BoardController {
|
|||||||
@PostMapping("/{LOCBRDSEQ}/{LOCCMTSEQ}/reaction")
|
@PostMapping("/{LOCBRDSEQ}/{LOCCMTSEQ}/reaction")
|
||||||
public ApiResponse<String> reactToBoard(@ReqMap MapDto map) {
|
public ApiResponse<String> reactToBoard(@ReqMap MapDto map) {
|
||||||
boardService.reactToBoard(map);
|
boardService.reactToBoard(map);
|
||||||
return ApiResponse.ok("반응이 추가되었습니다.");
|
return ApiResponse.ok("반응이 성공적으로 처리되었습니다.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 댓글/대댓글 조회
|
* 댓글/대댓글 조회
|
||||||
* @param boardId 게시물 ID
|
* @param boardId 게시물 ID
|
||||||
|
|||||||
@ -25,11 +25,20 @@ public interface localbordMapper {
|
|||||||
// 게시물 삭제
|
// 게시물 삭제
|
||||||
void deleteBoard(MapDto map);
|
void deleteBoard(MapDto map);
|
||||||
|
|
||||||
|
// 게시물 삭제시 댓글/대댓글 삭제
|
||||||
|
void deleteCommentsByBoardId(MapDto map);
|
||||||
|
|
||||||
// 게시물 수정
|
// 게시물 수정
|
||||||
void updateBoard(MapDto map);
|
void updateBoard(MapDto map);
|
||||||
|
|
||||||
// 게시물 좋아요/싫어요 추가
|
// 기존 반응 조회
|
||||||
void reactToBoard(MapDto map);
|
MapDto findReaction(MapDto map);
|
||||||
|
|
||||||
|
// 새 반응 삽입
|
||||||
|
void insertReaction(MapDto map);
|
||||||
|
|
||||||
|
// 기존 반응 업데이트
|
||||||
|
void updateReaction(MapDto map);
|
||||||
|
|
||||||
// 댓글 조회
|
// 댓글 조회
|
||||||
List<MapDto> getComments(int boardSeq);
|
List<MapDto> getComments(int boardSeq);
|
||||||
@ -40,9 +49,21 @@ public interface localbordMapper {
|
|||||||
// 댓글/대댓글 수정
|
// 댓글/대댓글 수정
|
||||||
void updateComment(MapDto map);
|
void updateComment(MapDto map);
|
||||||
|
|
||||||
// 댓글/대댓글 삭제
|
// 대댓글인지 확인
|
||||||
|
boolean isReply(MapDto map);
|
||||||
|
|
||||||
|
// 댓글에 대댓글이 있는지 확인
|
||||||
|
boolean hasReplies(MapDto map);
|
||||||
|
|
||||||
|
// 댓글 내용만 삭제 처리 (대댓글 유지)
|
||||||
|
void softDeleteComment(MapDto map);
|
||||||
|
|
||||||
|
// 댓글 삭제 (대댓글 없음)
|
||||||
void deleteComment(MapDto map);
|
void deleteComment(MapDto map);
|
||||||
|
|
||||||
|
// 대댓글 삭제
|
||||||
|
void deleteReply(MapDto map);
|
||||||
|
|
||||||
// 게시물 비밀번호 조회
|
// 게시물 비밀번호 조회
|
||||||
String selectCommentPassword(int commentId);
|
String selectCommentPassword(int commentId);
|
||||||
|
|
||||||
|
|||||||
@ -49,6 +49,7 @@ public class localbordService {
|
|||||||
|
|
||||||
|
|
||||||
public void deleteBoard(MapDto map) {
|
public void deleteBoard(MapDto map) {
|
||||||
|
boardMapper.deleteCommentsByBoardId(map);
|
||||||
boardMapper.deleteBoard(map);
|
boardMapper.deleteBoard(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +58,16 @@ public class localbordService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void reactToBoard(MapDto map) {
|
public void reactToBoard(MapDto map) {
|
||||||
boardMapper.reactToBoard(map);
|
// 기존 반응 확인
|
||||||
|
MapDto existingReaction = boardMapper.findReaction(map);
|
||||||
|
|
||||||
|
if (existingReaction != null) {
|
||||||
|
// 기존 반응이 있는 경우 업데이트
|
||||||
|
boardMapper.updateReaction(map);
|
||||||
|
} else {
|
||||||
|
// 기존 반응이 없는 경우 새로 삽입
|
||||||
|
boardMapper.insertReaction(map);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MapDto> getComments(int boardSeq) {
|
public List<MapDto> getComments(int boardSeq) {
|
||||||
@ -65,6 +75,9 @@ public class localbordService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addCommentOrReply(MapDto map) {
|
public void addCommentOrReply(MapDto map) {
|
||||||
|
if (map.get("LOCCMTPNT") == null) {
|
||||||
|
map.put("LOCCMTPNT", null); // 부모 ID가 없는 경우 null 처리
|
||||||
|
}
|
||||||
boardMapper.addCommentOrReply(map);
|
boardMapper.addCommentOrReply(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,8 +87,25 @@ public class localbordService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void deleteComment(MapDto map) {
|
public void deleteComment(MapDto map) {
|
||||||
|
// 댓글인지 대댓글인지 확인
|
||||||
|
boolean isReply = boardMapper.isReply(map);
|
||||||
|
|
||||||
|
if (isReply) {
|
||||||
|
// 대댓글 삭제
|
||||||
|
boardMapper.deleteReply(map);
|
||||||
|
} else {
|
||||||
|
// 댓글인 경우
|
||||||
|
boolean hasReplies = boardMapper.hasReplies(map);
|
||||||
|
|
||||||
|
if (hasReplies) {
|
||||||
|
// 대댓글이 있는 경우 내용 업데이트
|
||||||
|
boardMapper.softDeleteComment(map);
|
||||||
|
} else {
|
||||||
|
// 대댓글이 없는 경우 댓글 삭제
|
||||||
boardMapper.deleteComment(map);
|
boardMapper.deleteComment(map);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String getCommentPassword(int commentId) {
|
public String getCommentPassword(int commentId) {
|
||||||
return boardMapper.selectCommentPassword(commentId);
|
return boardMapper.selectCommentPassword(commentId);
|
||||||
|
|||||||
@ -75,6 +75,12 @@
|
|||||||
DELETE FROM localbord WHERE LOCBRDSEQ = #{LOCBRDSEQ}
|
DELETE FROM localbord WHERE LOCBRDSEQ = #{LOCBRDSEQ}
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<!-- 게시물 삭제 시 댓글/대댓글 삭제 -->
|
||||||
|
<delete id="deleteCommentsByBoardId">
|
||||||
|
DELETE FROM localcomt
|
||||||
|
WHERE LOCBRDSEQ = #{LOCBRDSEQ}
|
||||||
|
</delete>
|
||||||
|
|
||||||
<!-- 게시물 수정 -->
|
<!-- 게시물 수정 -->
|
||||||
<update id="updateBoard">
|
<update id="updateBoard">
|
||||||
UPDATE localbord
|
UPDATE localbord
|
||||||
@ -82,13 +88,35 @@
|
|||||||
WHERE LOCBRDSEQ = #{LOCBRDSEQ}
|
WHERE LOCBRDSEQ = #{LOCBRDSEQ}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!-- 게시물 좋아요/싫어요 추가 -->
|
<!-- 기존 반응 조회 -->
|
||||||
<insert id="reactToBoard">
|
<select id="findReaction" resultType="io.company.localhost.common.dto.MapDto">
|
||||||
|
SELECT LOCBRDSEQ, LOCCMTSEQ, MEMBERSEQ, LOCGOBGOD, LOCGOBBAD
|
||||||
|
FROM localgorb
|
||||||
|
WHERE (LOCBRDSEQ = #{LOCBRDSEQ} OR (#{LOCBRDSEQ} IS NULL AND LOCBRDSEQ IS NULL))
|
||||||
|
AND (LOCCMTSEQ = #{LOCCMTSEQ} OR (#{LOCCMTSEQ} IS NULL AND LOCCMTSEQ IS NULL))
|
||||||
|
AND MEMBERSEQ = #{MEMBERSEQ}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 반응 업데이트 -->
|
||||||
|
<update id="updateReaction">
|
||||||
|
UPDATE localgorb
|
||||||
|
SET LOCGOBGOD = #{LOCGOBGOD}, LOCGOBBAD = #{LOCGOBBAD}
|
||||||
|
WHERE (LOCBRDSEQ = #{LOCBRDSEQ} OR (#{LOCBRDSEQ} IS NULL AND LOCBRDSEQ IS NULL))
|
||||||
|
AND (LOCCMTSEQ = #{LOCCMTSEQ} OR (#{LOCCMTSEQ} IS NULL AND LOCCMTSEQ IS NULL))
|
||||||
|
AND MEMBERSEQ = #{MEMBERSEQ}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 새 반응 삽입 -->
|
||||||
|
<insert id="insertReaction">
|
||||||
INSERT INTO localgorb (LOCBRDSEQ, LOCCMTSEQ, MEMBERSEQ, LOCGOBGOD, LOCGOBBAD)
|
INSERT INTO localgorb (LOCBRDSEQ, LOCCMTSEQ, MEMBERSEQ, LOCGOBGOD, LOCGOBBAD)
|
||||||
VALUES (#{LOCBRDSEQ}, #{LOCCMTSEQ}, #{MEMBERSEQ}, #{LOCGOBGOD}, #{LOCGOBBAD})
|
VALUES (#{LOCBRDSEQ}, #{LOCCMTSEQ}, #{MEMBERSEQ}, #{LOCGOBGOD}, #{LOCGOBBAD})
|
||||||
ON DUPLICATE KEY UPDATE LOCGOBGOD = #{LOCGOBGOD}, LOCGOBBAD = #{LOCGOBBAD}
|
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
|
||||||
<!-- 댓글/대댓글 조회 -->
|
<!-- 댓글/대댓글 조회 -->
|
||||||
<select id="getComments" resultType="io.company.localhost.common.dto.MapDto">
|
<select id="getComments" resultType="io.company.localhost.common.dto.MapDto">
|
||||||
SELECT
|
SELECT
|
||||||
@ -112,12 +140,43 @@
|
|||||||
WHERE LOCCMTSEQ = #{LOCCMTSEQ}
|
WHERE LOCCMTSEQ = #{LOCCMTSEQ}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!-- 댓글/대댓글 삭제 -->
|
<!-- 댓글 삭제 -->
|
||||||
|
<update id="softDeleteComment">
|
||||||
|
UPDATE localcomt
|
||||||
|
SET LOCCMTRPY = '삭제된 댓글입니다'
|
||||||
|
WHERE LOCCMTSEQ = #{LOCCMTSEQ}
|
||||||
|
AND EXISTS (
|
||||||
|
SELECT 1 FROM localcomt WHERE LOCCMTPNT = #{LOCCMTSEQ}
|
||||||
|
)
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<!-- 댓글 삭제 (대댓글 없을 경우) -->
|
||||||
<delete id="deleteComment">
|
<delete id="deleteComment">
|
||||||
DELETE FROM localcomt
|
DELETE FROM localcomt
|
||||||
WHERE LOCCMTSEQ = #{LOCCMTSEQ}
|
WHERE LOCCMTSEQ = #{LOCCMTSEQ}
|
||||||
|
AND NOT EXISTS (
|
||||||
|
SELECT 1 FROM localcomt WHERE LOCCMTPNT = #{LOCCMTSEQ}
|
||||||
|
)
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<!-- 대댓글 삭제 -->
|
||||||
|
<delete id="deleteReply">
|
||||||
|
DELETE FROM localcomt
|
||||||
|
WHERE LOCCMTSEQ = #{LOCCMTSEQ}
|
||||||
|
AND LOCCMTPNT IS NOT NULL
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<!-- 대댓글인지 확인 -->
|
||||||
|
<select id="isReply" resultType="boolean">
|
||||||
|
SELECT COUNT(1) > 0 FROM localcomt
|
||||||
|
WHERE LOCCMTSEQ = #{LOCCMTSEQ} AND LOCCMTPNT IS NOT NULL
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 댓글에 대댓글이 있는지 확인 -->
|
||||||
|
<select id="hasReplies" resultType="boolean">
|
||||||
|
SELECT COUNT(1) > 0 FROM localcomt WHERE LOCCMTPNT = #{LOCCMTSEQ}
|
||||||
|
</select>
|
||||||
|
|
||||||
<!-- 댓글 비밀번호 조회 -->
|
<!-- 댓글 비밀번호 조회 -->
|
||||||
<select id="selectCommentPassword" resultType="String">
|
<select id="selectCommentPassword" resultType="String">
|
||||||
SELECT LOCCMTPWD
|
SELECT LOCCMTPWD
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user