📅2024. 02.15 46일차
<tr>
<th>추천</th>
<td><div class="flex items-center"><span class="text-blue-700">${article.goodReactionPoint }</span>
<span> </span>
<a href="/usr/reactionPoint/doGoodReactionrelTypeCode=article&relId=${param.id}&replaceUri=${rq.currentUri}" class="reaction btn btn-xs btn-primary">좋아요👍</a>
<span> </span>
<a href="/usr/reactionPoint/doBadReaction?relTypeCode=article&relId=${param.id }&replaceUri=${rq.currentUri}" class="reaction btn btn-xs btn-secondary">싫어요👎</a>
</div>
</td>
</tr>
@RequestMapping("/usr/reactionPoint/doGoodReaction")
@ResponseBody
public String doGoodReaction(String relTypeCode, int relId, String replaceUri) {
int usersReaction = reactionPointService.usersReaction(rq.getLoginedMemberId(), relTypeCode, relId);
if (usersReaction == 1) {
return Ut.jsHistoryBack("F-1", "이미 함");
}
ResultData reactionRd = reactionPointService.increaseReactionPoint(rq.getLoginedMemberId(), relTypeCode, relId);
return Ut.jsReplace(reactionRd.getResultCode(), reactionRd.getMsg(), replaceUri);
}
@RequestMapping("/usr/reactionPoint/doBadReaction")
@ResponseBody
public String doBadReaction(String relTypeCode, int relId, String replaceUri) {
int usersReaction = reactionPointService.usersReaction(rq.getLoginedMemberId(), relTypeCode, relId);
if (usersReaction == -1) {
return Ut.jsHistoryBack("F-1", "이미 함");
}
ResultData reactionRd = reactionPointService.decreaseReactionPoint(rq.getLoginedMemberId(), relTypeCode, relId);
return Ut.jsReplace(reactionRd.getResultCode(), reactionRd.getMsg(), replaceUri);
}
public int usersReaction(int loginedMemberId, String relTypeCode, int relId) {
// 로그인 x
if (loginedMemberId == 0) {
return -2;
}
return reactionPointRepository.getSumReactionPoint(loginedMemberId, relTypeCode, relId);
}
public ResultData increaseReactionPoint(int loginedMemberId, String relTypeCode, int relId) {
int affectedRow = reactionPointRepository.increaseReactionPoint(loginedMemberId, relTypeCode, relId);
if (affectedRow != 1) {
return ResultData.from("F-2", "좋아요 실패");
}
switch (relTypeCode) {
case "article":
articleService.increaseGoodReactionPoint(relId);
break;
}
return ResultData.from("S-1", "좋아요!");
}
public ResultData decreaseReactionPoint(int loginedMemberId, String relTypeCode, int relId) {
int affectedRow = reactionPointRepository.decreaseReactionPoint(loginedMemberId, relTypeCode, relId);
if (affectedRow != 1) {
return ResultData.from("F-2", "싫어요 실패");
}
switch (relTypeCode) {
case "article":
articleService.increaseBadReactionPoint(relId);
break;
}
return ResultData.from("S-1", "싫어요!");
}
@Mapper
public interface ReactionPointRepository {
@Select("""
SELECT IFNULL(SUM(RP.point),0)
FROM reactionPoint AS RP
WHERE RP.relTypeCode = #{relTypeCode}
AND RP.relId = #{relId}
AND RP.memberId = #{memberId}
""")
public int getSumReactionPoint(int memberId, String relTypeCode, int relId);
@Insert("""
INSERT INTO reactionPoint
SET regDate = NOW(),
updateDate = NOW(),
relTypeCode = #{relTypeCode},
relId = #{relId},
memberId = #{memberId},
`point` = 1
""")
public int increaseReactionPoint(int memberId, String relTypeCode, int relId);
@Insert("""
INSERT INTO reactionPoint
SET regDate = NOW(),
updateDate = NOW(),
relTypeCode = #{relTypeCode},
relId = #{relId},
memberId = #{memberId},
`point` = -1
""")
public int decreaseReactionPoint(int memberId, String relTypeCode, int relId);
}
@Update("""
UPDATE article
SET goodReactionPoint = goodReactionPoint + 1
WHERE id = #{relId}
""")
public int increaseGoodReactionPoint(int relId);
@Update("""
UPDATE article
SET badReactionPoint = badReactionPoint + 1
WHERE id = #{relId}
""")
public int increaseBadReactionPoint(int relId);