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;
