From 8fcefec79b70b2f0c779bcdf84ebd4387a346fb4 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Tue, 29 Apr 2025 09:37:27 +0800 Subject: [PATCH] 'commit' --- .../java/com/dsideal/dsBase/Util/PikaKit.java | 52 ----------- dsGw/pom.xml | 7 ++ .../java/com/dsideal/gw/Util/JwtUtil.java | 1 - .../java/com/dsideal/gw/Util/RedisKit.java | 84 ++++++++++++++++++ .../java/com/dsideal/gw/Util/SessionKit.java | 87 +++++++++++++++++++ dsGw/src/main/resources/application_dev.yaml | 1 - pom.xml | 2 - 7 files changed, 178 insertions(+), 56 deletions(-) delete mode 100644 dsBase/src/main/java/com/dsideal/dsBase/Util/PikaKit.java create mode 100644 dsGw/src/main/java/com/dsideal/gw/Util/RedisKit.java create mode 100644 dsGw/src/main/java/com/dsideal/gw/Util/SessionKit.java diff --git a/dsBase/src/main/java/com/dsideal/dsBase/Util/PikaKit.java b/dsBase/src/main/java/com/dsideal/dsBase/Util/PikaKit.java deleted file mode 100644 index f98586f4..00000000 --- a/dsBase/src/main/java/com/dsideal/dsBase/Util/PikaKit.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dsideal.dsBase.Util; - -import com.jfinal.plugin.redis.Redis; -import redis.clients.jedis.Pipeline; - -import java.util.Map; - -public class PikaKit { - - public static String Get(String key) { - return Redis.use("Pika").call(jedis -> jedis.get(key)); - } - - public static void Set(String key, String value) { - Redis.use("Pika").call(jedis -> jedis.set(key, value)); - } - - public static void Expire(String key, long seconds) { - Redis.use("Pika").call(jedis -> jedis.expire(key, seconds)); - } - - public static boolean Exists(String key) { - return Redis.use("Pika").call(jedis -> jedis.exists(key)); - } - - - public static void Del(String key) { - Redis.use("Pika").call(jedis -> jedis.del(key)); - } - - public static String HGet(String key, String field) { - return Redis.use("Pika").call(jedis -> jedis.hget(key, field)); - } - - - public static Map HGetAll(String key) { - return Redis.use("Pika").call(jedis -> jedis.hgetAll(key)); - } - - public static void HSet(String key, String field, String value) { - Redis.use("Pika").call(jedis -> jedis.hset(key, field, value)); - } - - - public static long incrBy(String key, int num) { - return Redis.use("Pika").call(jedis -> jedis.incrBy(key, num)); - } - - public static Pipeline getPipline() { - return Redis.use("Pika").getJedis().pipelined(); - } -} diff --git a/dsGw/pom.xml b/dsGw/pom.xml index 387fcd44..f42765b6 100644 --- a/dsGw/pom.xml +++ b/dsGw/pom.xml @@ -29,6 +29,13 @@ ${jfinal-cos.version} + + + redis.clients + jedis + 5.2.0 + + diff --git a/dsGw/src/main/java/com/dsideal/gw/Util/JwtUtil.java b/dsGw/src/main/java/com/dsideal/gw/Util/JwtUtil.java index 276606ea..84f90047 100644 --- a/dsGw/src/main/java/com/dsideal/gw/Util/JwtUtil.java +++ b/dsGw/src/main/java/com/dsideal/gw/Util/JwtUtil.java @@ -1,7 +1,6 @@ package com.dsideal.gw.Util; import com.dsideal.gw.GwApplication; -import com.dsideal.gw.Plugin.YamlProp; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; diff --git a/dsGw/src/main/java/com/dsideal/gw/Util/RedisKit.java b/dsGw/src/main/java/com/dsideal/gw/Util/RedisKit.java new file mode 100644 index 00000000..72598c8f --- /dev/null +++ b/dsGw/src/main/java/com/dsideal/gw/Util/RedisKit.java @@ -0,0 +1,84 @@ +package com.dsideal.gw.Util; + +import com.jfinal.plugin.redis.Redis; +import redis.clients.jedis.Pipeline; +import redis.clients.jedis.resps.Tuple; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class RedisKit { + + public static String Get(String key) { + return Redis.use().call(jedis -> jedis.get(key)); + } + + public static void Set(String key, String value) { + Redis.use().call(jedis -> jedis.set(key, value)); + } + + public static void Expire(String key, long seconds) { + Redis.use().call(jedis -> jedis.expire(key, seconds)); + } + + public static boolean Exists(String key) { + if (Redis.use() != null) return Redis.use().call(jedis -> jedis.exists(key)); + return false; + } + + + public static void Del(String key) { + Redis.use().call(jedis -> jedis.del(key)); + } + + public static String HGet(String key, String field) { + return Redis.use().call(jedis -> jedis.hget(key, field)); + } + + + public static Map HGetAll(String key) { + return Redis.use().call(jedis -> jedis.hgetAll(key)); + } + + public static void HSet(String key, String field, String value) { + Redis.use().call(jedis -> jedis.hset(key, field, value)); + } + + + public static long incrBy(String key, int num) { + return Redis.use().call(jedis -> jedis.incrBy(key, num)); + } + + public static Pipeline getPipline() { + return Redis.use().getJedis().pipelined(); + } + + public static void SAdd(String key, String value) { + Redis.use().call(jedis -> jedis.sadd(key, value)); + } + + public static void SRem(String key, String value) { + Redis.use().call(jedis -> jedis.srem(key, value)); + } + + public static Set SMembers(String key) { + return Redis.use().call(jedis -> jedis.smembers(key)); + } + + public static List zrangeByScoreWithScores(String key, String start, String end) { + return Redis.use().call(jedis -> jedis.zrangeByScoreWithScores(key, start, end)); + } + + public static void zrem(String key, String value) { + Redis.use().call(jedis -> jedis.zrem(key, value)); + } + + public static void zadd(String key, double score, String value) { + Redis.use().call(jedis -> jedis.zadd(key, score, value)); + } + + public static long zcard(String key) { + return Redis.use().call(jedis -> jedis.zcard(key)); + } +} \ No newline at end of file diff --git a/dsGw/src/main/java/com/dsideal/gw/Util/SessionKit.java b/dsGw/src/main/java/com/dsideal/gw/Util/SessionKit.java new file mode 100644 index 00000000..9e6022a1 --- /dev/null +++ b/dsGw/src/main/java/com/dsideal/gw/Util/SessionKit.java @@ -0,0 +1,87 @@ +package com.dsideal.gw.Util; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.UUID; + +public class SessionKit { + public static String JSessionId = "sessionId";//Cookie中sessionId的名称 + public static long TimeoutSecond = 60 * 60 * 24 * 7;//一周 + + /** + * 功能:获取Cookie上的jSessionId + * + * @param request + * @return + */ + public static String getCookieSessionId(HttpServletRequest request, HttpServletResponse response) { + String jSessionId = null; + //客户端请求服务器时 从请求对象中获取所有的cookie + Cookie[] cookies = request.getCookies(); + if (cookies != null) { + //遍历cookie集合 根据名字获取对应的value + for (Cookie cookie : cookies) { + //判断是否为指定cookie + if (JSessionId.equals(cookie.getName())) { + //获取对应的值 + jSessionId = cookie.getValue(); + break; + } + } + } + if (cookies == null || jSessionId == null) { + // 创建cookie对象 + jSessionId = UUID.randomUUID().toString().toLowerCase(); + Cookie cookie = new Cookie(JSessionId, jSessionId); + cookie.setPath("/"); + // 设置cookie存活时间 + response.addCookie(cookie); + } + return JSessionId + "_" + jSessionId; + } + + public static void clear(HttpServletRequest request, HttpServletResponse response) { + String jSessionId = getCookieSessionId(request, response); + //写入jSessionId的key域值 + RedisKit.Del(jSessionId); + Cookie[] cookies = request.getCookies(); + if (cookies != null) { + for (Cookie cookie : cookies) { + cookie.setMaxAge(0); // 将Cookie的过期时间设为0,表示立即过期 + response.addCookie(cookie); // 发送修改后的Cookie回客户端 + } + } + } + + /** + * 功能:手工实现的Redis模拟Session写入 + * + * @param request + * @param key + * @param value + * @return + */ + public static void set(HttpServletRequest request, HttpServletResponse response, String key, String value) { + String jSessionId = getCookieSessionId(request, response); + //写入jSessionId的key域值 + RedisKit.HSet(jSessionId, key, value); + //过期时长为TimeoutSecond + RedisKit.Expire(jSessionId, TimeoutSecond); + } + + /** + * 功能:获取Session内容 + * + * @param request + * @param key + * @return + */ + public static String get(HttpServletRequest request, HttpServletResponse response, String key) { + String jSessionId = getCookieSessionId(request, response); + String value = RedisKit.HGet(jSessionId, key); + //过期时长为TimeoutSecond + RedisKit.Expire(jSessionId, TimeoutSecond); + return value; + } +} diff --git a/dsGw/src/main/resources/application_dev.yaml b/dsGw/src/main/resources/application_dev.yaml index 028edcc7..580605b3 100644 --- a/dsGw/src/main/resources/application_dev.yaml +++ b/dsGw/src/main/resources/application_dev.yaml @@ -16,7 +16,6 @@ route: url: http://ds-res:8002 - # 白名单 whitelist: # 全局变量获取 diff --git a/pom.xml b/pom.xml index 31edbd37..5b045ec5 100644 --- a/pom.xml +++ b/pom.xml @@ -10,10 +10,8 @@ dsGw dsBase - dsYltBase dsUtils dsRes - dsPay