Skip to content

Commit 4a07b41

Browse files
committed
[代码完善](v2.5): v2.5 beta 优化菜单缓存
1 parent ed7bfa3 commit 4a07b41

4 files changed

Lines changed: 22 additions & 17 deletions

File tree

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

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,23 @@ public boolean hasKey(String key) {
160160
* 删除缓存
161161
* @param key 可以传一个值 或多个
162162
*/
163-
public void del(String... key) {
164-
if (key != null && key.length > 0) {
165-
if (key.length == 1) {
166-
redisTemplate.delete(key[0]);
163+
public void del(String... keys) {
164+
if (keys != null && keys.length > 0) {
165+
if (keys.length == 1) {
166+
boolean result = redisTemplate.delete(keys[0]);
167+
System.out.println("--------------------------------------------");
168+
System.out.println(new StringBuilder("删除缓存:").append(keys[0]).append(",结果:").append(result));
169+
System.out.println("--------------------------------------------");
167170
} else {
168-
redisTemplate.delete(CollectionUtils.arrayToList(key));
171+
Set<Object> keySet = new HashSet<>();
172+
for (String key : keys) {
173+
keySet.addAll(redisTemplate.keys(key));
174+
}
175+
long count = redisTemplate.delete(keySet);
176+
System.out.println("--------------------------------------------");
177+
System.out.println("成功删除缓存:" + keySet.toString());
178+
System.out.println("缓存删除数量:" + count + "个");
179+
System.out.println("--------------------------------------------");
169180
}
170181
}
171182
}

eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
7878
* @return /
7979
*/
8080
@Query(value = "SELECT u.* FROM sys_user u, sys_users_roles r, sys_roles_depts d WHERE " +
81-
"u.user_id = r.user_id AND r.role_id = d.role_id AND r.role_id = ?1", nativeQuery = true)
81+
"u.user_id = r.user_id AND r.role_id = d.role_id AND r.role_id = ?1 group by u.user_id", nativeQuery = true)
8282
List<User> findByDeptRoleId(Long id);
8383

8484
/**
@@ -87,7 +87,7 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
8787
* @return /
8888
*/
8989
@Query(value = "SELECT u.* FROM sys_user u, sys_users_roles ur, sys_roles_menus rm WHERE\n" +
90-
"u.user_id = ur.user_id AND ur.role_id = rm.role_id AND rm.menu_id = ?1", nativeQuery = true)
90+
"u.user_id = ur.user_id AND ur.role_id = rm.role_id AND rm.menu_id = ?1 group by u.user_id", nativeQuery = true)
9191
List<User> findByMenuId(Long id);
9292

9393
/**

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,9 @@ public void create(Menu resources) {
129129
resources.setSubCount(0);
130130
if(resources.getPid() != null){
131131
// 清理缓存
132-
redisUtils.del("menu::pid:" + resources.getPid());
133132
updateSubCnt(resources.getPid());
134133
}
134+
redisUtils.del("menu::pid:" + (resources.getPid() == null ? 0 : resources.getPid()));
135135
}
136136

137137
@Override
@@ -207,10 +207,10 @@ public Set<Menu> getDeleteMenus(List<Menu> menuList, Set<Menu> menuSet) {
207207
@Transactional(rollbackFor = Exception.class)
208208
public void delete(Set<Menu> menuSet) {
209209
for (Menu menu : menuSet) {
210-
roleService.untiedMenu(menu.getId());
211-
menuRepository.deleteById(menu.getId());
212210
// 清理缓存
213211
delCaches(menu.getId(), menu.getPid());
212+
roleService.untiedMenu(menu.getId());
213+
menuRepository.deleteById(menu.getId());
214214
if(menu.getPid() != null){
215215
updateSubCnt(menu.getPid());
216216
}
@@ -351,8 +351,6 @@ public void delCaches(Long id, Long pid){
351351
List<User> users = userRepository.findByMenuId(id);
352352
redisUtils.del("menu::id:" +id);
353353
redisUtils.delByKeys("menu::user:",users.stream().map(User::getId).collect(Collectors.toSet()));
354-
if(pid != null){
355-
redisUtils.del("menu::pid:" + pid);
356-
}
354+
redisUtils.del("menu::pid:" + (pid == null ? 0 : pid));
357355
}
358356
}

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,6 @@ public void updateMenu(Role resources, RoleDto roleDTO) {
131131
@Override
132132
@Transactional(rollbackFor = Exception.class)
133133
public void untiedMenu(Long menuId) {
134-
// 清理缓存
135-
List<User> users = userRepository.findByMenuId(menuId);
136-
Set<Long> userIds = users.stream().map(User::getId).collect(Collectors.toSet());
137-
redisUtils.delByKeys("menu::user:",userIds);
138134
// 更新菜单
139135
roleRepository.untiedMenu(menuId);
140136
}

0 commit comments

Comments
 (0)