aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/service
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server/src/main/java/com/juick/service')
-rw-r--r--juick-server/src/main/java/com/juick/service/UserServiceImpl.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/juick-server/src/main/java/com/juick/service/UserServiceImpl.java b/juick-server/src/main/java/com/juick/service/UserServiceImpl.java
index a0a07fb3..eca0c264 100644
--- a/juick-server/src/main/java/com/juick/service/UserServiceImpl.java
+++ b/juick-server/src/main/java/com/juick/service/UserServiceImpl.java
@@ -17,6 +17,7 @@
package com.juick.service;
+import com.juick.Message;
import com.juick.User;
import com.juick.server.helpers.AnonymousUser;
import com.juick.server.helpers.Auth;
@@ -451,6 +452,25 @@ public class UserServiceImpl extends BaseJdbcService implements UserService {
@Transactional(readOnly = true)
@Override
+ public boolean isReplyToBL(final User user, final Message reply) {
+ return getNamedParameterJdbcTemplate().queryForObject("WITH RECURSIVE banned(reply_id, user_id) AS (" +
+ "SELECT reply_id, user_id FROM replies " +
+ "WHERE replies.message_id = :mid " +
+ "AND EXISTS (SELECT 1 FROM bl_users b WHERE b.user_id = :uid AND b.bl_user_id = replies.user_id) " +
+ "UNION ALL SELECT replies.reply_id, replies.user_id FROM replies " +
+ "INNER JOIN banned ON banned.reply_id = replies.replyto ) " +
+ "SELECT COUNT(reply_id) from replies " +
+ "WHERE replies.message_id = :mid " +
+ "AND replies.reply_id = :rid " +
+ "AND EXISTS (SELECT 1 FROM banned WHERE banned.reply_id = replies.reply_id) ",
+ new MapSqlParameterSource("uid", user.getUid())
+ .addValue("mid", reply.getMid())
+ .addValue("rid", reply.getRid()),
+ Integer.class) > 0;
+ }
+
+ @Transactional(readOnly = true)
+ @Override
public List<Integer> checkBL(final int visitor, final Collection<Integer> uids) {
if (CollectionUtils.isEmpty(uids))
return Collections.emptyList();