mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 15:55:18 +08:00
权限导入导出接口
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package cn.lihongjie.coal.permission.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Data
|
||||
public class PermissionImportDto {
|
||||
|
||||
List<PermissionExportDto> data;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user