¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.framework.dao; |
| | | |
| | | import cn.dev33.satoken.dao.SaTokenDao; |
| | | import cn.dev33.satoken.util.SaFoxUtil; |
| | | import com.ruoyi.common.utils.RedisUtils; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * Sa-Tokenæä¹
屿¥å£(ä½¿ç¨æ¡æ¶èªå¸¦RedisUtilså®ç° åè®®ç»ä¸) |
| | | * |
| | | * @author Lion Li |
| | | */ |
| | | @Component |
| | | public class PlusSaTokenDao implements SaTokenDao { |
| | | |
| | | /** |
| | | * è·åValueï¼å¦æ è¿ç©º |
| | | */ |
| | | @Override |
| | | public String get(String key) { |
| | | return RedisUtils.getCacheObject(key); |
| | | } |
| | | |
| | | /** |
| | | * åå
¥Valueï¼å¹¶è®¾å®åæ´»æ¶é´ (åä½: ç§) |
| | | */ |
| | | @Override |
| | | public void set(String key, String value, long timeout) { |
| | | if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) { |
| | | return; |
| | | } |
| | | // 夿æ¯å¦ä¸ºæ°¸ä¸è¿æ |
| | | if(timeout == SaTokenDao.NEVER_EXPIRE) { |
| | | RedisUtils.setCacheObject(key, value); |
| | | } else { |
| | | RedisUtils.setCacheObject(key, value, timeout, TimeUnit.SECONDS); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ä¿®ä¿®æ¹æå®key-valueé®å¼å¯¹ (è¿ææ¶é´ä¸å) |
| | | */ |
| | | @Override |
| | | public void update(String key, String value) { |
| | | long expire = getTimeout(key); |
| | | // -2 = æ æ¤é® |
| | | if(expire == SaTokenDao.NOT_VALUE_EXPIRE) { |
| | | return; |
| | | } |
| | | this.set(key, value, expire); |
| | | } |
| | | |
| | | /** |
| | | * å é¤Value |
| | | */ |
| | | @Override |
| | | public void delete(String key) { |
| | | RedisUtils.deleteObject(key); |
| | | } |
| | | |
| | | /** |
| | | * è·åValueçå©ä½åæ´»æ¶é´ (åä½: ç§) |
| | | */ |
| | | @Override |
| | | public long getTimeout(String key) { |
| | | return RedisUtils.getTimeToLive(key); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹Valueçå©ä½åæ´»æ¶é´ (åä½: ç§) |
| | | */ |
| | | @Override |
| | | public void updateTimeout(String key, long timeout) { |
| | | // 夿æ¯å¦æ³è¦è®¾ç½®ä¸ºæ°¸ä¹
|
| | | if(timeout == SaTokenDao.NEVER_EXPIRE) { |
| | | long expire = getTimeout(key); |
| | | if(expire == SaTokenDao.NEVER_EXPIRE) { |
| | | // 妿å
¶å·²ç»è¢«è®¾ç½®ä¸ºæ°¸ä¹
ï¼åä¸ä½ä»»ä½å¤ç |
| | | } else { |
| | | // 妿尿ªè¢«è®¾ç½®ä¸ºæ°¸ä¹
ï¼é£ä¹å次set䏿¬¡ |
| | | this.set(key, this.get(key), timeout); |
| | | } |
| | | return; |
| | | } |
| | | RedisUtils.expire(key, timeout, TimeUnit.SECONDS); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * è·åObjectï¼å¦æ è¿ç©º |
| | | */ |
| | | @Override |
| | | public Object getObject(String key) { |
| | | return RedisUtils.getCacheObject(key); |
| | | } |
| | | |
| | | /** |
| | | * åå
¥Objectï¼å¹¶è®¾å®åæ´»æ¶é´ (åä½: ç§) |
| | | */ |
| | | @Override |
| | | public void setObject(String key, Object object, long timeout) { |
| | | if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) { |
| | | return; |
| | | } |
| | | // 夿æ¯å¦ä¸ºæ°¸ä¸è¿æ |
| | | if(timeout == SaTokenDao.NEVER_EXPIRE) { |
| | | RedisUtils.setCacheObject(key, object); |
| | | } else { |
| | | RedisUtils.setCacheObject(key, object, timeout, TimeUnit.SECONDS); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ´æ°Object (è¿ææ¶é´ä¸å) |
| | | */ |
| | | @Override |
| | | public void updateObject(String key, Object object) { |
| | | long expire = getObjectTimeout(key); |
| | | // -2 = æ æ¤é® |
| | | if(expire == SaTokenDao.NOT_VALUE_EXPIRE) { |
| | | return; |
| | | } |
| | | this.setObject(key, object, expire); |
| | | } |
| | | |
| | | /** |
| | | * å é¤Object |
| | | */ |
| | | @Override |
| | | public void deleteObject(String key) { |
| | | RedisUtils.deleteObject(key); |
| | | } |
| | | |
| | | /** |
| | | * è·åObjectçå©ä½åæ´»æ¶é´ (åä½: ç§) |
| | | */ |
| | | @Override |
| | | public long getObjectTimeout(String key) { |
| | | return RedisUtils.getTimeToLive(key); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹Objectçå©ä½åæ´»æ¶é´ (åä½: ç§) |
| | | */ |
| | | @Override |
| | | public void updateObjectTimeout(String key, long timeout) { |
| | | // 夿æ¯å¦æ³è¦è®¾ç½®ä¸ºæ°¸ä¹
|
| | | if(timeout == SaTokenDao.NEVER_EXPIRE) { |
| | | long expire = getObjectTimeout(key); |
| | | if(expire == SaTokenDao.NEVER_EXPIRE) { |
| | | // 妿å
¶å·²ç»è¢«è®¾ç½®ä¸ºæ°¸ä¹
ï¼åä¸ä½ä»»ä½å¤ç |
| | | } else { |
| | | // 妿尿ªè¢«è®¾ç½®ä¸ºæ°¸ä¹
ï¼é£ä¹å次set䏿¬¡ |
| | | this.setObject(key, this.getObject(key), timeout); |
| | | } |
| | | return; |
| | | } |
| | | RedisUtils.expire(key, timeout, TimeUnit.SECONDS); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æç´¢æ°æ® |
| | | */ |
| | | @Override |
| | | public List<String> searchData(String prefix, String keyword, int start, int size) { |
| | | Collection<String> keys = RedisUtils.keys(prefix + "*" + keyword + "*"); |
| | | List<String> list = new ArrayList<>(keys); |
| | | return SaFoxUtil.searchList(list, start, size); |
| | | } |
| | | |
| | | } |