fix: 完善授权相关逻辑
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/admin/AdminPermissionController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/admin/AdminPermissionController.java
index 7859731..f10244a 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/admin/AdminPermissionController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/admin/AdminPermissionController.java
@@ -1,5 +1,47 @@
 package com.supwisdom.institute.backend.base.api.v1.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.http.HttpStatus;
+import org.springframework.util.MimeTypeUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+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.vo.response.PermissionTreeResponseData;
+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;
+
+@Api(value = "BaseAdminPermission", tags = { "BaseAdminPermission" }, description = "权限的操作接口")
+@Slf4j
+@RestController
+@RequestMapping("/v1/admin/permissions")
 public class AdminPermissionController {
 
+  @Autowired
+  private PermissionService permissionService;
+
+  @GetMapping(path = "/tree", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+  @ResponseStatus(value = HttpStatus.OK)
+  @ResponseBody
+  public DefaultApiResponse<PermissionTreeResponseData> tree() {
+    
+    Map<String, Object> mapBean = new HashMap<String, Object>();
+    //mapBean.put("type", Permission.TYPE_MENU);
+
+    PermissionTreeNode tree = permissionService.selectPermissionTree(mapBean);
+
+    PermissionTreeResponseData data = PermissionTreeResponseData.of(tree);
+
+    return new DefaultApiResponse<PermissionTreeResponseData>(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 3707ec7..1fedb61 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
@@ -143,6 +143,14 @@
     this.url = url;
   }
 
+  public String getApplicationId() {
+    return applicationId;
+  }
+
+  public void setApplicationId(String applicationId) {
+    this.applicationId = applicationId;
+  }
+
   public String getParentId() {
     return parentId;
   }
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 31119b3..ead21b9 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
@@ -27,6 +27,16 @@
 
   @Autowired
   private PermissionRepository permissionRepository;
+  
+  @Override
+  public Permission insert(Permission entity) {
+    Permission parentPermission = permissionRepository.selectById(entity.getParentId());
+    if (parentPermission != null) {
+      entity.setApplicationId(parentPermission.getApplicationId());
+    }
+    
+    return super.insert(entity);
+  }
 
   public void deleteBatch(List<String> ids) {
     
@@ -47,10 +57,7 @@
     
     Map<String, PermissionTreeNode> parentTreeNode = new LinkedHashMap<String, PermissionTreeNode>();
     
-    PermissionTreeNode rootTreeNode = new PermissionTreeNode();
-    rootTreeNode.setId(applicationPermission.getId());
-    rootTreeNode.setCode(applicationPermission.getCode());
-    rootTreeNode.setName(applicationPermission.getName());
+    PermissionTreeNode rootTreeNode = EntityUtils.copy(applicationPermission, new PermissionTreeNode());
     rootTreeNode.setChildren(new ArrayList<PermissionTreeNode>());
     
     parentTreeNode.put(rootTreeNode.getId(), rootTreeNode);
@@ -60,6 +67,9 @@
       PermissionTreeNode treeNode = EntityUtils.copy(permission, new PermissionTreeNode());
       treeNode.setChildren(new ArrayList<PermissionTreeNode>());
       
+      if (parentTreeNode.containsKey(treeNode.getId())) {
+        continue;
+      }
       parentTreeNode.put(treeNode.getId(), treeNode);
     }
     
diff --git a/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/exception/BaseException.java b/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/exception/BaseException.java
index 5f10b42..9e13ed0 100644
--- a/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/exception/BaseException.java
+++ b/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/exception/BaseException.java
@@ -12,27 +12,45 @@
   /**
    * 具体异常码
    */
-  protected int code = -1;
+  protected final int code;
+  
+  private final String messageCode;
 
+  @Deprecated
   public BaseException(int code, String msgFormat, Object... args) {
       super(String.format(msgFormat, args));
       this.code = code;
+      this.messageCode = null;
   }
+  
+  public BaseException(int code, String messageCode, String msgFormat, Object... args) {
+    super(String.format(msgFormat, args));
+    this.code = code;
+    this.messageCode = messageCode;
+}
 
   public BaseException() {
-      super();
+    super();
+    this.code = DEFAULT_CODE;
+    this.messageCode = null;
   }
 
   public BaseException(String message, Throwable cause) {
       super(message, cause);
+      this.code = DEFAULT_CODE;
+      this.messageCode = null;
   }
 
   public BaseException(Throwable cause) {
       super(cause);
+      this.code = DEFAULT_CODE;
+      this.messageCode = null;
   }
 
   public BaseException(String message) {
       super(message);
+      this.code = DEFAULT_CODE;
+      this.messageCode = null;
   }
 
   public int getCode() {
@@ -51,8 +69,13 @@
       return new BaseException(DEFAULT_CODE, msgFormat, args);
   }
   
+  @Deprecated
   public static BaseException newInstance(int code, String msgFormat, Object... args) {
     return new BaseException(code, msgFormat, args);
   }
+  
+  public static BaseException newInstance(int code, String messageCode, String msgFormat, Object... args) {
+    return new BaseException(code, messageCode, msgFormat, args);
+  }
 
 }
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 2be2c31..e5308df 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
@@ -40,6 +40,10 @@
     
     Specification<E> spec = convertToSpec(mapBean);
     
+    if (pageIndex == -1) {
+      loadAll = true;
+    }
+    
     if (loadAll) {
       pageIndex = 0;
       pageSize = Integer.MAX_VALUE;