mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
完善
This commit is contained in:
@@ -21,6 +21,7 @@ import jakarta.annotation.PostConstruct;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Page;
|
||||
@@ -45,6 +46,10 @@ public class PermissionService extends BaseService<PermissionEntity, PermissionR
|
||||
@PostConstruct
|
||||
public void init() {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public PermissionDto create(CreatePermissionDto request) {
|
||||
|
||||
PermissionEntity entity = mapper.toEntity(request);
|
||||
@@ -169,4 +174,27 @@ public class PermissionService extends BaseService<PermissionEntity, PermissionR
|
||||
public List<PermissionEntity> getByTypes(String[] types) {
|
||||
return this.repository.findAllByPermissionTypeIn(types);
|
||||
}
|
||||
|
||||
public void initDefault() {
|
||||
|
||||
List<PermissionEntity> permissionType = this.repository.findAllByPermissionType("0");
|
||||
|
||||
if (permissionType.isEmpty()) {
|
||||
|
||||
PermissionEntity permission = new PermissionEntity();
|
||||
|
||||
permission.setCode("anonymous");
|
||||
|
||||
permission.setName("匿名用户权限");
|
||||
|
||||
permission.setPermissionType("0");
|
||||
|
||||
permission.setResources(
|
||||
resourceService.findAll().stream()
|
||||
.filter(x -> BooleanUtils.isTrue(x.getAnonymous()))
|
||||
.toList());
|
||||
|
||||
this.repository.save(permission);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import jakarta.annotation.PostConstruct;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
@@ -43,6 +44,7 @@ public class RoleService extends BaseService<RoleEntity, RoleRepository> {
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = "userResources", allEntries = true)
|
||||
public RoleDto update(UpdateRoleDto request) {
|
||||
RoleEntity entity = this.repository.get(request.getId());
|
||||
this.mapper.updateEntity(entity, request);
|
||||
@@ -52,6 +54,7 @@ public class RoleService extends BaseService<RoleEntity, RoleRepository> {
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = "userResources", allEntries = true)
|
||||
public void delete(IdRequest request) {
|
||||
|
||||
this.repository.deleteAllById(request.getIds());
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.lihongjie.coal.coalParameterDef.service.CoalParameterDefService;
|
||||
import cn.lihongjie.coal.dictionary.service.DictionaryService;
|
||||
import cn.lihongjie.coal.organization.entity.OrganizationEntity;
|
||||
import cn.lihongjie.coal.organization.service.OrganizationService;
|
||||
import cn.lihongjie.coal.permission.service.PermissionService;
|
||||
import cn.lihongjie.coal.resource.service.ResourceService;
|
||||
import cn.lihongjie.coal.script.service.ScriptService;
|
||||
import cn.lihongjie.coal.session.SessionService;
|
||||
@@ -41,6 +42,8 @@ public class InitDataRunner implements CommandLineRunner {
|
||||
|
||||
@Autowired SysConfigService sysConfigService;
|
||||
|
||||
@Autowired PermissionService permissionService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void run(String... args) throws Exception {
|
||||
@@ -69,6 +72,8 @@ public class InitDataRunner implements CommandLineRunner {
|
||||
|
||||
scriptService.initFromResource();
|
||||
|
||||
permissionService.initDefault();
|
||||
|
||||
} finally {
|
||||
SecurityContextHolder.clearContext();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.lihongjie.coal.session;
|
||||
|
||||
import cn.lihongjie.coal.common.Constants;
|
||||
import cn.lihongjie.coal.common.Ctx;
|
||||
import cn.lihongjie.coal.common.RequestUtils;
|
||||
import cn.lihongjie.coal.exception.BizException;
|
||||
import cn.lihongjie.coal.organization.entity.OrganizationEntity;
|
||||
@@ -22,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
@@ -204,9 +206,18 @@ public class SessionService {
|
||||
if (sessionId != null) {
|
||||
|
||||
stringRedisTemplate.opsForValue().getAndDelete(sessionId);
|
||||
try {
|
||||
|
||||
invalidateResourceCache(Ctx.currentUser().getId());
|
||||
} catch (Exception e) {
|
||||
log.warn("清除用户缓存失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = "userResources", key = "#userId")
|
||||
public void invalidateResourceCache(String userId) {}
|
||||
|
||||
public void anonymousSession() {
|
||||
|
||||
SecurityContext context = SecurityContextHolder.createEmptyContext();
|
||||
|
||||
@@ -1,13 +1,33 @@
|
||||
package cn.lihongjie.coal.spring.config;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.cache.RedisCacheManagerBuilderCustomizer;
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.cache.RedisCacheConfiguration;
|
||||
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
|
||||
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
@EnableCaching
|
||||
@Configuration
|
||||
public class CacheConfig {
|
||||
@Autowired ObjectMapper objectMapper;
|
||||
|
||||
@Bean
|
||||
public RedisCacheConfiguration cacheConfiguration() {
|
||||
return RedisCacheConfiguration.defaultCacheConfig()
|
||||
.entryTtl(Duration.ofMinutes(10))
|
||||
.disableCachingNullValues()
|
||||
.serializeValuesWith(
|
||||
RedisSerializationContext.SerializationPair.fromSerializer(
|
||||
new GenericJackson2JsonRedisSerializer(objectMapper)));
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RedisCacheManagerBuilderCustomizer myRedisCacheManagerBuilderCustomizer() {
|
||||
return new RedisCacheManagerBuilderCustomizer() {
|
||||
|
||||
@@ -32,6 +32,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
@@ -118,6 +120,7 @@ public class UserService extends BaseService<UserEntity, UserRepository> {
|
||||
}
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = "userResources", key = "#request.id")
|
||||
public UserDto update(UpdateUserDto request) {
|
||||
UserEntity user = this.repository.get(request.getId());
|
||||
this.mapper.updateEntity(user, request);
|
||||
@@ -230,6 +233,7 @@ public class UserService extends BaseService<UserEntity, UserRepository> {
|
||||
|
||||
@Autowired PermissionService permissionService;
|
||||
|
||||
@Cacheable(cacheNames = "userResources", key = "#id")
|
||||
public List<ResourceDto> resources(String id) {
|
||||
|
||||
UserEntity user = get(id);
|
||||
|
||||
@@ -74,7 +74,9 @@ spring:
|
||||
cache:
|
||||
|
||||
type: redis
|
||||
|
||||
redis:
|
||||
|
||||
enable-statistics: true
|
||||
application:
|
||||
name: coal
|
||||
|
||||
Reference in New Issue
Block a user