Skip to content

Commit a3f137f

Browse files
committed
feat: 查询API角色关系方法优化
1 parent 241f19c commit a3f137f

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

system/src/main/java/top/cadecode/uniboot/system/serviceimpl/SysApiServiceImpl.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package top.cadecode.uniboot.system.serviceimpl;
22

3+
import cn.hutool.core.util.ObjectUtil;
34
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
45
import com.fasterxml.jackson.core.type.TypeReference;
56
import lombok.RequiredArgsConstructor;
@@ -13,7 +14,6 @@
1314
import top.cadecode.uniboot.system.service.SysApiService;
1415

1516
import java.util.List;
16-
import java.util.Optional;
1717
import java.util.concurrent.TimeUnit;
1818

1919
/**
@@ -31,13 +31,19 @@ public class SysApiServiceImpl extends ServiceImpl<SysApiMapper, SysApi> impleme
3131
@Cacheable(cacheNames = CacheKeyPrefix.API_ROLES, cacheManager = "localCache5s")
3232
@Override
3333
public List<SysApiRolesVo> listRolesVo() {
34-
List<SysApiRolesVo> sysApiRolesVos = RedisUtil.get(CacheKeyPrefix.API_ROLES, new TypeReference<List<SysApiRolesVo>>() {
35-
});
36-
return Optional.ofNullable(sysApiRolesVos).orElseGet(() -> {
34+
List<SysApiRolesVo> sysApiRolesVos = RedisUtil.get(CacheKeyPrefix.API_ROLES, new TypeReference<List<SysApiRolesVo>>() {});
35+
if (ObjectUtil.isNotNull(sysApiRolesVos)) {
36+
return sysApiRolesVos;
37+
}
38+
synchronized (this) {
39+
sysApiRolesVos = RedisUtil.get(CacheKeyPrefix.API_ROLES, new TypeReference<List<SysApiRolesVo>>() {});
40+
if (ObjectUtil.isNotNull(sysApiRolesVos)) {
41+
return sysApiRolesVos;
42+
}
3743
List<SysApiRolesVo> voList = sysApiMapper.selectRolesVo(null);
3844
// 每三十分钟刷新一次
3945
RedisUtil.set(CacheKeyPrefix.API_ROLES, voList, 30, TimeUnit.MINUTES);
4046
return voList;
41-
});
47+
}
4248
}
4349
}

0 commit comments

Comments
 (0)