aboutsummaryrefslogtreecommitdiff
path: root/juick-server-jdbc/src/main/java/com/juick/service/ShowQueriesServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server-jdbc/src/main/java/com/juick/service/ShowQueriesServiceImpl.java')
-rw-r--r--juick-server-jdbc/src/main/java/com/juick/service/ShowQueriesServiceImpl.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/juick-server-jdbc/src/main/java/com/juick/service/ShowQueriesServiceImpl.java b/juick-server-jdbc/src/main/java/com/juick/service/ShowQueriesServiceImpl.java
new file mode 100644
index 00000000..2362e948
--- /dev/null
+++ b/juick-server-jdbc/src/main/java/com/juick/service/ShowQueriesServiceImpl.java
@@ -0,0 +1,52 @@
+package com.juick.service;
+
+import com.juick.User;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.inject.Inject;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Created by aalexeev on 11/13/16.
+ */
+@Repository
+@Transactional(readOnly = true)
+public class ShowQueriesServiceImpl extends BaseJdbcService implements ShowQueriesService {
+
+ @Inject
+ public ShowQueriesServiceImpl(JdbcTemplate jdbcTemplate) {
+ super(jdbcTemplate, null);
+ }
+
+ @Override
+ public List<String> getRecommendedUsers(final User forUser) {
+ if (forUser == null)
+ return Collections.emptyList();
+
+ return getNamedParameterJdbcTemplate().queryForList(
+ "SELECT u.nick FROM subscr_users su1 INNER JOIN users u " +
+ "ON su1.user_id = u.id " +
+ "WHERE NOT EXISTS (SELECT 1 FROM subscr_users su2 WHERE su2.suser_id = :uid and su1.user_id = su2.user_id) " +
+ "AND EXISTS (SELECT 1 FROM subscr_users su3 WHERE su3.suser_id = :uid and su3.user_id = su1.suser_id ) " +
+ "AND NOT EXISTS (SELECT 1 FROM bl_users b WHERE b.user_id = :uid and su1.user_id = b.bl_user_id) " +
+ "AND su1.user_id != :uid AND u.lastmessage > UNIX_TIMESTAMP() - 259200 " +
+ "GROUP BY su1.user_id ORDER BY count(*) DESC LIMIT 10",
+ new MapSqlParameterSource("uid", forUser.getUid()),
+ String.class);
+ }
+
+ @Override
+ public List<String> getTopUsers() {
+ return getJdbcTemplate().queryForList(
+ "SELECT users.nick,COUNT(subscr_users.suser_id) AS cnt " +
+ "FROM (subscr_users INNER JOIN users ON subscr_users.user_id=users.id) " +
+ "INNER JOIN useroptions ON users.id=useroptions.user_id " +
+ "WHERE useroptions.privacy_view>0 AND users.lastmessage > UNIX_TIMESTAMP() - 259200 " +
+ "AND users.id!=2 GROUP BY subscr_users.user_id ORDER BY cnt DESC LIMIT 10",
+ String.class);
+ }
+}