diff --git a/src/main/java/cn/lihongjie/coal/permission/controller/PermissionController.java b/src/main/java/cn/lihongjie/coal/permission/controller/PermissionController.java index 4ea73dc9..07469a93 100644 --- a/src/main/java/cn/lihongjie/coal/permission/controller/PermissionController.java +++ b/src/main/java/cn/lihongjie/coal/permission/controller/PermissionController.java @@ -14,8 +14,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - @RequestMapping("/permission") @RestController @SysLog(module = "权限管理") @@ -53,12 +51,12 @@ public class PermissionController extends BaseController { } @PostMapping("/exportAll") - public List exportAll(@RequestBody CommonQuery dto) { + public PermissionExportDto exportAll(@RequestBody CommonQuery dto) { return this.service.exportAll(); } @PostMapping("/importAll") - public Boolean getById(@RequestBody PermissionImportDto dto) { + public Boolean getById(@RequestBody PermissionExportDto dto) { this.service.importAll(dto); return true; } diff --git a/src/main/java/cn/lihongjie/coal/permission/dto/PermissionDto2.java b/src/main/java/cn/lihongjie/coal/permission/dto/PermissionDto2.java new file mode 100644 index 00000000..d93e6278 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/permission/dto/PermissionDto2.java @@ -0,0 +1,19 @@ +package cn.lihongjie.coal.permission.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +import java.util.*; + +@Data +public class PermissionDto2 extends OrgCommonDto { + + private String parentName; + private List resources; + + private String permissionType; + + + +} diff --git a/src/main/java/cn/lihongjie/coal/permission/dto/PermissionExportDto.java b/src/main/java/cn/lihongjie/coal/permission/dto/PermissionExportDto.java index b9a873d2..d6358bda 100644 --- a/src/main/java/cn/lihongjie/coal/permission/dto/PermissionExportDto.java +++ b/src/main/java/cn/lihongjie/coal/permission/dto/PermissionExportDto.java @@ -1,29 +1,23 @@ package cn.lihongjie.coal.permission.dto; -import cn.lihongjie.coal.base.dto.CommonDto; + +import cn.lihongjie.coal.resource.dto.ResourceDto; import lombok.Data; -import org.hibernate.annotations.Comment; - import java.util.*; @Data -public class PermissionExportDto extends CommonDto { - - private String parentName; +public class PermissionExportDto { + + + private List resources; - private String permissionType; + - private String permissionTypeName; + private List permissions; + + + - @Data - public static class ResourceDto extends CommonDto { - - @Comment("资源类型") - private String type; - - @Comment("资源地址") - private String url; - } } diff --git a/src/main/java/cn/lihongjie/coal/permission/mapper/PermissionMapper.java b/src/main/java/cn/lihongjie/coal/permission/mapper/PermissionMapper.java index 1be6120b..232d5202 100644 --- a/src/main/java/cn/lihongjie/coal/permission/mapper/PermissionMapper.java +++ b/src/main/java/cn/lihongjie/coal/permission/mapper/PermissionMapper.java @@ -27,4 +27,8 @@ public interface PermissionMapper PermissionEntity toEntity(PermissionExportDto exportDto); PermissionSimpleDto toSimpleDto(PermissionEntity x); + + PermissionDto2 toExportDto2(PermissionEntity permissionEntity); + + PermissionEntity toEntity(PermissionDto2 permissionDto2); } diff --git a/src/main/java/cn/lihongjie/coal/permission/service/PermissionService.java b/src/main/java/cn/lihongjie/coal/permission/service/PermissionService.java index eb940d14..2a98b59a 100644 --- a/src/main/java/cn/lihongjie/coal/permission/service/PermissionService.java +++ b/src/main/java/cn/lihongjie/coal/permission/service/PermissionService.java @@ -9,19 +9,18 @@ import cn.lihongjie.coal.organization.service.OrganizationService; import cn.lihongjie.coal.permission.dto.CreatePermissionDto; import cn.lihongjie.coal.permission.dto.PermissionDto; import cn.lihongjie.coal.permission.dto.PermissionExportDto; -import cn.lihongjie.coal.permission.dto.PermissionImportDto; import cn.lihongjie.coal.permission.dto.UpdatePermissionDto; import cn.lihongjie.coal.permission.entity.PermissionEntity; import cn.lihongjie.coal.permission.mapper.PermissionMapper; import cn.lihongjie.coal.permission.repository.PermissionRepository; import cn.lihongjie.coal.resource.entity.ResourceEntity; +import cn.lihongjie.coal.resource.mapper.ResourceMapper; import cn.lihongjie.coal.resource.service.ResourceService; import cn.lihongjie.coal.user.service.UserService; -import io.vavr.Tuple; -import io.vavr.Tuple3; - import jakarta.annotation.PostConstruct; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import lombok.extern.slf4j.Slf4j; @@ -35,6 +34,7 @@ import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; +import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -55,12 +55,9 @@ public class PermissionService extends BaseService exportAll() { - - return this.repository.findAll().stream() - .map(pe -> mapper.toExportDto(pe)) - .collect(Collectors.toList()); - } + @Autowired ResourceMapper resourceMapper; + @Autowired JdbcTemplate jdbcTemplate; public PermissionDto create(CreatePermissionDto request) { @@ -118,73 +111,96 @@ public class PermissionService extends BaseService all = resourceService.findAll(); + List allResources = this.resourceService.findAll(); - Map, List> resourceMap = - all.stream() - .collect( - Collectors.groupingBy( - re -> Tuple.of(re.getCode(), re.getName(), re.getType()))); + List allPermission = this.findAll(); - Map, List> dbPermissionMap = - this.repository.findAll().stream() - .collect( - Collectors.groupingBy( - pe -> - Tuple.of( - pe.getCode(), - pe.getName(), - pe.getParentName()))); + PermissionExportDto dto = new PermissionExportDto(); - for (PermissionExportDto exportDto : dto.getData()) { + dto.setResources( + allResources.stream().map(resourceMapper::toDto).collect(Collectors.toList())); - PermissionEntity permission = - dbPermissionMap - .getOrDefault( - Tuple.of( - exportDto.getCode(), - exportDto.getName(), - exportDto.getParentName()), - new ArrayList<>()) - .stream() - .findAny() - .orElse(null); + dto.setPermissions( + allPermission.stream().map(mapper::toExportDto2).collect(Collectors.toList())); - if (permission == null) { + return dto; + } - permission = this.mapper.toEntity(exportDto); + public void importAll(PermissionExportDto dto) { - } else { - if (permission.getResources() != null) { - - permission.getResources().clear(); - } - permission.setResources(this.mapper.toEntity(exportDto).getResources()); - } - - if (permission.getResources() != null) { - - for (ResourceEntity resource : permission.getResources()) { - - resource.setId( - resourceMap - .get( - Tuple.of( - resource.getCode(), - resource.getName(), - resource.getType())) - .get(0) - .getId()); - } - } - - this.repository.save(permission); - } - - this.clearCache(); +// List resources = +// dto.getResources().stream() +// .map(rd -> resourceMapper.toEntity(rd)) +// .collect(Collectors.toList()); +// +// List 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(); } public void initDefault() { @@ -220,6 +236,7 @@ public class PermissionService extends BaseService(organizationService.getDefaultPermissionIds(organizationId)); return that.getAllFromCache().stream() - .filter(x -> defaultPermissionIds.contains(x.getId()) || StringUtils.equalsAny(x.getPermissionType(), "0", "1")) + .filter( + x -> + defaultPermissionIds.contains(x.getId()) + || StringUtils.equalsAny(x.getPermissionType(), "0", "1")) .flatMap(x -> x.getResources().stream()) .anyMatch(x -> StringUtils.equals(x.getId(), resourceId)); - - - } @Cacheable(cacheNames = Constants.CACHE_ORG_ADMIN_HAS_PERMISSION, key = "#resourceId") diff --git a/src/main/java/cn/lihongjie/coal/resource/mapper/ResourceMapper.java b/src/main/java/cn/lihongjie/coal/resource/mapper/ResourceMapper.java index e660ff6b..ae23774c 100644 --- a/src/main/java/cn/lihongjie/coal/resource/mapper/ResourceMapper.java +++ b/src/main/java/cn/lihongjie/coal/resource/mapper/ResourceMapper.java @@ -46,4 +46,5 @@ public interface ResourceMapper } } + ResourceEntity toEntity(ResourceDto rd); } diff --git a/src/main/java/cn/lihongjie/coal/resource/service/ResourceService.java b/src/main/java/cn/lihongjie/coal/resource/service/ResourceService.java index 0d09f109..3c6b5c9b 100644 --- a/src/main/java/cn/lihongjie/coal/resource/service/ResourceService.java +++ b/src/main/java/cn/lihongjie/coal/resource/service/ResourceService.java @@ -288,7 +288,10 @@ public class ResourceService extends BaseService