refactor: 优化代码结构,完善资源(API)访问控制
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminAccountController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminAccountController.java
index 8d6e168..2b2efb3 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminAccountController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminAccountController.java
@@ -22,24 +22,24 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountRelateGroupsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountRelateRolesRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountRelatedGroupsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountRelatedRolesRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRelateGroupsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRelateRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRelatedGroupsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRelatedRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountRelateGroupsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountRelateRolesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountRelatedGroupsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountRelatedRolesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRelateGroupsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRelateRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRelatedGroupsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRelatedRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.base.domain.entity.AccountGroup;
import com.supwisdom.institute.backend.base.domain.entity.AccountRole;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminApplicationController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminApplicationController.java
index 36067de..02fb24b 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminApplicationController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminApplicationController.java
@@ -20,16 +20,16 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ApplicationCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ApplicationDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ApplicationQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ApplicationUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ApplicationCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ApplicationDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ApplicationQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ApplicationUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.base.domain.service.ApplicationService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminConfigController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminConfigController.java
index cd8d261..4b38209 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminConfigController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminConfigController.java
@@ -19,13 +19,13 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ConfigCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ConfigQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ConfigUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ConfigCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ConfigLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ConfigQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ConfigUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ConfigCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ConfigQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ConfigUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ConfigCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ConfigLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ConfigQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ConfigUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.base.domain.exception.ConfigException;
import com.supwisdom.institute.backend.base.domain.service.ConfigService;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminGroupController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminGroupController.java
index a15c763..c9a28d7 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminGroupController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminGroupController.java
@@ -21,22 +21,22 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupRelateAccountsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupRelateRolesRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupRelatedAccountsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupRelatedRolesRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRelateAccountsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRelateRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRelatedAccountsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRelatedRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupRelateAccountsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupRelateRolesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupRelatedAccountsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupRelatedRolesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRelateAccountsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRelateRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRelatedAccountsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRelatedRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.AccountGroup;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminMenuController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminMenuController.java
index a32a057..554726c 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminMenuController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminMenuController.java
@@ -1,7 +1,9 @@
package com.supwisdom.institute.backend.base.api.v1.controller.admin;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
@@ -22,18 +24,19 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionTreeResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionTreeResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
import com.supwisdom.institute.backend.base.domain.service.PermissionService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
@@ -88,7 +91,16 @@
throw new RuntimeException("exception.get.domain.type.error");
}
- PermissionLoadResponseData data = PermissionLoadResponseData.of(permission);
+ List<String> resourceIds = new ArrayList<>();
+
+ Map<String, Object> mapBean = new HashMap<>();
+ mapBean.put("permissionId", id);
+ Page<PermissionResource> permissionResources = permissionService.selectPermissionResources(true, 0, 0, mapBean);
+ for (PermissionResource permissionResource : permissionResources) {
+ resourceIds.add(permissionResource.getResourceId());
+ }
+
+ PermissionLoadResponseData data = PermissionLoadResponseData.of(permission, resourceIds);
return new DefaultApiResponse<PermissionLoadResponseData>(data);
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminOperationController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminOperationController.java
index aa282c6..e84e2e0 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminOperationController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminOperationController.java
@@ -2,7 +2,10 @@
import io.swagger.annotations.Api;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import lombok.extern.slf4j.Slf4j;
@@ -21,15 +24,16 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
import com.supwisdom.institute.backend.base.domain.service.PermissionService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
@@ -82,8 +86,17 @@
if (!Permission.TYPE_OPERATION.equals(permission.getType())) {
throw new RuntimeException("exception.get.domain.type.error");
}
+
+ List<String> resourceIds = new ArrayList<>();
- PermissionLoadResponseData data = PermissionLoadResponseData.of(permission);
+ Map<String, Object> mapBean = new HashMap<>();
+ mapBean.put("permissionId", id);
+ Page<PermissionResource> permissionResources = permissionService.selectPermissionResources(true, 0, 0, mapBean);
+ for (PermissionResource permissionResource : permissionResources) {
+ resourceIds.add(permissionResource.getResourceId());
+ }
+
+ PermissionLoadResponseData data = PermissionLoadResponseData.of(permission, resourceIds);
return new DefaultApiResponse<PermissionLoadResponseData>(data);
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminPermissionController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminPermissionController.java
index 4181f3e..a415095 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminPermissionController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminPermissionController.java
@@ -1,22 +1,30 @@
package com.supwisdom.institute.backend.base.api.v1.controller.admin;
import java.util.HashMap;
-import java.util.Map;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
import org.springframework.util.MimeTypeUtils;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionTreeResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionRelateResourcesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionRelatedResourcesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRelateResourcesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRelatedResourcesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionTreeResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
import com.supwisdom.institute.backend.base.domain.service.PermissionService;
import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
@@ -41,5 +49,60 @@
return new DefaultApiResponse<PermissionTreeResponseData>(data);
}
-
+
+ @RequestMapping(method = RequestMethod.GET, path = "/{id}/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseBody
+ public DefaultApiResponse<PermissionRelatedResourcesResponseData> permissionResources(
+ @PathVariable("id") String id,
+ PermissionRelatedResourcesRequest request) {
+
+ if (id == null || id.length() == 0) {
+ throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
+ }
+
+ Permission permission = permissionService.selectById(id);
+
+ if (permission == null) {
+ throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
+ }
+
+ if (request.getMapBean() == null) {
+ request.setMapBean(new HashMap<String, Object>());
+ }
+ request.getMapBean().put("permissionId", permission.getId());
+
+ Page<PermissionResource> page = permissionService.selectPermissionResources(
+ request.isLoadAll(),
+ request.getPageIndex(),
+ request.getPageSize(),
+ request.getMapBean());
+
+ PermissionRelatedResourcesResponseData data = PermissionRelatedResourcesResponseData.of(request).build(page);
+
+ return new DefaultApiResponse<PermissionRelatedResourcesResponseData>(data);
+ }
+
+ @RequestMapping(method = RequestMethod.POST, path = "/{id}/resources", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseBody
+ public DefaultApiResponse<PermissionRelateResourcesResponseData> relateResources(
+ @PathVariable("id") String id,
+ @RequestBody PermissionRelateResourcesRequest permissionResources) {
+
+ if (id == null || id.length() == 0) {
+ throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
+ }
+
+ Permission permission = permissionService.selectById(id);
+
+ if (permission == null) {
+ throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
+ }
+
+ permissionService.relatePermissionResources(permission, permissionResources.getPermissionResources());
+
+ PermissionRelateResourcesResponseData data = PermissionRelateResourcesResponseData.of("info.relate.success");
+
+ return new DefaultApiResponse<PermissionRelateResourcesResponseData>(data);
+ }
+
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminResourceController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminResourceController.java
index a1aca6b..5594269 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminResourceController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminResourceController.java
@@ -18,14 +18,14 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ResourceCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ResourceQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ResourceUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ResourceCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ResourceQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ResourceUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.base.domain.service.ResourceService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRoleController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRoleController.java
index 847b676..b45bc25 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRoleController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRoleController.java
@@ -22,28 +22,28 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelateAccountsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelateGroupsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelatePermissionsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelatedAccountsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelatedGroupsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelatedPermissionsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelateAccountsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelateGroupsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelatePermissionsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelatedAccountsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelatedGroupsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelatedPermissionsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelateAccountsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelateGroupsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelatePermissionsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelatedAccountsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelatedGroupsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelatedPermissionsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelateAccountsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelateGroupsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelatePermissionsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelatedAccountsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelatedGroupsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelatedPermissionsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.AccountRole;
import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
import com.supwisdom.institute.backend.base.domain.entity.Role;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRouteController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRouteController.java
index 06758c1..a52334d 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRouteController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRouteController.java
@@ -20,16 +20,16 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RouteCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RouteDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RouteQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RouteUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.base.domain.service.RouteService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnController.java
index 291a80b..483d55f 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnController.java
@@ -1,6 +1,8 @@
package com.supwisdom.institute.backend.base.api.v1.controller.authn;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
@@ -16,20 +18,29 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnAccountPermissionsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnAccountResourcesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnAccountResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnAccountRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnResourceRoleListResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnAccountPermissionsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnAccountResourcesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnAccountResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnAccountRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnApplicationsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnPermissionRoleListResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnResourceRoleListResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnRoutesResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Account;
+import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.base.domain.entity.Route;
+import com.supwisdom.institute.backend.base.domain.model.PermissionRoleSet;
import com.supwisdom.institute.backend.base.domain.model.ResourceRoleSet;
import com.supwisdom.institute.backend.base.domain.service.AccountService;
+import com.supwisdom.institute.backend.base.domain.service.ApplicationService;
import com.supwisdom.institute.backend.base.domain.service.PermissionService;
import com.supwisdom.institute.backend.base.domain.service.ResourceService;
import com.supwisdom.institute.backend.base.domain.service.RoleService;
+import com.supwisdom.institute.backend.base.domain.service.RouteService;
import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
@Api(value = "BaseAuthn", tags = { "BaseAuthn" }, description = "认证授权接口")
@@ -45,10 +56,16 @@
private RoleService roleService;
@Autowired
- private PermissionService permissionService;
+ private ApplicationService applicationService;
@Autowired
- private ResourceService resourceService;
+ private PermissionService permissionService;
+
+ @Autowired
+ private ResourceService resourceService;
+
+ @Autowired
+ private RouteService routeService;
@GetMapping(path = "/{username}/account", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@@ -190,18 +207,111 @@
return new DefaultApiResponse<AuthnAccountResourcesResponseData>(data);
}
- @GetMapping(path = "/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+// @GetMapping(path = "/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+// @ResponseStatus(value = HttpStatus.OK)
+// @ResponseBody
+// public DefaultApiResponse<AuthnResourceRoleListResponseData> applicationResources(
+// @RequestParam(name = "applicationId", required = false) String applicationId) {
+//
+// List<ResourceRoleSet> resourceRoleSets = resourceService.selectByApplication(applicationId);
+//
+// AuthnResourceRoleListResponseData data = AuthnResourceRoleListResponseData.of(resourceRoleSets);
+//
+// return new DefaultApiResponse<AuthnResourceRoleListResponseData>(data);
+// }
+
+
+ @GetMapping(path = "/applications", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public DefaultApiResponse<AuthnResourceRoleListResponseData> applicationResources(
- @RequestParam(name = "applicationId", required = false) String applicationId) {
+ public DefaultApiResponse<AuthnApplicationsResponseData> applications() {
+
+ Map<String, Object> mapBean = new HashMap<>();
+ Map<String, String> orderBy = null;
+
+ mapBean.put("status", "1");
- List<ResourceRoleSet> resourceRoleSets = resourceService.selectByApplication(applicationId);
+ List<Application> applications = applicationService.selectList(mapBean, orderBy);
+
+ AuthnApplicationsResponseData data = AuthnApplicationsResponseData.of(applications);
+
+ return new DefaultApiResponse<AuthnApplicationsResponseData>(data);
+ }
+
+ @GetMapping(path = "/roles", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnRolesResponseData> roles() {
+
+ Map<String, Object> mapBean = new HashMap<>();
+ Map<String, String> orderBy = null;
+
+ mapBean.put("status", "1");
+
+ List<Role> roles = roleService.selectList(mapBean, orderBy);
+
+ AuthnRolesResponseData data = AuthnRolesResponseData.of(roles);
+
+ return new DefaultApiResponse<AuthnRolesResponseData>(data);
+ }
+
+
+ @GetMapping(path = "/permissionRoleSets", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnPermissionRoleListResponseData> permissionRoleSets(
+ @RequestParam(name = "applicationId", required = false) String applicationId) {
+
+ Map<String, Object> mapBean = new HashMap<>();
+
+ mapBean.put("status", "1");
+ if (applicationId != null && !applicationId.isEmpty()) {
+ mapBean.put("applicationId", applicationId);
+ }
+
+ List<PermissionRoleSet> permissionRoleSets = permissionService.selectPermissionRoleSet(mapBean);
+
+ AuthnPermissionRoleListResponseData data = AuthnPermissionRoleListResponseData.of(permissionRoleSets);
+
+ return new DefaultApiResponse<AuthnPermissionRoleListResponseData>(data);
+ }
+
+
+ @GetMapping(path = "/resourceRoleSets", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnResourceRoleListResponseData> resourceRoleSets(
+ @RequestParam(name = "applicationId", required = false) String applicationId) {
+
+ Map<String, Object> mapBean = new HashMap<>();
+
+ mapBean.put("status", "1");
+
+ List<ResourceRoleSet> resourceRoleSets = resourceService.selectResourceRoleSet(mapBean);
AuthnResourceRoleListResponseData data = AuthnResourceRoleListResponseData.of(resourceRoleSets);
return new DefaultApiResponse<AuthnResourceRoleListResponseData>(data);
}
+
+
+ @GetMapping(path = "/routes", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnRoutesResponseData> routes() {
+
+ Map<String, Object> mapBean = new HashMap<>();
+ Map<String, String> orderBy = null;
+
+ mapBean.put("status", "1");
+
+ List<Route> routes = routeService.selectList(mapBean, orderBy);
+
+ AuthnRoutesResponseData data = AuthnRoutesResponseData.of(routes);
+
+ return new DefaultApiResponse<AuthnRoutesResponseData>(data);
+ }
+
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnResourceController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnResourceController.java
new file mode 100644
index 0000000..f7e6e5a
--- /dev/null
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnResourceController.java
@@ -0,0 +1,15 @@
+package com.supwisdom.institute.backend.base.api.v1.controller.authn;
+
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(value = "BaseAuthnResource", tags = { "BaseAuthnResource" }, description = "资源接口(认证、授权用)")
+@Slf4j
+@RestController
+@RequestMapping("/v1/authn/resource")
+public class AuthnResourceController {
+
+}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountCreateRequest.java
similarity index 87%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountCreateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountCreateRequest.java
index 8edeb11..bf8cfc7 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountCreateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountCreateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountDeleteBatchRequest.java
similarity index 83%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountDeleteBatchRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountDeleteBatchRequest.java
index 8625ab2..d936658 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountDeleteBatchRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountDeleteBatchRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountQueryRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountQueryRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountQueryRequest.java
index 29d9d47..f31652f 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountQueryRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountQueryRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelateGroupsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateGroupsRequest.java
similarity index 86%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelateGroupsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateGroupsRequest.java
index 76452b8..acb37d9 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelateGroupsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateGroupsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelateRolesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateRolesRequest.java
similarity index 86%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelateRolesRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateRolesRequest.java
index b70d196..dc59b3f 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelateRolesRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateRolesRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelatedGroupsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedGroupsRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelatedGroupsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedGroupsRequest.java
index 0d54b9b..d63a859 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelatedGroupsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedGroupsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelatedRolesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedRolesRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelatedRolesRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedRolesRequest.java
index 2e3baf4..d484452 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountRelatedRolesRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedRolesRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountUpdateRequest.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountUpdateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountUpdateRequest.java
index ca62298..795c687 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/AccountUpdateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountUpdateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationCreateRequest.java
similarity index 88%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationCreateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationCreateRequest.java
index ffa645b..f950918 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationCreateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationCreateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationDeleteBatchRequest.java
similarity index 83%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationDeleteBatchRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationDeleteBatchRequest.java
index ecc680e..62e69ed 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationDeleteBatchRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationDeleteBatchRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationQueryRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationQueryRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationQueryRequest.java
index 34bcfb3..b4b6ea1 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationQueryRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationQueryRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationUpdateRequest.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationUpdateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationUpdateRequest.java
index 1f7deaa..12f8a49 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ApplicationUpdateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationUpdateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigCreateRequest.java
similarity index 87%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigCreateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigCreateRequest.java
index ec8a7bf..6506f3b 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigCreateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigCreateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigQueryRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigQueryRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigQueryRequest.java
index b9a18fb..53f2b29 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigQueryRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigQueryRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigUpdateRequest.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigUpdateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigUpdateRequest.java
index 660eb61..6fd4fc9 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ConfigUpdateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigUpdateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupCreateRequest.java
similarity index 87%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupCreateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupCreateRequest.java
index 5eb8f8d..8f60f9c 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupCreateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupCreateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupQueryRequest.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupQueryRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupQueryRequest.java
index f150564..ea610b3 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupQueryRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupQueryRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelateAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateAccountsRequest.java
similarity index 86%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelateAccountsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateAccountsRequest.java
index daa3812..8b81132 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelateAccountsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateAccountsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelateRolesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateRolesRequest.java
similarity index 85%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelateRolesRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateRolesRequest.java
index 2a170bc..52b4486 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelateRolesRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateRolesRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedAccountsRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedAccountsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedAccountsRequest.java
index c4988b9..6a1b13d 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedAccountsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedAccountsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedRolesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedRolesRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedRolesRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedRolesRequest.java
index ae868b9..6000d6a 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedRolesRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedRolesRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupUpdateRequest.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupUpdateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupUpdateRequest.java
index bf84a60..63e82fd 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupUpdateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupUpdateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionCreateRequest.java
similarity index 73%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionCreateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionCreateRequest.java
index 3758f00..e287f65 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionCreateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionCreateRequest.java
@@ -1,4 +1,9 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
+
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
@@ -14,6 +19,10 @@
*/
private static final long serialVersionUID = 8247861768124918116L;
+ @Getter
+ @Setter
+ private List<String> resourceIds;
+
public Permission getEntity() {
return EntityUtils.copy(this, new Permission());
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionDeleteBatchRequest.java
similarity index 83%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionDeleteBatchRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionDeleteBatchRequest.java
index 5732dc9..9777b30 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionDeleteBatchRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionDeleteBatchRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionQueryRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionQueryRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionQueryRequest.java
index 8639230..d32f363 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionQueryRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionQueryRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelateResourcesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelateResourcesRequest.java
new file mode 100644
index 0000000..ae09876
--- /dev/null
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelateResourcesRequest.java
@@ -0,0 +1,22 @@
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
+import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class PermissionRelateResourcesRequest implements IApiRequest {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7016517754275684031L;
+
+ @Getter
+ @Setter
+ private List<PermissionResource> permissionResources;
+
+}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelatedResourcesRequest.java
similarity index 72%
copy from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedAccountsRequest.java
copy to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelatedResourcesRequest.java
index c4988b9..4419071 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/GroupRelatedAccountsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelatedResourcesRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
@@ -12,12 +12,12 @@
/**
* @author loie
*/
-public class GroupRelatedAccountsRequest implements IApiQueryRequest {
+public class PermissionRelatedResourcesRequest implements IApiQueryRequest {
/**
*
*/
- private static final long serialVersionUID = -3102006206798574212L;
+ private static final long serialVersionUID = -7634304817036292579L;
@Getter
@Setter
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionUpdateRequest.java
similarity index 80%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionUpdateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionUpdateRequest.java
index 583d272..00d28c4 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/PermissionUpdateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionUpdateRequest.java
@@ -1,4 +1,6 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
+
+import java.util.List;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
@@ -21,6 +23,10 @@
@Setter
private String id;
+ @Getter
+ @Setter
+ private List<String> resourceIds;
+
public Permission getEntity() {
return EntityUtils.copy(this, new Permission());
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceCreateRequest.java
similarity index 87%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceCreateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceCreateRequest.java
index 774661f..3c17cac 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceCreateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceCreateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceQueryRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceQueryRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceQueryRequest.java
index 78080db..7171557 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceQueryRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceQueryRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceUpdateRequest.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceUpdateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceUpdateRequest.java
index ed9566f..596cbd7 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/ResourceUpdateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceUpdateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleCreateRequest.java
similarity index 87%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleCreateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleCreateRequest.java
index 1df074d..e91cfba 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleCreateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleCreateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleDeleteBatchRequest.java
similarity index 83%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleDeleteBatchRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleDeleteBatchRequest.java
index d68cb8c..94a23a5 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleDeleteBatchRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleDeleteBatchRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleQueryRequest.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleQueryRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleQueryRequest.java
index 8cd2441..db54ea4 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleQueryRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleQueryRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelateAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateAccountsRequest.java
similarity index 86%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelateAccountsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateAccountsRequest.java
index c89d8f7..1fc5848 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelateAccountsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateAccountsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelateGroupsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateGroupsRequest.java
similarity index 85%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelateGroupsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateGroupsRequest.java
index f07f1cf..e400df4 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelateGroupsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateGroupsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatePermissionsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatePermissionsRequest.java
similarity index 86%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatePermissionsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatePermissionsRequest.java
index d09f228..dc31c16 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatePermissionsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatePermissionsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedAccountsRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedAccountsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedAccountsRequest.java
index 5bb2b5f..2d8b77e 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedAccountsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedAccountsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedGroupsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedGroupsRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedGroupsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedGroupsRequest.java
index fe84ce0..b69aef5 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedGroupsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedGroupsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedPermissionsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedPermissionsRequest.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedPermissionsRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedPermissionsRequest.java
index 9819583..7ff22a2 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleRelatedPermissionsRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedPermissionsRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleUpdateRequest.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleUpdateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleUpdateRequest.java
index e128db2..b1137db 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RoleUpdateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleUpdateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteCreateRequest.java
similarity index 87%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteCreateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteCreateRequest.java
index 3c5e415..f1af807 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteCreateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteCreateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteDeleteBatchRequest.java
similarity index 83%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteDeleteBatchRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteDeleteBatchRequest.java
index 4cc0514..af2657c 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteDeleteBatchRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteDeleteBatchRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteQueryRequest.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteQueryRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteQueryRequest.java
index 69fb8a5..b077d34 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteQueryRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteQueryRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteUpdateRequest.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteUpdateRequest.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteUpdateRequest.java
index 7465d7b..e96eb28 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/request/RouteUpdateRequest.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteUpdateRequest.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountCreateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountCreateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountCreateResponseData.java
index 1c8686f..d4b91d8 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountCreateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountCreateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountDeleteBatchResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountDeleteBatchResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountDeleteBatchResponseData.java
index 4262a4d..6c471ee 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountDeleteBatchResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountDeleteBatchResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountLoadResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountLoadResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountLoadResponseData.java
index 6e4367f..a9f250d 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountLoadResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountLoadResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountQueryResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountQueryResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountQueryResponseData.java
index 479d326..a36d033 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelateGroupsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateGroupsResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelateGroupsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateGroupsResponseData.java
index 1de8493..a269841 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelateGroupsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateGroupsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelateRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateRolesResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelateRolesResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateRolesResponseData.java
index 4d4f022..93895ff 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelateRolesResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateRolesResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelatedGroupsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedGroupsResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelatedGroupsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedGroupsResponseData.java
index d2f63bc..802437d 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelatedGroupsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedGroupsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelatedRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedRolesResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelatedRolesResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedRolesResponseData.java
index 8b77cb0..5289a30 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRelatedRolesResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedRolesResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRemoveResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRemoveResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRemoveResponseData.java
index a81b480..40d0b87 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountRemoveResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRemoveResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountUpdateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountUpdateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountUpdateResponseData.java
index 7c83b45..59cba51 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AccountUpdateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountUpdateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationCreateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationCreateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationCreateResponseData.java
index 6173035..b4a7c94 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationCreateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationCreateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationDeleteBatchResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationDeleteBatchResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationDeleteBatchResponseData.java
index 58fc10b..9e22692 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationDeleteBatchResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationDeleteBatchResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationLoadResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationLoadResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationLoadResponseData.java
index 9a85e69..27acd2f 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationLoadResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationLoadResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationQueryResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationQueryResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationQueryResponseData.java
index 4602ceb..c0fb9bd 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationRemoveResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationRemoveResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationRemoveResponseData.java
index c12b752..97f1a87 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationRemoveResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationRemoveResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationUpdateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationUpdateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationUpdateResponseData.java
index 2512931..1a72e5c 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ApplicationUpdateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationUpdateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigCreateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigCreateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigCreateResponseData.java
index bbbace5..663f179 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigCreateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigCreateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigLoadResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigLoadResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigLoadResponseData.java
index a8601b4..c8ddafa 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigLoadResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigLoadResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigQueryResponseData.java
similarity index 92%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigQueryResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigQueryResponseData.java
index 587ba24..6255a4b 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
@@ -8,7 +8,7 @@
import org.springframework.data.domain.Page;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ConfigQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ConfigQueryRequest;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiQueryResponseData;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigRemoveResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigRemoveResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigRemoveResponseData.java
index 0123609..e656a1f 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigRemoveResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigRemoveResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigUpdateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigUpdateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigUpdateResponseData.java
index 1cd0588..df4de29 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ConfigUpdateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigUpdateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupCreateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupCreateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupCreateResponseData.java
index 5fb1fa9..4c3f545 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupCreateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupCreateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupLoadResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupLoadResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupLoadResponseData.java
index c3b323b..a3b83b0 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupLoadResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupLoadResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupQueryResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupQueryResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupQueryResponseData.java
index c29d90c..20e6fac 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelateAccountsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateAccountsResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelateAccountsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateAccountsResponseData.java
index 3f99807..fbc6b08 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelateAccountsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateAccountsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelateRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateRolesResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelateRolesResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateRolesResponseData.java
index bae5100..104041c 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelateRolesResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateRolesResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelatedAccountsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedAccountsResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelatedAccountsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedAccountsResponseData.java
index 4e96631..1e9e819 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelatedAccountsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedAccountsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelatedRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedRolesResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelatedRolesResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedRolesResponseData.java
index a2b2f35..4ae2d5f 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRelatedRolesResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedRolesResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRemoveResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRemoveResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRemoveResponseData.java
index 88eae2b..08e7440 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupRemoveResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRemoveResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupUpdateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupUpdateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupUpdateResponseData.java
index f0da2d9..3ae507d 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/GroupUpdateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupUpdateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionCreateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionCreateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionCreateResponseData.java
index f0deee4..cec1042 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionCreateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionCreateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionDeleteBatchResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionDeleteBatchResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionDeleteBatchResponseData.java
index 88d4fbb..f1626bf 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionDeleteBatchResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionDeleteBatchResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionLoadResponseData.java
similarity index 65%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionLoadResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionLoadResponseData.java
index 7349eac..3815743 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionLoadResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionLoadResponseData.java
@@ -1,4 +1,6 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
+
+import java.util.List;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
@@ -21,13 +23,22 @@
@Setter
private String id;
+ @Getter
+ @Setter
+ private List<String> resourceIds;
+
+
private PermissionLoadResponseData() {
}
- public static PermissionLoadResponseData of(Permission entity) {
+ public static PermissionLoadResponseData of(Permission entity, List<String> resourceIds) {
PermissionLoadResponseData data = new PermissionLoadResponseData();
- return EntityUtils.copy(entity, data);
+
+ EntityUtils.copy(entity, data);
+ data.setResourceIds(resourceIds);
+
+ return data;
}
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionQueryResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionQueryResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionQueryResponseData.java
index 4454c4e..436a7ee 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelateResourcesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelateResourcesResponseData.java
new file mode 100644
index 0000000..e895aac
--- /dev/null
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelateResourcesResponseData.java
@@ -0,0 +1,29 @@
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
+
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class PermissionRelateResourcesResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5576856617389758687L;
+
+ @Getter
+ @Setter
+ private String message;
+
+ public PermissionRelateResourcesResponseData(String message) {
+ this.message = message;
+ }
+
+ public static PermissionRelateResourcesResponseData of(String message) {
+ PermissionRelateResourcesResponseData data = new PermissionRelateResourcesResponseData(message);
+
+ return data;
+ }
+
+}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelatedResourcesResponseData.java
similarity index 64%
copy from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionQueryResponseData.java
copy to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelatedResourcesResponseData.java
index 4454c4e..969d3c6 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelatedResourcesResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
@@ -8,21 +8,21 @@
import org.springframework.data.domain.Page;
-import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiQueryResponseData;
/**
* @author loie
*/
-public class PermissionQueryResponseData implements IApiQueryResponseData<Permission> {
+public class PermissionRelatedResourcesResponseData implements IApiQueryResponseData<PermissionResource> {
/**
*
*/
- private static final long serialVersionUID = -8586983968415937644L;
+ private static final long serialVersionUID = -2095633445866557991L;
- private PermissionQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
+ private PermissionRelatedResourcesResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
this.loadAll = loadAll;
this.pageIndex = pageIndex;
this.pageSize = pageSize;
@@ -30,8 +30,8 @@
this.orderBy = orderBy;
}
- public static PermissionQueryResponseData of(IApiQueryRequest queryRequest) {
- PermissionQueryResponseData configQueryResponse = new PermissionQueryResponseData(
+ public static PermissionRelatedResourcesResponseData of(IApiQueryRequest queryRequest) {
+ PermissionRelatedResourcesResponseData configQueryResponse = new PermissionRelatedResourcesResponseData(
queryRequest.isLoadAll(),
queryRequest.getPageIndex(),
queryRequest.getPageSize(),
@@ -42,7 +42,7 @@
return configQueryResponse;
}
- public PermissionQueryResponseData build(Page<Permission> page) {
+ public PermissionRelatedResourcesResponseData build(Page<PermissionResource> page) {
this.currentItemCount = page.getNumberOfElements();
this.pageCount = page.getTotalPages();
this.recordCount = page.getTotalElements();
@@ -75,6 +75,6 @@
@Getter
@Setter
- private List<Permission> items;
+ private List<PermissionResource> items;
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRemoveResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionRemoveResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRemoveResponseData.java
index 1ba012c..d54d0a1 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionRemoveResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRemoveResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionTreeResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionTreeResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionTreeResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionTreeResponseData.java
index 20e2867..1735549 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionTreeResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionTreeResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionUpdateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionUpdateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionUpdateResponseData.java
index 1a9d5ec..806c2c6 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/PermissionUpdateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionUpdateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceCreateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceCreateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceCreateResponseData.java
index efbf365..1a07eb1 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceCreateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceCreateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceLoadResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceLoadResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceLoadResponseData.java
index 29ff983..289e776 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceLoadResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceLoadResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceQueryResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceQueryResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceQueryResponseData.java
index 0a23123..b591899 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceRemoveResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceRemoveResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceRemoveResponseData.java
index 88797a4..ecc9988 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceRemoveResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceRemoveResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceUpdateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceUpdateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceUpdateResponseData.java
index 544628a..f6c4292 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/ResourceUpdateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceUpdateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleCreateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleCreateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleCreateResponseData.java
index f850412..bae356d 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleCreateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleCreateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleDeleteBatchResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleDeleteBatchResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleDeleteBatchResponseData.java
index 579dd5d..61776d3 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleDeleteBatchResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleDeleteBatchResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleLoadResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleLoadResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleLoadResponseData.java
index d3697df..bbbc439 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleLoadResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleLoadResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleQueryResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleQueryResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleQueryResponseData.java
index 3f418e8..24d6a09 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelateAccountsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateAccountsResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelateAccountsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateAccountsResponseData.java
index c1c40fb..f137972 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelateAccountsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateAccountsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelateGroupsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateGroupsResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelateGroupsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateGroupsResponseData.java
index 0ece115..5c752ae 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelateGroupsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateGroupsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatePermissionsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatePermissionsResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatePermissionsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatePermissionsResponseData.java
index b9c84b3..da7c9c2 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatePermissionsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatePermissionsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedAccountsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedAccountsResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedAccountsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedAccountsResponseData.java
index 74c2182..a906d6e 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedAccountsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedAccountsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedGroupsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedGroupsResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedGroupsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedGroupsResponseData.java
index 8d1e16c..cf5dc80 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedGroupsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedGroupsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedPermissionsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedPermissionsResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedPermissionsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedPermissionsResponseData.java
index d551ecf..05ab0c5 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRelatedPermissionsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedPermissionsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRemoveResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRemoveResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRemoveResponseData.java
index 141f2bd..3f97566 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleRemoveResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRemoveResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleUpdateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleUpdateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleUpdateResponseData.java
index 11faf54..3f5e93f 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RoleUpdateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleUpdateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteCreateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteCreateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteCreateResponseData.java
index 63427c7..ea50cd4 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteCreateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteCreateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteDeleteBatchResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteDeleteBatchResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteDeleteBatchResponseData.java
index ebe8772..da236b1 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteDeleteBatchResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteDeleteBatchResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteLoadResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteLoadResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteLoadResponseData.java
index f8cae4d..5fd52d1 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteLoadResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteLoadResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteQueryResponseData.java
similarity index 96%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteQueryResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteQueryResponseData.java
index 3d3b46c..99d3fb7 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteQueryResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteRemoveResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteRemoveResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteRemoveResponseData.java
index 3953618..4735d20 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteRemoveResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteRemoveResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteUpdateResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteUpdateResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteUpdateResponseData.java
index 206377c..89ace30 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/RouteUpdateResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteUpdateResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountPermissionsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountPermissionsResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountPermissionsResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountPermissionsResponseData.java
index 5b008cc..3d3aa4c 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountPermissionsResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountPermissionsResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountResourcesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResourcesResponseData.java
similarity index 90%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountResourcesResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResourcesResponseData.java
index d9158a2..617be41 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountResourcesResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResourcesResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResponseData.java
index f06fc6e..a84f199 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountRolesResponseData.java
similarity index 89%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountRolesResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountRolesResponseData.java
index a51e39b..2241c15 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnAccountRolesResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountRolesResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnApplicationsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnApplicationsResponseData.java
new file mode 100644
index 0000000..79dae74
--- /dev/null
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnApplicationsResponseData.java
@@ -0,0 +1,31 @@
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.entity.Application;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class AuthnApplicationsResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 277008963651011910L;
+
+ @Getter
+ @Setter
+ public List<Application> applications;
+
+
+ public static AuthnApplicationsResponseData of(List<Application> applications) {
+ AuthnApplicationsResponseData data = new AuthnApplicationsResponseData();
+
+ data.setApplications(applications);
+
+ return data;
+ }
+
+}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnPermissionRoleListResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnPermissionRoleListResponseData.java
new file mode 100644
index 0000000..bca4b9d
--- /dev/null
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnPermissionRoleListResponseData.java
@@ -0,0 +1,30 @@
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.model.PermissionRoleSet;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class AuthnPermissionRoleListResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1484993874632504947L;
+
+ @Getter
+ @Setter
+ public List<PermissionRoleSet> permissionRoleSets;
+
+ public static AuthnPermissionRoleListResponseData of(List<PermissionRoleSet> permissionRoleSets) {
+ AuthnPermissionRoleListResponseData data = new AuthnPermissionRoleListResponseData();
+
+ data.setPermissionRoleSets(permissionRoleSets);
+
+ return data;
+ }
+
+}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnResourceRoleListResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnResourceRoleListResponseData.java
similarity index 91%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnResourceRoleListResponseData.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnResourceRoleListResponseData.java
index 9d89d3a..da6df80 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnResourceRoleListResponseData.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnResourceRoleListResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import java.util.List;
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnRolesResponseData.java
new file mode 100644
index 0000000..4f503ed
--- /dev/null
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnRolesResponseData.java
@@ -0,0 +1,31 @@
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class AuthnRolesResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3695033930841370744L;
+
+ @Getter
+ @Setter
+ public List<Role> roles;
+
+
+ public static AuthnRolesResponseData of(List<Role> roles) {
+ AuthnRolesResponseData data = new AuthnRolesResponseData();
+
+ data.setRoles(roles);
+
+ return data;
+ }
+
+}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnRoutesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnRoutesResponseData.java
new file mode 100644
index 0000000..3c46ae4
--- /dev/null
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnRoutesResponseData.java
@@ -0,0 +1,31 @@
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.entity.Route;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class AuthnRoutesResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7221340609572046915L;
+
+ @Getter
+ @Setter
+ public List<Route> routes;
+
+
+ public static AuthnRoutesResponseData of(List<Route> routes) {
+ AuthnRoutesResponseData data = new AuthnRoutesResponseData();
+
+ data.setRoutes(routes);
+
+ return data;
+ }
+
+}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java
index ef218bf..c5b1e18 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java
@@ -68,6 +68,12 @@
private String type;
/**
+ * 菜单图标
+ */
+ @Column(name = "ICON", nullable = true)
+ private String icon;
+
+ /**
* URL地址
*/
@Column(name = "URL", nullable = true)
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/PermissionResource.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/PermissionResource.java
new file mode 100644
index 0000000..7ec0413
--- /dev/null
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/PermissionResource.java
@@ -0,0 +1,46 @@
+package com.supwisdom.institute.backend.base.domain.entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+import com.supwisdom.institute.backend.common.framework.entity.ABaseEntity;
+
+@Entity
+@Table(name = "TB_BASE_PERMISSION_RESOURCE")
+public class PermissionResource extends ABaseEntity {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4224037561100974979L;
+
+ /**
+ * 权限ID
+ */
+ @Column(name = "PERMISSION_ID")
+ private String permissionId;
+
+ /**
+ * 资源ID
+ */
+ @Column(name = "RESOURCE_ID")
+ private String resourceId;
+
+ public String getPermissionId() {
+ return permissionId;
+ }
+
+ public void setPermissionId(String permissionId) {
+ this.permissionId = permissionId;
+ }
+
+ public String getResourceId() {
+ return resourceId;
+ }
+
+ public void setResourceId(String resourceId) {
+ this.resourceId = resourceId;
+ }
+
+}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Resource.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Resource.java
index 24ab992..8f8f8a4 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Resource.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Resource.java
@@ -18,6 +18,12 @@
*/
private static final long serialVersionUID = 4288268877209267453L;
+ public static final String ACCESS_ANONYMOUS = "anonymous"; // 匿名访问anonymous
+ public static final String ACCESS_AUTHENTICATE = "authenticate"; // 认证访问authenticate
+ public static final String ACCESS_AUTHORIZE = "authorize"; // 授权访问authorize
+ public static final String ACCESS_PERMIT_ALL = "permitAll"; // 允许所有permitAll
+ public static final String ACCESS_DENY_ALL = "denyAll"; // 拒绝所有denyAll
+
/**
* 代码
*/
@@ -66,4 +72,12 @@
@Column(name = "PATH")
private String path;
+ /**
+ * 访问规则(匿名访问anonymous、认证访问authenticate、授权访问authorize、允许所有permitAll、拒绝所有denyAll)
+ */
+ @Getter
+ @Setter
+ @Column(name = "ACCESS")
+ private String access;
+
}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/PermissionRoleSet.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/PermissionRoleSet.java
new file mode 100644
index 0000000..a95a0f7
--- /dev/null
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/PermissionRoleSet.java
@@ -0,0 +1,31 @@
+package com.supwisdom.institute.backend.base.domain.model;
+
+import java.util.Collection;
+
+import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
+import com.supwisdom.institute.backend.common.framework.model.IModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class PermissionRoleSet extends Permission implements IModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1823157193945264156L;
+
+ @Getter
+ @Setter
+ Collection<Role> roles;
+
+ public PermissionRoleSet(Permission permission, Collection<Role> roles) {
+
+ EntityUtils.copy(permission, this);
+
+ this.roles = roles;
+ }
+
+}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/ResourceRoleSet.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/ResourceRoleSet.java
index d356ab6..598b30d 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/ResourceRoleSet.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/ResourceRoleSet.java
@@ -1,12 +1,13 @@
package com.supwisdom.institute.backend.base.domain.model;
-import java.util.Set;
+import java.util.Collection;
import lombok.Getter;
import lombok.Setter;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
import com.supwisdom.institute.backend.common.framework.model.IModel;
public class ResourceRoleSet extends Resource implements IModel {
@@ -18,6 +19,13 @@
@Getter
@Setter
- Set<Role> roles;
+ Collection<Role> roles;
+
+ public ResourceRoleSet(Resource resource, Collection<Role> roles) {
+
+ EntityUtils.copy(resource, this);
+
+ this.roles = roles;
+ }
}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionResourceRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionResourceRepository.java
new file mode 100644
index 0000000..c40aef7
--- /dev/null
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionResourceRepository.java
@@ -0,0 +1,194 @@
+package com.supwisdom.institute.backend.base.domain.repo;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import org.springframework.data.domain.Example;
+import org.springframework.data.domain.ExampleMatcher;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Repository;
+
+import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
+import com.supwisdom.institute.backend.base.domain.entity.Resource;
+import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
+import com.supwisdom.institute.backend.common.util.MapBeanUtils;
+
+@Repository
+public interface PermissionResourceRepository extends BaseJpaRepository<PermissionResource> {
+
+ public default Page<PermissionResource> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+ PermissionResource probe = new PermissionResource();
+ if (mapBean != null) {
+ probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
+ probe.setResourceId(MapBeanUtils.getString(mapBean, "resourceId"));
+ }
+
+ ExampleMatcher matcher = ExampleMatcher.matching()
+ .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
+ .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact());
+
+ PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ Page<PermissionResource> page = this.findAll(example, pageRequest);
+
+ return page;
+ }
+
+ public default Page<PermissionResource> selectPermissionResources(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+ PermissionResource probe = new PermissionResource();
+ if (mapBean != null) {
+ probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
+ probe.setResourceId(MapBeanUtils.getString(mapBean, "resourceId"));
+ }
+
+ ExampleMatcher matcher = ExampleMatcher.matching()
+ .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
+ .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+
+ Page<PermissionResource> page = this.findAll(example, pageRequest); // FIXME: 多表关联查询
+
+ return page;
+ }
+
+ public default void relatePermissionResources(Permission permission, List<PermissionResource> relateResources) {
+
+ List<PermissionResource> existPermissionResources = this.selectListByPermissionId(permission.getId());
+
+ Map<String, PermissionResource> existMapPermissionResources = new LinkedHashMap<String, PermissionResource>();
+ for (PermissionResource permissionResource : existPermissionResources) {
+ String k = String.format("%s", permissionResource.getResourceId());
+ existMapPermissionResources.put(k, permissionResource);
+ }
+
+ for (PermissionResource permissionResource : relateResources) {
+ String k = String.format("%s", permissionResource.getResourceId());
+
+ if (existMapPermissionResources.containsKey(k)) {
+ existMapPermissionResources.remove(k);
+ } else {
+ permissionResource.setCompanyId(permission.getCompanyId());
+ permissionResource.setPermissionId(permission.getId());
+
+ this.insert(permissionResource);
+ }
+ }
+
+ for (PermissionResource rolePermission : existMapPermissionResources.values()) {
+ this.deleteById(rolePermission.getId());
+ }
+ }
+
+ public default List<PermissionResource> selectListByPermissionId(String permissionId) {
+
+ PermissionResource probe = new PermissionResource();
+ probe.setPermissionId(permissionId);
+
+ ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("permissionId",
+ ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ List<PermissionResource> rolePermissions = this.findAll(example);
+
+ return rolePermissions;
+ }
+
+
+ public default void relateResourcePermissions(Resource resource, List<PermissionResource> relatePermissions) {
+
+ // 获取权限已关联的角色
+ List<PermissionResource> existResourcePermissions = this.selectListByResourceId(resource.getId());
+
+ Map<String, PermissionResource> existMapResourcePermissions = new LinkedHashMap<String, PermissionResource>();
+ for (PermissionResource permissionResource : existResourcePermissions) {
+ String k = String.format("%s", permissionResource.getPermissionId());
+ existMapResourcePermissions.put(k, permissionResource);
+ }
+
+ // 保存未关联的角色
+ for (PermissionResource permissionResource : relatePermissions) {
+ String k = String.format("%s", permissionResource.getPermissionId());
+
+ if (existMapResourcePermissions.containsKey(k)) {
+ existMapResourcePermissions.remove(k);
+ } else {
+ permissionResource.setCompanyId(resource.getCompanyId());
+ permissionResource.setResourceId(resource.getId());
+
+ this.insert(permissionResource);
+ }
+ }
+
+ // 删除移除关联的角色
+ for (PermissionResource rolePermission : existMapResourcePermissions.values()) {
+ this.deleteById(rolePermission.getId());
+ }
+ }
+ public default List<PermissionResource> selectListByResourceId(String resourceId) {
+
+ PermissionResource probe = new PermissionResource();
+ probe.setResourceId(resourceId);
+
+ ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("resourceId",
+ ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ List<PermissionResource> rolePermissions = this.findAll(example);
+
+ return rolePermissions;
+ }
+
+
+ public default PermissionResource selectOneByPermissionResource(String permissionId, String resourceId) {
+
+ PermissionResource probe = new PermissionResource();
+ probe.setPermissionId(permissionId);
+ probe.setResourceId(resourceId);
+
+ ExampleMatcher matcher = ExampleMatcher.matching()
+ .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
+ .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact())
+ ;
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ Optional<PermissionResource> o = this.findOne(example);
+
+ return o.isPresent() ? o.get() : null;
+ }
+
+ public default void addPermissionResource(String permissionId, String resourceId) {
+
+ PermissionResource rolePermission = this.selectOneByPermissionResource(permissionId, resourceId);
+
+ if (rolePermission == null) {
+ rolePermission = new PermissionResource();
+ //rolePermission.setCompanyId(companyId);
+ rolePermission.setPermissionId(permissionId);
+ rolePermission.setResourceId(resourceId);
+
+ this.insert(rolePermission);
+ }
+ }
+
+ public default void removePermissionResource(String permissionId, String resourceId) {
+
+ PermissionResource rolePermission = this.selectOneByPermissionResource(permissionId, resourceId);
+
+ if (rolePermission != null) {
+ this.deleteById(rolePermission.getId());
+ }
+ }
+
+}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RoleRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RoleRepository.java
index 5853b26..00c3ee6 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RoleRepository.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RoleRepository.java
@@ -143,4 +143,22 @@
+ "and r.status='1' and g.status='1' and a.status='1' and a.enabled=1 ")
public List<Role> selectAccountGroupRoleByUsername(@Param("username") String username);
+
+ @Query(value = "select r from Role r "
+ + "inner join RolePermission rp on r.id=rp.roleId "
+ + "inner join Permission p on rp.permissionId=p.id "
+ + "where p.id=:permissionId "
+ + "and r.status='1' and p.status='1' ")
+ public List<Role> selectPermissionRolesByPermission(@Param("permissionId") String permissionId);
+
+
+ @Query(value = "select r from Role r "
+ + "inner join RolePermission rp on r.id=rp.roleId "
+ + "inner join Permission p on rp.permissionId=p.id "
+ + "inner join PermissionResource pres on p.id=pres.permissionId "
+ + "inner join Resource res on pres.resourceId=res.id "
+ + "where res.id=:resourceId "
+ + "and r.status='1' and p.status='1' and res.status='1' ")
+ public List<Role> selectResourceRolesByResource(@Param("resourceId") String resourceId);
+
}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/PermissionService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/PermissionService.java
index 39fe4e2..c546400 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/PermissionService.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/PermissionService.java
@@ -10,13 +10,23 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
+import org.springframework.data.domain.ExampleMatcher;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
+import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.base.domain.model.PermissionRoleSet;
import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
import com.supwisdom.institute.backend.base.domain.repo.PermissionRepository;
+import com.supwisdom.institute.backend.base.domain.repo.PermissionResourceRepository;
+import com.supwisdom.institute.backend.base.domain.repo.RoleRepository;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
import com.supwisdom.institute.backend.common.framework.service.ABaseService;
+import com.supwisdom.institute.backend.common.util.MapBeanUtils;
@Slf4j
@Service
@@ -29,7 +39,13 @@
@Autowired
private PermissionRepository permissionRepository;
-
+
+ @Autowired
+ private PermissionResourceRepository permissionResourceRepository;
+
+ @Autowired
+ private RoleRepository roleRepository;
+
@Override
public Permission insert(Permission entity) {
Permission parentPermission = permissionRepository.selectById(entity.getParentId());
@@ -47,6 +63,78 @@
});
}
+
+
+ public Page<PermissionResource> selectPermissionResources(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+ if (loadAll) {
+ pageIndex = 0;
+ pageSize = Integer.MAX_VALUE;
+ }
+
+ PermissionResource probe = new PermissionResource();
+ if (mapBean != null) {
+ probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
+ probe.setResourceId(MapBeanUtils.getString(mapBean, "resourceId"));
+ }
+
+ ExampleMatcher matcher = ExampleMatcher.matching()
+ .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
+ .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+
+ Page<PermissionResource> page = permissionResourceRepository.findAll(example, pageRequest); // FIXME: 多表关联查询
+
+ return page;
+ }
+
+ public void relatePermissionResources(Permission permission, List<PermissionResource> permissionResources) {
+
+ List<PermissionResource> existPermissionResources = this.selectPermissionResourcesByPermissionId(permission.getId());
+
+ Map<String, PermissionResource> existMapPermissionResources = new LinkedHashMap<String, PermissionResource>();
+ for (PermissionResource permissionResource : existPermissionResources) {
+ String k = String.format("%s", permissionResource.getPermissionId());
+ existMapPermissionResources.put(k, permissionResource);
+ }
+
+ for (PermissionResource permissionResource : permissionResources) {
+ String k = String.format("%s", permissionResource.getPermissionId());
+
+ if (existMapPermissionResources.containsKey(k)) {
+ existMapPermissionResources.remove(k);
+ } else {
+ permissionResource.setCompanyId(permission.getCompanyId());
+ permissionResource.setPermissionId(permission.getId());
+
+ permissionResourceRepository.insert(permissionResource);
+ }
+ }
+
+ for (PermissionResource permissionResource : existMapPermissionResources.values()) {
+ permissionResourceRepository.deleteById(permissionResource.getId());
+ }
+ }
+
+ public List<PermissionResource> selectPermissionResourcesByPermissionId(String permissionId) {
+
+ PermissionResource probe = new PermissionResource();
+ probe.setPermissionId(permissionId);
+
+ ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("permissionId",
+ ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ List<PermissionResource> permissionResources = permissionResourceRepository.findAll(example);
+
+ return permissionResources;
+ }
+
+
private Permission selectApplicationPermission() {
Permission permission = permissionRepository.selectById(Permission.APPLICATION_ID);
@@ -210,4 +298,22 @@
return convertPermissionTree(permissions, rootTreeNodeId);
}
+ public List<PermissionRoleSet> selectPermissionRoleSet(Map<String, Object> mapBean) {
+
+ List<PermissionRoleSet> prsList = new ArrayList<>();
+
+ List<Permission> resourceList = permissionRepository.selectList(mapBean, null);
+
+ for (Permission permission : resourceList) {
+
+ List<Role> roleList = roleRepository.selectPermissionRolesByPermission(permission.getId());
+
+ PermissionRoleSet prs = new PermissionRoleSet(permission, roleList);
+
+ prsList.add(prs);
+ }
+
+ return prsList;
+ }
+
}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java
index 47424ad..eea0422 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java
@@ -1,13 +1,17 @@
package com.supwisdom.institute.backend.base.domain.service;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
+import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.base.domain.model.ResourceRoleSet;
import com.supwisdom.institute.backend.base.domain.repo.ResourceRepository;
+import com.supwisdom.institute.backend.base.domain.repo.RoleRepository;
import com.supwisdom.institute.backend.common.framework.service.ABaseService;
@Service
@@ -21,6 +25,9 @@
@Autowired
private ResourceRepository resourceRepository;
+ @Autowired
+ private RoleRepository roleRepository;
+
public void deleteBatch(List<String> ids) {
@@ -30,9 +37,22 @@
}
- public List<ResourceRoleSet> selectByApplication(String applicationId) {
- // TODO Auto-generated method stub
- return null;
+ public List<ResourceRoleSet> selectResourceRoleSet(Map<String, Object> mapBean) {
+
+ List<ResourceRoleSet> rrsList = new ArrayList<>();
+
+ List<Resource> resourceList = resourceRepository.selectList(mapBean, null);
+
+ for (Resource resource : resourceList) {
+
+ List<Role> roleList = roleRepository.selectResourceRolesByResource(resource.getId());
+
+ ResourceRoleSet rrs = new ResourceRoleSet(resource, roleList);
+
+ rrsList.add(rrs);
+ }
+
+ return rrsList;
}
}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java
index ce2acf8..64ea622 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java
@@ -3,6 +3,7 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableScheduling;
import com.supwisdom.infras.online.doc.configuration.EnableInfrasOnlineDoc;
import com.supwisdom.institute.backend.common.core.transmit.annotation.EnableSimpleUserTransmit;
@@ -11,6 +12,8 @@
@SpringBootApplication
@EnableFeignClients
+@EnableScheduling
+
@EnableSimpleUserTransmit
@EnableCustomExceptionHandler
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/autorefesh/base/InMemeryPermissionRoleSetAutoRefresh.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/autorefesh/base/InMemeryPermissionRoleSetAutoRefresh.java
new file mode 100644
index 0000000..d149eee
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/autorefesh/base/InMemeryPermissionRoleSetAutoRefresh.java
@@ -0,0 +1,26 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.autorefesh.base;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Component
+public class InMemeryPermissionRoleSetAutoRefresh {
+
+ @Autowired
+ private AuthnService authnService;
+
+ @Scheduled(initialDelayString = "${inMemeryPermissionRoleSetAutoRefresh.schedule.startDelay:500}",
+ fixedDelayString = "${inMemeryPermissionRoleSetAutoRefresh.schedule.repeatInterval:20000}")
+ public void refresh() {
+ log.info("InMemeryPermissionRoleSetAutoRefresh, refresh permissionRoleSets");
+
+ authnService.loadPermissionRoleSets();
+ }
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/me/MeController.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/me/MeController.java
index f1a8d62..c88e7c5 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/me/MeController.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/me/MeController.java
@@ -15,7 +15,7 @@
import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Permission;
import com.supwisdom.institute.backend.admin.bff.api.v1.model.me.CurrentUser;
import com.supwisdom.institute.backend.admin.bff.api.v1.model.me.GrantedMenu;
-import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnAccountService;
+import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
import com.supwisdom.institute.backend.admin.bff.api.v1.vo.me.response.data.CurrentUserResponseData;
import com.supwisdom.institute.backend.admin.bff.api.v1.vo.me.response.data.GrantedMenusResponseData;
import com.supwisdom.institute.backend.admin.bff.utils.CurrentUserUtil;
@@ -30,7 +30,7 @@
public class MeController {
@Autowired
- private AuthnAccountService authnAccountService;
+ private AuthnService authnService;
@ApiOperation(
tags = { "me" },
@@ -54,14 +54,14 @@
@ApiOperation(
tags = { "me" },
- value = "获取登录用户的访问菜单", notes = "获取登录用户的访问菜单", nickname = "menus"
+ value = "获取登录用户的访问菜单", notes = "获取登录用户的访问菜单", nickname = "accountMenus"
)
@RequestMapping(method = RequestMethod.GET, path = "/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
- public DefaultApiResponse<GrantedMenusResponseData> menus() {
+ public DefaultApiResponse<GrantedMenusResponseData> accountMenus() {
String username = CurrentUserUtil.currentUsername();
- List<Permission> menus = authnAccountService.menus(username, "1");
+ List<Permission> menus = authnService.menus(username, "1"); // XXX: applicationId
List<GrantedMenu> grantedMenus = new ArrayList<>();
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/open/OpenController.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/open/OpenController.java
new file mode 100644
index 0000000..4944fbd
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/open/OpenController.java
@@ -0,0 +1,55 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.controller.open;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.MimeTypeUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.PermissionRoleSet;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.open.Menu;
+import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
+import com.supwisdom.institute.backend.admin.bff.api.v1.vo.open.response.data.MenusResponseData;
+import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@Api(value = "BFFOpen", tags = { "open" }, description = "公开接口")
+@RestController
+@RequestMapping(value = "/api/v1/open")
+public class OpenController {
+
+ @Autowired
+ private AuthnService authnService;
+
+ @ApiOperation(
+ tags = { "open" },
+ value = "获取菜单", notes = "获取菜单", nickname = "openMenus"
+ )
+ @RequestMapping(method = RequestMethod.GET, path = "/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ public DefaultApiResponse<MenusResponseData> menus(
+ @RequestParam(name = "applicationId", required = false) String applicationId) {
+
+ List<Menu> menus = new ArrayList<>();
+
+ List<PermissionRoleSet> permissionRoleSets = authnService.getPermissionRoleSets(applicationId);
+ if (permissionRoleSets != null) {
+ for (PermissionRoleSet permissionRoleSet : permissionRoleSets) {
+ Menu menu = new Menu();
+ BeanUtils.copyProperties(permissionRoleSet, menu);
+ menus.add(menu);
+ }
+ }
+
+ MenusResponseData data = MenusResponseData.of(menus);
+ return new DefaultApiResponse<MenusResponseData>(data);
+ }
+
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/open/OpenSyncController.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/open/OpenSyncController.java
new file mode 100644
index 0000000..86941f3
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/open/OpenSyncController.java
@@ -0,0 +1,55 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.controller.open;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.MimeTypeUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Role;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.open.SyncRoleModel;
+import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
+import com.supwisdom.institute.backend.admin.bff.api.v1.vo.open.response.data.OpenSyncRolesResponseData;
+import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@Api(value = "BFFOpen", tags = { "open" }, description = "公开接口")
+@RestController
+@RequestMapping(value = "/api/v1/open/sync")
+public class OpenSyncController {
+
+ @Autowired
+ private AuthnService authnService;
+
+ @ApiOperation(
+ tags = { "open" },
+ value = "获取角色", notes = "获取角色", nickname = "openRoles"
+ )
+ @RequestMapping(method = RequestMethod.GET, path = "/roles", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ public DefaultApiResponse<OpenSyncRolesResponseData> roles(
+ @RequestParam(name = "applicationId", required = true) String applicationId) {
+
+ List<SyncRoleModel> syncRoleModels = new ArrayList<>();
+
+ List<Role> systemRoles = authnService.roles();
+ for (Role systemRole : systemRoles) {
+ SyncRoleModel syncRoleModel = new SyncRoleModel(
+ systemRole.getId(),
+ systemRole.getCode(),
+ systemRole.getName(),
+ systemRole.getMemo());
+ syncRoleModels.add(syncRoleModel);
+ }
+
+ OpenSyncRolesResponseData data = OpenSyncRolesResponseData.of(applicationId, syncRoleModels);
+ return new DefaultApiResponse<OpenSyncRolesResponseData>(data);
+ }
+
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Application.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Application.java
new file mode 100644
index 0000000..b0f6c48
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Application.java
@@ -0,0 +1,39 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class Application extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 7687658763529677076L;
+
+ private String id;
+
+ /**
+ * 代码
+ */
+ private String code;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 备注
+ */
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ private String status;
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Permission.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Permission.java
index 3425927..5877bf9 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Permission.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Permission.java
@@ -37,6 +37,11 @@
private String status;
/**
+ * 菜单图标
+ */
+ private String icon;
+
+ /**
* 类型(1 应用,2 菜单,3 操作)
*/
private String type;
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/PermissionRoleSet.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/PermissionRoleSet.java
new file mode 100644
index 0000000..6080107
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/PermissionRoleSet.java
@@ -0,0 +1,114 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class PermissionRoleSet extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1482739465611090145L;
+
+ @Getter
+ @Setter
+ private String id;
+
+ /**
+ * 代码
+ */
+ @Getter
+ @Setter
+ private String code;
+
+ /**
+ * 名称
+ */
+ @Getter
+ @Setter
+ private String name;
+
+ /**
+ * 备注
+ */
+ @Getter
+ @Setter
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ @Getter
+ @Setter
+ private String status;
+
+ /**
+ * 类型(1 应用,2 菜单,3 操作)
+ */
+ @Getter
+ @Setter
+ private String type;
+
+ /**
+ * 菜单图标
+ */
+ @Getter
+ @Setter
+ private String icon;
+
+ /**
+ * URL地址
+ */
+ @Getter
+ @Setter
+ private String url;
+
+ /**
+ * 系统ID
+ */
+ @Getter
+ @Setter
+ private String applicationId;
+
+ /**
+ * 父级ID
+ */
+ @Getter
+ @Setter
+ private String parentId;
+
+ /**
+ * 排序
+ */
+ @Getter
+ @Setter
+ private Integer order;
+
+ @Getter
+ @Setter
+ private Collection<Role> roles;
+
+ private Collection<String> permissionRoles = null;
+ public boolean matches(Collection<String> userRoles) {
+ if (permissionRoles == null) {
+ permissionRoles = new ArrayList<String>();
+ Iterator<Role> it = roles.iterator();
+ while (it.hasNext()) {
+ Role r = it.next();
+ permissionRoles.add(r.getCode());
+ }
+ }
+
+ userRoles.retainAll(permissionRoles);
+
+ return !userRoles.isEmpty();
+ }
+
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/ResourceRoleSet.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/ResourceRoleSet.java
new file mode 100644
index 0000000..665154d
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/ResourceRoleSet.java
@@ -0,0 +1,80 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
+
+import java.util.Collection;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class ResourceRoleSet extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -683204173918706673L;
+
+ public static final String ACCESS_ANONYMOUS = "anonymous"; // 匿名访问anonymous
+ public static final String ACCESS_AUTHENTICATE = "authenticate"; // 认证访问authenticate
+ public static final String ACCESS_AUTHORIZE = "authorize"; // 授权访问authorize
+ public static final String ACCESS_PERMIT_ALL = "permitAll"; // 允许所有permitAll
+ public static final String ACCESS_DENY_ALL = "denyAll"; // 拒绝所有denyAll
+
+ @Getter
+ @Setter
+ private String id;
+
+ /**
+ * 代码
+ */
+ @Getter
+ @Setter
+ private String code;
+
+ /**
+ * 名称
+ */
+ @Getter
+ @Setter
+ private String name;
+
+ /**
+ * 备注
+ */
+ @Getter
+ @Setter
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ @Getter
+ @Setter
+ private String status;
+
+ /**
+ * 请求方式(GET、POST、PUT、DELETE 等)
+ */
+ @Getter
+ @Setter
+ private String method;
+
+ /**
+ * 请求路径
+ */
+ @Getter
+ @Setter
+ private String path;
+
+ /**
+ * 访问规则(匿名访问anonymous、认证访问authenticate、授权访问authorize、允许所有permitAll、拒绝所有denyAll)
+ */
+ @Getter
+ @Setter
+ private String access;
+
+ @Getter
+ @Setter
+ Collection<Role> roles;
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/me/GrantedMenu.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/me/GrantedMenu.java
index 4376793..5d8cd70 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/me/GrantedMenu.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/me/GrantedMenu.java
@@ -37,6 +37,11 @@
private String status;
/**
+ * 菜单图标
+ */
+ private String icon;
+
+ /**
* URL地址
*/
private String url;
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/Menu.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/Menu.java
new file mode 100644
index 0000000..b3bdc99
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/Menu.java
@@ -0,0 +1,64 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.open;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class Menu extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4206010261706882919L;
+
+ private String id;
+
+ /**
+ * 代码
+ */
+ private String code;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 备注
+ */
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ private String status;
+
+ /**
+ * 菜单图标
+ */
+ private String icon;
+
+ /**
+ * URL地址
+ */
+ private String url;
+
+ /**
+ * 系统ID
+ */
+ private String applicationId;
+
+ /**
+ * 父级ID
+ */
+ private String parentId;
+
+ /**
+ * 排序
+ */
+ private Integer order;
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/SyncRoleModel.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/SyncRoleModel.java
new file mode 100644
index 0000000..72986bc
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/SyncRoleModel.java
@@ -0,0 +1,39 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.open;
+
+import java.io.Serializable;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+public class SyncRoleModel implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1916611618482825238L;
+
+ /**
+ * ID
+ */
+ private String id;
+
+ /**
+ * 代码
+ */
+ private String code;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 描述
+ */
+ private String memo;
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnAccountRemoteFallbackFactory.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFallbackFactory.java
similarity index 62%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnAccountRemoteFallbackFactory.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFallbackFactory.java
index d9eb21e..e965dab 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnAccountRemoteFallbackFactory.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFallbackFactory.java
@@ -8,11 +8,11 @@
import feign.hystrix.FallbackFactory;
@Component
-public class AuthnAccountRemoteFallbackFactory implements FallbackFactory<AuthnAccountRemoteFeignClient> {
+public class AuthnRemoteFallbackFactory implements FallbackFactory<AuthnRemoteFeignClient> {
@Override
- public AuthnAccountRemoteFeignClient create(Throwable cause) {
- return new AuthnAccountRemoteFeignClient() {
+ public AuthnRemoteFeignClient create(Throwable cause) {
+ return new AuthnRemoteFeignClient() {
@Override
public JSONObject account(String username) {
@@ -62,6 +62,39 @@
return FallbackError.defaultErrorJson(cause);
}
+
+ @Override
+ public JSONObject applications() {
+ if (cause != null) {
+ cause.printStackTrace();
+ }
+ return FallbackError.defaultErrorJson(cause);
+ }
+
+ @Override
+ public JSONObject roles() {
+ if (cause != null) {
+ cause.printStackTrace();
+ }
+ return FallbackError.defaultErrorJson(cause);
+ }
+
+ @Override
+ public JSONObject permissionRoleSets(String applicationId) {
+ if (cause != null) {
+ cause.printStackTrace();
+ }
+ return FallbackError.defaultErrorJson(cause);
+ }
+
+ @Override
+ public JSONObject resourceRoleSets(String applicationId) {
+ if (cause != null) {
+ cause.printStackTrace();
+ }
+ return FallbackError.defaultErrorJson(cause);
+ }
+
};
}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnAccountRemoteFeignClient.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFeignClient.java
similarity index 74%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnAccountRemoteFeignClient.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFeignClient.java
index 3ee71b8..0486ffd 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnAccountRemoteFeignClient.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFeignClient.java
@@ -13,9 +13,9 @@
configuration = {BaseFeignClientConfiguration.class},
name = "base-admin-account-remote-feign-client",
url = "${sw-backend-base-api.uri}/v1/authn",
- fallbackFactory = AuthnAccountRemoteFallbackFactory.class
+ fallbackFactory = AuthnRemoteFallbackFactory.class
)
-public interface AuthnAccountRemoteFeignClient {
+public interface AuthnRemoteFeignClient {
@RequestMapping(method = RequestMethod.GET, path = "/{username}/account")
JSONObject account(
@@ -46,4 +46,19 @@
@PathVariable(name = "username") String username,
@RequestParam(name = "applicationId", required = false) String applicationId);
+
+ @RequestMapping(method = RequestMethod.GET, path = "/applications")
+ JSONObject applications();
+
+ @RequestMapping(method = RequestMethod.GET, path = "/roles")
+ JSONObject roles();
+
+ @RequestMapping(method = RequestMethod.GET, path = "/permissionRoleSets")
+ JSONObject permissionRoleSets(
+ @RequestParam(name = "applicationId", required = false) String applicationId);
+
+ @RequestMapping(method = RequestMethod.GET, path = "/resourceRoleSets")
+ JSONObject resourceRoleSets(
+ @RequestParam(name = "applicationId", required = false) String applicationId);
+
}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/base/AuthnAccountService.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/base/AuthnAccountService.java
deleted file mode 100644
index e3b768e..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/base/AuthnAccountService.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.service.base;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Account;
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Permission;
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Role;
-import com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.v1.authn.AuthnAccountRemoteFeignClient;
-
-@Service
-public class AuthnAccountService {
-
- @Autowired
- private AuthnAccountRemoteFeignClient authnAccountRemote;
-
- public Account account(String username) {
-
- JSONObject jsonObject = authnAccountRemote.account(username);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.toJavaObject(Account.class);
- }
-
- return null;
- }
-
- public List<Role> roles(String username) {
-
- JSONObject jsonObject = authnAccountRemote.roles(username);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.getJSONArray("roles").toJavaList(Role.class);
- }
-
- return null;
- }
-
- public List<Permission> menus(String username, String applicationId) {
-
- JSONObject jsonObject = authnAccountRemote.menus(username, applicationId);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.getJSONArray("permissions").toJavaList(Permission.class);
- }
-
- return null;
- }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/base/AuthnService.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/base/AuthnService.java
new file mode 100644
index 0000000..8f6d9df
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/base/AuthnService.java
@@ -0,0 +1,202 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.service.base;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import lombok.extern.slf4j.Slf4j;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Account;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Application;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Permission;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.PermissionRoleSet;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.ResourceRoleSet;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Role;
+import com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.v1.authn.AuthnRemoteFeignClient;
+
+@Slf4j
+@Service
+public class AuthnService {
+
+ @Autowired
+ private AuthnRemoteFeignClient authnRemote;
+
+ public Account account(String username) {
+
+ JSONObject jsonObject = authnRemote.account(username);
+ if (jsonObject == null) {
+ return null;
+ }
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.toJavaObject(Account.class);
+ }
+
+ return null;
+ }
+
+ public List<Role> roles(String username) {
+
+ JSONObject jsonObject = authnRemote.roles(username);
+ if (jsonObject == null) {
+ return null;
+ }
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("roles").toJavaList(Role.class);
+ }
+
+ return null;
+ }
+
+ public List<Permission> menus(String username, String applicationId) {
+
+ JSONObject jsonObject = authnRemote.menus(username, applicationId);
+ if (jsonObject == null) {
+ return null;
+ }
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("permissions").toJavaList(Permission.class);
+ }
+
+ return null;
+ }
+
+
+ public List<Application> applications() {
+
+ try {
+ JSONObject jsonObject = authnRemote.applications();
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("applications").toJavaList(Application.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ public List<Role> roles() {
+
+ try {
+ JSONObject jsonObject = authnRemote.roles();
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("roles").toJavaList(Role.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+
+
+
+
+ public static volatile Map<String, List<PermissionRoleSet>> mapPermissionRoleSets =
+ new HashMap<String, List<PermissionRoleSet>>();
+
+ public void putPermissionRoleSets(String applicationId, List<PermissionRoleSet> permissionRoleSets) {
+ AuthnService.mapPermissionRoleSets.put(applicationId, permissionRoleSets);
+ }
+
+ public List<PermissionRoleSet> getPermissionRoleSets(String applicationId) {
+ if (StringUtils.isNotEmpty(applicationId)) {
+ return AuthnService.mapPermissionRoleSets.get(applicationId);
+ }
+
+ List<PermissionRoleSet> allPermissionRoleSets = new ArrayList<>();
+ for (List<PermissionRoleSet> permissionRoleSets : AuthnService.mapPermissionRoleSets.values()) {
+ allPermissionRoleSets.addAll(permissionRoleSets);
+ }
+
+ return allPermissionRoleSets;
+ }
+
+ public void loadPermissionRoleSets() {
+
+ List<Application> applications = applications();
+ if (applications != null) {
+ for (Application application : applications) {
+ String applicationId = application.getId();
+ List<PermissionRoleSet> permissionRoleSets = this.permissionRoleSets(applicationId);
+ if (permissionRoleSets != null) {
+ this.putPermissionRoleSets(applicationId, permissionRoleSets);
+ }
+ }
+ }
+ }
+
+
+ public List<PermissionRoleSet> permissionRoleSets(String applicationId) {
+
+ try {
+ JSONObject jsonObject = authnRemote.permissionRoleSets(applicationId);
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("permissionRoleSets").toJavaList(PermissionRoleSet.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ public List<ResourceRoleSet> resourceRoleSets() {
+
+ try {
+ JSONObject jsonObject = authnRemote.resourceRoleSets(null);
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("resourceRoleSets").toJavaList(ResourceRoleSet.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/open/response/data/MenusResponseData.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/open/response/data/MenusResponseData.java
new file mode 100644
index 0000000..6beabd2
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/open/response/data/MenusResponseData.java
@@ -0,0 +1,30 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.vo.open.response.data;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.open.Menu;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class MenusResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3516729316884770800L;
+
+ @Getter
+ @Setter
+ private List<Menu> menus;
+
+ public static MenusResponseData of(List<Menu> menus) {
+ MenusResponseData data = new MenusResponseData();
+
+ data.setMenus(menus);
+
+ return data;
+ }
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/open/response/data/OpenSyncRolesResponseData.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/open/response/data/OpenSyncRolesResponseData.java
new file mode 100644
index 0000000..5b8b3d3
--- /dev/null
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/open/response/data/OpenSyncRolesResponseData.java
@@ -0,0 +1,34 @@
+package com.supwisdom.institute.backend.admin.bff.api.v1.vo.open.response.data;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.open.SyncRoleModel;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class OpenSyncRolesResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2739730369123803327L;
+
+ @Getter
+ @Setter
+ private String applicationId;
+
+ @Getter
+ @Setter
+ private List<SyncRoleModel> roles;
+
+ public static OpenSyncRolesResponseData of(String applicationId, List<SyncRoleModel> roles) {
+ OpenSyncRolesResponseData data = new OpenSyncRolesResponseData();
+
+ data.setRoles(roles);
+
+ return data;
+ }
+
+}
diff --git a/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/repo/BaseJpaRepository.java b/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/repo/BaseJpaRepository.java
index e5308df..a939a95 100644
--- a/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/repo/BaseJpaRepository.java
+++ b/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/repo/BaseJpaRepository.java
@@ -1,6 +1,7 @@
package com.supwisdom.institute.backend.common.framework.repo;
import java.util.Calendar;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -36,6 +37,19 @@
return null;
}
+ public default List<E> selectList(Map<String, Object> mapBean, Map<String, String> orderBy) {
+
+ Specification<E> spec = convertToSpec(mapBean);
+
+ Sort sort = convertToSort(orderBy);
+
+ if (sort != null) {
+ return this.findAll(spec, sort);
+ }
+
+ return this.findAll(spec);
+ }
+
public default Page<E> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
Specification<E> spec = convertToSpec(mapBean);
diff --git a/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/service/ABaseService.java b/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/service/ABaseService.java
index dccfc17..a36af40 100644
--- a/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/service/ABaseService.java
+++ b/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/service/ABaseService.java
@@ -1,5 +1,6 @@
package com.supwisdom.institute.backend.common.framework.service;
+import java.util.List;
import java.util.Map;
import org.springframework.data.domain.Page;
@@ -10,6 +11,11 @@
public abstract class ABaseService<E extends ABaseEntity, REPO extends BaseJpaRepository<E>> {
public abstract REPO getRepo();
+
+
+ public List<E> selectList(Map<String, Object> mapBean, Map<String, String> orderBy) {
+ return getRepo().selectList(mapBean, orderBy);
+ }
public Page<E> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/Permission.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/Permission.java
index 0d5c72d..53f3199 100644
--- a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/Permission.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/Permission.java
@@ -42,6 +42,11 @@
private String type;
/**
+ * 菜单图标
+ */
+ private String icon;
+
+ /**
* URL地址
*/
private String url;
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/PermissionRoleSet.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/PermissionRoleSet.java
new file mode 100644
index 0000000..675e657
--- /dev/null
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/PermissionRoleSet.java
@@ -0,0 +1,5 @@
+package com.supwisdom.institute.backend.gateway.authn.model;
+
+public class PermissionRoleSet {
+
+}
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/ResourceRoleSet.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/ResourceRoleSet.java
new file mode 100644
index 0000000..2d7940c
--- /dev/null
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/ResourceRoleSet.java
@@ -0,0 +1,80 @@
+package com.supwisdom.institute.backend.gateway.authn.model;
+
+import java.util.Collection;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class ResourceRoleSet extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -683204173918706673L;
+
+ public static final String ACCESS_ANONYMOUS = "anonymous"; // 匿名访问anonymous
+ public static final String ACCESS_AUTHENTICATE = "authenticate"; // 认证访问authenticate
+ public static final String ACCESS_AUTHORIZE = "authorize"; // 授权访问authorize
+ public static final String ACCESS_PERMIT_ALL = "permitAll"; // 允许所有permitAll
+ public static final String ACCESS_DENY_ALL = "denyAll"; // 拒绝所有denyAll
+
+ @Getter
+ @Setter
+ private String id;
+
+ /**
+ * 代码
+ */
+ @Getter
+ @Setter
+ private String code;
+
+ /**
+ * 名称
+ */
+ @Getter
+ @Setter
+ private String name;
+
+ /**
+ * 备注
+ */
+ @Getter
+ @Setter
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ @Getter
+ @Setter
+ private String status;
+
+ /**
+ * 请求方式(GET、POST、PUT、DELETE 等)
+ */
+ @Getter
+ @Setter
+ private String method;
+
+ /**
+ * 请求路径
+ */
+ @Getter
+ @Setter
+ private String path;
+
+ /**
+ * 访问规则(匿名访问anonymous、认证访问authenticate、授权访问authorize、允许所有permitAll、拒绝所有denyAll)
+ */
+ @Getter
+ @Setter
+ private String access;
+
+ @Getter
+ @Setter
+ Collection<Role> roles;
+
+}
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/Route.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/Route.java
new file mode 100644
index 0000000..9ca66c6
--- /dev/null
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/model/Route.java
@@ -0,0 +1,68 @@
+package com.supwisdom.institute.backend.gateway.authn.model;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class Route extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1254295553813507087L;
+
+ @Getter
+ @Setter
+ private String id;
+
+ /**
+ * 代码
+ */
+ @Getter
+ @Setter
+ private String code;
+
+ /**
+ * 名称
+ */
+ @Getter
+ @Setter
+ private String name;
+
+ /**
+ * 备注
+ */
+ @Getter
+ @Setter
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ @Getter
+ @Setter
+ private String status;
+
+ /**
+ * 路径前缀
+ */
+ @Getter
+ @Setter
+ private String pathPrefix;
+
+ /**
+ * 路由地址
+ */
+ @Getter
+ @Setter
+ private String url;
+
+ /**
+ * 是否排除前缀
+ */
+ @Getter
+ @Setter
+ private Boolean stripPrefix;
+
+}
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/configuration/AuthnAccountRestTemplateConfig.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/configuration/AuthnRestTemplateConfig.java
similarity index 71%
rename from gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/configuration/AuthnAccountRestTemplateConfig.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/configuration/AuthnRestTemplateConfig.java
index 5e98c4a..789f930 100644
--- a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/configuration/AuthnAccountRestTemplateConfig.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/configuration/AuthnRestTemplateConfig.java
@@ -17,7 +17,7 @@
import org.springframework.web.client.RestTemplate;
@Configuration
-public class AuthnAccountRestTemplateConfig {
+public class AuthnRestTemplateConfig {
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(
@@ -35,6 +35,21 @@
return factory;
}
+ SSLContextBuilder sslContextBuilder = SSLContexts.custom();
+
+ if (trustStore == null || trustStore.isEmpty()) {
+ } else {
+ try {
+ sslContextBuilder
+ .loadTrustMaterial(
+ ResourceUtils.getFile(trustStore),
+ trustStorePassword.toCharArray()
+ );
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
if (keyStore == null || keyStore.isEmpty()) {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);// 单位为ms
@@ -42,42 +57,35 @@
return factory;
} else {
try {
- SSLContextBuilder sslContextBuilder = SSLContexts.custom();
- if (trustStore == null || trustStore.isEmpty()) {
- } else {
- sslContextBuilder
-// .loadTrustMaterial(TrustAllStrategy.INSTANCE)
- .loadTrustMaterial(
- ResourceUtils.getFile(trustStore),
- trustStorePassword.toCharArray()
- );
- }
-
sslContextBuilder
.loadKeyMaterial(
ResourceUtils.getFile(keyStore),
keyStorePassword.toCharArray(),
keyPassword.toCharArray());
-
- SSLContext sslContext = sslContextBuilder.build();
-
- SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
- sslContext,
- SSLConnectionSocketFactory.getDefaultHostnameVerifier());
-
- CloseableHttpClient httpClient = HttpClients.custom()
- .setSSLSocketFactory(sslsf)
- .build();
-
- HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
- factory.setReadTimeout(5000);// 单位为ms
- factory.setConnectTimeout(5000);// 单位为ms
- return factory;
} catch (Exception e) {
e.printStackTrace();
}
}
+ try {
+ SSLContext sslContext = sslContextBuilder.build();
+
+ SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
+ sslContext,
+ SSLConnectionSocketFactory.getDefaultHostnameVerifier());
+
+ CloseableHttpClient httpClient = HttpClients.custom()
+ .setSSLSocketFactory(sslsf)
+ .build();
+
+ HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
+ factory.setReadTimeout(5000);// 单位为ms
+ factory.setConnectTimeout(5000);// 单位为ms
+ return factory;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);// 单位为ms
factory.setConnectTimeout(5000);// 单位为ms
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/web/client/AuthnAccountRemoteRestTemplate.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/web/client/AuthnRemoteRestTemplate.java
similarity index 64%
rename from gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/web/client/AuthnAccountRemoteRestTemplate.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/web/client/AuthnRemoteRestTemplate.java
index 6259608..17a3430 100644
--- a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/web/client/AuthnAccountRemoteRestTemplate.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/remote/web/client/AuthnRemoteRestTemplate.java
@@ -12,10 +12,10 @@
@Slf4j
@Component
-public class AuthnAccountRemoteRestTemplate {
+public class AuthnRemoteRestTemplate {
@Autowired
- private RestTemplate authnAccountRestTemplate;
+ private RestTemplate authnRestTemplate;
@Value(value = "${sw-backend-base-api.uri}/v1/authn")
private String url;
@@ -37,7 +37,7 @@
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
@@ -45,14 +45,14 @@
}
}
- public JSONObject roles(String username) {
+ public JSONObject accountRoles(String username) {
try {
final String path = "/{username}/roles";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
@@ -60,14 +60,14 @@
}
}
- public JSONObject applications(String username, String applicationId) {
+ public JSONObject accountApplications(String username, String applicationId) {
try {
final String path = "/{username}/applications";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
@@ -75,14 +75,14 @@
}
}
- public JSONObject menus(String username, String applicationId) {
+ public JSONObject accountMenus(String username, String applicationId) {
try {
final String path = "/{username}/menus";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
@@ -90,14 +90,14 @@
}
}
- public JSONObject operations(String username, String applicationId) {
+ public JSONObject accountOperations(String username, String applicationId) {
try {
final String path = "/{username}/operations";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
@@ -105,14 +105,45 @@
}
}
- public JSONObject resources(String username, String applicationId) {
+ public JSONObject accountResources(String username, String applicationId) {
try {
final String path = "/{username}/resources";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ return defaultErrorJson(e);
+ }
+ }
+
+ public JSONObject resourceRoleSets() {
+
+ try {
+ final String path = "/resourceRoleSets";
+ final String url = this.url + path;
+ log.debug(url);
+
+ return authnRestTemplate.getForObject(url, JSONObject.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ return defaultErrorJson(e);
+ }
+ }
+
+
+ public JSONObject routes() {
+
+ try {
+ final String path = "/routes";
+ final String url = this.url + path;
+ log.debug(url);
+
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/service/AuthnAccountService.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/service/AuthnAccountService.java
deleted file mode 100644
index beeb74a..0000000
--- a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/service/AuthnAccountService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.supwisdom.institute.backend.gateway.authn.service;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.gateway.authn.model.Account;
-import com.supwisdom.institute.backend.gateway.authn.model.Permission;
-import com.supwisdom.institute.backend.gateway.authn.model.Role;
-import com.supwisdom.institute.backend.gateway.authn.remote.web.client.AuthnAccountRemoteRestTemplate;
-
-@Service
-public class AuthnAccountService {
-
-// @Autowired
-// private AuthnAccountRemoteFeignClient authnAccountRemote;
-
- @Autowired
- private AuthnAccountRemoteRestTemplate authnAccountRemote;
-
- public Account account(String username) {
-
- JSONObject jsonObject = authnAccountRemote.account(username);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.toJavaObject(Account.class);
- }
-
- return null;
- }
-
- public List<Role> roles(String username) {
-
- JSONObject jsonObject = authnAccountRemote.roles(username);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.getJSONArray("roles").toJavaList(Role.class);
- }
-
- return null;
- }
-
- public List<Permission> menus(String username, String applicationId) {
-
- JSONObject jsonObject = authnAccountRemote.menus(username, applicationId);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.getJSONArray("permissions").toJavaList(Permission.class);
- }
-
- return null;
- }
-
-}
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/service/AuthnService.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/service/AuthnService.java
new file mode 100644
index 0000000..13434ec
--- /dev/null
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/authn/service/AuthnService.java
@@ -0,0 +1,92 @@
+package com.supwisdom.institute.backend.gateway.authn.service;
+
+import java.util.List;
+
+import lombok.extern.slf4j.Slf4j;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.supwisdom.institute.backend.gateway.authn.model.Account;
+import com.supwisdom.institute.backend.gateway.authn.model.ResourceRoleSet;
+import com.supwisdom.institute.backend.gateway.authn.model.Role;
+import com.supwisdom.institute.backend.gateway.authn.model.Route;
+import com.supwisdom.institute.backend.gateway.authn.remote.web.client.AuthnRemoteRestTemplate;
+
+@Slf4j
+@Service
+public class AuthnService {
+
+ @Autowired
+ private AuthnRemoteRestTemplate authnRemote;
+
+ public Account account(String username) {
+
+ JSONObject jsonObject = authnRemote.account(username);
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.toJavaObject(Account.class);
+ }
+
+ return null;
+ }
+
+ public List<Role> accountRoles(String username) {
+
+ JSONObject jsonObject = authnRemote.accountRoles(username);
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("roles").toJavaList(Role.class);
+ }
+
+ return null;
+ }
+
+ public List<ResourceRoleSet> resourceRoleSets() {
+
+ JSONObject jsonObject = authnRemote.resourceRoleSets();
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("resourceRoleSets").toJavaList(ResourceRoleSet.class);
+ }
+
+ return null;
+ }
+
+ public List<Route> routes() {
+
+ JSONObject jsonObject = authnRemote.routes();
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("routes").toJavaList(Route.class);
+ }
+
+ return null;
+ }
+
+}
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/AccessControlGlobalFilter.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/AccessControlGlobalFilter.java
index 266dfa7..6ef6b7e 100644
--- a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/AccessControlGlobalFilter.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/AccessControlGlobalFilter.java
@@ -4,6 +4,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -11,6 +12,7 @@
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
@@ -30,14 +32,15 @@
import org.springframework.web.server.ServerWebExchange;
import com.supwisdom.infras.security.core.userdetails.InfrasUser;
+import com.supwisdom.institute.backend.gateway.authn.model.ResourceRoleSet;
+import com.supwisdom.institute.backend.gateway.authn.model.Role;
+import com.supwisdom.institute.backend.gateway.authn.service.AuthnService;
import reactor.core.publisher.Mono;
-//import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR;
-
@Slf4j
public class AccessControlGlobalFilter implements GlobalFilter, Ordered {
-
+
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE;
@@ -48,17 +51,17 @@
log.debug("AccessControlGlobalFilter.filter");
// 获取 请求路径 对应的 资源
- Collection<ConfigAttribute> attributes = this.getAttributes(exchange);
- log.debug("request's attributes is {}", attributes);
+ Collection<ConfigAttribute> configAttributes = this.getAttributes(exchange);
+ log.debug("request's attributes is {}", configAttributes);
// 判断 该资源 是否需要登录才能访问
- if (attributes == null) {
+ if (configAttributes == null || configAttributes.size() <= 0) {
return chain.filter(exchange); // FIXME:
}
// 获取 当前登录用户(包括角色信息)
- // 判断 登录用户 是否可以访问 该资源
+ // FIXME: 判断 登录用户 是否可以访问 该资源
return ReactiveSecurityContextHolder.getContext()
.filter(c -> {
@@ -72,7 +75,32 @@
boolean hasPermission = false;
- for (ConfigAttribute ca : attributes) {
+ ConfigAttribute ca;
+ String needRole;
+ for (Iterator<ConfigAttribute> iter = configAttributes.iterator(); iter.hasNext();) {
+ ca = iter.next();
+ needRole = ca.getAttribute();
+
+ if (needRole == null || needRole.isEmpty()) {
+ continue;
+ }
+
+ if (needRole.startsWith("ACCESS_")) {
+ String access = needRole.substring("ACCESS_".length()); log.debug("Access is {}", access);
+ if ("anonymous".equals(access)) {
+ hasPermission = false;
+ } else if ("authenticate".equals(access)) {
+ hasPermission = true;
+ } else if ("permitAll".equals(access)) {
+ hasPermission = true;
+ } else if ("denyAll".equals(access)) {
+ hasPermission = false;
+ } else {
+ hasPermission = false;
+ }
+ break;
+ }
+
hasPermission = infrasUser.getRoles().contains(ca.getAttribute());
if (hasPermission) {
log.debug("match attribute is {}", ca.getAttribute());
@@ -81,35 +109,83 @@
}
if (!hasPermission) {
- throw new RuntimeException("no permission");
+ throw new RuntimeException("no right");
}
return exchange;
})
.flatMap(ex -> chain.filter(ex));
}
-
+
+ @Autowired
+ private AuthnService authnService;
+
private Map<RequestMatcher, Collection<ConfigAttribute>> requestMap = new ConcurrentHashMap<RequestMatcher, Collection<ConfigAttribute>>();
- @Scheduled(initialDelayString = "${sw-backend-gateway.resource.refresh-delay:10000}", fixedDelayString = "${sw-backend-gateway.resource.refresh-delay:10000}")
+ @Scheduled(
+ initialDelayString = "${sw-backend-gateway.resource.refresh-delay:200}",
+ fixedDelayString = "${sw-backend-gateway.resource.refresh-delay:10000}")
protected void refreshRequestMap() {
log.debug("AccessControlGlobalFilter.refreshRequestMap");
+ requestMap.clear();
loadRequestMap();
}
// 定时刷新 资源 与 可访问角色 的 Map
private void loadRequestMap() {
- requestMap.clear();
+
+ if (requestMap.isEmpty()) {
+// AntPathRequestMatcher requestMatcher0 = new AntPathRequestMatcher("/api/**");
+// Collection<ConfigAttribute> attributes0 = new ArrayList<ConfigAttribute>();
+// attributes0.add(new SecurityConfig("user"));
+// requestMap.put(requestMatcher0, attributes0);
+
+ // 从 后端接口 加载
+ List<ResourceRoleSet> resourceRoleSets = authnService.resourceRoleSets();
+ if (resourceRoleSets != null) {
+ for (ResourceRoleSet resourceRoleSet : resourceRoleSets) {
+ String method = resourceRoleSet.getMethod();
+ String path = resourceRoleSet.getPath();
+ String access = resourceRoleSet.getAccess();
+
+ final RequestMatcher requestMatcher = new AntPathRequestMatcher(path, method);
+
+ Collection<ConfigAttribute> attributes = new ArrayList<ConfigAttribute>();
+
+ if (access != null) {
+ if (access.equals(ResourceRoleSet.ACCESS_ANONYMOUS)) {
+ attributes.add(new SecurityConfig("ACCESS_"+ResourceRoleSet.ACCESS_ANONYMOUS));
+ } else if (access.equals(ResourceRoleSet.ACCESS_AUTHENTICATE)) {
+ attributes.add(new SecurityConfig("ACCESS_"+ResourceRoleSet.ACCESS_AUTHENTICATE));
+ } else if (access.equals(ResourceRoleSet.ACCESS_AUTHORIZE)) {
+ for (Role r : resourceRoleSet.getRoles()) {
+ ConfigAttribute ca = new SecurityConfig(r.getCode());
+ attributes.add(ca);
+ }
+ } else if (access.equals(ResourceRoleSet.ACCESS_PERMIT_ALL)) {
+ attributes.add(new SecurityConfig("ACCESS_"+ResourceRoleSet.ACCESS_PERMIT_ALL));
+ } else if (access.equals(ResourceRoleSet.ACCESS_DENY_ALL)) {
+ attributes.add(new SecurityConfig("ACCESS_"+ResourceRoleSet.ACCESS_DENY_ALL));
+ } else {
+ for (Role r : resourceRoleSet.getRoles()) {
+ ConfigAttribute ca = new SecurityConfig(r.getCode());
+ attributes.add(ca);
+ }
+ }
+ } else {
+ for (Role r : resourceRoleSet.getRoles()) {
+ ConfigAttribute ca = new SecurityConfig(r.getCode());
+ attributes.add(ca);
+ }
+ }
+
+ requestMap.put(requestMatcher, attributes);
+ }
+ }
- AntPathRequestMatcher requestMatcher0 = new AntPathRequestMatcher("/api/**");
- Collection<ConfigAttribute> attributes0 = new ArrayList<ConfigAttribute>();
- attributes0.add(new SecurityConfig("user"));
- requestMap.put(requestMatcher0, attributes0);
-
- // FIXME: 从 后端接口 加载
-
+ }
}
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUserDetailsService.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUserDetailsService.java
index ef7d0e2..8a30025 100644
--- a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUserDetailsService.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUserDetailsService.java
@@ -16,7 +16,7 @@
import com.supwisdom.institute.backend.gateway.authn.model.Account;
import com.supwisdom.institute.backend.gateway.authn.model.Role;
-import com.supwisdom.institute.backend.gateway.authn.service.AuthnAccountService;
+import com.supwisdom.institute.backend.gateway.authn.service.AuthnService;
import reactor.core.publisher.Mono;
import lombok.extern.slf4j.Slf4j;
@@ -28,7 +28,7 @@
PasswordEncoder passwordEncoder;
@Autowired
- AuthnAccountService authnAccountService;
+ AuthnService authnAccountService;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // TODO:
@@ -56,7 +56,7 @@
throw new UsernameNotFoundException(String.format("%s not found", username));
}
- List<Role> roles = authnAccountService.roles(username);
+ List<Role> roles = authnAccountService.accountRoles(username);
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
for (Role role : roles) {
diff --git a/gateway/src/main/resources/application.yml b/gateway/src/main/resources/application.yml
index c72cbc7..1f3be47 100644
--- a/gateway/src/main/resources/application.yml
+++ b/gateway/src/main/resources/application.yml
@@ -44,7 +44,7 @@
filters:
- RewritePath=/api/system/(?<suffix>.*), /$\{suffix}
- id: biz-api
- uri: http://localhost:8082
+ uri: http://localhost:8083
predicates:
- Path=/api/biz/**
filters:
@@ -72,14 +72,13 @@
infras.security.jwt.public-key-pem: |-
-----BEGIN PUBLIC KEY-----
- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBQw6TmvJ+nOuRaLoHsZJGIBzRg/wbskNv6UevL3/nQioYooptPfdIHVzPiKRVT5+DW5+nqzav3DOxY+HYKjO9nFjYdj0sgvRae6iVpa5Ji1wbDKOvwIDNukgnKbqvFXX2Isfl0RxeN3uEKdjeFGGFdr38I3ADCNKFNxtbmfqvjQIDAQAB
+ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCgzXhvHLKypr+G+gJgOJNt8Lu8ygFFCU0eO4qJ4j2vDzpGwTOWKmD/u7dwIWKyHR43hUSN+FN4SSy1AmHjEKxz0btm7Cki+0YFw0BE4/mB/0wPD251wOS3w0CLsRTfoov9OaGaXApjVSMM74aIX8D46CbwHioLHdAj0/jlVU6gZQIDAQAB
-----END PUBLIC KEY-----
infras.security.jwt.private-key-pem-pkcs8: |-
-----BEGIN PRIVATE KEY-----
- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMFDDpOa8n6c65FougexkkYgHNGD/BuyQ2/pR68vf+dCKhiiim0990gdXM+IpFVPn4Nbn6erNq/cM7Fj4dgqM72cWNh2PSyC9Fp7qJWlrkmLXBsMo6/AgM26SCcpuq8VdfYix+XRHF43e4Qp2N4UYYV2vfwjcAMI0oU3G1uZ+q+NAgMBAAECgYA7jA7UuhxXmMAYmJ0hO7xnMQPQJouqeP3AYK9+sfMF7WQNHR/r0vj7Vli/dUm1I4hxr+x8fAuomf+ve6gds7sm+v2JHLzEIyPPiogoC7IcBmjJ3yVzW/26cXeOmTiPC/fW2g4BpYxSM8HLDaSkrtqzy8e9ijlzMpHBvvwLikufnQJBAOXaqIPuZ7Vm/JwQHAmX2HV+Qk6GMi/H7mL8X0AaW68w+Iccdbz1hzmMBfdn5NMmx2AOwoBAVivgjt0a1OfksHMCQQDXPtXxwFy4dQ4TbPu8L38P8s/bPo9ib1YkEMp57yBw+IvxB7jnpA9rUYTfZM/HpVP7r9rfVEUylVXXzhz1qx//AkEApWJOTBdW8bQ3YEdLFS/3pJqDNSLjq3OMuBZkpqgQfh6bRAQbRynW8XYpuNk9URye6iPUmRkxp4J86ORseqoWtwJAJb5a/b1hhObhxP5DVkht23oUgLmDoxsq28AmASOxaJ3szCMyhUv7eDIfPp0K4lNXWrcHhkncqHYPS3xVD68mOQJAV4SRDdWpgAbQOUODotohE48RxrabHo0l228CJ/pnm0q7gplPs4iSNJ2eijFuOMXfKkq3z/vxiNSA59FcdoCOHQ==
+ MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKDNeG8csrKmv4b6AmA4k23wu7zKAUUJTR47ioniPa8POkbBM5YqYP+7t3AhYrIdHjeFRI34U3hJLLUCYeMQrHPRu2bsKSL7RgXDQETj+YH/TA8PbnXA5LfDQIuxFN+ii/05oZpcCmNVIwzvhohfwPjoJvAeKgsd0CPT+OVVTqBlAgMBAAECgYAtNxlyROOKkJCyZ4JbhA0QkOx5PWP2AZOJuLxP4SnvG50LYDAdPXVg82u1P+38n2truTF5qiXuYMUNcMoNixayWEZ074kVTI+FluLO405wwMYHvGPKOJVFIUTsKz+xkg4r48R963D5DZ6ZjoPIjLWvxL1zdrsgi9AOz/skAl0yAQJBANO0yadz1fYinSmYa2O27lgE1DpTvYBXGkY2qG7D/QJv2FwP6pdBy9ejym45UXce4wR1Yrlvh9wsErI4p790XOECQQDCcjti2nbIuZP3Dy5Ej97Y6sIbIEu5MpJW8kBjUzUssxgdE9urA/yWVzT8lmj34he+uWJv6s+e/HBDV5tc0tAFAkBK+q2s4+a0jN/SuovWPhS+Eb/EhKIKEU9Z7MPMrxctxMUBHhX8yi3SyszIKv7CTKskihqUCH86qFVaz5wBv8mhAkBgnQea13ebxnGZmSZhFKciWoq1lbdqPpFtuBJ8B5TtL9N0ZzCHaYSwYoZGVqmzONiZgF1DxIUCtuVE4JumZGzNAkB5B1sUdZfLo4q3jOiX5UQ/a4u17ptemvFPR4OynHkuVkgyAfTIo9SAB8/KIntHMlrgcP03G41ciJrYeP5zv8xm
-----END PRIVATE KEY-----
-
##
# infras.security cas
#
diff --git a/sql/base.sql b/sql/base.sql
index d27bd71..750d82d 100644
--- a/sql/base.sql
+++ b/sql/base.sql
@@ -229,6 +229,7 @@
`STATUS` VARCHAR(10) NOT NULL COMMENT '状态(1 启用,0 停用)',
`TYPE_` VARCHAR(10) NOT NULL COMMENT '类型(1 应用,2 菜单,3 操作)',
+ `ICON` VARCHAR(500) COMMENT '菜单图标',
`URL` VARCHAR(500) COMMENT 'URL地址',
`APPLICATION_ID` VARCHAR(100) COMMENT '系统ID',
@@ -283,6 +284,7 @@
`METHOD` VARCHAR(100) COMMENT '请求方式(GET、POST、PUT、DELETE 等)',
`PATH` VARCHAR(500) COMMENT '请求地址',
+ `ACCESS` VARCHAR(100) COMMENT '访问规则(匿名访问anonymous、认证访问authenticate、授权访问authorize、允许所有permitAll、拒绝所有denyAll)',
PRIMARY KEY (`ID`),
UNIQUE KEY `UQ_CODE` (`COMPANY_ID`,`CODE`)
@@ -306,7 +308,7 @@
PRIMARY KEY (`ID`)
)
-COMMENT = '角色 - 权限关联表';
+COMMENT = '权限 - 资源关联表';
@@ -396,117 +398,241 @@
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10101', 0, 'BaseAdminAccount.query', '查询帐号', '1', 'GET', '/api/base/v1/admin/accounts');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10102', 0, 'BaseAdminAccount.load', '获取帐号', '1', 'GET', '/api/base/v1/admin/accounts/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10103', 0, 'BaseAdminAccount.create', '创建帐号', '1', 'POST', '/api/base/v1/admin/accounts');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10104', 0, 'BaseAdminAccount.update', '修改帐号', '1', 'PUT', '/api/base/v1/admin/accounts/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10105', 0, 'BaseAdminAccount.delete', '删除帐号', '1', 'DELETE', '/api/base/v1/admin/accounts/{id}');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10106', 0, 'BaseAdminAccount.accountGroups', '获取帐号的用户组', '1', 'GET', '/api/base/v1/admin/accounts/{id}/groups');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10107', 0, 'BaseAdminAccount.relateGroups', '关联帐号的用户组', '1', 'POST', '/api/base/v1/admin/accounts/{id}/groups');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10108', 0, 'BaseAdminAccount.accountRoles', '获取帐号的角色', '1', 'GET', '/api/base/v1/admin/accounts/{id}/roles');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10109', 0, 'BaseAdminAccount.relateRoles', '关联帐号的角色', '1', 'POST', '/api/base/v1/admin/accounts/{id}/roles');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10201', 0, 'BaseAdminGroup.query', '查询用户组', '1', 'GET', '/api/base/v1/admin/groups');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10202', 0, 'BaseAdminGroup.load', '获取用户组', '1', 'GET', '/api/base/v1/admin/groups/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10203', 0, 'BaseAdminGroup.create', '创建用户组', '1', 'POST', '/api/base/v1/admin/groups');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10204', 0, 'BaseAdminGroup.update', '修改用户组', '1', 'PUT', '/api/base/v1/admin/groups/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10205', 0, 'BaseAdminGroup.delete', '删除用户组', '1', 'DELETE', '/api/base/v1/admin/groups/{id}');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10206', 0, 'BaseAdminGroup.groupAccounts', '获取用户组的帐号', '1', 'GET', '/api/base/v1/admin/groups/{id}/accounts');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10207', 0, 'BaseAdminGroup.relateAccounts', '关联用户组的帐号', '1', 'POST', '/api/base/v1/admin/groups/{id}/accounts');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10208', 0, 'BaseAdminGroup.groupRoles', '获取用户组的角色', '1', 'GET', '/api/base/v1/admin/groups/{id}/roles');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10209', 0, 'BaseAdminGroup.relateRoles', '关联用户组的角色', '1', 'POST', '/api/base/v1/admin/groups/{id}/roles');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('1', 0, 'User.user', '获取登录信息', '1', 'GET', '/api/user', 'authenticate');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10101', 0, 'BaseAdminAccount.query', '查询帐号', '1', 'GET', '/api/base/v1/admin/accounts', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10102', 0, 'BaseAdminAccount.load', '获取帐号', '1', 'GET', '/api/base/v1/admin/accounts/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10103', 0, 'BaseAdminAccount.create', '创建帐号', '1', 'POST', '/api/base/v1/admin/accounts', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10104', 0, 'BaseAdminAccount.update', '修改帐号', '1', 'PUT', '/api/base/v1/admin/accounts/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10105', 0, 'BaseAdminAccount.delete', '删除帐号', '1', 'DELETE', '/api/base/v1/admin/accounts/{id}', 'authorize');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10301', 0, 'BaseAdminRole.query', '查询角色', '1', 'GET', '/api/base/v1/admin/roles');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10302', 0, 'BaseAdminRole.load', '获取角色', '1', 'GET', '/api/base/v1/admin/roles/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10303', 0, 'BaseAdminRole.create', '创建角色', '1', 'POST', '/api/base/v1/admin/roles');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10304', 0, 'BaseAdminRole.update', '修改角色', '1', 'PUT', '/api/base/v1/admin/roles/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10305', 0, 'BaseAdminRole.delete', '删除角色', '1', 'DELETE', '/api/base/v1/admin/roles/{id}');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10306', 0, 'BaseAdminRole.roleAccounts', '获取角色的帐号', '1', 'GET', '/api/base/v1/admin/roles/{id}/accounts');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10307', 0, 'BaseAdminRole.relateAccounts', '关联角色的帐号', '1', 'POST', '/api/base/v1/admin/roles/{id}/accounts');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10308', 0, 'BaseAdminRole.roleGroups', '获取角色的用户组', '1', 'GET', '/api/base/v1/admin/roles/{id}/groups');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10309', 0, 'BaseAdminRole.relateGroups', '关联角色的用户组', '1', 'POST', '/api/base/v1/admin/roles/{id}/groups');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10310', 0, 'BaseAdminRole.rolePermissions', '获取角色的权限', '1', 'GET', '/api/base/v1/admin/roles/{id}/permissions');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10311', 0, 'BaseAdminRole.relatePermissions', '关联角色的权限', '1', 'POST', '/api/base/v1/admin/roles/{id}/permissions');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10106', 0, 'BaseAdminAccount.accountRoles', '获取帐号的角色', '1', 'GET', '/api/base/v1/admin/accounts/{id}/roles', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10107', 0, 'BaseAdminAccount.relateRoles', '关联帐号的角色', '1', 'POST', '/api/base/v1/admin/accounts/{id}/roles', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10201', 0, 'BaseAdminRole.query', '查询角色', '1', 'GET', '/api/base/v1/admin/roles', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10202', 0, 'BaseAdminRole.load', '获取角色', '1', 'GET', '/api/base/v1/admin/roles/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10203', 0, 'BaseAdminRole.create', '创建角色', '1', 'POST', '/api/base/v1/admin/roles', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10204', 0, 'BaseAdminRole.update', '修改角色', '1', 'PUT', '/api/base/v1/admin/roles/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10205', 0, 'BaseAdminRole.delete', '删除角色', '1', 'DELETE', '/api/base/v1/admin/roles/{id}', 'authorize');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10401', 0, 'BaseAdminMenu.query', '查询菜单', '1', 'GET', '/api/base/v1/admin/menus');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10402', 0, 'BaseAdminMenu.load', '获取菜单', '1', 'GET', '/api/base/v1/admin/menus/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10403', 0, 'BaseAdminMenu.create', '创建菜单', '1', 'POST', '/api/base/v1/admin/menus');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10404', 0, 'BaseAdminMenu.update', '修改菜单', '1', 'PUT', '/api/base/v1/admin/menus/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10405', 0, 'BaseAdminMenu.delete', '删除菜单', '1', 'DELETE', '/api/base/v1/admin/menus/{id}');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10206', 0, 'BaseAdminRole.roleAccounts', '获取角色的帐号', '1', 'GET', '/api/base/v1/admin/roles/{id}/accounts', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10207', 0, 'BaseAdminRole.relateAccounts', '关联角色的帐号', '1', 'POST', '/api/base/v1/admin/roles/{id}/accounts', 'authorize');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10406', 0, 'BaseAdminMenu.tree', '树形菜单', '1', 'GET', '/api/base/v1/admin/menus/tree');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10208', 0, 'BaseAdminRole.rolePermissions', '获取角色的权限', '1', 'GET', '/api/base/v1/admin/roles/{id}/permissions', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10209', 0, 'BaseAdminRole.relatePermissions', '关联角色的权限', '1', 'POST', '/api/base/v1/admin/roles/{id}/permissions', 'authorize');
-
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10501', 0, 'BaseAdminOperation.query', '查询操作', '1', 'GET', '/api/base/v1/admin/operations');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10502', 0, 'BaseAdminOperation.load', '获取操作', '1', 'GET', '/api/base/v1/admin/operations/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10503', 0, 'BaseAdminOperation.create', '创建操作', '1', 'POST', '/api/base/v1/admin/operations');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10504', 0, 'BaseAdminOperation.update', '修改操作', '1', 'PUT', '/api/base/v1/admin/operations/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10505', 0, 'BaseAdminOperation.delete', '删除操作', '1', 'DELETE', '/api/base/v1/admin/operations/{id}');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10301', 0, 'BaseAdminApplication.query', '查询应用', '1', 'GET', '/api/base/v1/admin/applications', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10302', 0, 'BaseAdminApplication.load', '获取应用', '1', 'GET', '/api/base/v1/admin/applications/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10303', 0, 'BaseAdminApplication.create', '创建应用', '1', 'POST', '/api/base/v1/admin/applications', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10304', 0, 'BaseAdminApplication.update', '修改应用', '1', 'PUT', '/api/base/v1/admin/applications/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10305', 0, 'BaseAdminApplication.delete', '删除应用', '1', 'DELETE', '/api/base/v1/admin/applications/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10401', 0, 'BaseAdminMenu.query', '查询菜单', '1', 'GET', '/api/base/v1/admin/menus', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10402', 0, 'BaseAdminMenu.load', '获取菜单', '1', 'GET', '/api/base/v1/admin/menus/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10403', 0, 'BaseAdminMenu.create', '创建菜单', '1', 'POST', '/api/base/v1/admin/menus', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10404', 0, 'BaseAdminMenu.update', '修改菜单', '1', 'PUT', '/api/base/v1/admin/menus/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10405', 0, 'BaseAdminMenu.delete', '删除菜单', '1', 'DELETE', '/api/base/v1/admin/menus/{id}', 'authorize');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10601', 0, 'BaseAdminResource.query', '查询资源', '1', 'GET', '/api/base/v1/admin/resources');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10602', 0, 'BaseAdminResource.load', '获取资源', '1', 'GET', '/api/base/v1/admin/resources/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10603', 0, 'BaseAdminResource.create', '创建资源', '1', 'POST', '/api/base/v1/admin/resources');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10604', 0, 'BaseAdminResource.update', '修改资源', '1', 'PUT', '/api/base/v1/admin/resources/{id}');
-insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH)
-values ('10605', 0, 'BaseAdminResource.delete', '删除资源', '1', 'DELETE', '/api/system/v1/admin/resources/{id}');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10406', 0, 'BaseAdminMenu.tree', '树形菜单', '1', 'GET', '/api/base/v1/admin/menus/tree', 'authorize');
+
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10501', 0, 'BaseAdminOperation.query', '查询操作', '1', 'GET', '/api/base/v1/admin/operations', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10502', 0, 'BaseAdminOperation.load', '获取操作', '1', 'GET', '/api/base/v1/admin/operations/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10503', 0, 'BaseAdminOperation.create', '创建操作', '1', 'POST', '/api/base/v1/admin/operations', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10504', 0, 'BaseAdminOperation.update', '修改操作', '1', 'PUT', '/api/base/v1/admin/operations/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10505', 0, 'BaseAdminOperation.delete', '删除操作', '1', 'DELETE', '/api/base/v1/admin/operations/{id}', 'authorize');
+
+
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10601', 0, 'BaseAdminResource.query', '查询资源', '1', 'GET', '/api/base/v1/admin/resources', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10602', 0, 'BaseAdminResource.load', '获取资源', '1', 'GET', '/api/base/v1/admin/resources/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10603', 0, 'BaseAdminResource.create', '创建资源', '1', 'POST', '/api/base/v1/admin/resources', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10604', 0, 'BaseAdminResource.update', '修改资源', '1', 'PUT', '/api/base/v1/admin/resources/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10605', 0, 'BaseAdminResource.delete', '删除资源', '1', 'DELETE', '/api/system/v1/admin/resources/{id}', 'authorize');
+
+
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10701', 0, 'BaseAdminRoute.query', '查询路由', '1', 'GET', '/api/base/v1/admin/routes', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10702', 0, 'BaseAdminRoute.load', '获取路由', '1', 'GET', '/api/base/v1/admin/routes/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10703', 0, 'BaseAdminRoute.create', '创建路由', '1', 'POST', '/api/base/v1/admin/routes', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10704', 0, 'BaseAdminRoute.update', '修改路由', '1', 'PUT', '/api/base/v1/admin/routes/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10705', 0, 'BaseAdminRoute.delete', '删除路由', '1', 'DELETE', '/api/system/v1/admin/routes/{id}', 'authorize');
+
+
+/*
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10111', 0, 'BaseAdminAccount.accountGroups', '获取帐号的用户组', '1', 'GET', '/api/base/v1/admin/accounts/{id}/groups', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10112', 0, 'BaseAdminAccount.relateGroups', '关联帐号的用户组', '1', 'POST', '/api/base/v1/admin/accounts/{id}/groups', 'authorize');
+
+
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10211', 0, 'BaseAdminRole.roleGroups', '获取角色的用户组', '1', 'GET', '/api/base/v1/admin/roles/{id}/groups', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10212', 0, 'BaseAdminRole.relateGroups', '关联角色的用户组', '1', 'POST', '/api/base/v1/admin/roles/{id}/groups', 'authorize');
+
+
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10201', 0, 'BaseAdminGroup.query', '查询用户组', '1', 'GET', '/api/base/v1/admin/groups', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10202', 0, 'BaseAdminGroup.load', '获取用户组', '1', 'GET', '/api/base/v1/admin/groups/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10203', 0, 'BaseAdminGroup.create', '创建用户组', '1', 'POST', '/api/base/v1/admin/groups', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10204', 0, 'BaseAdminGroup.update', '修改用户组', '1', 'PUT', '/api/base/v1/admin/groups/{id}', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10205', 0, 'BaseAdminGroup.delete', '删除用户组', '1', 'DELETE', '/api/base/v1/admin/groups/{id}', 'authorize');
+
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10206', 0, 'BaseAdminGroup.groupAccounts', '获取用户组的帐号', '1', 'GET', '/api/base/v1/admin/groups/{id}/accounts', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10207', 0, 'BaseAdminGroup.relateAccounts', '关联用户组的帐号', '1', 'POST', '/api/base/v1/admin/groups/{id}/accounts', 'authorize');
+
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10208', 0, 'BaseAdminGroup.groupRoles', '获取用户组的角色', '1', 'GET', '/api/base/v1/admin/groups/{id}/roles', 'authorize');
+insert into TB_BASE_RESOURCE (ID, DELETED, CODE, NAME, STATUS, METHOD, PATH, ACCESS)
+values ('10209', 0, 'BaseAdminGroup.relateRoles', '关联用户组的角色', '1', 'POST', '/api/base/v1/admin/groups/{id}/roles', 'authorize');
+*/
+
+commit;
+
+
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10100_10101', 0, '10100', '10101');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10100_10102', 0, '10100', '10102');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10100_10103', 0, '10100', '10103');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10100_10104', 0, '10100', '10104');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10100_10105', 0, '10100', '10105');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10100_10106', 0, '10100', '10106');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10100_10107', 0, '10100', '10107');
+
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10201', 0, '10200', '10201');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10202', 0, '10200', '10202');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10203', 0, '10200', '10203');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10204', 0, '10200', '10204');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10205', 0, '10200', '10205');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10206', 0, '10200', '10206');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10207', 0, '10200', '10207');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10208', 0, '10200', '10208');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10200_10209', 0, '10200', '10209');
+
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10300_10301', 0, '10300', '10301');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10300_10302', 0, '10300', '10302');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10300_10303', 0, '10300', '10303');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10300_10304', 0, '10300', '10304');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10300_10305', 0, '10300', '10305');
+
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10400_10401', 0, '10400', '10401');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10400_10402', 0, '10400', '10402');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10400_10403', 0, '10400', '10403');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10400_10404', 0, '10400', '10404');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10400_10405', 0, '10400', '10405');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10400_10406', 0, '10400', '10406');
+
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10500_10501', 0, '10500', '10501');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10500_10502', 0, '10500', '10502');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10500_10503', 0, '10500', '10503');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10500_10504', 0, '10500', '10504');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10500_10505', 0, '10500', '10505');
+
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10600_10601', 0, '10600', '10601');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10600_10602', 0, '10600', '10602');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10600_10603', 0, '10600', '10603');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10600_10604', 0, '10600', '10604');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10600_10605', 0, '10600', '10605');
+
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10700_10701', 0, '10700', '10701');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10700_10702', 0, '10700', '10702');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10700_10703', 0, '10700', '10703');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10700_10704', 0, '10700', '10704');
+insert into TB_BASE_PERMISSION_RESOURCE (ID, DELETED, PERMISSION_ID, RESOURCE_ID)
+values ('10700_10705', 0, '10700', '10705');
+
+commit;