Skip to content

Commit 96660b9

Browse files
committed
[代码优化](v2.5): 代码优化,缓存优化
1 parent 6bc2a8a commit 96660b9

14 files changed

Lines changed: 64 additions & 106 deletions

File tree

eladmin-common/src/main/java/me/zhengjie/utils/CacheKey.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515
*/
1616
package me.zhengjie.utils;
1717

18-
1918
/**
2019
* @author: liaojinlong
2120
* @date: 2020/6/11 15:49
22-
* @apiNote: 关于缓存的Key 集合
21+
* @apiNote: 关于缓存的Key集合
2322
*/
2423
public interface CacheKey {
2524

@@ -39,7 +38,7 @@ public interface CacheKey {
3938
String USER_ID = "user::id:";
4039
String USER_NAME = "user::username:";
4140
/**
42-
* s数据
41+
* 数据
4342
*/
4443
String DATE_USER = "data::user:";
4544
/**
@@ -50,6 +49,8 @@ public interface CacheKey {
5049
* 角色授权
5150
*/
5251
String ROLE_AUTH = "role::auth:";
53-
52+
/**
53+
* 角色信息
54+
*/
5455
String ROLE_ID = "role::id:";
5556
}

eladmin-common/src/main/java/me/zhengjie/utils/DateUtil.java

Lines changed: 32 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@
2626
* @apiNote: JDK 8 新日期类 格式化与字符串转换 工具类
2727
*/
2828
public class DateUtil {
29-
public static final DateTimeFormatter dfyMdHms = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
30-
public static final DateTimeFormatter dfyMd = DateTimeFormatter.ofPattern("yyyy-MM-dd");
29+
30+
public static final DateTimeFormatter DFY_MD_HMS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
31+
public static final DateTimeFormatter DFY_MD = DateTimeFormatter.ofPattern("yyyy-MM-dd");
3132

3233
/**
3334
* LocalDateTime 转时间戳
3435
*
35-
* @param localDateTime
36-
* @return/
36+
* @param localDateTime /
37+
* @return /
3738
*/
3839
public static Long getTimeStamp(LocalDateTime localDateTime) {
3940
return localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond();
@@ -42,8 +43,8 @@ public static Long getTimeStamp(LocalDateTime localDateTime) {
4243
/**
4344
* 时间戳转LocalDateTime
4445
*
45-
* @param timeStamp
46-
* @return/
46+
* @param timeStamp /
47+
* @return /
4748
*/
4849
public static LocalDateTime fromTimeStamp(Long timeStamp) {
4950
return LocalDateTime.ofEpochSecond(timeStamp, 0, OffsetDateTime.now().getOffset());
@@ -53,8 +54,8 @@ public static LocalDateTime fromTimeStamp(Long timeStamp) {
5354
* LocalDateTime 转 Date
5455
* Jdk8 后 不推荐使用 {@link Date} Date
5556
*
56-
* @param localDateTime
57-
* @return/
57+
* @param localDateTime /
58+
* @return /
5859
*/
5960
public static Date toDate(LocalDateTime localDateTime) {
6061
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
@@ -64,8 +65,8 @@ public static Date toDate(LocalDateTime localDateTime) {
6465
* LocalDate 转 Date
6566
* Jdk8 后 不推荐使用 {@link Date} Date
6667
*
67-
* @param localDate
68-
* @return/
68+
* @param localDate /
69+
* @return /
6970
*/
7071
public static Date toDate(LocalDate localDate) {
7172
return toDate(localDate.atTime(LocalTime.now(ZoneId.systemDefault())));
@@ -76,8 +77,8 @@ public static Date toDate(LocalDate localDate) {
7677
* Date转 LocalDateTime
7778
* Jdk8 后 不推荐使用 {@link Date} Date
7879
*
79-
* @param date
80-
* @return/
80+
* @param date /
81+
* @return /
8182
*/
8283
public static LocalDateTime toLocalDateTime(Date date) {
8384
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
@@ -86,9 +87,9 @@ public static LocalDateTime toLocalDateTime(Date date) {
8687
/**
8788
* 日期 格式化
8889
*
89-
* @param localDateTime
90-
* @param patten
91-
* @return/
90+
* @param localDateTime /
91+
* @param patten /
92+
* @return /
9293
*/
9394
public static String localDateTimeFormat(LocalDateTime localDateTime, String patten) {
9495
DateTimeFormatter df = DateTimeFormatter.ofPattern(patten);
@@ -98,9 +99,9 @@ public static String localDateTimeFormat(LocalDateTime localDateTime, String pat
9899
/**
99100
* 日期 格式化
100101
*
101-
* @param localDateTime
102-
* @param df
103-
* @return/
102+
* @param localDateTime /
103+
* @param df /
104+
* @return /
104105
*/
105106
public static String localDateTimeFormat(LocalDateTime localDateTime, DateTimeFormatter df) {
106107
return df.format(localDateTime);
@@ -109,28 +110,28 @@ public static String localDateTimeFormat(LocalDateTime localDateTime, DateTimeFo
109110
/**
110111
* 日期格式化 yyyy-MM-dd HH:mm:ss
111112
*
112-
* @param localDateTime
113-
* @return/
113+
* @param localDateTime /
114+
* @return /
114115
*/
115116
public static String localDateTimeFormatyMdHms(LocalDateTime localDateTime) {
116-
return dfyMdHms.format(localDateTime);
117+
return DFY_MD_HMS.format(localDateTime);
117118
}
118119

119120
/**
120121
* 日期格式化 yyyy-MM-dd
121122
*
122-
* @param localDateTime
123-
* @return/
123+
* @param localDateTime /
124+
* @return /
124125
*/
125126
public String localDateTimeFormatyMd(LocalDateTime localDateTime) {
126-
return dfyMd.format(localDateTime);
127+
return DFY_MD.format(localDateTime);
127128
}
128129

129130
/**
130131
* 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd
131132
*
132-
* @param localDateTime
133-
* @return/
133+
* @param localDateTime /
134+
* @return /
134135
*/
135136
public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, String pattern) {
136137
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
@@ -140,30 +141,20 @@ public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, Strin
140141
/**
141142
* 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd
142143
*
143-
* @param localDateTime
144-
* @return/
144+
* @param localDateTime /
145+
* @return /
145146
*/
146147
public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, DateTimeFormatter dateTimeFormatter) {
147148
return LocalDateTime.from(dateTimeFormatter.parse(localDateTime));
148149
}
149150

150-
/**
151-
* 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd
152-
*
153-
* @param localDateTime
154-
* @return/
155-
*/
156-
public static LocalDateTime parseLocalDateTimeFormatyMd(String localDateTime) {
157-
return LocalDateTime.from(dfyMd.parse(localDateTime));
158-
}
159-
160151
/**
161152
* 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd HH:mm:ss
162153
*
163-
* @param localDateTime
164-
* @return/
154+
* @param localDateTime /
155+
* @return /
165156
*/
166157
public static LocalDateTime parseLocalDateTimeFormatyMdHms(String localDateTime) {
167-
return LocalDateTime.from(dfyMdHms.parse(localDateTime));
158+
return LocalDateTime.from(DFY_MD_HMS.parse(localDateTime));
168159
}
169160
}

eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package me.zhengjie.modules.security.rest;
1717

1818
import cn.hutool.core.util.IdUtil;
19-
import com.wf.captcha.ArithmeticCaptcha;
2019
import com.wf.captcha.base.Captcha;
2120
import io.swagger.annotations.Api;
2221
import io.swagger.annotations.ApiOperation;
@@ -38,7 +37,6 @@
3837
import me.zhengjie.utils.RedisUtils;
3938
import me.zhengjie.utils.SecurityUtils;
4039
import me.zhengjie.utils.StringUtils;
41-
import org.springframework.beans.factory.annotation.Value;
4240
import org.springframework.http.HttpStatus;
4341
import org.springframework.http.ResponseEntity;
4442
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -47,7 +45,6 @@
4745
import org.springframework.security.core.context.SecurityContextHolder;
4846
import org.springframework.validation.annotation.Validated;
4947
import org.springframework.web.bind.annotation.*;
50-
5148
import javax.annotation.Resource;
5249
import javax.servlet.http.HttpServletRequest;
5350
import java.util.HashMap;
@@ -91,7 +88,6 @@ public ResponseEntity<Object> login(@Validated @RequestBody AuthUserDto authUser
9188
}
9289
UsernamePasswordAuthenticationToken authenticationToken =
9390
new UsernamePasswordAuthenticationToken(authUser.getUsername(), password);
94-
9591
Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
9692
SecurityContextHolder.getContext().setAuthentication(authentication);
9793
// 生成令牌

eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenFilter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
9393
/**
9494
* 初步检测Token
9595
*
96-
* @param request
97-
* @return
96+
* @param request /
97+
* @return /
9898
*/
9999
private String resolveToken(HttpServletRequest request) {
100100
String bearerToken = request.getHeader(properties.getHeader());

eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ public class TokenProvider implements InitializingBean {
5252
private final SecurityProperties properties;
5353
private final RedisUtils redisUtils;
5454
public static final String AUTHORITIES_KEY = "auth";
55-
private Key key;
5655
private JwtParser jwtParser;
5756
private JwtBuilder jwtBuilder;
5857

@@ -64,7 +63,7 @@ public TokenProvider(SecurityProperties properties, RedisUtils redisUtils) {
6463
@Override
6564
public void afterPropertiesSet() {
6665
byte[] keyBytes = Decoders.BASE64.decode(properties.getBase64Secret());
67-
this.key = Keys.hmacShaKeyFor(keyBytes);
66+
Key key = Keys.hmacShaKeyFor(keyBytes);
6867
jwtParser = Jwts.parserBuilder()
6968
.setSigningKey(key)
7069
.build();
@@ -76,11 +75,11 @@ public void afterPropertiesSet() {
7675
* 创建Token 设置永不过期,
7776
* Token 的时间有效性转到Redis 维护
7877
*
79-
* @param authentication
80-
* @return
78+
* @param authentication /
79+
* @return /
8180
*/
8281
public String createToken(Authentication authentication) {
83-
/**
82+
/*
8483
* 获取权限列表
8584
*/
8685
String authorities = authentication.getAuthorities().stream()
@@ -98,8 +97,8 @@ public String createToken(Authentication authentication) {
9897
/**
9998
* 依据Token 获取鉴权信息
10099
*
101-
* @param token
102-
* @return
100+
* @param token /
101+
* @return /
103102
*/
104103
Authentication getAuthentication(String token) {
105104
Claims claims = getClaims(token);

eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheClean.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@
2727
@Component
2828
public class UserCacheClean {
2929

30-
3130
/**
3231
* 清理特定用户缓存信息<br>
3332
* 用户信息变更时
3433
*
35-
* @param userName
34+
* @param userName /
3635
*/
3736
public void cleanUserCache(String userName) {
3837
if (StringUtils.isNotEmpty(userName)) {

eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.springframework.security.core.userdetails.UserDetailsService;
2828
import org.springframework.security.core.userdetails.UsernameNotFoundException;
2929
import org.springframework.stereotype.Service;
30-
3130
import java.util.Map;
3231
import java.util.concurrent.ConcurrentHashMap;
3332

@@ -42,7 +41,6 @@ public class UserDetailsServiceImpl implements UserDetailsService {
4241
private final RoleService roleService;
4342
private final DataService dataService;
4443
private final LoginProperties loginProperties;
45-
4644
public void setEnableCache(boolean enableCache) {
4745
this.loginProperties.setCacheEnable(enableCache);
4846
}

eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@
2727
import me.zhengjie.modules.system.service.dto.RoleQueryCriteria;
2828
import me.zhengjie.modules.system.service.dto.RoleSmallDto;
2929
import me.zhengjie.utils.SecurityUtils;
30-
import me.zhengjie.utils.ThrowableUtil;
3130
import org.springframework.data.domain.Pageable;
32-
import org.springframework.data.domain.Sort;
33-
import org.springframework.data.web.PageableDefault;
3431
import org.springframework.http.HttpStatus;
3532
import org.springframework.http.ResponseEntity;
3633
import org.springframework.security.access.prepost.PreAuthorize;

eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public void update(Role resources) {
117117
role.setLevel(resources.getLevel());
118118
roleRepository.save(role);
119119
// 更新相关缓存
120-
delCaches(role.getId());
120+
delCaches(role.getId(), null);
121121
}
122122

123123
@Override
@@ -126,11 +126,10 @@ public void updateMenu(Role resources, RoleDto roleDTO) {
126126
List<User> users = userRepository.findByRoleId(role.getId());
127127
// 更新菜单
128128
role.setMenus(resources.getMenus());
129-
cleanCache(resources, users);
129+
delCaches(resources.getId(), users);
130130
roleRepository.save(role);
131131
}
132132

133-
134133
@Override
135134
@Transactional(rollbackFor = Exception.class)
136135
public void untiedMenu(Long menuId) {
@@ -143,7 +142,7 @@ public void untiedMenu(Long menuId) {
143142
public void delete(Set<Long> ids) {
144143
for (Long id : ids) {
145144
// 更新相关缓存
146-
delCaches(id);
145+
delCaches(id, null);
147146
}
148147
roleRepository.deleteAllByIdIn(ids);
149148
}
@@ -208,40 +207,18 @@ public List<Role> findInMenuId(List<Long> menuIds) {
208207

209208
/**
210209
* 清理缓存
211-
*
212210
* @param id /
213211
*/
214-
public void delCaches(Long id) {
215-
List<User> users = userRepository.findByRoleId(id);
212+
public void delCaches(Long id, List<User> users) {
213+
users = CollectionUtil.isEmpty(users) ? userRepository.findByRoleId(id) : users;
216214
if (CollectionUtil.isNotEmpty(users)) {
217-
users.stream().forEach(item -> {
218-
userCacheClean.cleanUserCache(item.getUsername());
219-
});
215+
users.forEach(item -> userCacheClean.cleanUserCache(item.getUsername()));
220216
Set<Long> userIds = users.stream().map(User::getId).collect(Collectors.toSet());
221217
redisUtils.delByKeys(CacheKey.DATE_USER, userIds);
222218
redisUtils.delByKeys(CacheKey.MENU_USER, userIds);
223219
redisUtils.delByKeys(CacheKey.ROLE_AUTH, userIds);
220+
redisUtils.del(CacheKey.ROLE_ID + id);
224221
}
225222

226223
}
227-
228-
/**
229-
* 清理缓存
230-
*
231-
* @param resources
232-
* @param users
233-
*/
234-
private void cleanCache(Role resources, List<User> users) {
235-
// 清理缓存
236-
if (CollectionUtil.isNotEmpty(users)) {
237-
users.forEach(item -> {
238-
userCacheClean.cleanUserCache(item.getUsername());
239-
});
240-
Set<Long> userIds = users.stream().map(User::getId).collect(Collectors.toSet());
241-
redisUtils.delByKeys(CacheKey.MENU_USER, userIds);
242-
redisUtils.delByKeys(CacheKey.ROLE_AUTH, userIds);
243-
redisUtils.del(CacheKey.ROLE_ID + resources.getId());
244-
}
245-
}
246-
247224
}

0 commit comments

Comments
 (0)