From 9e8eea81b2f13eecada62d2352e86b8682f9c162 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sun, 21 Jan 2024 23:56:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=AE=80=E5=8D=95=E8=A1=A5=E4=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsl/oa/common/constant/RedisConstant.java | 14 +++-- .../jsl/oa/controllers/UserController.java | 2 +- src/main/java/com/jsl/oa/dao/UserDAO.java | 30 ++++++++-- .../jsl/oa/utils/redis/EmailRedisUtil.java | 3 + .../com/jsl/oa/utils/redis/UserRedisUtil.java | 55 +++++++++++++++++++ src/main/resources/application.yml | 35 +++--------- 6 files changed, 104 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/jsl/oa/utils/redis/UserRedisUtil.java diff --git a/src/main/java/com/jsl/oa/common/constant/RedisConstant.java b/src/main/java/com/jsl/oa/common/constant/RedisConstant.java index 6617ef3..841c4af 100755 --- a/src/main/java/com/jsl/oa/common/constant/RedisConstant.java +++ b/src/main/java/com/jsl/oa/common/constant/RedisConstant.java @@ -16,12 +16,18 @@ public class RedisConstant { /* * 类型分类 */ - public static final String TYPE_EMAIL = "mail:"; // 邮件相关 - public static final String TYPE_AUTH = "auth:"; // 登陆相关 + // 邮件相关 + public static final String TYPE_EMAIL = "mail:"; + // 登陆相关 + public static final String TYPE_AUTH = "auth:"; /* * 表分类 */ - public static final String TABLE_EMAIL = "code:"; // 邮箱验证码 - public static final String TABLE_TOKEN = "token:"; // 令牌相关 + // 邮箱验证码 + public static final String TABLE_EMAIL = "code:"; + // 令牌相关 + public static final String TABLE_TOKEN = "token:"; + // 用户相关 + public static final String TABLE_USER = "user:"; } diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index f22356a..ebcf258 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -42,7 +42,7 @@ public class UserController { * @param id 用户id * @return {@link BaseResponse} */ - @PutMapping("/user/delete") + @DeleteMapping("/user/delete") public BaseResponse userDelete(HttpServletRequest request, @RequestParam String id) { log.info("请求接口[PUT]: /user/delete"); // 判断是否有参数错误 diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java index 8cdbb6b..55bbb27 100755 --- a/src/main/java/com/jsl/oa/dao/UserDAO.java +++ b/src/main/java/com/jsl/oa/dao/UserDAO.java @@ -1,5 +1,7 @@ package com.jsl.oa.dao; +import com.google.gson.Gson; +import com.jsl.oa.common.constant.BusinessConstants; import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.doData.RoleDO; @@ -9,8 +11,10 @@ import com.jsl.oa.model.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserCurrentBackVO; import com.jsl.oa.model.voData.UserEditProfileVO; import com.jsl.oa.utils.Processing; +import com.jsl.oa.utils.redis.UserRedisUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -23,6 +27,8 @@ public class UserDAO { public final UserMapper userMapper; private final RoleMapper roleMapper; + private final Gson gson; + private final UserRedisUtil userRedisUtil; /** *

用户名获取用户信息

@@ -46,14 +52,30 @@ public class UserDAO { } /** + *

用户id获取用户信息

+ *
* 根据id判断用户是否存在 * - * @param id - * @return + * @param id 用户id + * @return Boolean */ - public Boolean isExistUser(Long id) { + public Boolean isExistUser(@NotNull Long id) { log.info("\t> 执行 DAO 层 UserDAO.isExistUser 方法"); - return userMapper.getUserById(id) != null; + // 从 Redis 获取数据 + String redisData = userRedisUtil.getData(BusinessConstants.NONE, id.toString()); + if (redisData != null) { + log.info("\t\t> 从 Redis 获取数据"); + return true; + } else { + UserDO userDO = userMapper.getUserById(id); + log.info("\t\t> 从 MySQL 获取数据"); + if (userDO != null) { + userRedisUtil.setData(BusinessConstants.NONE, userDO.getId().toString(), gson.toJson(userDO), 120); + return true; + } else { + return false; + } + } } /** diff --git a/src/main/java/com/jsl/oa/utils/redis/EmailRedisUtil.java b/src/main/java/com/jsl/oa/utils/redis/EmailRedisUtil.java index 6718b59..d2014f2 100755 --- a/src/main/java/com/jsl/oa/utils/redis/EmailRedisUtil.java +++ b/src/main/java/com/jsl/oa/utils/redis/EmailRedisUtil.java @@ -53,6 +53,7 @@ public class EmailRedisUtil extends RedisOperating { * @param email 邮箱 * @return 返回是否删除成功 */ + @Override public Boolean delData(@NotNull BusinessConstants businessConstants, String email) { String key = RedisConstant.TYPE_EMAIL + RedisConstant.TABLE_EMAIL + businessConstants.getValue() + email; return redisTemplate.delete(key); @@ -67,6 +68,7 @@ public class EmailRedisUtil extends RedisOperating { * @param email 邮箱 * @return 返回邮箱验证码 */ + @Override public R getData(@NotNull BusinessConstants businessConstants, String email) { String key = RedisConstant.TYPE_EMAIL + RedisConstant.TABLE_EMAIL + businessConstants.getValue() + email; return redisTemplate.opsForValue().get(key); @@ -82,6 +84,7 @@ public class EmailRedisUtil extends RedisOperating { * @param value 验证码 * @return 返回是否添加成功 */ + @Override public Boolean setData(@NotNull BusinessConstants businessConstants, String email, R value, Integer time) { // 处理数据 String key = RedisConstant.TYPE_EMAIL + RedisConstant.TABLE_EMAIL + businessConstants.getValue() + email; diff --git a/src/main/java/com/jsl/oa/utils/redis/UserRedisUtil.java b/src/main/java/com/jsl/oa/utils/redis/UserRedisUtil.java new file mode 100644 index 0000000..1cf76e8 --- /dev/null +++ b/src/main/java/com/jsl/oa/utils/redis/UserRedisUtil.java @@ -0,0 +1,55 @@ +package com.jsl.oa.utils.redis; + +import com.jsl.oa.common.constant.BusinessConstants; +import com.jsl.oa.common.constant.RedisConstant; +import com.jsl.oa.config.redis.RedisOperating; +import org.jetbrains.annotations.NotNull; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + +/** + *

用户Redis工具类

+ *
+ * 用户Redis工具类 + * + * @param 泛型 + * @since v1.1.0 + * @version v1.1.0 + * @author xiao_lfeng + */ +@Component +public class UserRedisUtil extends RedisOperating { + public UserRedisUtil(RedisTemplate redisTemplate, StringRedisTemplate stringRedisTemplate) { + super(redisTemplate, stringRedisTemplate); + } + + @Override + public Long getExpiredAt(@NotNull BusinessConstants businessConstants, String field) { + String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_USER + businessConstants.getValue() + field; + return redisTemplate.getExpire(key); + } + + @Override + public Boolean delData(@NotNull BusinessConstants businessConstants, String field) { + String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_USER + businessConstants.getValue() + field; + return redisTemplate.delete(key); + } + + @Override + public R getData(@NotNull BusinessConstants businessConstants, String field) { + String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_USER + businessConstants.getValue() + field; + return redisTemplate.opsForValue().get(key); + } + + @Override + public Boolean setData(@NotNull BusinessConstants businessConstants, String field, R value, Integer time) { + // 处理数据 + String key = RedisConstant.TYPE_AUTH + RedisConstant.TABLE_USER + businessConstants.getValue() + field; + redisTemplate.opsForValue().set(key, value); + redisTemplate.expire(key, time, TimeUnit.MINUTES); + return true; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7fbc977..22149f4 100755 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,35 +1,18 @@ +server: + port: 8080 spring: datasource: - url: jdbc:mysql://localhost:3306?organize_oa + url: jdbc:mysql://localhost:3306 username: root - password: Zrx@20041009 + password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver redis: database: 0 - host: localhost + host: 192.168.80.129 port: 6379 - password: Zrx@20041009 - mail: - default-encoding: UTF-8 - host: smtp.qiye.aliyun.com - username: wxxydeveloper@x-lf.cn - password: 114477225588Zcw - properties: - form: wxxydeveloper@x-lf.cn - mail: - smtp: - auth: true - starttls: - enable: true - ssl: - enable: true + password: 123456 + profiles: + active: dev mybatis: configuration: - map-underscore-to-camel-case: true -#logging: -# level: -# root: TRACE -# sun.rmi: OFF -# org.apache.tomcat: WARN -server: - port: 8155 \ No newline at end of file + map-underscore-to-camel-case: true \ No newline at end of file