From ca2db58145c4663a22f44f5f98a67aa03fbe8d38 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Wed, 23 Aug 2017 11:59:55 +0300 Subject: server-jdbc: fix favorites count --- .../com/juick/service/MessagesServiceImpl.java | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'juick-server-jdbc/src/main') diff --git a/juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java b/juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java index 225845fe..caffda14 100644 --- a/juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java +++ b/juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java @@ -214,15 +214,11 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ @Transactional @Override public boolean recommendMessage(final int mid, final int vuid) { - boolean res = getJdbcTemplate().update( - "INSERT IGNORE INTO favorites(user_id, message_id, ts) VALUES (?, ?, NOW())", - vuid, mid) == 1; - - if (res) - getJdbcTemplate().update( - "UPDATE messages SET likes = likes + 1 WHERE message_id = ?", - mid); - return res; + int wasDeleted = getJdbcTemplate() + .update("DELETE FROM favorites WHERE user_id=? AND message_id=?", vuid, mid); + return wasDeleted == 0 + && getJdbcTemplate() + .update("INSERT INTO favorites(user_id, message_id, ts) VALUES (?, ?, NOW())", vuid, mid) == 1; } @Transactional(readOnly = true) @@ -292,11 +288,13 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ + "messages.ts," + "messages.readonly, messages.privacy, messages.replies," + "messages.attach, messages.place_id, messages.lat," - + "messages.lon, messages.likes, messages.hidden," + + "messages.lon, COUNT(favorites.user_id) as likes, messages.hidden," + "txt.tags, txt.repliesby, txt.txt, '' as q FROM messages " + "INNER JOIN users ON messages.user_id = users.id " + "INNER JOIN messages_txt AS txt " + "ON messages.message_id = txt.message_id " + + "LEFT JOIN favorites " + + "ON messages.message_id = favorites.message_id " + "WHERE messages.message_id = ?", new MessageMapper(), mid); @@ -709,12 +707,14 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ + "messages.ts," + "messages.readonly,messages.privacy,messages.replies," + "messages.attach,messages.place_id,messages.lat," - + "messages.lon,messages.likes,messages.hidden," + + "messages.lon,COUNT(favorites.user_id) AS likes,messages.hidden," + "messages_txt.tags,messages_txt.repliesby, messages_txt.txt, '' as q " + "FROM (messages INNER JOIN messages_txt " + "ON messages.message_id=messages_txt.message_id) " + "INNER JOIN users ON messages.user_id=users.id " - + "WHERE messages.message_id IN (:ids) ORDER BY messages.message_id DESC", + + "LEFT JOIN favorites " + + "ON messages.message_id = favorites.message_id " + + "WHERE messages.message_id IN (:ids) GROUP BY messages.message_id ORDER BY messages.message_id DESC", new MapSqlParameterSource("ids", mids), new MessageMapper()); } -- cgit v1.2.3