1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
package com.juick.service;
import com.juick.User;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@Repository
public class MessengerServiceImpl extends BaseJdbcService implements MessengerService {
@Transactional(readOnly = true)
@Override
public Integer getUserId(String senderId) {
List<Integer> list = getJdbcTemplate().queryForList(
"SELECT id FROM users INNER JOIN messenger " +
"ON messenger.user_id = users.id WHERE messenger.sender_id=?", Integer.class, senderId);
return list.isEmpty() ? 0 : list.get(0);
}
@Transactional(readOnly = true)
@Override
public Optional<String> getSenderId(User user) {
List<String> list = getJdbcTemplate().queryForList(
"SELECT sender_id FROM messenger " +
"WHERE user_id=?", String.class, user.getUid());
return list.isEmpty() ? Optional.empty() : Optional.of(list.get(0));
}
@Transactional
@Override
public boolean createMessengerUser(String senderId, String displayName) {
return getJdbcTemplate().update(
"INSERT INTO messenger(sender_id, display_name, loginhash) VALUES(?,?,?)",
senderId, displayName, UUID.randomUUID().toString()) > 0;
}
@Transactional(readOnly = true)
@Override
public String getDisplayName(String hash) {
try {
return getJdbcTemplate().queryForObject("SELECT display_name FROM messenger WHERE loginhash=?", String.class, hash);
} catch (EmptyResultDataAccessException e) {
return null;
}
}
@Transactional
@Override
public String getSignUpHash(final String senderId, final String username) {
List<String> list = getJdbcTemplate().queryForList(
"SELECT loginhash FROM messenger WHERE sender_id = ? AND user_id IS NULL",
String.class,
senderId);
if (list.isEmpty()) {
String hash = UUID.randomUUID().toString();
getJdbcTemplate().update(
"INSERT INTO messenger(sender_id, loginhash, display_name) VALUES (?, ?, ?)", senderId, hash, username);
return hash;
}
return list.get(0);
}
@Transactional
@Override
public boolean linkMessengerUser(String hash, int uid) {
return getJdbcTemplate().update("UPDATE messenger SET user_id=?, loginhash=NULL WHERE loginhash=?", uid, hash) > 0;
}
}
|