权限导入导出接口

This commit is contained in:
2023-11-12 16:03:33 +08:00
parent ca42493bad
commit 9b9c9ea364
5 changed files with 139 additions and 3 deletions

View File

@@ -4,9 +4,7 @@ import cn.lihongjie.coal.annotation.SysLog;
import cn.lihongjie.coal.base.controller.BaseController;
import cn.lihongjie.coal.base.dto.CommonQuery;
import cn.lihongjie.coal.base.dto.IdRequest;
import cn.lihongjie.coal.permission.dto.CreatePermissionDto;
import cn.lihongjie.coal.permission.dto.PermissionDto;
import cn.lihongjie.coal.permission.dto.UpdatePermissionDto;
import cn.lihongjie.coal.permission.dto.*;
import cn.lihongjie.coal.permission.service.PermissionService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +14,8 @@ 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 = "权限管理")
@@ -51,4 +51,15 @@ public class PermissionController extends BaseController {
public PermissionDto getById(@RequestBody IdRequest dto) {
return this.service.getById(dto.getId());
}
@PostMapping("/exportAll")
public List<PermissionExportDto> exportAll(@RequestBody CommonQuery dto) {
return this.service.exportAll();
}
@PostMapping("/importAll")
public Boolean getById(@RequestBody PermissionImportDto dto) {
this.service.importAll(dto);
return true;
}
}

View File

@@ -0,0 +1,26 @@
package cn.lihongjie.coal.permission.dto;
import cn.lihongjie.coal.base.dto.CommonDto;
import lombok.Data;
import org.hibernate.annotations.Comment;
import java.util.*;
@Data
public class PermissionExportDto extends CommonDto {
private String parentName;
private List<PermissionDto.ResourceDto> resources;
@Data
public static class ResourceDto extends CommonDto {
@Comment("资源类型")
private String type;
@Comment("资源地址")
private String url;
}
}

View File

@@ -0,0 +1,11 @@
package cn.lihongjie.coal.permission.dto;
import lombok.Data;
import java.util.*;
@Data
public class PermissionImportDto {
List<PermissionExportDto> data;
}

View File

@@ -4,6 +4,7 @@ import cn.lihongjie.coal.base.mapper.BaseMapper;
import cn.lihongjie.coal.base.mapper.CommonMapper;
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.UpdatePermissionDto;
import cn.lihongjie.coal.permission.entity.PermissionEntity;
@@ -21,7 +22,11 @@ public interface PermissionMapper
PermissionEntity, PermissionDto, CreatePermissionDto, UpdatePermissionDto> {
PermissionDto toDto(PermissionEntity user);
PermissionExportDto toExportDto(PermissionEntity user);
PermissionEntity toEntity(CreatePermissionDto request);
void updateEntity(@MappingTarget PermissionEntity entity, UpdatePermissionDto dto);
PermissionEntity toEntity(PermissionExportDto exportDto);
}

View File

@@ -5,10 +5,17 @@ import cn.lihongjie.coal.base.dto.IdRequest;
import cn.lihongjie.coal.base.service.BaseService;
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.service.ResourceService;
import io.vavr.Tuple;
import io.vavr.Tuple3;
import jakarta.annotation.PostConstruct;
@@ -21,6 +28,10 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@Slf4j
public class PermissionService extends BaseService<PermissionEntity, PermissionRepository> {
@@ -74,4 +85,76 @@ public class PermissionService extends BaseService<PermissionEntity, PermissionR
return page.map(this.mapper::toDto);
}
@Autowired ResourceService resourceService;
public List<PermissionExportDto> exportAll() {
return this.repository.findAll().stream()
.map(pe -> mapper.toExportDto(pe))
.collect(Collectors.toList());
}
public void importAll(PermissionImportDto dto) {
List<ResourceEntity> all = resourceService.findAll();
Map<Tuple3<String, String, String>, List<ResourceEntity>> resourceMap =
all.stream()
.collect(
Collectors.groupingBy(
re -> Tuple.of(re.getCode(), re.getName(), re.getType())));
Map<Tuple3<String, String, String>, List<PermissionEntity>> dbPermissionMap =
this.repository.findAll().stream()
.collect(
Collectors.groupingBy(
pe ->
Tuple.of(
pe.getCode(),
pe.getName(),
pe.getParentName())));
for (PermissionExportDto exportDto : dto.getData()) {
PermissionEntity permission =
dbPermissionMap
.get(
Tuple.of(
exportDto.getCode(),
exportDto.getName(),
exportDto.getParentName()))
.get(0);
if (permission == null) {
permission = this.mapper.toEntity(exportDto);
} 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);
}
}
}