| | |
| | | import com.yami.trading.common.util.StringUtils; |
| | | import com.yami.trading.common.util.UUIDGenerator; |
| | | import com.yami.trading.service.SessionTokenService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | @Service |
| | | public class SessionTokenServiceImpl implements SessionTokenService { |
| | | |
| | | private volatile Map<String, String> cache = new ConcurrentHashMap<String, String>(); |
| | | private static final String KEY_PREFIX = "session_token:"; |
| | | private static final long TTL_MINUTES = 10; |
| | | |
| | | @Autowired |
| | | private RedisTemplate<String, Object> redisTemplate; |
| | | |
| | | @Override |
| | | public String savePut(String partyId) { |
| | | String session_token = UUIDGenerator.getUUID(); |
| | | cache.put(session_token, partyId); |
| | | return session_token; |
| | | String sessionToken = UUIDGenerator.getUUID(); |
| | | redisTemplate.opsForValue().set(KEY_PREFIX + sessionToken, partyId, TTL_MINUTES, TimeUnit.MINUTES); |
| | | return sessionToken; |
| | | } |
| | | |
| | | @Override |
| | | public String cacheGet(String session_token) { |
| | | if (StringUtils.isNullOrEmpty(session_token)) { |
| | | return null; |
| | | } |
| | | return cache.get(session_token); |
| | | Object value = redisTemplate.opsForValue().get(KEY_PREFIX + session_token); |
| | | return value == null ? null : String.valueOf(value); |
| | | } |
| | | |
| | | @Override |
| | |
| | | if (StringUtils.isNullOrEmpty(session_token)) { |
| | | return; |
| | | } |
| | | cache.remove(session_token); |
| | | redisTemplate.delete(KEY_PREFIX + session_token); |
| | | } |
| | | |
| | | } |