79 lines
3.4 KiB
Java
79 lines
3.4 KiB
Java
|
package impl;
|
||
|
|
||
|
import cn.bunny.services.AuthServiceApplication;
|
||
|
import cn.bunny.services.aop.scanner.ControllerApiPermissionScanner;
|
||
|
import cn.bunny.services.domain.common.model.dto.scanner.ScannerControllerInfoVo;
|
||
|
import cn.bunny.services.domain.system.system.entity.Permission;
|
||
|
import cn.bunny.services.service.system.PermissionService;
|
||
|
import org.junit.jupiter.api.Test;
|
||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||
|
|
||
|
import java.util.List;
|
||
|
import java.util.Objects;
|
||
|
|
||
|
@SpringBootTest(classes = AuthServiceApplication.class, properties = "spring.profiles.active=dev")
|
||
|
public class BuildPermissionApiTest {
|
||
|
|
||
|
@Autowired
|
||
|
private PermissionService permissionService;
|
||
|
|
||
|
@Test
|
||
|
void test() {
|
||
|
List<ScannerControllerInfoVo> list = ControllerApiPermissionScanner.getSystemApiInfoList();
|
||
|
ScannerControllerInfoVo actuatorParent = ScannerControllerInfoVo.builder().powerCodes(List.of("admin::actuator")).summary("actuator端点访问").build();
|
||
|
ScannerControllerInfoVo actuatorChild = ScannerControllerInfoVo.builder().path("/api/actuator/**")
|
||
|
.summary("Springboot端点全部可以访问")
|
||
|
.description("系统监控使用")
|
||
|
.powerCodes(List.of("actuator::all"))
|
||
|
.build();
|
||
|
actuatorParent.setChildren(List.of(actuatorChild));
|
||
|
list.add(actuatorParent);
|
||
|
|
||
|
list.forEach(parent -> {
|
||
|
String summary = parent.getSummary();
|
||
|
String path = parent.getPath();
|
||
|
String httpMethod = parent.getHttpMethod();
|
||
|
List<String> powerCodes = parent.getPowerCodes();
|
||
|
String description = parent.getDescription();
|
||
|
|
||
|
// 设置 powerCode
|
||
|
String powerCode = Objects.isNull(powerCodes) ? "" : powerCodes.get(0);
|
||
|
|
||
|
Permission permission = new Permission();
|
||
|
permission.setParentId(0L);
|
||
|
permission.setPowerName(summary);
|
||
|
permission.setPowerCode(powerCode);
|
||
|
permission.setRequestMethod(httpMethod);
|
||
|
permission.setRequestUrl(path);
|
||
|
permissionService.save(permission);
|
||
|
|
||
|
// 保存后 permission 的 Id 作为子级的父级Id
|
||
|
Long permissionId = permission.getId();
|
||
|
|
||
|
// 子级列表
|
||
|
List<Permission> permissionList = parent.getChildren().stream()
|
||
|
.map(children -> {
|
||
|
String childrenSummary = children.getSummary();
|
||
|
String childrenPath = children.getPath();
|
||
|
String childrenHttpMethod = children.getHttpMethod();
|
||
|
List<String> childrenPowerCodes = children.getPowerCodes();
|
||
|
|
||
|
// 设置 powerCode
|
||
|
String childrenPowerCode = Objects.isNull(childrenPowerCodes) ? "" : childrenPowerCodes.get(0);
|
||
|
|
||
|
Permission childPermission = new Permission();
|
||
|
childPermission.setParentId(permissionId);
|
||
|
childPermission.setPowerName(childrenSummary);
|
||
|
childPermission.setPowerCode(childrenPowerCode);
|
||
|
childPermission.setRequestMethod(childrenHttpMethod);
|
||
|
childPermission.setRequestUrl(childrenPath);
|
||
|
|
||
|
return childPermission;
|
||
|
}).toList();
|
||
|
|
||
|
permissionService.saveBatch(permissionList);
|
||
|
});
|
||
|
}
|
||
|
}
|