From 168987c03d0b44e14d2890152804534d88ea85cd Mon Sep 17 00:00:00 2001
From: 79493 <794930212@qq.com>
Date: Mon, 17 Oct 2022 17:40:17 +0800
Subject: [PATCH] =?UTF-8?q?redis=E4=B8=BB=E4=BB=8E=E5=B7=B2=E7=BB=8F?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=AE=8C=E6=88=90=EF=BC=8C=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=AD=E9=80=9A=E8=BF=87=E5=93=A8=E5=85=B5?=
=?UTF-8?q?=E6=A8=A1=E5=BC=8F=E8=BF=9B=E8=A1=8C=E5=8A=A8=E6=80=81=E8=AF=BB?=
=?UTF-8?q?=E5=8F=96=E5=92=8C=E5=86=99=E5=85=A5=20redis=E6=93=8D=E4=BD=9Cd?=
=?UTF-8?q?emo=E5=8F=AF=E4=BB=A5=E5=8F=82=E8=80=83PCBusinessService?=
=?UTF-8?q?=E7=9A=84=E7=AC=AC=E4=B8=80=E4=B8=AA=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/com/rzyc/model/ent/EntUser.java | 13 +
inventory-ent/pom.xml | 11 +
.../java/com/rzyc/config/RedisPoolConfig.java | 52 ++
.../main/java/com/rzyc/config/RedisUtil.java | 595 ++++++++++++++++++
.../java/com/rzyc/config/SecurityConfig.java | 2 +-
.../rzyc/controller/PersonalController.java | 15 +-
.../filter/JwtAuthenticationTokenFiler.java | 7 +-
.../com/rzyc/service/PcBusinessService.java | 32 +-
.../rzyc/service/UserDetailsServiceImpl.java | 15 +-
.../com/rzyc/utils/StringEncryptorTest.java | 37 ++
.../src/main/resources/application-dev.yml | 20 +-
.../src/main/resources/application.yml | 2 +-
.../java/com/rzyc/config/SecurityConfig.java | 4 +-
.../filter/JwtAuthenticationTokenFiler.java | 5 +-
14 files changed, 792 insertions(+), 18 deletions(-)
create mode 100644 inventory-ent/src/main/java/com/rzyc/config/RedisPoolConfig.java
create mode 100644 inventory-ent/src/main/java/com/rzyc/config/RedisUtil.java
create mode 100644 inventory-ent/src/main/java/com/rzyc/utils/StringEncryptorTest.java
diff --git a/inventory-dao/src/main/java/com/rzyc/model/ent/EntUser.java b/inventory-dao/src/main/java/com/rzyc/model/ent/EntUser.java
index 15b1dcb..9b6f523 100644
--- a/inventory-dao/src/main/java/com/rzyc/model/ent/EntUser.java
+++ b/inventory-dao/src/main/java/com/rzyc/model/ent/EntUser.java
@@ -1,6 +1,8 @@
package com.rzyc.model.ent;
import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.time.LocalTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
@@ -110,6 +112,17 @@ public class EntUser implements Serializable {
@ApiModelProperty(value = "工号")
private String jobNumber;
+ @TableField(exist = false)
+ private LocalTime localTime;
+
+ public LocalTime getLocalTime() {
+ return localTime;
+ }
+
+ public void setLocalTime(LocalTime localTime) {
+ this.localTime = localTime;
+ }
+
public String getJobNumber() {
return jobNumber;
}
diff --git a/inventory-ent/pom.xml b/inventory-ent/pom.xml
index 3891f5e..8846fc7 100644
--- a/inventory-ent/pom.xml
+++ b/inventory-ent/pom.xml
@@ -210,6 +210,17 @@
RELEASE
compile
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ org.apache.commons
+ commons-pool2
+
+
diff --git a/inventory-ent/src/main/java/com/rzyc/config/RedisPoolConfig.java b/inventory-ent/src/main/java/com/rzyc/config/RedisPoolConfig.java
new file mode 100644
index 0000000..209cb0b
--- /dev/null
+++ b/inventory-ent/src/main/java/com/rzyc/config/RedisPoolConfig.java
@@ -0,0 +1,52 @@
+package com.rzyc.config;
+
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * Redis 连接及序列化
+ * @author Xuwanxin
+ * @date 2022/10/13
+ * */
+
+@Configuration
+public class RedisPoolConfig {
+
+
+ /**
+ * 在使用localTime对象时,GenericJackson2JsonRedisSerializer反序列化会报转换错误,遇到之后还需要再单独处理
+ * */
+ @Bean
+ public RedisTemplate strRedisTemplate(RedisConnectionFactory redisConnectionFactory){
+ RedisTemplate redisTemplate = new RedisTemplate<>();
+ // key 序列化方式
+ redisTemplate.setKeySerializer(new StringRedisSerializer());
+ // value 序列化
+ redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
+ // hash 类型 key序列化
+ redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+ // hash 类型 value序列化方式
+ redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
+ // 注入连接工厂
+ redisTemplate.setConnectionFactory(redisConnectionFactory);
+ // 让设置生效
+ redisTemplate.afterPropertiesSet();
+ return redisTemplate;
+ }
+
+
+
+
+}
diff --git a/inventory-ent/src/main/java/com/rzyc/config/RedisUtil.java b/inventory-ent/src/main/java/com/rzyc/config/RedisUtil.java
new file mode 100644
index 0000000..ef55f08
--- /dev/null
+++ b/inventory-ent/src/main/java/com/rzyc/config/RedisUtil.java
@@ -0,0 +1,595 @@
+package com.rzyc.config;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class RedisUtil {
+
+ @Autowired
+ RedisTemplate redisTemplate;
+
+ /**
+ * get 多参数分隔 :
+ * @param key 键
+ */
+ public String appendSymbol(String ... key) {
+ StringBuilder stringBuilder = new StringBuilder();
+ try {
+ for (String k:key) {
+ stringBuilder.append(k);
+ stringBuilder.append(":");
+ }
+ return stringBuilder.deleteCharAt(stringBuilder.lastIndexOf(":")).toString();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "error";
+ }
+ }
+
+
+ /**
+ * 指定缓存失效时间
+ * @param key 键
+ * @param time 时间(秒)
+ */
+ public boolean expire(String key, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.expire(key, time, TimeUnit.SECONDS);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 根据key 获取过期时间
+ * @param key 键 不能为null
+ * @return 时间(秒) 返回0代表为永久有效
+ */
+ public long getExpire(String key) {
+ return redisTemplate.getExpire(key, TimeUnit.SECONDS);
+ }
+
+
+ /**
+ * 判断key是否存在
+ * @param key 键
+ * @return true 存在 false不存在
+ */
+ public boolean hasKey(String key) {
+ try {
+ return redisTemplate.hasKey(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 删除缓存
+ * @param key 可以传一个值 或多个
+ */
+ @SuppressWarnings("unchecked")
+ public void del(String... key) {
+ if (key != null && key.length > 0) {
+ if (key.length == 1) {
+ redisTemplate.delete(key[0]);
+ } else {
+ redisTemplate.delete(String.valueOf(CollectionUtils.arrayToList(key)));
+ }
+ }
+ }
+
+
+ // ============================String=============================
+
+ /**
+ * 普通缓存获取
+ * @param key 键
+ * @return 值
+ */
+ public Object get(String key) {
+ return key == null ? null : redisTemplate.opsForValue().get(key);
+ }
+
+ /**
+ * 普通缓存放入
+ * @param key 键
+ * @param value 值
+ * @return true成功 false失败
+ */
+
+ public boolean set(String key, Object value) {
+ try {
+ redisTemplate.opsForValue().set(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 普通缓存放入并设置时间
+ * @param key 键
+ * @param value 值
+ * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
+ * @return true成功 false 失败
+ */
+
+ public boolean set(String key, Object value, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+ } else {
+ set(key, value);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 递增
+ * @param key 键
+ * @param delta 要增加几(大于0)
+ */
+ public long incr(String key, long delta) {
+ if (delta < 0) {
+ throw new RuntimeException("递增因子必须大于0");
+ }
+ return redisTemplate.opsForValue().increment(key, delta);
+ }
+
+
+ /**
+ * 递减
+ * @param key 键
+ * @param delta 要减少几(小于0)
+ */
+ public long decr(String key, long delta) {
+ if (delta < 0) {
+ throw new RuntimeException("递减因子必须大于0");
+ }
+ return redisTemplate.opsForValue().increment(key, -delta);
+ }
+
+
+ // ================================Map=================================
+
+ /**
+ * HashGet
+ * @param key 键 不能为null
+ * @param item 项 不能为null
+ */
+ public Object hget(String key, String item) {
+ return redisTemplate.opsForHash().get(key, item);
+ }
+
+ /**
+ * 获取hashKey对应的所有键值
+ * @param key 键
+ * @return 对应的多个键值
+ */
+ public Map