1
0
mirror of https://github.com/FatttSnake/Pinnacle-OA.git synced 2026-04-05 23:11:24 +08:00

Optimized getUserInfo

This commit is contained in:
2023-06-03 19:36:48 +08:00
parent bf3a74ec27
commit 8697c34282
5 changed files with 46 additions and 17 deletions

View File

@@ -96,6 +96,10 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId> <artifactId>spring-boot-starter-actuator</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -1,5 +1,7 @@
package com.cfive.pinnacle.config; package com.cfive.pinnacle.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
@@ -11,12 +13,12 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
public class RedisConfig { public class RedisConfig {
@Bean @Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
{
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setConnectionFactory(redisConnectionFactory);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer<Object> objectJackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule());
Jackson2JsonRedisSerializer<Object> objectJackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class);
// 使用StringRedisSerializer来序列化和反序列化redis的key值 // 使用StringRedisSerializer来序列化和反序列化redis的key值
redisTemplate.setKeySerializer(stringRedisSerializer); redisTemplate.setKeySerializer(stringRedisSerializer);

View File

@@ -66,5 +66,6 @@ public class Department implements Serializable {
* 部门成员 * 部门成员
*/ */
@TableField(exist = false) @TableField(exist = false)
@Deprecated
private List<User> userList; private List<User> userList;
} }

View File

@@ -5,6 +5,7 @@ import com.cfive.pinnacle.exception.TokenHasExpiredException;
import com.cfive.pinnacle.utils.JwtUtil; import com.cfive.pinnacle.utils.JwtUtil;
import com.cfive.pinnacle.utils.RedisCache; import com.cfive.pinnacle.utils.RedisCache;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import jakarta.annotation.Nonnull; import jakarta.annotation.Nonnull;
import jakarta.servlet.FilterChain; import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
@@ -42,7 +43,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
JwtUtil.parseJWT(token); JwtUtil.parseJWT(token);
String redisKey = "login:" + token; String redisKey = "login:" + token;
LoginUser loginUser = new ObjectMapper().convertValue(redisCache.getCacheObject(redisKey), LoginUser.class); LoginUser loginUser = new ObjectMapper().registerModule(new JavaTimeModule()).convertValue(redisCache.getCacheObject(redisKey), LoginUser.class);
if (Objects.isNull(loginUser)) { if (Objects.isNull(loginUser)) {
throw new TokenHasExpiredException(); throw new TokenHasExpiredException();
} }

View File

@@ -30,7 +30,7 @@
</where> </where>
</select> </select>
<select id="getAllWithRoleAndGroup" resultMap="userMap"> <select id="getAllWithRoleAndGroup" resultMap="userWithRoleMap">
select distinct t_user.id as user_id, select distinct t_user.id as user_id,
t_user.username as user_username, t_user.username as user_username,
t_user.department_id as user_department_id, t_user.department_id as user_department_id,
@@ -66,7 +66,7 @@
</where> </where>
</select> </select>
<select id="getOneById" resultMap="userMap"> <select id="getOneById" resultMap="userWithRoleMap">
select t_user.id as user_id, select t_user.id as user_id,
t_user.username as user_username, t_user.username as user_username,
t_user.department_id as user_department_id, t_user.department_id as user_department_id,
@@ -109,6 +109,11 @@
ts.id as staff_id, ts.id as staff_id,
ts.first_name as staff_first_name, ts.first_name as staff_first_name,
ts.last_name as staff_last_name, ts.last_name as staff_last_name,
ts.gender as staff_gender,
ts.birth as staff_birth,
ts.email as staff_email,
ts.tel as staff_tel,
ts.address as staff_address,
ts.deleted as staff_deleted, ts.deleted as staff_deleted,
ts.version as staff_version, ts.version as staff_version,
tm.id as menu_id, tm.id as menu_id,
@@ -143,7 +148,7 @@
and t_user.username = #{username} and t_user.username = #{username}
</select> </select>
<select id="getAllAffairUser" resultMap="userMap"> <select id="getAllAffairUser" resultMap="userWithRoleMap">
select distinct t_user.id as user_id, select distinct t_user.id as user_id,
t_user.username as user_username, t_user.username as user_username,
t_user.department_id as user_department_id, t_user.department_id as user_department_id,
@@ -179,7 +184,7 @@
and t.code = 'affair:manage:modify' and t.code = 'affair:manage:modify'
</select> </select>
<select id="getAllDepartmentUser" resultMap="userMap"> <select id="getAllDepartmentUser" resultMap="userWithRoleMap">
select distinct t_user.id as user_id, select distinct t_user.id as user_id,
t_user.username as user_username, t_user.username as user_username,
t_user.department_id as user_department_id, t_user.department_id as user_department_id,
@@ -224,7 +229,30 @@
<result property="version" column="user_version"/> <result property="version" column="user_version"/>
</resultMap> </resultMap>
<resultMap id="userMap" type="user" extends="userBase"> <resultMap id="userWithIfoMap" type="user" extends="userBase">
<association property="staff" javaType="staff">
<id property="id" column="staff_id"/>
<result property="firstName" column="staff_first_name"/>
<result property="lastName" column="staff_last_name"/>
<result property="gender" column="staff_gender"/>
<result property="birth" column="staff_birth"/>
<result property="email" column="staff_email"/>
<result property="tel" column="staff_tel"/>
<result property="address" column="staff_address"/>
<result property="deleted" column="staff_deleted"/>
<result property="version" column="staff_version"/>
</association>
<association property="department" javaType="department">
<id property="id" column="department_id"/>
<result property="name" column="department_name"/>
<result property="tel" column="department_tel"/>
<result property="address" column="department_address"/>
<result property="deleted" column="department_deleted"/>
<result property="version" column="department_version"/>
</association>
</resultMap>
<resultMap id="userWithRoleMap" type="user" extends="userBase">
<association property="staff" javaType="staff"> <association property="staff" javaType="staff">
<id property="id" column="staff_id"/> <id property="id" column="staff_id"/>
<result property="firstName" column="staff_first_name"/> <result property="firstName" column="staff_first_name"/>
@@ -248,15 +276,8 @@
</collection> </collection>
</resultMap> </resultMap>
<resultMap id="userWithPowerMap" type="user" extends="userBase"> <resultMap id="userWithPowerMap" type="user" extends="userWithIfoMap">
<result property="passwd" column="user_passwd"/> <result property="passwd" column="user_passwd"/>
<association property="staff" javaType="staff">
<id property="id" column="staff_id"/>
<result property="firstName" column="staff_first_name"/>
<result property="lastName" column="staff_last_name"/>
<result property="deleted" column="staff_deleted"/>
<result property="version" column="staff_version"/>
</association>
<collection property="menus" ofType="menu"> <collection property="menus" ofType="menu">
<id property="id" column="menu_id"/> <id property="id" column="menu_id"/>
<result property="name" column="menu_name"/> <result property="name" column="menu_name"/>