mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
完善权限导入和导出
This commit is contained in:
@@ -18,12 +18,17 @@ import cn.lihongjie.coal.resource.mapper.ResourceMapper;
|
||||
import cn.lihongjie.coal.resource.service.ResourceService;
|
||||
import cn.lihongjie.coal.user.service.UserService;
|
||||
|
||||
import com.google.common.primitives.Ints;
|
||||
|
||||
import io.vavr.control.Try;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.PersistenceContext;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -111,6 +116,7 @@ public class PermissionService extends BaseService<PermissionEntity, PermissionR
|
||||
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
@PersistenceContext EntityManager em;
|
||||
|
||||
public PermissionExportDto exportAll() {
|
||||
@@ -132,75 +138,96 @@ public class PermissionService extends BaseService<PermissionEntity, PermissionR
|
||||
|
||||
public void importAll(PermissionExportDto dto) {
|
||||
|
||||
// List<ResourceEntity> resources =
|
||||
// dto.getResources().stream()
|
||||
// .map(rd -> resourceMapper.toEntity(rd))
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// List<PermissionEntity> permissions =
|
||||
// dto.getPermissions().stream().map(mapper::toEntity).toList();
|
||||
//
|
||||
// this.resourceService.deleteAll();
|
||||
// this.repository.deleteAll();
|
||||
//
|
||||
// for (ResourceEntity resource : resources) {
|
||||
//
|
||||
// jdbcTemplate.update(
|
||||
// """
|
||||
// INSERT INTO t_resource
|
||||
// (id,
|
||||
// create_time,
|
||||
// create_user_id,
|
||||
// update_time,
|
||||
// update_user_id,
|
||||
// code,
|
||||
// name,
|
||||
// remarks,
|
||||
// sort_key,
|
||||
// status,
|
||||
// anonymous,
|
||||
// icon,
|
||||
// metadata,
|
||||
// org_admin,
|
||||
// sys_admin,
|
||||
// type,
|
||||
// url,
|
||||
// visible,
|
||||
// parent_id,
|
||||
// file_ids,
|
||||
// rate_limit,
|
||||
// sign_check,
|
||||
// submit_token)
|
||||
// VALUES (
|
||||
//
|
||||
// :id,
|
||||
// :create_time,
|
||||
// :create_user_id,
|
||||
// :update_time,
|
||||
// :update_user_id,
|
||||
// :code,
|
||||
// :name,
|
||||
// :remarks,
|
||||
// :sort_key,
|
||||
// :status,
|
||||
// :anonymous,
|
||||
// :icon,
|
||||
// :metadata,
|
||||
// :org_admin,
|
||||
// :sys_admin,
|
||||
// :type,
|
||||
// :url,
|
||||
// :visible,
|
||||
// :parent_id,
|
||||
// :file_ids,
|
||||
// :rate_limit,
|
||||
// :sign_check,
|
||||
// :submit_token)
|
||||
//
|
||||
// """);
|
||||
// }
|
||||
//
|
||||
// this.resourceService.clearCache();
|
||||
|
||||
jdbcTemplate.update("delete from t_resource");
|
||||
jdbcTemplate.update("delete from t_permission_resources");
|
||||
jdbcTemplate.update("delete from t_permission");
|
||||
|
||||
for (var resource : dto.getResources()) {
|
||||
|
||||
jdbcTemplate.update(
|
||||
"""
|
||||
INSERT INTO t_resource
|
||||
(id,create_time,create_user_id,update_time,update_user_id,code,name,remarks,sort_key,status,anonymous,icon,metadata,org_admin,sys_admin,type,url,visible,parent_id,file_ids,rate_limit,sign_check,submit_token)
|
||||
VALUES
|
||||
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
|
||||
|
||||
""",
|
||||
resource.getId(),
|
||||
resource.getCreateTime(),
|
||||
resource.getCreateUserId(),
|
||||
resource.getUpdateTime(),
|
||||
resource.getUpdateUserId(),
|
||||
resource.getCode(),
|
||||
resource.getName(),
|
||||
resource.getRemarks(),
|
||||
resource.getSortKey(),
|
||||
Ints.tryParse(resource.getStatus()),
|
||||
resource.getAnonymous(),
|
||||
resource.getIcon(),
|
||||
resource.getMetadata(),
|
||||
resource.getOrgAdmin(),
|
||||
resource.getSysAdmin(),
|
||||
resource.getType(),
|
||||
resource.getUrl(),
|
||||
resource.getVisible(),
|
||||
resource.getParent(),
|
||||
null,
|
||||
resource.getRateLimit(),
|
||||
resource.getSignCheck(),
|
||||
resource.getSubmitToken());
|
||||
}
|
||||
|
||||
Set<String> resourceIds =
|
||||
dto.getResources().stream().map(x -> x.getId()).collect(Collectors.toSet());
|
||||
|
||||
for (var permission : dto.getPermissions()) {
|
||||
|
||||
jdbcTemplate.update(
|
||||
"""
|
||||
INSERT INTO t_permission
|
||||
(id, create_time, create_user_id, update_time, update_user_id, code, name, remarks, sort_key, status, parent_name, permission_type, file_ids)
|
||||
VALUES
|
||||
(?,?,?,?,?,?,?,?,?,?,?,?,?)
|
||||
""",
|
||||
permission.getId(),
|
||||
permission.getCreateTime(),
|
||||
permission.getCreateUserId(),
|
||||
permission.getUpdateTime(),
|
||||
permission.getUpdateUserId(),
|
||||
permission.getCode(),
|
||||
permission.getName(),
|
||||
permission.getRemarks(),
|
||||
permission.getSortKey(),
|
||||
Ints.tryParse(permission.getStatus()),
|
||||
permission.getParentName(),
|
||||
permission.getPermissionType(),
|
||||
null);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(permission.getResources())) {
|
||||
|
||||
for (var resourceId : permission.getResources()) {
|
||||
|
||||
if (resourceIds.contains(resourceId)) {
|
||||
|
||||
jdbcTemplate.update(
|
||||
"""
|
||||
INSERT INTO
|
||||
t_permission_resources (permissions_id, resources_id)
|
||||
VALUES
|
||||
(?, ?);
|
||||
|
||||
""",
|
||||
permission.getId(),
|
||||
resourceId);
|
||||
} else {
|
||||
log.warn("permission {} resource not found: {}", permission.getId(), resourceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.resourceService.clearCache();
|
||||
}
|
||||
|
||||
public void initDefault() {
|
||||
@@ -256,9 +283,10 @@ public class PermissionService extends BaseService<PermissionEntity, PermissionR
|
||||
}
|
||||
|
||||
public void clearCache() {
|
||||
cacheManager.getCache(Constants.CACHE_PERMISSION).clear();
|
||||
cacheManager.getCache(Constants.CACHE_IS_ANONYMOUS_BY_RESOURCE_ID).clear();
|
||||
cacheManager.getCache(Constants.CACHE_ORG_ADMIN_HAS_PERMISSION).clear();
|
||||
Try.run(() -> cacheManager.getCache(Constants.CACHE_PERMISSION).clear());
|
||||
Try.run(() -> cacheManager.getCache(Constants.CACHE_IS_ANONYMOUS_BY_RESOURCE_ID).clear());
|
||||
Try.run(() -> cacheManager.getCache(Constants.CACHE_ORG_ADMIN_HAS_PERMISSION).clear());
|
||||
Try.run(() -> cacheManager.getCache(Constants.CACHE_ORGANIZATION_PERMISSION_IDS).clear());
|
||||
|
||||
userService.clearUserPermissionCache();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user