refactor: 移除base、biz、bff、sa 目录,已迁移至新目录结构
diff --git a/base/api/.gitignore b/base/api/.gitignore
deleted file mode 100644
index b83d222..0000000
--- a/base/api/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/base/api/pom.xml b/base/api/pom.xml
deleted file mode 100644
index 437c2fd..0000000
--- a/base/api/pom.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-    <relativePath>../../</relativePath>
-  </parent>
-
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-base-api</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
-  <name>Supwisdom Backend Framework Base API</name>
-  <description>Supwisdom Backend Framework Base API project</description>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-web</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-core</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-utils</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-framework</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-base-domain</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-release-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
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
deleted file mode 100644
index 2b2efb3..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminAccountController.java
+++ /dev/null
@@ -1,583 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-import java.util.HashMap;
-import java.util.List;
-
-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.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-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.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;
-import com.supwisdom.institute.backend.base.domain.service.AccountService;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BaseAdminAccount", tags = { "BaseAdminAccount" }, description = "帐号的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/accounts")
-public class AdminAccountController {
-  
-  @Autowired
-  private AccountService accountService;
-
-  /**
-   * 
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts?pageIndex=0&pageSize=20&mapBean[username]=username&mapBean[name]=name&mapBean[status]=1'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts?pageIndex=0&pageSize=20&mapBean[username]=username&mapBean[name]=name&mapBean[status]=0'
-   * 
-   * response success:
-   * 
-   * <pre>
-   * {
-   *   "pageIndex":0,
-   *   "pageSize":20,
-   *   "mapBean":null,
-   *   "pageCount":1,
-   *   "recordCount":1,
-   *   "items":[
-   *     {
-   *       "id":"ff80808164feb8990164feba0de50000",
-   *       "companyId":"1",
-   *       "deleted":false,
-   *       "addAccount":"account","addTime":"2018-08-03T07:39:23.000+0000",
-   *       "editAccount":null,"editTime":null,
-   *       "deleteAccount":null,"deleteTime":null,
-   *       "accountname":"test001",
-   *       "password":"test001",
-   *       "enabled":true,
-   *       "accountNonExpired":true,
-   *       "accountNonLocked":true,
-   *       "credentialsNonExpired":true,
-   *       "name":"测试001",
-   *       "status":"1",
-   *       "mobile":null,
-   *       "email":null
-   *     }
-   *   ]
-   * }
-   * </pre>
-   * 
-   * response error 401:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T08:48:25.777+0000",
-   *   "status":401,
-   *   "error":"Http Status 401",
-   *   "message":"Unauthorized",
-   *   "path":"/api/v1/admin/accounts"
-   * }
-   * </pre>
-   * 
-   * @param pagerRequestModel
-   * @return
-   */
-  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AccountQueryResponseData> query(AccountQueryRequest queryRequest) {
-
-    Page<Account> page = accountService.selectPageList(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(),
-        queryRequest.getMapBean(),
-        queryRequest.getOrderBy());
-
-    AccountQueryResponseData data = AccountQueryResponseData.of(queryRequest).build(page);
-
-    return new DefaultApiResponse<AccountQueryResponseData>(data);
-  }
-
-  /**
-   * 
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1'
-   * 
-   * response success:
-   * 
-   * <pre>
-   * {
-   *   "id":"ff80808164feb8990164feba0de50000",
-   *   "companyId":"1",
-   *   "deleted":false,
-   *   "addAccount":"account","addTime":"2018-08-03T07:39:23.000+0000",
-   *   "editAccount":null,"editTime":null,
-   *   "deleteAccount":null,"deleteTime":null,
-   *   "username":"test001",
-   *   "password":"test001",
-   *   "enabled":true,
-   *   "accountNonExpired":true,
-   *   "accountNonLocked":true,
-   *   "credentialsNonExpired":true,
-   *   "name":"测试001",
-   *   "status":"1",
-   *   "mobile":null,
-   *   "email":null
-   * }
-   * </pre>
-   * 
-   * response error 401:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T08:43:26.080+0000",
-   *   "status":401,
-   *   "error":"Http Status 401",
-   *   "message":"Unauthorized",
-   *   "path":"/api/v1/admin/accounts/ff80808164fecf640164fed269480000"
-   * }
-   * </pre>
-   * 
-   * response error 500:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T07:44:07.963+0000",
-   *   "status":500,
-   *   "error":"Internal Server Error",
-   *   "exception":"java.lang.RuntimeException",
-   *   "message":"exception.get.domain.not.exist",
-   *   "path":"/api/v1/admin/accounts/1"
-   * }
-   * </pre>
-   * 
-   * @param id
-   * @return
-   */
-  @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AccountLoadResponseData> load(@PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Account account = accountService.selectById(id);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-    
-    AccountLoadResponseData data = AccountLoadResponseData.of(account);
-
-    return new DefaultApiResponse<AccountLoadResponseData>(data);
-  }
-
-  /**
-   * 
-   * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts' \
-   * -d '{"accountname":"test001","password":"test001","enabled":true,"accountNonExpired":true,"accountNonLocked":true,"credentialsNonExpired":true,"name":"测试001","status":"1"}'
-   * 
-   * response success:
-   * 
-   * <pre>
-   * {
-   *   "success":"info.create.success"
-   * }
-   * </pre>
-   * 
-   * response error 401:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T08:48:25.777+0000",
-   *   "status":401,
-   *   "error":"Http Status 401",
-   *   "message":"Unauthorized",
-   *   "path":"/api/v1/admin/accounts"
-   * }
-   * </pre>
-   * 
-   * response error: // FIXME: save error
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T07:45:43.436+0000",
-   *   "status":500,
-   *   "error":"Internal Server Error",
-   *   "exception":"org.springframework.dao.DataIntegrityViolationException",
-   *   "message":"could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement",
-   *   "path":"/api/v1/admin/accounts"
-   * }
-   * </pre>
-   * 
-   * @param account
-   * @return
-   */
-  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AccountCreateResponseData> create(
-      @RequestBody AccountCreateRequest createRequest) {
-    
-    // FIXME: 验证数据有效性
-    
-    Account account = createRequest.getEntity();
-    
-    if (account.getPassword() !=null && account.getPassword().length() > 0 && !account.getPassword().startsWith("{")) {
-      //account.setPassword(passwordEncoder.encode(account.getPassword()));
-    }
-
-    Account ret = accountService.insert(account);
-    
-    AccountCreateResponseData data = AccountCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<AccountCreateResponseData>(data);
-  }
-
-  /**
-   * 
-   * curl -i -s -X PUT -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts' \
-   * -d '{"id":"1","status":"0"}'
-   * 
-   * response success:
-   * 
-   * <pre>
-   * {
-   *   "success":"info.update.success"
-   * }
-   * </pre>
-   * 
-   * response error 401:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T08:48:25.777+0000",
-   *   "status":401,
-   *   "error":"Http Status 401",
-   *   "message":"Unauthorized",
-   *   "path":"/api/v1/admin/accounts"
-   * }
-   * </pre>
-   * 
-   * curl -i -s -X PUT -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts' \
-   * -d '{"status":"0"}'
-   * 
-   * response error:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T07:50:52.327+0000",
-   *   "status":500,
-   *   "error":"Internal Server Error",
-   *   "exception":"java.lang.RuntimeException",
-   *   "message":"exception.update.id.must.not.empty",
-   *   "path":"/api/v1/admin/accounts"
-   * }
-   * </pre>
-   * 
-   * curl -i -s -X PUT -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts' \
-   * -d '{"id":"1","status":"0"}'
-   * 
-   * response error:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T07:48:24.774+0000",
-   *   "status":500,
-   *   "error":"Internal Server Error",
-   *   "exception":"java.lang.RuntimeException",
-   *   "message":"exception.update.domain.not.exist",
-   *   "path":"/api/v1/admin/accounts"
-   * }
-   * </pre>
-   * 
-   * @param account
-   * @return
-   */
-  @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AccountUpdateResponseData> update(
-      @PathVariable("id") String id, 
-      @RequestBody AccountUpdateRequest updateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.update.id.must.not.empty");
-    }
-
-    Account tmp = accountService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.update.domain.not.exist");
-    }
-
-    Account account = updateRequest.getEntity();
-    account.setId(id);
-
-    if (account.getPassword() !=null && account.getPassword().length() > 0 && !account.getPassword().startsWith("{")) {
-      //account.setPassword(passwordEncoder.encode(account.getPassword()));
-    }
-
-    account = EntityUtils.merge(tmp, account);
-
-    Account ret = accountService.update(account);
-
-    AccountUpdateResponseData data = AccountUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<AccountUpdateResponseData>(data);
-  }
-  
-
-  /**
-   * 
-   * curl -i -s -X DELETE -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1'
-   * 
-   * response success:
-   * 
-   * <pre>
-   * {
-   *   "success":"info.delete.success"
-   * }
-   * </pre>
-   * 
-   * response error 401:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T08:48:25.777+0000",
-   *   "status":401,
-   *   "error":"Http Status 401",
-   *   "message":"Unauthorized",
-   *   "path":"/api/v1/admin/accounts/1"
-   * }
-   * </pre>
-   * 
-   * response error 500:
-   * 
-   * <pre>
-   * {
-   *   "timestamp":"2018-08-03T08:03:16.364+0000",
-   *   "status":500,
-   *   "error":"Internal Server Error",
-   *   "exception":"java.lang.RuntimeException",
-   *   "message":"exception.delete.domain.not.exist",
-   *   "path":"/api/v1/admin/accounts/1"
-   * }
-   * </pre>
-   * 
-   * @param id
-   * @return
-   */
-  @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AccountRemoveResponseData> delete(
-      @PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Account tmp = accountService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
-    }
-
-    accountService.deleteById(id);
-
-    AccountRemoveResponseData data = AccountRemoveResponseData.build(tmp);
-    return new DefaultApiResponse<AccountRemoveResponseData>(data);
-  }
-  
-  @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AccountDeleteBatchResponseData> deleteBatch(
-      @RequestBody AccountDeleteBatchRequest deleteBatchRequest) {
-    
-    List<String> ids = deleteBatchRequest.getIds();
-    
-    accountService.deleteBatch(ids);
-    
-    AccountDeleteBatchResponseData data = AccountDeleteBatchResponseData.build(ids);
-    return new DefaultApiResponse<AccountDeleteBatchResponseData>(data);
-  }
-
-  /**
-   * 
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1/groups'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1/groups?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1/groups?pageIndex=0&pageSize=20&mapBean[groupCode]=groupCode&mapBean[groupName]=groupName'
-   * 
-   * 
-   * 
-   * @param id
-   * @param pagerRequestModel
-   * @return
-   */
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}/groups", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<AccountRelatedGroupsResponseData> accountGroups(
-      @PathVariable("id") String id, 
-      AccountRelatedGroupsRequest request) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Account account = accountService.selectById(id);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    if (request.getMapBean() == null) {
-      request.setMapBean(new HashMap<String, Object>());
-    }
-    request.getMapBean().put("accountId", account.getId());
-
-    Page<AccountGroup> page = accountService.selectAccountGroups(request.getPageIndex(),
-        request.getPageSize(), request.getMapBean());
-
-    AccountRelatedGroupsResponseData data = AccountRelatedGroupsResponseData.of(request).build(page);
-
-    return new DefaultApiResponse<AccountRelatedGroupsResponseData>(data);
-  }
-
-  /**
-   * 
-   * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1/groups' \
-   * -d '{"groupAccounts":[{"groupId":"1"},{"groupId":"2"}]}'
-   * 
-   * 
-   * @param id
-   * @param groupAccounts
-   * @return
-   */
-  @RequestMapping(method = RequestMethod.POST, path = "/{id}/groups", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<AccountRelateGroupsResponseData> relateGroups(
-      @PathVariable("id") String id, 
-      @RequestBody AccountRelateGroupsRequest accountGroups) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Account tmp = accountService.selectById(id);
-
-    if (tmp == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    accountService.relateAccountGroups(tmp, accountGroups.getAccountGroups());
-
-    AccountRelateGroupsResponseData data = AccountRelateGroupsResponseData.of("info.relate.success");
-
-    return new DefaultApiResponse<AccountRelateGroupsResponseData>(data);
-  }
-
-  /**
-   * 
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1/roles'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1/roles?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1/roles?pageIndex=0&pageSize=20&mapBean[roleCode]=roleCode&mapBean[roleName]=roleName'
-   * 
-   * 
-   * 
-   * @param id
-   * @param pagerRequestModel
-   * @return
-   */
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}/roles", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<AccountRelatedRolesResponseData> accountRoles(
-      @PathVariable("id") String id, 
-      AccountRelatedRolesRequest request) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Account account = accountService.selectById(id);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    if (request.getMapBean() == null) {
-      request.setMapBean(new HashMap<String, Object>());
-    }
-    request.getMapBean().put("accountId", account.getId());
-
-    Page<AccountRole> page = accountService.selectAccountRoles(request.getPageIndex(),
-        request.getPageSize(), request.getMapBean());
-
-    AccountRelatedRolesResponseData data = AccountRelatedRolesResponseData.of(request).build(page);
-
-    return new DefaultApiResponse<AccountRelatedRolesResponseData>(data);
-  }
-
-  /**
-   * 
-   * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:8081/api/v1/admin/accounts/1/roles' \
-   * -d '{"accountRoles":[{"roleId":"1"},{"roleId":"2"}]}'
-   * 
-   * 
-   * @param id
-   * @param accountRoles
-   * @return
-   */
-  @RequestMapping(method = RequestMethod.POST, path = "/{id}/roles", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<AccountRelateRolesResponseData> relateRoles(
-      @PathVariable("id") String id, 
-      @RequestBody AccountRelateRolesRequest accountRoles) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Account account = accountService.selectById(id);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    accountService.relateAccountRoles(account, accountRoles.getAccountRoles());
-
-    AccountRelateRolesResponseData data = AccountRelateRolesResponseData.of("info.relate.success");
-
-    return new DefaultApiResponse<AccountRelateRolesResponseData>(data);
-  }
-
-}
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
deleted file mode 100644
index 02fb24b..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminApplicationController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-import java.util.List;
-
-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.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-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.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;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BaseAdminApplication", tags = { "BaseAdminApplication" }, description = "应用的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/applications")
-public class AdminApplicationController {
-
-  @Autowired
-  private ApplicationService applicationService;
-  
-
-  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ApplicationQueryResponseData> query(ApplicationQueryRequest queryRequest) {
-
-    Page<Application> page = applicationService.selectPageList(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(),
-        queryRequest.getMapBean(),
-        queryRequest.getOrderBy());
-
-    ApplicationQueryResponseData data = ApplicationQueryResponseData.of(queryRequest).build(page);
-
-    return new DefaultApiResponse<ApplicationQueryResponseData>(data);
-  }
-  
-  @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ApplicationLoadResponseData> load(@PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Application application = applicationService.selectById(id);
-
-    if (application == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-    
-    ApplicationLoadResponseData data = ApplicationLoadResponseData.of(application);
-
-    return new DefaultApiResponse<ApplicationLoadResponseData>(data);
-  }
-
-  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ApplicationCreateResponseData> create(
-      @RequestBody ApplicationCreateRequest createRequest) {
-    
-    // FIXME: 验证数据有效性
-    
-    Application application = createRequest.getEntity();
-    
-    Application ret = applicationService.insert(application);
-    
-    ApplicationCreateResponseData data = ApplicationCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<ApplicationCreateResponseData>(data);
-  }
-  
-  @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ApplicationUpdateResponseData> update(
-      @PathVariable("id") String id, 
-      @RequestBody ApplicationUpdateRequest updateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.update.id.must.not.empty");
-    }
-
-    Application tmp = applicationService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.update.domain.not.exist");
-    }
-
-    Application application = updateRequest.getEntity();
-    application.setId(id);
-
-    application = EntityUtils.merge(tmp, application);
-
-    Application ret = applicationService.update(application);
-
-    ApplicationUpdateResponseData data = ApplicationUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<ApplicationUpdateResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ApplicationRemoveResponseData> delete(
-      @PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Application tmp = applicationService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
-    }
-
-    applicationService.deleteById(id);
-
-    ApplicationRemoveResponseData data = ApplicationRemoveResponseData.build(tmp);
-    return new DefaultApiResponse<ApplicationRemoveResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ApplicationDeleteBatchResponseData> deleteBatch(
-      @RequestBody ApplicationDeleteBatchRequest deleteBatchRequest) {
-    
-    List<String> ids = deleteBatchRequest.getIds();
-    
-    applicationService.deleteBatch(ids);
-    
-    ApplicationDeleteBatchResponseData data = ApplicationDeleteBatchResponseData.build(ids);
-    return new DefaultApiResponse<ApplicationDeleteBatchResponseData>(data);
-  }
-
-}
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
deleted file mode 100644
index 4b38209..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminConfigController.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-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.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.RequestParam;
-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.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;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BaseAdminConfig", tags = { "BaseAdminConfig" }, description = "配置项的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/configs")
-public class AdminConfigController {
-  
-  @Autowired
-  private ConfigService configService;
-
-
-  /**
-   * @param configQueryRequest
-   * @return
-   */
-  @ApiOperation(value = "查询配置列表", notes = "查询配置列表", nickname = "systemAdminConfigQuery")
-  @ApiImplicitParams({
-    @ApiImplicitParam(name = "loadAll", value = "是否加载全部", required = true, dataType = "boolean", paramType = "query", defaultValue = "false"),
-    @ApiImplicitParam(name = "pageIndex", value = "分页 - 页码", required = true, dataType = "int", paramType = "query", defaultValue = "0", example = "0"),
-    @ApiImplicitParam(name = "pageSize", value = "分页 - 每页记录数", required = true, dataType = "int", paramType = "query", defaultValue = "20", example = "20"),
-    @ApiImplicitParam(name = "mapBean[deleted]", value = "查询条件 - 删除状态 (精确)", required = false, dataType = "boolean", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[categoryCode]", value = "查询条件 - 分类代码 (精确)", required = false, dataType = "string", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[categoryName]", value = "查询条件 - 分类名称 (模糊)", required = false, dataType = "string", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[name]", value = "查询条件 - 名称 (模糊)", required = false, dataType = "string", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[description]", value = "查询条件 - 描述 (模糊)", required = false, dataType = "string", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[configKey]", value = "查询条件 - 配置Key (精确)", required = false, dataType = "string", paramType = "query"),
-  })
-  @RequestMapping(method = RequestMethod.GET, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ConfigQueryResponseData> query(ConfigQueryRequest configQueryRequest) {
-    
-    Page<Config> page = configService.selectPageList(
-        configQueryRequest.isLoadAll(),
-        configQueryRequest.getPageIndex(),
-        configQueryRequest.getPageSize(),
-        configQueryRequest.getMapBean(),
-        configQueryRequest.getOrderBy());
-
-    ConfigQueryResponseData resp = ConfigQueryResponseData.of(configQueryRequest).build(page);
-    
-    return new DefaultApiResponse<ConfigQueryResponseData>(resp);
-  }
-
-  /**
-   * @param id
-   * @return
-   */
-  @ApiOperation(value = "根据ID获取配置项", notes = "根据ID获取配置项", nickname="systemAdminConfigLoad")
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ConfigLoadResponseData> load(
-      @PathVariable("id") String id) {
-    
-    if (id == null || id.length() == 0) {
-      throw new ConfigException().newInstance("exception.get.id.must.not.empty");
-    }
-    
-    Config config = configService.selectById(id);
-    
-    if (config == null) {
-      throw new ConfigException().newInstance("exception.get.domain.not.exist");
-    }
-
-    ConfigLoadResponseData resp = ConfigLoadResponseData.build(config);
-    
-    return new DefaultApiResponse<ConfigLoadResponseData>(resp);
-  }
-  
-  /**
-   * @param configCreateRequest
-   * @return
-   */
-  @ApiOperation(value = "创建配置项", notes = "创建配置项", nickname = "systemAdminConfigCreate")
-  @RequestMapping(method = RequestMethod.POST, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.CREATED)
-  @ResponseBody
-  public DefaultApiResponse<ConfigCreateResponseData> create(
-      @RequestBody ConfigCreateRequest configCreateRequest) {
-
-    // FIXME: 验证数据有效性
-
-    Config entity = configCreateRequest.getEntity();
-
-    Config ret = configService.insert(entity);
-
-    ConfigCreateResponseData resp = ConfigCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<ConfigCreateResponseData>(resp);
-  }
-
-  @ApiOperation(value = "更新配置项", notes = "更新配置项", nickname = "systemAdminConfigUpdate")
-  @RequestMapping(method = RequestMethod.PUT, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ConfigUpdateResponseData> update(
-      @PathVariable("id") String id,
-      @RequestBody ConfigUpdateRequest configUpdateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new ConfigException().newInstance("exception.update.id.must.not.empty");
-    }
-
-    Config tmp = configService.selectById(id);
-    if (tmp == null) {
-      throw new ConfigException().newInstance("exception.update.domain.not.exist");
-    }
-
-    if (!tmp.getEditable().booleanValue()) {
-      throw new ConfigException().newInstance("exception.editable.can.not.update");
-    }
-
-    Config entity = configUpdateRequest.getEntity();
-    entity.setId(id);
-
-    entity = EntityUtils.merge(tmp, entity);
-    
-//    if (tmp.getEditable().booleanValue() != entity.getEditable().booleanValue()) {
-//      throw new ConfigException().newInstance("exception.editable.can.not.update");
-//    }
-
-    entity.setEditable(true);  // 防止 可修改记录的 editable 被置为false
-
-    Config ret = configService.update(entity);
-
-    ConfigUpdateResponseData resp = ConfigUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<ConfigUpdateResponseData>(resp);
-  }
-
-  
-  /**
-   * @param categoryCode
-   * @param configKey
-   * @return
-   */
-  @ApiOperation(value = "根据 categoryCode、configKey 获取配置项", notes = "根据 categoryCode、configKey 获取配置项", nickname = "systemAdminConfigLoadByCategoryKey")
-  @RequestMapping(method = RequestMethod.GET, path = "/loadByCategoryKey", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ConfigLoadResponseData> loadByCategoryKey(
-      @RequestParam("categoryCode") String categoryCode, 
-      @RequestParam("configKey") String configKey
-      ) {
-    
-    if (categoryCode == null || categoryCode.length() == 0) {
-      throw new ConfigException().newInstance("exception.load.params.must.not.empty");
-    }
-    if (configKey == null || configKey.length() == 0) {
-      throw new ConfigException().newInstance("exception.load.params.must.not.empty");
-    }
-    
-    Config config = configService.selectByCategoryKey(categoryCode, configKey);
-    
-    if (config == null) {
-      throw new ConfigException().newInstance("exception.load.domain.not.exist");
-    }
-
-    ConfigLoadResponseData resp = ConfigLoadResponseData.build(config);
-    
-    return new DefaultApiResponse<ConfigLoadResponseData>(resp);
-  }
-
-}
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
deleted file mode 100644
index c9a28d7..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminGroupController.java
+++ /dev/null
@@ -1,270 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-import java.util.HashMap;
-
-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.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-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.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;
-import com.supwisdom.institute.backend.base.domain.service.GroupService;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BaseAdminGroup", tags = { "BaseAdminGroup" }, description = "用户组的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/groups")
-public class AdminGroupController {
-
-  @Autowired
-  private GroupService groupService;
-
-  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<GroupQueryResponseData> query(GroupQueryRequest queryRequest) {
-
-    Page<Group> page = groupService.selectPageList(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(),
-        queryRequest.getMapBean(),
-        queryRequest.getOrderBy());
-
-    GroupQueryResponseData data = GroupQueryResponseData.of(queryRequest).build(page);
-
-    return new DefaultApiResponse<GroupQueryResponseData>(data);
-  }
-  
-  @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<GroupLoadResponseData> load(@PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Group group = groupService.selectById(id);
-
-    if (group == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-    
-    GroupLoadResponseData data = GroupLoadResponseData.of(group);
-
-    return new DefaultApiResponse<GroupLoadResponseData>(data);
-  }
-
-  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<GroupCreateResponseData> create(
-      @RequestBody GroupCreateRequest createRequest) {
-    
-    // FIXME: 验证数据有效性
-    
-    Group group = createRequest.getEntity();
-    
-    Group ret = groupService.insert(group);
-    
-    GroupCreateResponseData data = GroupCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<GroupCreateResponseData>(data);
-  }
-  
-  @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<GroupUpdateResponseData> update(
-      @PathVariable("id") String id, 
-      @RequestBody GroupUpdateRequest updateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.update.id.must.not.empty");
-    }
-
-    Group tmp = groupService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.update.domain.not.exist");
-    }
-
-    Group group = updateRequest.getEntity();
-    group.setId(id);
-
-    group = EntityUtils.merge(tmp, group);
-
-    Group ret = groupService.update(group);
-
-    GroupUpdateResponseData data = GroupUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<GroupUpdateResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<GroupRemoveResponseData> delete(
-      @PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Group tmp = groupService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
-    }
-
-    groupService.deleteById(id);
-
-    GroupRemoveResponseData data = GroupRemoveResponseData.build(tmp);
-    return new DefaultApiResponse<GroupRemoveResponseData>(data);
-  }
-
-  
-  
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}/accounts", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<GroupRelatedAccountsResponseData> groupAccounts(
-      @PathVariable("id") String id, 
-      GroupRelatedAccountsRequest request) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Group group = groupService.selectById(id);
-
-    if (group == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    if (request.getMapBean() == null) {
-      request.setMapBean(new HashMap<String, Object>());
-    }
-    request.getMapBean().put("groupId", group.getId());
-
-    Page<AccountGroup> page = groupService.selectGroupAccounts(
-        request.getPageIndex(),
-        request.getPageSize(), 
-        request.getMapBean());
-
-    GroupRelatedAccountsResponseData data = GroupRelatedAccountsResponseData.of(request).build(page);
-
-    return new DefaultApiResponse<GroupRelatedAccountsResponseData>(data);
-  }
-
-  @RequestMapping(method = RequestMethod.POST, path = "/{id}/accounts", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<GroupRelateAccountsResponseData> relateAccounts(
-      @PathVariable("id") String id, 
-      @RequestBody GroupRelateAccountsRequest groupAccounts) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Group group = groupService.selectById(id);
-
-    if (group == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    groupService.relateGroupAccounts(group, groupAccounts.getGroupAccounts());
-
-    GroupRelateAccountsResponseData data = GroupRelateAccountsResponseData.of("info.relate.success");
-
-    return new DefaultApiResponse<GroupRelateAccountsResponseData>(data);
-  }
-
-  
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}/roles", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<GroupRelatedRolesResponseData> groupRoles(
-      @PathVariable("id") String id, 
-      GroupRelatedRolesRequest request) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Group group = groupService.selectById(id);
-
-    if (group == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    if (request.getMapBean() == null) {
-      request.setMapBean(new HashMap<String, Object>());
-    }
-    request.getMapBean().put("groupId", group.getId());
-
-    Page<GroupRole> page = groupService.selectGroupRoles(
-        request.getPageIndex(),
-        request.getPageSize(), 
-        request.getMapBean());
-
-    GroupRelatedRolesResponseData data = GroupRelatedRolesResponseData.of(request).build(page);
-
-    return new DefaultApiResponse<GroupRelatedRolesResponseData>(data);
-  }
-
-  @RequestMapping(method = RequestMethod.POST, path = "/{id}/roles", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<GroupRelateRolesResponseData> relateRoles(
-      @PathVariable("id") String id, 
-      @RequestBody GroupRelateRolesRequest groupRoles) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Group group = groupService.selectById(id);
-
-    if (group == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    groupService.relateGroupRoles(group, groupRoles.getGroupRoles());
-
-    GroupRelateRolesResponseData data = GroupRelateRolesResponseData.of("info.relate.success");
-
-    return new DefaultApiResponse<GroupRelateRolesResponseData>(data);
-  }
-
-}
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
deleted file mode 100644
index d4ebef0..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminMenuController.java
+++ /dev/null
@@ -1,209 +0,0 @@
-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;
-
-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.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-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.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;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BaseAdminMenu", tags = { "BaseAdminMenu" }, description = "菜单的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/menus")
-public class AdminMenuController {
-
-  @Autowired
-  private PermissionService permissionService;
-
-  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionQueryResponseData> query(PermissionQueryRequest queryRequest) {
-    
-    if (queryRequest.getMapBean() == null) {
-      queryRequest.setMapBean(new HashMap<String, Object>());
-    }
-    queryRequest.getMapBean().put("type", Permission.TYPE_MENU);
-
-    Page<Permission> page = permissionService.selectPageList(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(),
-        queryRequest.getMapBean(),
-        queryRequest.getOrderBy());
-
-    PermissionQueryResponseData data = PermissionQueryResponseData.of(queryRequest).build(page);
-
-    return new DefaultApiResponse<PermissionQueryResponseData>(data);
-  }
-  
-  @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionLoadResponseData> load(@PathVariable("id") String id) {
-
-    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 (!Permission.TYPE_MENU.equals(permission.getType())) {
-      throw new RuntimeException("exception.get.domain.type.error");
-    }
-    
-    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);
-  }
-
-  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionCreateResponseData> create(
-      @RequestBody PermissionCreateRequest createRequest) {
-    
-    // FIXME: 验证数据有效性
-    
-    Permission permission = createRequest.getEntity();
-    permission.setType(Permission.TYPE_MENU);
-    
-    Permission ret = permissionService.insert(permission);
-    
-    PermissionCreateResponseData data = PermissionCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<PermissionCreateResponseData>(data);
-  }
-  
-  @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionUpdateResponseData> update(
-      @PathVariable("id") String id, 
-      @RequestBody PermissionUpdateRequest updateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.update.id.must.not.empty");
-    }
-
-    Permission tmp = permissionService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.update.domain.not.exist");
-    }
-    if (!Permission.TYPE_MENU.equals(tmp.getType())) {
-      throw new RuntimeException("exception.update.domain.type.error");
-    }
-
-    Permission permission = updateRequest.getEntity();
-    permission.setId(id);
-
-    permission = EntityUtils.merge(tmp, permission);
-
-    Permission ret = permissionService.update(permission);
-
-    PermissionUpdateResponseData data = PermissionUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<PermissionUpdateResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionRemoveResponseData> delete(
-      @PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Permission tmp = permissionService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
-    }
-    if (!Permission.TYPE_MENU.equals(tmp.getType())) {
-      throw new RuntimeException("exception.delete.domain.type.error");
-    }
-
-    permissionService.deleteById(id);
-
-    PermissionRemoveResponseData data = PermissionRemoveResponseData.build(tmp);
-    return new DefaultApiResponse<PermissionRemoveResponseData>(data);
-  }
-
-
-  @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionDeleteBatchResponseData> deleteBatch(
-      @RequestBody PermissionDeleteBatchRequest deleteBatchRequest) {
-    
-    List<String> ids = deleteBatchRequest.getIds();
-    
-    permissionService.deleteBatch(ids);
-    
-    PermissionDeleteBatchResponseData data = PermissionDeleteBatchResponseData.build(ids);
-    return new DefaultApiResponse<PermissionDeleteBatchResponseData>(data);
-  }
-  
-  @GetMapping(path = "/tree", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionTreeResponseData> tree(
-      @RequestParam(name = "applicationId", required = false, defaultValue = Permission.APPLICATION_ID) String applicationId) {
-    
-    PermissionTreeNode tree = permissionService.selectPermissionTree(applicationId, Permission.TYPE_MENU);
-
-    PermissionTreeResponseData data = PermissionTreeResponseData.of(tree);
-
-    return new DefaultApiResponse<PermissionTreeResponseData>(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
deleted file mode 100644
index e84e2e0..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminOperationController.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-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;
-
-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.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-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.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;
-
-@Api(value = "BaseAdminOperation", tags = { "BaseAdminOperation" }, description = "操作的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/operations")
-public class AdminOperationController {
-
-  @Autowired
-  private PermissionService permissionService;
-
-  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionQueryResponseData> query(PermissionQueryRequest queryRequest) {
-    
-    if (queryRequest.getMapBean() == null) {
-      queryRequest.setMapBean(new HashMap<String, Object>());
-    }
-    queryRequest.getMapBean().put("type", Permission.TYPE_OPERATION);
-
-    Page<Permission> page = permissionService.selectPageList(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(),
-        queryRequest.getMapBean(),
-        queryRequest.getOrderBy());
-
-    PermissionQueryResponseData data = PermissionQueryResponseData.of(queryRequest).build(page);
-
-    return new DefaultApiResponse<PermissionQueryResponseData>(data);
-  }
-  
-  @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionLoadResponseData> load(@PathVariable("id") String id) {
-
-    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 (!Permission.TYPE_OPERATION.equals(permission.getType())) {
-      throw new RuntimeException("exception.get.domain.type.error");
-    }
-
-    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);
-  }
-
-  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionCreateResponseData> create(
-      @RequestBody PermissionCreateRequest createRequest) {
-    
-    // FIXME: 验证数据有效性
-    
-    Permission permission = createRequest.getEntity();
-    permission.setType(Permission.TYPE_OPERATION);
-    
-    Permission ret = permissionService.insert(permission);
-    
-    PermissionCreateResponseData data = PermissionCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<PermissionCreateResponseData>(data);
-  }
-  
-  @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionUpdateResponseData> update(
-      @PathVariable("id") String id, 
-      @RequestBody PermissionUpdateRequest updateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.update.id.must.not.empty");
-    }
-
-    Permission tmp = permissionService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.update.domain.not.exist");
-    }
-    if (!Permission.TYPE_OPERATION.equals(tmp.getType())) {
-      throw new RuntimeException("exception.update.domain.type.error");
-    }
-
-    Permission permission = updateRequest.getEntity();
-    permission.setId(id);
-
-    permission = EntityUtils.merge(tmp, permission);
-
-    Permission ret = permissionService.update(permission);
-
-    PermissionUpdateResponseData data = PermissionUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<PermissionUpdateResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<PermissionRemoveResponseData> delete(
-      @PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Permission tmp = permissionService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
-    }
-    if (!Permission.TYPE_OPERATION.equals(tmp.getType())) {
-      throw new RuntimeException("exception.delete.domain.type.error");
-    }
-
-    permissionService.deleteById(id);
-
-    PermissionRemoveResponseData data = PermissionRemoveResponseData.build(tmp);
-    return new DefaultApiResponse<PermissionRemoveResponseData>(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
deleted file mode 100644
index a415095..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminPermissionController.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-import java.util.HashMap;
-
-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.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;
-
-@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() {
-    
-    PermissionTreeNode tree = permissionService.selectPermissionTree(Permission.APPLICATION_ID, null);
-
-    PermissionTreeResponseData data = PermissionTreeResponseData.of(tree);
-
-    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
deleted file mode 100644
index 5594269..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminResourceController.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-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.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-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.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;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BaseAdminResource", tags = { "BaseAdminResource" }, description = "资源(API)的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/resources")
-public class AdminResourceController {
-
-  @Autowired
-  private ResourceService resourceService;
-
-  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ResourceQueryResponseData> query(ResourceQueryRequest queryRequest) {
-
-    Page<Resource> page = resourceService.selectPageList(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(),
-        queryRequest.getMapBean(),
-        queryRequest.getOrderBy());
-
-    ResourceQueryResponseData data = ResourceQueryResponseData.of(queryRequest).build(page);
-
-    return new DefaultApiResponse<ResourceQueryResponseData>(data);
-  }
-  
-  @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ResourceLoadResponseData> load(@PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Resource resource = resourceService.selectById(id);
-
-    if (resource == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-    
-    ResourceLoadResponseData data = ResourceLoadResponseData.of(resource);
-
-    return new DefaultApiResponse<ResourceLoadResponseData>(data);
-  }
-
-  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ResourceCreateResponseData> create(
-      @RequestBody ResourceCreateRequest createRequest) {
-    
-    // FIXME: 验证数据有效性
-    
-    Resource resource = createRequest.getEntity();
-    
-    Resource ret = resourceService.insert(resource);
-    
-    ResourceCreateResponseData data = ResourceCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<ResourceCreateResponseData>(data);
-  }
-  
-  @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ResourceUpdateResponseData> update(
-      @PathVariable("id") String id, 
-      @RequestBody ResourceUpdateRequest updateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.update.id.must.not.empty");
-    }
-
-    Resource tmp = resourceService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.update.domain.not.exist");
-    }
-
-    Resource resource = updateRequest.getEntity();
-    resource.setId(id);
-
-    resource = EntityUtils.merge(tmp, resource);
-
-    Resource ret = resourceService.update(resource);
-
-    ResourceUpdateResponseData data = ResourceUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<ResourceUpdateResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<ResourceRemoveResponseData> delete(
-      @PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Resource tmp = resourceService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
-    }
-
-    resourceService.deleteById(id);
-
-    ResourceRemoveResponseData data = ResourceRemoveResponseData.build(tmp);
-    return new DefaultApiResponse<ResourceRemoveResponseData>(data);
-  }
-
-}
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
deleted file mode 100644
index b45bc25..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRoleController.java
+++ /dev/null
@@ -1,346 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-import java.util.HashMap;
-import java.util.List;
-
-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.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-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.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;
-import com.supwisdom.institute.backend.base.domain.entity.RolePermission;
-import com.supwisdom.institute.backend.base.domain.service.RoleService;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BaseAdminRole", tags = { "BaseAdminRole" }, description = "角色的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/roles")
-public class AdminRoleController {
-
-  @Autowired
-  private RoleService roleService;
-
-  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RoleQueryResponseData> query(RoleQueryRequest queryRequest) {
-
-    Page<Role> page = roleService.selectPageList(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(),
-        queryRequest.getMapBean(),
-        queryRequest.getOrderBy());
-
-    RoleQueryResponseData data = RoleQueryResponseData.of(queryRequest).build(page);
-
-    return new DefaultApiResponse<RoleQueryResponseData>(data);
-  }
-  
-  @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RoleLoadResponseData> load(@PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Role role = roleService.selectById(id);
-
-    if (role == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-    
-    RoleLoadResponseData data = RoleLoadResponseData.of(role);
-
-    return new DefaultApiResponse<RoleLoadResponseData>(data);
-  }
-
-  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RoleCreateResponseData> create(
-      @RequestBody RoleCreateRequest createRequest) {
-    
-    // FIXME: 验证数据有效性
-    
-    Role role = createRequest.getEntity();
-    
-    Role ret = roleService.insert(role);
-    
-    RoleCreateResponseData data = RoleCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<RoleCreateResponseData>(data);
-  }
-  
-  @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RoleUpdateResponseData> update(
-      @PathVariable("id") String id, 
-      @RequestBody RoleUpdateRequest updateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.update.id.must.not.empty");
-    }
-
-    Role tmp = roleService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.update.domain.not.exist");
-    }
-
-    Role role = updateRequest.getEntity();
-    role.setId(id);
-
-    role = EntityUtils.merge(tmp, role);
-
-    Role ret = roleService.update(role);
-
-    RoleUpdateResponseData data = RoleUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<RoleUpdateResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RoleRemoveResponseData> delete(
-      @PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Role tmp = roleService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
-    }
-
-    roleService.deleteById(id);
-
-    RoleRemoveResponseData data = RoleRemoveResponseData.build(tmp);
-    return new DefaultApiResponse<RoleRemoveResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RoleDeleteBatchResponseData> deleteBatch(
-      @RequestBody RoleDeleteBatchRequest deleteBatchRequest) {
-    
-    List<String> ids = deleteBatchRequest.getIds();
-    
-    roleService.deleteBatch(ids);
-    
-    RoleDeleteBatchResponseData data = RoleDeleteBatchResponseData.build(ids);
-    return new DefaultApiResponse<RoleDeleteBatchResponseData>(data);
-  }
-
-
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}/accounts", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<RoleRelatedAccountsResponseData> roleAccounts(
-      @PathVariable("id") String id, 
-      RoleRelatedAccountsRequest request) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Role role = roleService.selectById(id);
-
-    if (role == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    if (request.getMapBean() == null) {
-      request.setMapBean(new HashMap<String, Object>());
-    }
-    request.getMapBean().put("roleId", role.getId());
-
-    Page<AccountRole> page = roleService.selectRoleAccounts(
-        request.getPageIndex(),
-        request.getPageSize(), 
-        request.getMapBean());
-
-    RoleRelatedAccountsResponseData data = RoleRelatedAccountsResponseData.of(request).build(page);
-
-    return new DefaultApiResponse<RoleRelatedAccountsResponseData>(data);
-  }
-
-  @RequestMapping(method = RequestMethod.POST, path = "/{id}/accounts", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<RoleRelateAccountsResponseData> relateAccounts(
-      @PathVariable("id") String id, 
-      @RequestBody RoleRelateAccountsRequest roleAccounts) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Role role = roleService.selectById(id);
-
-    if (role == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    roleService.relateRoleAccounts(role, roleAccounts.getRoleAccounts());
-
-    RoleRelateAccountsResponseData data = RoleRelateAccountsResponseData.of("info.relate.success");
-
-    return new DefaultApiResponse<RoleRelateAccountsResponseData>(data);
-  }
-
-
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}/groups", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<RoleRelatedGroupsResponseData> roleGroups(
-      @PathVariable("id") String id, 
-      RoleRelatedGroupsRequest request) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Role role = roleService.selectById(id);
-
-    if (role == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    if (request.getMapBean() == null) {
-      request.setMapBean(new HashMap<String, Object>());
-    }
-    request.getMapBean().put("roleId", role.getId());
-
-    Page<GroupRole> page = roleService.selectRoleGroups(
-        request.getPageIndex(),
-        request.getPageSize(), 
-        request.getMapBean());
-
-    RoleRelatedGroupsResponseData data = RoleRelatedGroupsResponseData.of(request).build(page);
-
-    return new DefaultApiResponse<RoleRelatedGroupsResponseData>(data);
-  }
-
-  @RequestMapping(method = RequestMethod.POST, path = "/{id}/groups", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<RoleRelateGroupsResponseData> relateGroups(
-      @PathVariable("id") String id, 
-      @RequestBody RoleRelateGroupsRequest roleGroups) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Role role = roleService.selectById(id);
-
-    if (role == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    roleService.relateRoleGroups(role, roleGroups.getRoleGroups());
-
-    RoleRelateGroupsResponseData data = RoleRelateGroupsResponseData.of("info.relate.success");
-
-    return new DefaultApiResponse<RoleRelateGroupsResponseData>(data);
-  }
-
-
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}/permissions", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<RoleRelatedPermissionsResponseData> rolePermissions(
-      @PathVariable("id") String id, 
-      RoleRelatedPermissionsRequest request) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Role role = roleService.selectById(id);
-
-    if (role == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    if (request.getMapBean() == null) {
-      request.setMapBean(new HashMap<String, Object>());
-    }
-    request.getMapBean().put("roleId", role.getId());
-
-    Page<RolePermission> page = roleService.selectRolePermissions(
-        request.getPageIndex(),
-        request.getPageSize(), 
-        request.getMapBean());
-
-    RoleRelatedPermissionsResponseData data = RoleRelatedPermissionsResponseData.of(request).build(page);
-
-    return new DefaultApiResponse<RoleRelatedPermissionsResponseData>(data);
-  }
-
-  @RequestMapping(method = RequestMethod.POST, path = "/{id}/permissions", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseBody
-  public DefaultApiResponse<RoleRelatePermissionsResponseData> relatePermissions(
-      @PathVariable("id") String id, 
-      @RequestBody RoleRelatePermissionsRequest rolePermissions) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Role role = roleService.selectById(id);
-
-    if (role == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-
-    roleService.relateRolePermissions(role, rolePermissions.getRolePermissions());
-
-    RoleRelatePermissionsResponseData data = RoleRelatePermissionsResponseData.of("info.relate.success");
-
-    return new DefaultApiResponse<RoleRelatePermissionsResponseData>(data);
-  }
-
-}
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
deleted file mode 100644
index a52334d..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/admin/AdminRouteController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.controller.admin;
-
-import java.util.List;
-
-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.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-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.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;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BaseAdminRoute", tags = { "BaseAdminRoute" }, description = "路由信息的操作接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/routes")
-public class AdminRouteController {
-
-  @Autowired
-  private RouteService routeService;
-  
-
-  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RouteQueryResponseData> query(RouteQueryRequest queryRequest) {
-
-    Page<Route> page = routeService.selectPageList(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(),
-        queryRequest.getMapBean(),
-        queryRequest.getOrderBy());
-
-    RouteQueryResponseData data = RouteQueryResponseData.of(queryRequest).build(page);
-
-    return new DefaultApiResponse<RouteQueryResponseData>(data);
-  }
-  
-  @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RouteLoadResponseData> load(@PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Route route = routeService.selectById(id);
-
-    if (route == null) {
-      throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
-    }
-    
-    RouteLoadResponseData data = RouteLoadResponseData.of(route);
-
-    return new DefaultApiResponse<RouteLoadResponseData>(data);
-  }
-
-  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RouteCreateResponseData> create(
-      @RequestBody RouteCreateRequest createRequest) {
-    
-    // FIXME: 验证数据有效性
-    
-    Route route = createRequest.getEntity();
-    
-    Route ret = routeService.insert(route);
-    
-    RouteCreateResponseData data = RouteCreateResponseData.build(ret);
-
-    return new DefaultApiResponse<RouteCreateResponseData>(data);
-  }
-  
-  @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RouteUpdateResponseData> update(
-      @PathVariable("id") String id, 
-      @RequestBody RouteUpdateRequest updateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.update.id.must.not.empty");
-    }
-
-    Route tmp = routeService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.update.domain.not.exist");
-    }
-
-    Route route = updateRequest.getEntity();
-    route.setId(id);
-
-    route = EntityUtils.merge(tmp, route);
-
-    Route ret = routeService.update(route);
-
-    RouteUpdateResponseData data = RouteUpdateResponseData.build(ret);
-    
-    return new DefaultApiResponse<RouteUpdateResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RouteRemoveResponseData> delete(
-      @PathVariable("id") String id) {
-
-    if (id == null || id.length() == 0) {
-      throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
-    }
-
-    Route tmp = routeService.selectById(id);
-    if (tmp == null) {
-      throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
-    }
-
-    routeService.deleteById(id);
-
-    RouteRemoveResponseData data = RouteRemoveResponseData.build(tmp);
-    return new DefaultApiResponse<RouteRemoveResponseData>(data);
-  }
-
-  @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<RouteDeleteBatchResponseData> deleteBatch(
-      @RequestBody RouteDeleteBatchRequest deleteBatchRequest) {
-    
-    List<String> ids = deleteBatchRequest.getIds();
-    
-    routeService.deleteBatch(ids);
-    
-    RouteDeleteBatchResponseData data = RouteDeleteBatchResponseData.build(ids);
-    return new DefaultApiResponse<RouteDeleteBatchResponseData>(data);
-  }
-
-}
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
deleted file mode 100644
index d79f298..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnController.java
+++ /dev/null
@@ -1,320 +0,0 @@
-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;
-
-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.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-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.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 = "认证授权接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/authn")
-public class AuthnController {
-  
-  @Autowired
-  private AccountService accountService;
-  
-  @Autowired
-  private RoleService roleService;
-  
-  @Autowired
-  private ApplicationService applicationService;
-
-  @Autowired
-  private PermissionService permissionService;
-
-  @Autowired
-  private ResourceService resourceService;
-
-  @Autowired
-  private RouteService routeService;
-
-  @GetMapping(path = "/{username}/account", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AuthnAccountResponseData> account(
-      @PathVariable("username") String username) {
-
-    if (username == null || username.length() == 0) {
-      throw new RuntimeException("exception.get.username.must.not.empty");
-    }
-
-    Account account = accountService.selectByUsername(username);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.account.not.exist");
-    }
-    
-    AuthnAccountResponseData data = AuthnAccountResponseData.of(account);
-
-    return new DefaultApiResponse<AuthnAccountResponseData>(data);
-  }
-  
-  @GetMapping(path = "/{username}/roles", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AuthnAccountRolesResponseData> accountRoles(
-      @PathVariable("username") String username) {
-
-    if (username == null || username.length() == 0) {
-      throw new RuntimeException("exception.get.username.must.not.empty");
-    }
-
-    Account account = accountService.selectByUsername(username);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.account.not.exist");
-    }
-    
-    List<Role> roles = roleService.selectByUsername(username);
-    
-    AuthnAccountRolesResponseData data = AuthnAccountRolesResponseData.of(roles);
-
-    return new DefaultApiResponse<AuthnAccountRolesResponseData>(data);
-  }
-
-  @GetMapping(path = "/{username}/applications", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AuthnAccountPermissionsResponseData> accountApplications(
-      @PathVariable("username") String username,
-      @RequestParam(name = "applicationId", required = false) String applicationId) {
-
-    if (username == null || username.length() == 0) {
-      throw new RuntimeException("exception.get.username.must.not.empty");
-    }
-
-    Account account = accountService.selectByUsername(username);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.account.not.exist");
-    }
-    
-    List<Permission> applications = permissionService.selectByUsername(username, null, Permission.TYPE_APPLICATION);
-    
-    AuthnAccountPermissionsResponseData data = AuthnAccountPermissionsResponseData.of(applications);
-
-    return new DefaultApiResponse<AuthnAccountPermissionsResponseData>(data);
-  }
-
-  @GetMapping(path = "/{username}/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AuthnAccountPermissionsResponseData> accountMenus(
-      @PathVariable("username") String username, 
-      @RequestParam(name = "applicationId", required = false) String applicationId) {
-
-    if (username == null || username.length() == 0) {
-      throw new RuntimeException("exception.get.username.must.not.empty");
-    }
-
-    Account account = accountService.selectByUsername(username);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.account.not.exist");
-    }
-    
-    List<Permission> menus = permissionService.selectByUsername(username, applicationId, Permission.TYPE_MENU);
-    
-    AuthnAccountPermissionsResponseData data = AuthnAccountPermissionsResponseData.of(menus);
-
-    return new DefaultApiResponse<AuthnAccountPermissionsResponseData>(data);
-  }
-
-  @GetMapping(path = "/{username}/operations", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AuthnAccountPermissionsResponseData> accountOperations(
-      @PathVariable("username") String username, 
-      @RequestParam(name = "applicationId", required = false) String applicationId) {
-
-    if (username == null || username.length() == 0) {
-      throw new RuntimeException("exception.get.username.must.not.empty");
-    }
-
-    Account account = accountService.selectByUsername(username);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.account.not.exist");
-    }
-    
-    List<Permission> operations = permissionService.selectByUsername(username, applicationId, Permission.TYPE_OPERATION);
-    
-    AuthnAccountPermissionsResponseData data = AuthnAccountPermissionsResponseData.of(operations);
-
-    return new DefaultApiResponse<AuthnAccountPermissionsResponseData>(data);
-  }
-
-  @GetMapping(path = "/{username}/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<AuthnAccountResourcesResponseData> accountResources(
-      @PathVariable("username") String username, 
-      @RequestParam(name = "applicationId", required = false) String applicationId) {
-
-    if (username == null || username.length() == 0) {
-      throw new RuntimeException("exception.get.username.must.not.empty");
-    }
-
-    Account account = accountService.selectByUsername(username);
-
-    if (account == null) {
-      throw new RuntimeException("exception.get.account.not.exist");
-    }
-    
-    List<Resource> resources = null;// FIXME: resourceService.selectByUsername(username, applicationId);
-    
-    AuthnAccountResourcesResponseData data = AuthnAccountResourcesResponseData.of(resources);
-
-    return new DefaultApiResponse<AuthnAccountResourcesResponseData>(data);
-  }
-  
-//  @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<AuthnApplicationsResponseData> applications() {
-    
-    Map<String, Object> mapBean = new HashMap<>();
-    Map<String, String> orderBy = null;
-    
-    mapBean.put("status", "1");
-
-    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, defaultValue = Permission.APPLICATION_ID) 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, defaultValue = Permission.APPLICATION_ID) String applicationId) {
-    
-    Map<String, Object> mapBean = new HashMap<>();
-    
-    mapBean.put("status", "1");
-    if (applicationId != null && !applicationId.isEmpty()) {
-      mapBean.put("applicationId", applicationId);
-    }
-    
-    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/vo/.gitkeep b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/.gitkeep
+++ /dev/null
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountCreateRequest.java
deleted file mode 100644
index bf8cfc7..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountCreateRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class AccountCreateRequest extends Account implements IApiCreateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 3708476811446308442L;
-
-  public Account getEntity() {
-    return EntityUtils.copy(this, new Account());
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountDeleteBatchRequest.java
deleted file mode 100644
index d936658..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountDeleteBatchRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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.common.framework.vo.request.IApiRequest;
-
-public class AccountDeleteBatchRequest implements IApiRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -5886243153431313069L;
-  
-  @Getter
-  @Setter
-  private List<String> ids;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountQueryRequest.java
deleted file mode 100644
index f31652f..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountQueryRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class AccountQueryRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8594346811904818135L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateGroupsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateGroupsRequest.java
deleted file mode 100644
index acb37d9..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateGroupsRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-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.AccountGroup;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
-
-public class AccountRelateGroupsRequest implements IApiRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5685421340396797488L;
-
-  @Getter
-  @Setter
-  private List<AccountGroup> accountGroups;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateRolesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateRolesRequest.java
deleted file mode 100644
index dc59b3f..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelateRolesRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-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.AccountRole;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
-
-public class AccountRelateRolesRequest implements IApiRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 6612833201128786481L;
-  
-  @Getter
-  @Setter
-  private List<AccountRole> accountRoles;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedGroupsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedGroupsRequest.java
deleted file mode 100644
index d63a859..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedGroupsRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class AccountRelatedGroupsRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1998794079137356318L;
-  
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedRolesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedRolesRequest.java
deleted file mode 100644
index d484452..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountRelatedRolesRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class AccountRelatedRolesRequest implements IApiQueryRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2118300523470868823L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountUpdateRequest.java
deleted file mode 100644
index 795c687..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/AccountUpdateRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class AccountUpdateRequest extends Account implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7297542338912221083L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  public Account getEntity() {
-    return EntityUtils.copy(this, new Account());
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationCreateRequest.java
deleted file mode 100644
index f950918..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationCreateRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class ApplicationCreateRequest extends Application implements IApiCreateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 7619506409619195684L;
-
-  public Application getEntity() {
-    return EntityUtils.copy(this, new Application());
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationDeleteBatchRequest.java
deleted file mode 100644
index 62e69ed..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationDeleteBatchRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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.common.framework.vo.request.IApiRequest;
-
-public class ApplicationDeleteBatchRequest implements IApiRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8296636817441994821L;
-
-  @Getter
-  @Setter
-  private List<String> ids;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationQueryRequest.java
deleted file mode 100644
index b4b6ea1..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationQueryRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class ApplicationQueryRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -4728297863070197861L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationUpdateRequest.java
deleted file mode 100644
index 12f8a49..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ApplicationUpdateRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ApplicationUpdateRequest extends Application implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2370390240675594737L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  public Application getEntity() {
-    return EntityUtils.copy(this, new Application());
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigCreateRequest.java
deleted file mode 100644
index 6506f3b..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigCreateRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class ConfigCreateRequest extends Config implements IApiCreateRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8380208871984763567L;
-
-  public Config getEntity() {
-    return EntityUtils.copy(this, new Config());
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigQueryRequest.java
deleted file mode 100644
index 53f2b29..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigQueryRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class ConfigQueryRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1033044092932525382L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigUpdateRequest.java
deleted file mode 100644
index 6fd4fc9..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ConfigUpdateRequest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ConfigUpdateRequest extends Config implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 6002556449210326472L;
-
-  @Getter
-  @Setter
-  private String id;
-  
-  
-  public Config getEntity() {
-    return EntityUtils.copy(this, new Config());
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupCreateRequest.java
deleted file mode 100644
index 8f60f9c..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupCreateRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class GroupCreateRequest extends Group implements IApiCreateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -5922604207821365121L;
-
-  public Group getEntity() {
-    return EntityUtils.copy(this, new Group());
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupQueryRequest.java
deleted file mode 100644
index ea610b3..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupQueryRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class GroupQueryRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -4023230222050081483L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateAccountsRequest.java
deleted file mode 100644
index 8b81132..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateAccountsRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-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.AccountGroup;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
-
-public class GroupRelateAccountsRequest implements IApiRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 440910731161851824L;
-
-  @Getter
-  @Setter
-  private List<AccountGroup> groupAccounts;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateRolesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateRolesRequest.java
deleted file mode 100644
index 52b4486..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelateRolesRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-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.GroupRole;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
-
-public class GroupRelateRolesRequest implements IApiRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 795337416058792163L;
-
-  @Getter
-  @Setter
-  private List<GroupRole> groupRoles;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedAccountsRequest.java
deleted file mode 100644
index 6a1b13d..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedAccountsRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class GroupRelatedAccountsRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -3102006206798574212L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedRolesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedRolesRequest.java
deleted file mode 100644
index 6000d6a..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupRelatedRolesRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class GroupRelatedRolesRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6642264903131667637L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupUpdateRequest.java
deleted file mode 100644
index 63e82fd..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/GroupUpdateRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class GroupUpdateRequest extends Group implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6406242462582902819L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  public Group getEntity() {
-    return EntityUtils.copy(this, new Group());
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionCreateRequest.java
deleted file mode 100644
index e287f65..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionCreateRequest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class PermissionCreateRequest extends Permission implements IApiCreateRequest {
-
-  /**
-   * 
-   */
-  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/admin/request/PermissionDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionDeleteBatchRequest.java
deleted file mode 100644
index 9777b30..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionDeleteBatchRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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.common.framework.vo.request.IApiRequest;
-
-public class PermissionDeleteBatchRequest implements IApiRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -9180558051324597595L;
-  
-  @Getter
-  @Setter
-  private List<String> ids;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionQueryRequest.java
deleted file mode 100644
index d32f363..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionQueryRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class PermissionQueryRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -3944162671254599673L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
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
deleted file mode 100644
index ae09876..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelateResourcesRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-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/admin/request/PermissionRelatedResourcesRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelatedResourcesRequest.java
deleted file mode 100644
index 4419071..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionRelatedResourcesRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class PermissionRelatedResourcesRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7634304817036292579L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionUpdateRequest.java
deleted file mode 100644
index 00d28c4..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/PermissionUpdateRequest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class PermissionUpdateRequest extends Permission implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -5923008482749557479L;
-
-  @Getter
-  @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/admin/request/ResourceCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceCreateRequest.java
deleted file mode 100644
index 3c17cac..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceCreateRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class ResourceCreateRequest extends Resource implements IApiCreateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7999657157256566904L;
-
-  public Resource getEntity() {
-    return EntityUtils.copy(this, new Resource());
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceQueryRequest.java
deleted file mode 100644
index 7171557..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceQueryRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class ResourceQueryRequest implements IApiQueryRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -911488989591489730L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceUpdateRequest.java
deleted file mode 100644
index 596cbd7..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/ResourceUpdateRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ResourceUpdateRequest extends Resource implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8922380312193462613L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  public Resource getEntity() {
-    return EntityUtils.copy(this, new Resource());
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleCreateRequest.java
deleted file mode 100644
index e91cfba..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleCreateRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class RoleCreateRequest extends Role implements IApiCreateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -5891171833738647843L;
-
-  public Role getEntity() {
-    return EntityUtils.copy(this, new Role());
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleDeleteBatchRequest.java
deleted file mode 100644
index 94a23a5..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleDeleteBatchRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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.common.framework.vo.request.IApiRequest;
-
-public class RoleDeleteBatchRequest implements IApiRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 3121491905067659896L;
-
-  @Getter
-  @Setter
-  private List<String> ids;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleQueryRequest.java
deleted file mode 100644
index db54ea4..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleQueryRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class RoleQueryRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8717113985995182773L;
-  
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateAccountsRequest.java
deleted file mode 100644
index 1fc5848..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateAccountsRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-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.AccountRole;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
-
-public class RoleRelateAccountsRequest implements IApiRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7935779803020137819L;
-
-  @Getter
-  @Setter
-  private List<AccountRole> roleAccounts;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateGroupsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateGroupsRequest.java
deleted file mode 100644
index e400df4..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelateGroupsRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-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.GroupRole;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
-
-public class RoleRelateGroupsRequest implements IApiRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 9206282464451171269L;
-  
-  @Getter
-  @Setter
-  private List<GroupRole> roleGroups;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatePermissionsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatePermissionsRequest.java
deleted file mode 100644
index dc31c16..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatePermissionsRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-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.RolePermission;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
-
-public class RoleRelatePermissionsRequest implements IApiRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7524940232102183145L;
-
-  @Getter
-  @Setter
-  private List<RolePermission> rolePermissions;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedAccountsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedAccountsRequest.java
deleted file mode 100644
index 2d8b77e..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedAccountsRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class RoleRelatedAccountsRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1798385113493396290L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedGroupsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedGroupsRequest.java
deleted file mode 100644
index b69aef5..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedGroupsRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class RoleRelatedGroupsRequest implements IApiQueryRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 7253046382409370442L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedPermissionsRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedPermissionsRequest.java
deleted file mode 100644
index 7ff22a2..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleRelatedPermissionsRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class RoleRelatedPermissionsRequest implements IApiQueryRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5695303573516182415L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleUpdateRequest.java
deleted file mode 100644
index b1137db..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RoleUpdateRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class RoleUpdateRequest extends Role implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7272388577177587142L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  public Role getEntity() {
-    return EntityUtils.copy(this, new Role());
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteCreateRequest.java
deleted file mode 100644
index f1af807..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteCreateRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class RouteCreateRequest extends Route implements IApiCreateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1610189545107922L;
-
-  public Route getEntity() {
-    return EntityUtils.copy(this, new Route());
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteDeleteBatchRequest.java
deleted file mode 100644
index af2657c..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteDeleteBatchRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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.common.framework.vo.request.IApiRequest;
-
-public class RouteDeleteBatchRequest implements IApiRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6325676083300813571L;
-
-  @Getter
-  @Setter
-  private List<String> ids;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteQueryRequest.java
deleted file mode 100644
index b077d34..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteQueryRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class RouteQueryRequest implements IApiQueryRequest {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5501929058767629345L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-  @Getter
-  @Setter
-  private int pageSize = 20;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteUpdateRequest.java
deleted file mode 100644
index e96eb28..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/request/RouteUpdateRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class RouteUpdateRequest extends Route implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1999295284394866961L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  public Route getEntity() {
-    return EntityUtils.copy(this, new Route());
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountCreateResponseData.java
deleted file mode 100644
index d4b91d8..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountCreateResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class AccountCreateResponseData extends Account implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8882701323050726169L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private AccountCreateResponseData() {
-
-  }
-
-  public static AccountCreateResponseData build(Account entity) {
-    AccountCreateResponseData data = new AccountCreateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountDeleteBatchResponseData.java
deleted file mode 100644
index 6c471ee..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountDeleteBatchResponseData.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-/**
- * @author loie
- */
-public class AccountDeleteBatchResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8625399816385346436L;
-
-  @Getter
-  @Setter
-  private List<String> ids;
-
-  private AccountDeleteBatchResponseData() {
-    
-  }
-  
-  public static AccountDeleteBatchResponseData build(List<String> ids) {
-    AccountDeleteBatchResponseData data = new AccountDeleteBatchResponseData();
-    data.setIds(ids);
-    
-    return data;
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountLoadResponseData.java
deleted file mode 100644
index a9f250d..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountLoadResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class AccountLoadResponseData extends Account implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8236721435440256832L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private AccountLoadResponseData() {
-
-  }
-
-  public static AccountLoadResponseData of(Account entity) {
-    AccountLoadResponseData data = new AccountLoadResponseData();
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountQueryResponseData.java
deleted file mode 100644
index a36d033..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountQueryResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.Account;
-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 AccountQueryResponseData implements IApiQueryResponseData<Account> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 3949426339318397970L;
-
-  private AccountQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static AccountQueryResponseData of(IApiQueryRequest queryRequest) {
-    AccountQueryResponseData configQueryResponse = new AccountQueryResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public AccountQueryResponseData build(Page<Account> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Account> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateGroupsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateGroupsResponseData.java
deleted file mode 100644
index a269841..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateGroupsResponseData.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class AccountRelateGroupsResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -720047649055920794L;
-  
-  @Getter
-  @Setter
-  private String message;
-
-  public AccountRelateGroupsResponseData(String message) {
-    this.message = message;
-  }
-
-  public static AccountRelateGroupsResponseData of(String message) {
-    AccountRelateGroupsResponseData data = new AccountRelateGroupsResponseData(message);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateRolesResponseData.java
deleted file mode 100644
index 93895ff..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelateRolesResponseData.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class AccountRelateRolesResponseData implements IApiResponseData {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -5011147266134585651L;
-  
-  @Getter
-  @Setter
-  private String message;
-
-  public AccountRelateRolesResponseData(String message) {
-    this.message = message;
-  }
-
-  public static AccountRelateRolesResponseData of(String message) {
-    AccountRelateRolesResponseData data = new AccountRelateRolesResponseData(message);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedGroupsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedGroupsResponseData.java
deleted file mode 100644
index 802437d..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedGroupsResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.AccountGroup;
-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 AccountRelatedGroupsResponseData implements IApiQueryResponseData<AccountGroup> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 3949426339318397970L;
-
-  private AccountRelatedGroupsResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static AccountRelatedGroupsResponseData of(IApiQueryRequest queryRequest) {
-    AccountRelatedGroupsResponseData configQueryResponse = new AccountRelatedGroupsResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public AccountRelatedGroupsResponseData build(Page<AccountGroup> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<AccountGroup> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedRolesResponseData.java
deleted file mode 100644
index 5289a30..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRelatedRolesResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.AccountRole;
-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 AccountRelatedRolesResponseData implements IApiQueryResponseData<AccountRole> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 4933467585328478547L;
-
-  private AccountRelatedRolesResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static AccountRelatedRolesResponseData of(IApiQueryRequest queryRequest) {
-    AccountRelatedRolesResponseData configQueryResponse = new AccountRelatedRolesResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public AccountRelatedRolesResponseData build(Page<AccountRole> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<AccountRole> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRemoveResponseData.java
deleted file mode 100644
index 40d0b87..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountRemoveResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Account;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class AccountRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8510464738198696332L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private AccountRemoveResponseData() {
-    
-  }
-  
-  public static AccountRemoveResponseData build(Account entity) {
-    AccountRemoveResponseData data = new AccountRemoveResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountUpdateResponseData.java
deleted file mode 100644
index 59cba51..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/AccountUpdateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class AccountUpdateResponseData extends Account implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7885193620877829529L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private AccountUpdateResponseData() {
-
-  }
-
-  public static AccountUpdateResponseData build(Account entity) {
-    AccountUpdateResponseData data = new AccountUpdateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationCreateResponseData.java
deleted file mode 100644
index b4a7c94..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationCreateResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ApplicationCreateResponseData extends Application implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -5986639173730939508L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ApplicationCreateResponseData() {
-
-  }
-
-  public static ApplicationCreateResponseData build(Application entity) {
-    ApplicationCreateResponseData data = new ApplicationCreateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationDeleteBatchResponseData.java
deleted file mode 100644
index 9e22692..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationDeleteBatchResponseData.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-/**
- * @author loie
- */
-public class ApplicationDeleteBatchResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1441419457044931039L;
-
-  @Getter
-  @Setter
-  private List<String> ids;
-
-  private ApplicationDeleteBatchResponseData() {
-    
-  }
-  
-  public static ApplicationDeleteBatchResponseData build(List<String> ids) {
-    ApplicationDeleteBatchResponseData data = new ApplicationDeleteBatchResponseData();
-    data.setIds(ids);
-    
-    return data;
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationLoadResponseData.java
deleted file mode 100644
index 27acd2f..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationLoadResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ApplicationLoadResponseData extends Application implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -4866881763278414027L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ApplicationLoadResponseData() {
-
-  }
-
-  public static ApplicationLoadResponseData of(Application entity) {
-    ApplicationLoadResponseData data = new ApplicationLoadResponseData();
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationQueryResponseData.java
deleted file mode 100644
index c0fb9bd..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationQueryResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.Application;
-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 ApplicationQueryResponseData implements IApiQueryResponseData<Application> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 1355060716641084862L;
-
-  private ApplicationQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static ApplicationQueryResponseData of(IApiQueryRequest queryRequest) {
-    ApplicationQueryResponseData configQueryResponse = new ApplicationQueryResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public ApplicationQueryResponseData build(Page<Application> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Application> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationRemoveResponseData.java
deleted file mode 100644
index 97f1a87..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationRemoveResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Application;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class ApplicationRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8179059520857121842L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ApplicationRemoveResponseData() {
-    
-  }
-  
-  public static ApplicationRemoveResponseData build(Application entity) {
-    ApplicationRemoveResponseData data = new ApplicationRemoveResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationUpdateResponseData.java
deleted file mode 100644
index 1a72e5c..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ApplicationUpdateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ApplicationUpdateResponseData extends Application implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2690439553701722798L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ApplicationUpdateResponseData() {
-
-  }
-
-  public static ApplicationUpdateResponseData build(Application entity) {
-    ApplicationUpdateResponseData data = new ApplicationUpdateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigCreateResponseData.java
deleted file mode 100644
index 663f179..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigCreateResponseData.java
+++ /dev/null
@@ -1,32 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ConfigCreateResponseData extends Config implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2300091307366254182L;
-  
-  @Getter
-  @Setter
-  private String id;
-
-  private ConfigCreateResponseData() {
-    
-  }
-  
-  public static ConfigCreateResponseData build(Config entity) {
-    ConfigCreateResponseData configCreateResponse = new ConfigCreateResponseData();
-    return EntityUtils.copy(entity, configCreateResponse);
-  }
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigLoadResponseData.java
deleted file mode 100644
index c8ddafa..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigLoadResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ConfigLoadResponseData extends Config implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -579946566129915779L;
-
-  @Getter
-  @Setter
-  private String id;
-  
-  
-  private ConfigLoadResponseData() {
-    
-  }
-  
-  public static ConfigLoadResponseData build(Config entity) {
-    ConfigLoadResponseData configCreateResponse = new ConfigLoadResponseData();
-    return EntityUtils.copy(entity, configCreateResponse);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigQueryResponseData.java
deleted file mode 100644
index 6255a4b..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigQueryResponseData.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-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;
-
-/**
- * @author loie
- */
-public class ConfigQueryResponseData implements IApiQueryResponseData<Config> {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 3188467441502226095L;
-  
-//  private ConfigQueryResponseData() {
-//  }
-  
-  public ConfigQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static ConfigQueryResponseData of(ConfigQueryRequest configQueryRequest) {
-    ConfigQueryResponseData configQueryResponse = new ConfigQueryResponseData(
-        configQueryRequest.isLoadAll(), 
-        configQueryRequest.getPageIndex(), 
-        configQueryRequest.getPageSize(), 
-        configQueryRequest.getMapBean(), 
-        configQueryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public ConfigQueryResponseData build(Page<Config> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Config> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigRemoveResponseData.java
deleted file mode 100644
index e656a1f..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigRemoveResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Config;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class ConfigRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8510464738198696332L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ConfigRemoveResponseData() {
-    
-  }
-  
-  public static ConfigRemoveResponseData build(Config entity) {
-    ConfigRemoveResponseData configRemoveResponse = new ConfigRemoveResponseData();
-    return EntityUtils.copy(entity, configRemoveResponse);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigUpdateResponseData.java
deleted file mode 100644
index df4de29..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ConfigUpdateResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ConfigUpdateResponseData extends Config implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 2798387429543859170L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ConfigUpdateResponseData() {
-    
-  }
-  
-  public static ConfigUpdateResponseData build(Config entity) {
-    ConfigUpdateResponseData configUpdateResponse = new ConfigUpdateResponseData();
-    return EntityUtils.copy(entity, configUpdateResponse);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupCreateResponseData.java
deleted file mode 100644
index 4c3f545..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupCreateResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class GroupCreateResponseData extends Group implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 3720317246428656184L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private GroupCreateResponseData() {
-
-  }
-
-  public static GroupCreateResponseData build(Group entity) {
-    GroupCreateResponseData data = new GroupCreateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupLoadResponseData.java
deleted file mode 100644
index a3b83b0..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupLoadResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class GroupLoadResponseData extends Group implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8064680472492241116L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private GroupLoadResponseData() {
-
-  }
-
-  public static GroupLoadResponseData of(Group entity) {
-    GroupLoadResponseData data = new GroupLoadResponseData();
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupQueryResponseData.java
deleted file mode 100644
index 20e6fac..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupQueryResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.Group;
-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 GroupQueryResponseData implements IApiQueryResponseData<Group> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1512126460241874099L;
-
-  private GroupQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static GroupQueryResponseData of(IApiQueryRequest queryRequest) {
-    GroupQueryResponseData configQueryResponse = new GroupQueryResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public GroupQueryResponseData build(Page<Group> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Group> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateAccountsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateAccountsResponseData.java
deleted file mode 100644
index fbc6b08..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateAccountsResponseData.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class GroupRelateAccountsResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6510043291221068404L;
-
-  @Getter
-  @Setter
-  private String message;
-
-  public GroupRelateAccountsResponseData(String message) {
-    this.message = message;
-  }
-
-  public static GroupRelateAccountsResponseData of(String message) {
-    GroupRelateAccountsResponseData data = new GroupRelateAccountsResponseData(message);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateRolesResponseData.java
deleted file mode 100644
index 104041c..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelateRolesResponseData.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class GroupRelateRolesResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 1758005341902663320L;
-
-  @Getter
-  @Setter
-  private String message;
-
-  public GroupRelateRolesResponseData(String message) {
-    this.message = message;
-  }
-
-  public static GroupRelateRolesResponseData of(String message) {
-    GroupRelateRolesResponseData data = new GroupRelateRolesResponseData(message);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedAccountsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedAccountsResponseData.java
deleted file mode 100644
index 1e9e819..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedAccountsResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.AccountGroup;
-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 GroupRelatedAccountsResponseData implements IApiQueryResponseData<AccountGroup> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6697630069320874813L;
-
-  private GroupRelatedAccountsResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static GroupRelatedAccountsResponseData of(IApiQueryRequest queryRequest) {
-    GroupRelatedAccountsResponseData configQueryResponse = new GroupRelatedAccountsResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public GroupRelatedAccountsResponseData build(Page<AccountGroup> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<AccountGroup> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedRolesResponseData.java
deleted file mode 100644
index 4ae2d5f..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRelatedRolesResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
-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 GroupRelatedRolesResponseData implements IApiQueryResponseData<GroupRole> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 1574248919628509262L;
-
-  private GroupRelatedRolesResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static GroupRelatedRolesResponseData of(IApiQueryRequest queryRequest) {
-    GroupRelatedRolesResponseData configQueryResponse = new GroupRelatedRolesResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public GroupRelatedRolesResponseData build(Page<GroupRole> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<GroupRole> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRemoveResponseData.java
deleted file mode 100644
index 08e7440..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupRemoveResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Group;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class GroupRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8704397808353314340L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private GroupRemoveResponseData() {
-    
-  }
-  
-  public static GroupRemoveResponseData build(Group entity) {
-    GroupRemoveResponseData data = new GroupRemoveResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupUpdateResponseData.java
deleted file mode 100644
index 3ae507d..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/GroupUpdateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class GroupUpdateResponseData extends Group implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1248124641996970651L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private GroupUpdateResponseData() {
-
-  }
-
-  public static GroupUpdateResponseData build(Group entity) {
-    GroupUpdateResponseData data = new GroupUpdateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionCreateResponseData.java
deleted file mode 100644
index cec1042..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionCreateResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class PermissionCreateResponseData extends Permission implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 4619013116994825066L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private PermissionCreateResponseData() {
-
-  }
-
-  public static PermissionCreateResponseData build(Permission entity) {
-    PermissionCreateResponseData data = new PermissionCreateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionDeleteBatchResponseData.java
deleted file mode 100644
index f1626bf..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionDeleteBatchResponseData.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-/**
- * @author loie
- */
-public class PermissionDeleteBatchResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7406287471651267066L;
-
-  @Getter
-  @Setter
-  private List<String> ids;
-
-  private PermissionDeleteBatchResponseData() {
-    
-  }
-  
-  public static PermissionDeleteBatchResponseData build(List<String> ids) {
-    PermissionDeleteBatchResponseData data = new PermissionDeleteBatchResponseData();
-    data.setIds(ids);
-    
-    return data;
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionLoadResponseData.java
deleted file mode 100644
index 3815743..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionLoadResponseData.java
+++ /dev/null
@@ -1,44 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class PermissionLoadResponseData extends Permission implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2692036336252091453L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  @Getter
-  @Setter
-  private List<String> resourceIds;
-
-  
-  private PermissionLoadResponseData() {
-
-  }
-
-  public static PermissionLoadResponseData of(Permission entity, List<String> resourceIds) {
-    PermissionLoadResponseData data = new PermissionLoadResponseData();
-
-    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/admin/response/PermissionQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionQueryResponseData.java
deleted file mode 100644
index 436a7ee..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionQueryResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.Permission;
-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> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8586983968415937644L;
-
-  private PermissionQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static PermissionQueryResponseData of(IApiQueryRequest queryRequest) {
-    PermissionQueryResponseData configQueryResponse = new PermissionQueryResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public PermissionQueryResponseData build(Page<Permission> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Permission> items;
-  
-}
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
deleted file mode 100644
index e895aac..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelateResourcesResponseData.java
+++ /dev/null
@@ -1,29 +0,0 @@
-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/admin/response/PermissionRelatedResourcesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelatedResourcesResponseData.java
deleted file mode 100644
index 969d3c6..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRelatedResourcesResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-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 PermissionRelatedResourcesResponseData implements IApiQueryResponseData<PermissionResource> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2095633445866557991L;
-
-  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;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static PermissionRelatedResourcesResponseData of(IApiQueryRequest queryRequest) {
-    PermissionRelatedResourcesResponseData configQueryResponse = new PermissionRelatedResourcesResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public PermissionRelatedResourcesResponseData build(Page<PermissionResource> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<PermissionResource> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRemoveResponseData.java
deleted file mode 100644
index d54d0a1..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionRemoveResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Permission;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class PermissionRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 216116075050505802L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private PermissionRemoveResponseData() {
-    
-  }
-  
-  public static PermissionRemoveResponseData build(Permission entity) {
-    PermissionRemoveResponseData data = new PermissionRemoveResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionTreeResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionTreeResponseData.java
deleted file mode 100644
index 1735549..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionTreeResponseData.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class PermissionTreeResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6659447453323545811L;
-  
-  public PermissionTreeResponseData(PermissionTreeNode tree) {
-    this.tree = tree;
-  }
-  
-  @Getter
-  @Setter
-  private PermissionTreeNode tree;
-
-  public static PermissionTreeResponseData of(PermissionTreeNode tree) {
-    PermissionTreeResponseData data = new PermissionTreeResponseData(tree);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionUpdateResponseData.java
deleted file mode 100644
index 806c2c6..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/PermissionUpdateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class PermissionUpdateResponseData extends Permission implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7627522286872083527L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private PermissionUpdateResponseData() {
-
-  }
-
-  public static PermissionUpdateResponseData build(Permission entity) {
-    PermissionUpdateResponseData data = new PermissionUpdateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceCreateResponseData.java
deleted file mode 100644
index 1a07eb1..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceCreateResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ResourceCreateResponseData extends Resource implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1679712204106541555L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ResourceCreateResponseData() {
-
-  }
-
-  public static ResourceCreateResponseData build(Resource entity) {
-    ResourceCreateResponseData data = new ResourceCreateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceLoadResponseData.java
deleted file mode 100644
index 289e776..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceLoadResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ResourceLoadResponseData extends Resource implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8194462780086471511L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ResourceLoadResponseData() {
-
-  }
-
-  public static ResourceLoadResponseData of(Resource entity) {
-    ResourceLoadResponseData data = new ResourceLoadResponseData();
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceQueryResponseData.java
deleted file mode 100644
index b591899..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceQueryResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.Resource;
-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 ResourceQueryResponseData implements IApiQueryResponseData<Resource> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 241098548786558434L;
-
-  private ResourceQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static ResourceQueryResponseData of(IApiQueryRequest queryRequest) {
-    ResourceQueryResponseData configQueryResponse = new ResourceQueryResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public ResourceQueryResponseData build(Page<Resource> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Resource> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceRemoveResponseData.java
deleted file mode 100644
index ecc9988..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceRemoveResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Resource;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class ResourceRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 2847742767960670522L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ResourceRemoveResponseData() {
-    
-  }
-  
-  public static ResourceRemoveResponseData build(Resource entity) {
-    ResourceRemoveResponseData data = new ResourceRemoveResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceUpdateResponseData.java
deleted file mode 100644
index f6c4292..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/ResourceUpdateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class ResourceUpdateResponseData extends Resource implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 893314081061207360L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private ResourceUpdateResponseData() {
-
-  }
-
-  public static ResourceUpdateResponseData build(Resource entity) {
-    ResourceUpdateResponseData data = new ResourceUpdateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleCreateResponseData.java
deleted file mode 100644
index bae356d..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleCreateResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class RoleCreateResponseData extends Role implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6548339240060091209L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private RoleCreateResponseData() {
-
-  }
-
-  public static RoleCreateResponseData build(Role entity) {
-    RoleCreateResponseData data = new RoleCreateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleDeleteBatchResponseData.java
deleted file mode 100644
index 61776d3..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleDeleteBatchResponseData.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-/**
- * @author loie
- */
-public class RoleDeleteBatchResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7775951512990321469L;
-
-  @Getter
-  @Setter
-  private List<String> ids;
-
-  private RoleDeleteBatchResponseData() {
-    
-  }
-  
-  public static RoleDeleteBatchResponseData build(List<String> ids) {
-    RoleDeleteBatchResponseData data = new RoleDeleteBatchResponseData();
-    data.setIds(ids);
-    
-    return data;
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleLoadResponseData.java
deleted file mode 100644
index bbbc439..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleLoadResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class RoleLoadResponseData extends Role implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 57708002489387653L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private RoleLoadResponseData() {
-
-  }
-
-  public static RoleLoadResponseData of(Role entity) {
-    RoleLoadResponseData data = new RoleLoadResponseData();
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleQueryResponseData.java
deleted file mode 100644
index 24d6a09..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleQueryResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.Role;
-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 RoleQueryResponseData implements IApiQueryResponseData<Role> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 2542992897241822185L;
-
-  private RoleQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static RoleQueryResponseData of(IApiQueryRequest queryRequest) {
-    RoleQueryResponseData configQueryResponse = new RoleQueryResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public RoleQueryResponseData build(Page<Role> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Role> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateAccountsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateAccountsResponseData.java
deleted file mode 100644
index f137972..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateAccountsResponseData.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class RoleRelateAccountsResponseData implements IApiResponseData {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1732402839300368775L;
-
-  @Getter
-  @Setter
-  private String message;
-
-  public RoleRelateAccountsResponseData(String message) {
-    this.message = message;
-  }
-
-  public static RoleRelateAccountsResponseData of(String message) {
-    RoleRelateAccountsResponseData data = new RoleRelateAccountsResponseData(message);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateGroupsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateGroupsResponseData.java
deleted file mode 100644
index 5c752ae..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelateGroupsResponseData.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class RoleRelateGroupsResponseData implements IApiResponseData {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -248658847598115689L;
-
-  @Getter
-  @Setter
-  private String message;
-
-  public RoleRelateGroupsResponseData(String message) {
-    this.message = message;
-  }
-
-  public static RoleRelateGroupsResponseData of(String message) {
-    RoleRelateGroupsResponseData data = new RoleRelateGroupsResponseData(message);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatePermissionsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatePermissionsResponseData.java
deleted file mode 100644
index da7c9c2..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatePermissionsResponseData.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class RoleRelatePermissionsResponseData implements IApiResponseData {
-  
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5398594379968952750L;
-
-  @Getter
-  @Setter
-  private String message;
-
-  public RoleRelatePermissionsResponseData(String message) {
-    this.message = message;
-  }
-
-  public static RoleRelatePermissionsResponseData of(String message) {
-    RoleRelatePermissionsResponseData data = new RoleRelatePermissionsResponseData(message);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedAccountsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedAccountsResponseData.java
deleted file mode 100644
index a906d6e..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedAccountsResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.AccountRole;
-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 RoleRelatedAccountsResponseData implements IApiQueryResponseData<AccountRole> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5272966183728979505L;
-
-  private RoleRelatedAccountsResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static RoleRelatedAccountsResponseData of(IApiQueryRequest queryRequest) {
-    RoleRelatedAccountsResponseData configQueryResponse = new RoleRelatedAccountsResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public RoleRelatedAccountsResponseData build(Page<AccountRole> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<AccountRole> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedGroupsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedGroupsResponseData.java
deleted file mode 100644
index cf5dc80..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedGroupsResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
-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 RoleRelatedGroupsResponseData implements IApiQueryResponseData<GroupRole> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1327331843770679868L;
-
-  private RoleRelatedGroupsResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static RoleRelatedGroupsResponseData of(IApiQueryRequest queryRequest) {
-    RoleRelatedGroupsResponseData configQueryResponse = new RoleRelatedGroupsResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public RoleRelatedGroupsResponseData build(Page<GroupRole> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<GroupRole> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedPermissionsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedPermissionsResponseData.java
deleted file mode 100644
index 05ab0c5..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRelatedPermissionsResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.RolePermission;
-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 RoleRelatedPermissionsResponseData implements IApiQueryResponseData<RolePermission> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7556328257191962088L;
-
-  private RoleRelatedPermissionsResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static RoleRelatedPermissionsResponseData of(IApiQueryRequest queryRequest) {
-    RoleRelatedPermissionsResponseData configQueryResponse = new RoleRelatedPermissionsResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public RoleRelatedPermissionsResponseData build(Page<RolePermission> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<RolePermission> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRemoveResponseData.java
deleted file mode 100644
index 3f97566..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleRemoveResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-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.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class RoleRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2556956704425975795L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private RoleRemoveResponseData() {
-    
-  }
-  
-  public static RoleRemoveResponseData build(Role entity) {
-    RoleRemoveResponseData data = new RoleRemoveResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleUpdateResponseData.java
deleted file mode 100644
index 3f5e93f..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RoleUpdateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class RoleUpdateResponseData extends Role implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7822437040348157286L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private RoleUpdateResponseData() {
-
-  }
-
-  public static RoleUpdateResponseData build(Role entity) {
-    RoleUpdateResponseData data = new RoleUpdateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteCreateResponseData.java
deleted file mode 100644
index ea50cd4..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteCreateResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class RouteCreateResponseData extends Route implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -3115757571075013907L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private RouteCreateResponseData() {
-
-  }
-
-  public static RouteCreateResponseData build(Route entity) {
-    RouteCreateResponseData data = new RouteCreateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteDeleteBatchResponseData.java
deleted file mode 100644
index da236b1..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteDeleteBatchResponseData.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-/**
- * @author loie
- */
-public class RouteDeleteBatchResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2204591486919573195L;
-
-  @Getter
-  @Setter
-  private List<String> ids;
-
-  private RouteDeleteBatchResponseData() {
-    
-  }
-  
-  public static RouteDeleteBatchResponseData build(List<String> ids) {
-    RouteDeleteBatchResponseData data = new RouteDeleteBatchResponseData();
-    data.setIds(ids);
-    
-    return data;
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteLoadResponseData.java
deleted file mode 100644
index 5fd52d1..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteLoadResponseData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class RouteLoadResponseData extends Route implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 3295217395256011396L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private RouteLoadResponseData() {
-
-  }
-
-  public static RouteLoadResponseData of(Route entity) {
-    RouteLoadResponseData data = new RouteLoadResponseData();
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteQueryResponseData.java
deleted file mode 100644
index 99d3fb7..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteQueryResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.base.domain.entity.Route;
-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 RouteQueryResponseData implements IApiQueryResponseData<Route> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2632433248197514787L;
-
-  private RouteQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static RouteQueryResponseData of(IApiQueryRequest queryRequest) {
-    RouteQueryResponseData configQueryResponse = new RouteQueryResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return configQueryResponse;
-  }
-  
-  public RouteQueryResponseData build(Page<Route> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Route> items;
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteRemoveResponseData.java
deleted file mode 100644
index 4735d20..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteRemoveResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Route;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class RouteRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -143516413115089421L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private RouteRemoveResponseData() {
-    
-  }
-  
-  public static RouteRemoveResponseData build(Route entity) {
-    RouteRemoveResponseData data = new RouteRemoveResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteUpdateResponseData.java
deleted file mode 100644
index 89ace30..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/admin/response/RouteUpdateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class RouteUpdateResponseData extends Route implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 364945014290674973L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private RouteUpdateResponseData() {
-
-  }
-
-  public static RouteUpdateResponseData build(Route entity) {
-    RouteUpdateResponseData data = new RouteUpdateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountPermissionsResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountPermissionsResponseData.java
deleted file mode 100644
index 3d3aa4c..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountPermissionsResponseData.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
-
-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.vo.response.data.IApiResponseData;
-
-public class AuthnAccountPermissionsResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8276878427539012799L;
-
-  @Getter
-  @Setter
-  public List<Permission> permissions;
-  
-  
-  public static AuthnAccountPermissionsResponseData of(List<Permission> permissions) {
-    AuthnAccountPermissionsResponseData data = new AuthnAccountPermissionsResponseData();
-    
-    data.setPermissions(permissions);
-    
-    return data;
-  }
-  
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResourcesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResourcesResponseData.java
deleted file mode 100644
index 617be41..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResourcesResponseData.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Resource;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class AuthnAccountResourcesResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 4924064418294890589L;
-
-  @Getter
-  @Setter
-  public List<Resource> resources;
-  
-  
-  public static AuthnAccountResourcesResponseData of(List<Resource> resources) {
-    AuthnAccountResourcesResponseData data = new AuthnAccountResourcesResponseData();
-    
-    data.setResources(resources);
-    
-    return data;
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResponseData.java
deleted file mode 100644
index a84f199..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountResponseData.java
+++ /dev/null
@@ -1,19 +0,0 @@
-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;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class AuthnAccountResponseData extends Account implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -289285783805128927L;
-
-  public static AuthnAccountResponseData of(Account entity) {
-    AuthnAccountResponseData data = new AuthnAccountResponseData();
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountRolesResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountRolesResponseData.java
deleted file mode 100644
index 2241c15..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnAccountRolesResponseData.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.entity.Role;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class AuthnAccountRolesResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6588284546370817275L;
-  
-  @Getter
-  @Setter
-  public List<Role> roles;
-  
-  
-  public static AuthnAccountRolesResponseData of(List<Role> roles) {
-    AuthnAccountRolesResponseData data = new AuthnAccountRolesResponseData();
-    
-    data.setRoles(roles);
-    
-    return data;
-  }
-
-}
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
deleted file mode 100644
index 79dae74..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnApplicationsResponseData.java
+++ /dev/null
@@ -1,31 +0,0 @@
-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
deleted file mode 100644
index bca4b9d..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnPermissionRoleListResponseData.java
+++ /dev/null
@@ -1,30 +0,0 @@
-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/authn/response/AuthnResourceRoleListResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnResourceRoleListResponseData.java
deleted file mode 100644
index da6df80..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnResourceRoleListResponseData.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.base.domain.model.ResourceRoleSet;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class AuthnResourceRoleListResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -9178840503146742900L;
-
-  @Getter
-  @Setter
-  public List<ResourceRoleSet> resourceRoleSets;
-  
-  public static AuthnResourceRoleListResponseData of(List<ResourceRoleSet> resourceRoleSets) {
-    AuthnResourceRoleListResponseData data = new AuthnResourceRoleListResponseData();
-    
-    data.setResourceRoleSets(resourceRoleSets);
-    
-    return data;
-  }
-
-}
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
deleted file mode 100644
index 4f503ed..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnRolesResponseData.java
+++ /dev/null
@@ -1,31 +0,0 @@
-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
deleted file mode 100644
index 3c46ae4..0000000
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/authn/response/AuthnRoutesResponseData.java
+++ /dev/null
@@ -1,31 +0,0 @@
-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/.gitignore b/base/domain/.gitignore
deleted file mode 100644
index b83d222..0000000
--- a/base/domain/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/base/domain/pom.xml b/base/domain/pom.xml
deleted file mode 100644
index 0f97255..0000000
--- a/base/domain/pom.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-    <relativePath>../../</relativePath>
-  </parent>
-
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-base-domain</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
-  <name>Supwisdom Backend Framework Base Domain</name>
-  <description>Supwisdom Backend Framework Base Domain project</description>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-core</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-utils</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-framework</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-data-jpa</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-release-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/.gitkeep b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/.gitkeep
+++ /dev/null
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Account.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Account.java
deleted file mode 100644
index 6cca9f9..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Account.java
+++ /dev/null
@@ -1,164 +0,0 @@
-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_ACCOUNT")
-public class Account extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 7955624268022038897L;
-  
-  public static final String STATUS_ENABLED = "1";
-  public static final String STATUS_DISABLED = "0";
-  
-
-  /**
-   * 用户名
-   */
-  @Column(name = "USERNAME", unique = true)
-  private String username;
-  
-  /**
-   * 密码
-   */
-  @Column(name = "PASSWORD")
-  private String password;
-
-  /**
-   * 是否可用,1 可用,0 不可用,默认:1
-   */
-  @Column(name = "ENABLED")
-  private Boolean enabled;
-  /**
-   * 账号未过期,1 未过期,0 过期,默认:1
-   */
-  @Column(name = "ACCOUNT_NON_EXPIRED")
-  private Boolean accountNonExpired;
-  /**
-   * 账号未锁定,1 未锁定,0 锁定,默认:1
-   */
-  @Column(name = "ACCOUNT_NON_LOCKED")
-  private Boolean accountNonLocked;
-  /**
-   * 密码未过期,1 未过期,0 过期,默认:1
-   */
-  @Column(name = "CREDENTIALS_NON_EXPIRED")
-  private Boolean credentialsNonExpired;
-
-  /**
-   * 姓名
-   */
-  @Column(name = "NAME")
-  private String name;
-
-  /**
-   * 备注
-   */
-  @Column(name = "MEMO")
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  @Column(name = "STATUS")
-  private String status;
-
-  /**
-   * 登录手机
-   */
-  @Column(name = "MOBILE", nullable = true)
-  private String mobile;
-  /**
-   * 登录邮箱
-   */
-  @Column(name = "EMAIL", nullable = true)
-  private String email;
-
-  public String getUsername() {
-    return username;
-  }
-
-  public void setUsername(String username) {
-    this.username = username;
-  }
-
-  public String getPassword() {
-    return password;
-  }
-
-  public void setPassword(String password) {
-    this.password = password;
-  }
-
-  public Boolean getEnabled() {
-    return enabled;
-  }
-
-  public void setEnabled(Boolean enabled) {
-    this.enabled = enabled;
-  }
-
-  public Boolean getAccountNonExpired() {
-    return accountNonExpired;
-  }
-
-  public void setAccountNonExpired(Boolean accountNonExpired) {
-    this.accountNonExpired = accountNonExpired;
-  }
-
-  public Boolean getAccountNonLocked() {
-    return accountNonLocked;
-  }
-
-  public void setAccountNonLocked(Boolean accountNonLocked) {
-    this.accountNonLocked = accountNonLocked;
-  }
-
-  public Boolean getCredentialsNonExpired() {
-    return credentialsNonExpired;
-  }
-
-  public void setCredentialsNonExpired(Boolean credentialsNonExpired) {
-    this.credentialsNonExpired = credentialsNonExpired;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public String getStatus() {
-    return status;
-  }
-
-  public void setStatus(String status) {
-    this.status = status;
-  }
-
-  public String getMobile() {
-    return mobile;
-  }
-
-  public void setMobile(String mobile) {
-    this.mobile = mobile;
-  }
-
-  public String getEmail() {
-    return email;
-  }
-
-  public void setEmail(String email) {
-    this.email = email;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/AccountGroup.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/AccountGroup.java
deleted file mode 100644
index f46767b..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/AccountGroup.java
+++ /dev/null
@@ -1,46 +0,0 @@
-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_ACCOUNT_GROUP")
-public class AccountGroup extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -4239845385965871983L;
-
-  /**
-   * 帐号ID
-   */
-  @Column(name = "ACCOUNT_ID")
-  private String accountId;
-
-  /**
-   * 用户组ID
-   */
-  @Column(name = "GROUP_ID")
-  private String groupId;
-
-  public String getAccountId() {
-    return accountId;
-  }
-
-  public void setAccountId(String accountId) {
-    this.accountId = accountId;
-  }
-
-  public String getGroupId() {
-    return groupId;
-  }
-
-  public void setGroupId(String groupId) {
-    this.groupId = groupId;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/AccountRole.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/AccountRole.java
deleted file mode 100644
index b08506a..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/AccountRole.java
+++ /dev/null
@@ -1,46 +0,0 @@
-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_ACCOUNT_ROLE")
-public class AccountRole extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -6158470486381850942L;
-
-  /**
-   * 帐号ID
-   */
-  @Column(name = "ACCOUNT_ID")
-  private String accountId;
-
-  /**
-   * 角色ID
-   */
-  @Column(name = "ROLE_ID")
-  private String roleId;
-
-  public String getAccountId() {
-    return accountId;
-  }
-
-  public void setAccountId(String accountId) {
-    this.accountId = accountId;
-  }
-
-  public String getRoleId() {
-    return roleId;
-  }
-
-  public void setRoleId(String roleId) {
-    this.roleId = roleId;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Application.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Application.java
deleted file mode 100644
index b68fd38..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Application.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.entity;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.entity.ABaseEntity;
-
-@Entity
-@Table(name = "TB_BASE_APPLICATION")
-public class Application extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1874484930838884168L;
-
-  /**
-   * 代码
-   */
-  @Column(name = "CODE")
-  @Getter
-  @Setter
-  private String code;
-
-  /**
-   * 名称
-   */
-  @Column(name = "NAME")
-  @Getter
-  @Setter
-  private String name;
-
-  /**
-   * 备注
-   */
-  @Column(name = "MEMO")
-  @Getter
-  @Setter
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  @Column(name = "STATUS")
-  @Getter
-  @Setter
-  private String status;
-
-  /**
-   * 系统访问地址
-   */
-  @Column(name = "URL", nullable = true)
-  @Getter
-  @Setter
-  private String url;
-
-  /**
-   * SPI接口地址前缀
-   */
-  @Column(name = "SPI_URL_PREFIX", nullable = true)
-  @Getter
-  @Setter
-  private String spiUrlPrefix;
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Config.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Config.java
deleted file mode 100644
index ee78348..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Config.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.entity;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.entity.ABaseEntity;
-
-/**
- * @author loie
- */
-@Entity
-@Table(name = "TB_CONFIG")
-public class Config extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -2721844710909809785L;
-
-  /**
-   * 分类代码
-   */
-  @Getter
-  @Setter
-  @Column(name = "CATEGORY_CODE")
-  private String categoryCode;
-  
-  /**
-   * 分类名称
-   */
-  @Getter
-  @Setter
-  @Column(name = "CATEGORY_NAME")
-  private String categoryName;
-
-  /**
-   * 名称
-   */
-  @Getter
-  @Setter
-  @Column(name = "NAME")
-  private String name;
-
-  /**
-   * 描述
-   */
-  @Getter
-  @Setter
-  @Column(name = "DESCRIPTION")
-  private String description;
-
-  /**
-   * 配置键
-   */
-  @Getter
-  @Setter
-  @Column(name = "CONFIG_KEY")
-  private String configKey;
-
-  /**
-   * 配置值
-   */
-  @Getter
-  @Setter
-  @Column(name = "CONFIG_VALUE")
-  private String configValue;
-
-  /**
-   * 是否可修改
-   */
-  @Getter
-  @Setter
-  @Column(name = "EDITABLE")
-  private Boolean editable;
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Group.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Group.java
deleted file mode 100644
index 5e1de9a..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Group.java
+++ /dev/null
@@ -1,74 +0,0 @@
-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(name = "Group_")
-@Table(name = "TB_BASE_GROUP")
-public class Group extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 4260326816456622523L;
-
-  /**
-   * 代码
-   */
-  @Column(name = "CODE")
-  private String code;
-
-  /**
-   * 名称
-   */
-  @Column(name = "NAME")
-  private String name;
-
-  /**
-   * 备注
-   */
-  @Column(name = "MEMO")
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  @Column(name = "STATUS")
-  private String status;
-
-  public String getCode() {
-    return code;
-  }
-
-  public void setCode(String code) {
-    this.code = code;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public String getMemo() {
-    return memo;
-  }
-
-  public void setMemo(String memo) {
-    this.memo = memo;
-  }
-
-  public String getStatus() {
-    return status;
-  }
-
-  public void setStatus(String status) {
-    this.status = status;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/GroupRole.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/GroupRole.java
deleted file mode 100644
index dafbcb5..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/GroupRole.java
+++ /dev/null
@@ -1,46 +0,0 @@
-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_GROUP_ROLE")
-public class GroupRole extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -3141266845902556712L;
-
-  /**
-   * 用户组ID
-   */
-  @Column(name = "GROUP_ID")
-  private String groupId;
-
-  /**
-   * 角色ID
-   */
-  @Column(name = "ROLE_ID")
-  private String roleId;
-
-  public String getGroupId() {
-    return groupId;
-  }
-
-  public void setGroupId(String groupId) {
-    this.groupId = groupId;
-  }
-
-  public String getRoleId() {
-    return roleId;
-  }
-
-  public void setRoleId(String roleId) {
-    this.roleId = roleId;
-  }
-
-}
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
deleted file mode 100644
index df33e6e..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java
+++ /dev/null
@@ -1,210 +0,0 @@
-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")
-public class Permission extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8834200833972243635L;
-  
-  public static final String ROOT_PARENT_ID = "0";
-  
-  public static final String APPLICATION_ID = "1";
-
-  public static final String TYPE_APPLICATION = "1";
-  public static final String TYPE_MENU = "2";
-  public static final String TYPE_OPERATION = "3";
-  
-  public static final Integer DEFAULT_ORDER = 0;
-
-  /**
-   * 代码
-   */
-  @Column(name = "CODE")
-  private String code;
-
-  /**
-   * 名称
-   */
-  @Column(name = "NAME")
-  private String name;
-
-  /**
-   * 备注
-   */
-  @Column(name = "MEMO", nullable = true)
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  @Column(name = "STATUS")
-  private String status;
-
-  /**
-   * 系统ID
-   */
-  @Column(name = "APPLICATION_ID", nullable = true)
-  private String applicationId;
-
-  /**
-   * 父级ID
-   */
-  @Column(name = "PARENT_ID")
-  private String parentId;
-
-  /**
-   * 类型(1 应用,2 菜单,3 操作)
-   */
-  @Column(name = "TYPE_")
-  private String type;
-
-  /**
-   * 菜单图标
-   */
-  @Column(name = "ICON", nullable = true)
-  private String icon;
-
-  /**
-   * URL地址
-   */
-  @Column(name = "URL", nullable = true)
-  private String url;
-
-  /**
-   * 排序
-   */
-  @Column(name = "ORDER_")
-  private Integer order;
-
-  /**
-   * 层次
-   */
-  @Column(name = "LEVEL_")
-  private Integer level;
-
-  /**
-   * 左序
-   */
-  @Column(name = "LFT")
-  private Integer lft;
-
-  /**
-   * 右序
-   */
-  @Column(name = "RGT")
-  private Integer rgt;
-
-  public String getCode() {
-    return code;
-  }
-
-  public void setCode(String code) {
-    this.code = code;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public String getMemo() {
-    return memo;
-  }
-
-  public void setMemo(String memo) {
-    this.memo = memo;
-  }
-
-  public String getStatus() {
-    return status;
-  }
-
-  public void setStatus(String status) {
-    this.status = status;
-  }
-
-  public String getType() {
-    return type;
-  }
-
-  public void setType(String type) {
-    this.type = type;
-  }
-
-  public String getIcon() {
-    return icon;
-  }
-
-  public void setIcon(String icon) {
-    this.icon = icon;
-  }
-
-  public String getUrl() {
-    return url;
-  }
-
-  public void setUrl(String url) {
-    this.url = url;
-  }
-
-  public String getApplicationId() {
-    return applicationId;
-  }
-
-  public void setApplicationId(String applicationId) {
-    this.applicationId = applicationId;
-  }
-
-  public String getParentId() {
-    return parentId;
-  }
-
-  public void setParentId(String parentId) {
-    this.parentId = parentId;
-  }
-
-  public Integer getOrder() {
-    return order;
-  }
-
-  public void setOrder(Integer order) {
-    this.order = order;
-  }
-
-  public Integer getLevel() {
-    return level;
-  }
-
-  public void setLevel(Integer level) {
-    this.level = level;
-  }
-
-  public Integer getLft() {
-    return lft;
-  }
-
-  public void setLft(Integer lft) {
-    this.lft = lft;
-  }
-
-  public Integer getRgt() {
-    return rgt;
-  }
-
-  public void setRgt(Integer rgt) {
-    this.rgt = rgt;
-  }
-
-}
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
deleted file mode 100644
index 7ec0413..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/PermissionResource.java
+++ /dev/null
@@ -1,46 +0,0 @@
-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
deleted file mode 100644
index 8f8f8a4..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Resource.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.entity;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.entity.ABaseEntity;
-
-@Entity
-@Table(name = "TB_BASE_RESOURCE")
-public class Resource extends ABaseEntity {
-
-  /**
-   * 
-   */
-  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
-
-  /**
-   * 代码
-   */
-  @Getter
-  @Setter
-  @Column(name = "CODE")
-  private String code;
-
-  /**
-   * 名称
-   */
-  @Getter
-  @Setter
-  @Column(name = "NAME")
-  private String name;
-
-  /**
-   * 备注
-   */
-  @Getter
-  @Setter
-  @Column(name = "MEMO", nullable = true)
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  @Getter
-  @Setter
-  @Column(name = "STATUS")
-  private String status;
-
-  /**
-   * 请求方式
-   */
-  @Getter
-  @Setter
-  @Column(name = "METHOD")
-  private String method;
-
-  /**
-   * 请求路径
-   */
-  @Getter
-  @Setter
-  @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/entity/Role.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Role.java
deleted file mode 100644
index c75cbe9..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Role.java
+++ /dev/null
@@ -1,74 +0,0 @@
-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_ROLE")
-public class Role extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5470129732727732514L;
-
-  /**
-   * 代码
-   */
-  @Column(name = "CODE")
-  private String code;
-
-  /**
-   * 名称
-   */
-  @Column(name = "NAME")
-  private String name;
-
-  /**
-   * 备注
-   */
-  @Column(name = "MEMO")
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  @Column(name = "STATUS")
-  private String status;
-
-  public String getCode() {
-    return code;
-  }
-
-  public void setCode(String code) {
-    this.code = code;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public String getMemo() {
-    return memo;
-  }
-
-  public void setMemo(String memo) {
-    this.memo = memo;
-  }
-
-  public String getStatus() {
-    return status;
-  }
-
-  public void setStatus(String status) {
-    this.status = status;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/RolePermission.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/RolePermission.java
deleted file mode 100644
index 19ba5b4..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/RolePermission.java
+++ /dev/null
@@ -1,46 +0,0 @@
-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_ROLE_PERMISSION")
-public class RolePermission extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5293251541687343949L;
-
-  /**
-   * 角色ID
-   */
-  @Column(name = "ROLE_ID")
-  private String roleId;
-
-  /**
-   * 权限ID
-   */
-  @Column(name = "PERMISSION_ID")
-  private String permissionId;
-
-  public String getRoleId() {
-    return roleId;
-  }
-
-  public void setRoleId(String roleId) {
-    this.roleId = roleId;
-  }
-
-  public String getPermissionId() {
-    return permissionId;
-  }
-
-  public void setPermissionId(String permissionId) {
-    this.permissionId = permissionId;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Route.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Route.java
deleted file mode 100644
index 6a58e92..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Route.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.entity;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.entity.ABaseEntity;
-
-@Entity
-@Table(name = "TB_BASE_ROUTE")
-public class Route extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7435404154376360786L;
-
-  /**
-   * 代码
-   */
-  @Column(name = "CODE")
-  @Getter
-  @Setter
-  private String code;
-
-  /**
-   * 名称
-   */
-  @Column(name = "NAME")
-  @Getter
-  @Setter
-  private String name;
-
-  /**
-   * 备注
-   */
-  @Column(name = "MEMO")
-  @Getter
-  @Setter
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  @Column(name = "STATUS")
-  @Getter
-  @Setter
-  private String status;
-
-  /**
-   * 路径前缀
-   */
-  @Column(name = "PATH_PREFIX")
-  @Getter
-  @Setter
-  private String pathPrefix;
-
-  /**
-   * 路由地址
-   */
-  @Column(name = "URL")
-  @Getter
-  @Setter
-  private String url;
-
-  /**
-   * 是否排除前缀
-   */
-  @Column(name = "STRIP_PREFIX")
-  @Getter
-  @Setter
-  private Boolean stripPrefix;
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/exception/.gitkeep b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/exception/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/exception/.gitkeep
+++ /dev/null
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/exception/ConfigException.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/exception/ConfigException.java
deleted file mode 100644
index 77fee05..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/exception/ConfigException.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.exception;
-
-import com.supwisdom.institute.backend.common.framework.exception.BaseException;
-
-public class ConfigException extends BaseException {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8112079911386045865L;
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/.gitkeep b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/.gitkeep
+++ /dev/null
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
deleted file mode 100644
index a95a0f7..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/PermissionRoleSet.java
+++ /dev/null
@@ -1,31 +0,0 @@
-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/PermissionTreeNode.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/PermissionTreeNode.java
deleted file mode 100644
index 233de5f..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/PermissionTreeNode.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.model;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-
-import com.supwisdom.institute.backend.base.domain.entity.Permission;
-import com.supwisdom.institute.backend.common.framework.model.IModel;
-
-@ToString
-public class PermissionTreeNode extends Permission implements IModel {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 6984458902464386215L;
-  
-  @Getter
-  @Setter
-  List<PermissionTreeNode> children;
-
-}
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
deleted file mode 100644
index 598b30d..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/ResourceRoleSet.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.model;
-
-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 {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 2220390504237330816L;
-
-  @Getter
-  @Setter
-  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/.gitkeep b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/.gitkeep
+++ /dev/null
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountGroupRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountGroupRepository.java
deleted file mode 100644
index be61930..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountGroupRepository.java
+++ /dev/null
@@ -1,191 +0,0 @@
-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.Account;
-import com.supwisdom.institute.backend.base.domain.entity.AccountGroup;
-import com.supwisdom.institute.backend.base.domain.entity.Group;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface AccountGroupRepository extends BaseJpaRepository<AccountGroup> {
-
-  public default Page<AccountGroup> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-    AccountGroup probe = new AccountGroup();
-    if (mapBean != null) {
-      probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
-      probe.setAccountId(MapBeanUtils.getString(mapBean, "accountId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<AccountGroup> page = this.findAll(example, pageRequest);
-
-    return page;
-  }
-
-  public default Page<AccountGroup> selectAccountGroups(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    AccountGroup probe = new AccountGroup();
-    if (mapBean != null) {
-      probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
-      probe.setAccountId(MapBeanUtils.getString(mapBean, "accountId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<AccountGroup> page = this.findAll(example, pageRequest); // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public default void relateAccountGroups(Account account, List<AccountGroup> accountGroups) {
-
-    List<AccountGroup> existAccountGroups = this.selectListByAccountId(account.getId());
-
-    Map<String, AccountGroup> existMapAccountGroups = new LinkedHashMap<String, AccountGroup>();
-    for (AccountGroup accountGroup : existAccountGroups) {
-      String k = String.format("%s", accountGroup.getGroupId());
-      existMapAccountGroups.put(k, accountGroup);
-    }
-
-    for (AccountGroup accountGroup : accountGroups) {
-      String k = String.format("%s", accountGroup.getGroupId());
-
-      if (existMapAccountGroups.containsKey(k)) {
-        existMapAccountGroups.remove(k);
-      } else {
-        accountGroup.setCompanyId(account.getCompanyId());
-        accountGroup.setAccountId(account.getId());
-
-        this.insert(accountGroup);
-      }
-    }
-
-    for (AccountGroup accountGroup : existMapAccountGroups.values()) {
-      this.deleteById(accountGroup.getId());
-    }
-  }
-
-  public default List<AccountGroup> selectListByAccountId(String accountId) {
-
-    AccountGroup probe = new AccountGroup();
-    probe.setAccountId(accountId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-
-    List<AccountGroup> accountGroups = this.findAll(example);
-
-    return accountGroups;
-  }
-
-  public default void relateGroupAccounts(Group group, List<AccountGroup> accountGroups) {
-
-    List<AccountGroup> existGroupAccounts = this.selectListByGroupId(group.getId());
-
-    Map<String, AccountGroup> existMapGroupAccounts = new LinkedHashMap<String, AccountGroup>();
-    for (AccountGroup accountGroup : existGroupAccounts) {
-      String k = String.format("%s", accountGroup.getAccountId());
-      existMapGroupAccounts.put(k, accountGroup);
-    }
-
-    for (AccountGroup accountGroup : accountGroups) {
-      String k = String.format("%s", accountGroup.getAccountId());
-
-      if (existMapGroupAccounts.containsKey(k)) {
-        existMapGroupAccounts.remove(k);
-      } else {
-        accountGroup.setCompanyId(group.getCompanyId());
-        accountGroup.setGroupId(group.getId());
-
-        this.insert(accountGroup);
-      }
-    }
-
-    for (AccountGroup accountGroup : existMapGroupAccounts.values()) {
-      this.deleteById(accountGroup.getId());
-    }
-  }
-
-  public default List<AccountGroup> selectListByGroupId(String groupId) {
-
-    AccountGroup probe = new AccountGroup();
-    probe.setGroupId(groupId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-
-    List<AccountGroup> accountGroups = this.findAll(example);
-
-    return accountGroups;
-  }
-  
-  public default AccountGroup selectOneByAccountGroup(String accountId, String groupId) {
-
-    AccountGroup probe = new AccountGroup();
-    probe.setAccountId(accountId);
-    probe.setGroupId(groupId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        ;
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-    
-    Optional<AccountGroup> o = this.findOne(example);
-    
-    return o.isPresent() ? o.get() : null;
-  }
-
-  public default void addAccountGroup(String accountId, String groupId) {
-    
-    AccountGroup accountGroup = this.selectOneByAccountGroup(accountId, groupId);
-    
-    if (accountGroup == null) {
-      accountGroup = new AccountGroup();
-      //accountGroup.setCompanyId(companyId);
-      accountGroup.setAccountId(accountId);
-      accountGroup.setGroupId(groupId);
-      
-      this.insert(accountGroup);
-    }
-  }
-
-  public default void removeAccountGroup(String accountId, String groupId) {
-    
-    AccountGroup accountGroup = this.selectOneByAccountGroup(accountId, groupId);
-    
-    if (accountGroup != null) {
-      this.deleteById(accountGroup.getId());
-    }
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountRepository.java
deleted file mode 100644
index e4d9e07..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountRepository.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.repo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.data.domain.Example;
-import org.springframework.data.domain.ExampleMatcher;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Repository;
-import org.springframework.util.StringUtils;
-
-import com.supwisdom.institute.backend.base.domain.entity.Account;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface AccountRepository extends BaseJpaRepository<Account> {
-  
-//  public default Page<Account> selectPageList(int pageIndex, int pageSize, Account probe) {
-//    
-//    ExampleMatcher matcher = ExampleMatcher.matching()
-//        .withMatcher("username", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("status", ExampleMatcher.GenericPropertyMatchers.exact());
-//    
-//    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-//    Example<Account> example = Example.of(probe, matcher);
-//    
-//    Page<Account> page = this.findAll(example, pageRequest);
-//    
-//    return page;
-//  }
-  
-  
-  @Override
-  public default Specification<Account> convertToSpec(Map<String, Object> mapBean) {
-    
-    Specification<Account> spec = new Specification<Account>() {
-
-      /**
-       * 
-       */
-      private static final long serialVersionUID = 9071470982419099273L;
-
-      @Override
-      public Predicate toPredicate(Root<Account> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        
-        if (mapBean != null) {
-
-          if (MapBeanUtils.getBoolean(mapBean, "deleted") != null) {
-            predicates.add(criteriaBuilder.equal(root.get("deleted"), MapBeanUtils.getBoolean(mapBean, "deleted")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "username"))) {
-            predicates.add(criteriaBuilder.like(root.get("username"), "%" + MapBeanUtils.getString(mapBean, "username") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) {
-            predicates.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "name") + "%"));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "status"))) {
-            predicates.add(criteriaBuilder.equal(root.get("status"), MapBeanUtils.getString(mapBean, "status")));
-          }
-          
-//          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "grantTimeBegin"))) {
-//            String grantTimeBegin = MapBeanUtils.getString(mapBean, "grantTimeBegin");
-//            Date d = DateUtil.parseDate(grantTimeBegin+" 00:00:00", "yyyy-MM-dd HH:mm:ss");
-//            
-//            if (d != null) {
-//              predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("grantTime"), d));
-//            }
-//          }
-//
-//          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "grantTimeEnd"))) {
-//            String grantTimeEnd = MapBeanUtils.getString(mapBean, "grantTimeEnd");
-//            Date d = DateUtil.parseDate(grantTimeEnd+" 23:59:59", "yyyy-MM-dd HH:mm:ss");
-//            
-//            if (d != null) {
-//              predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("grantTime"), d));
-//            }
-//          }
-
-          List<Predicate> predicatesKeyword = new ArrayList<>();
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "keyword"))) {
-            predicatesKeyword.add(criteriaBuilder.like(root.get("username"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            
-            predicates.add(criteriaBuilder.or(predicatesKeyword.toArray(new Predicate[predicatesKeyword.size()])));
-          }
-        }
-        
-        return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-      }
-      
-    };
-    
-    return spec;
-  }
-  
-  
-//  @Override
-//  public default Page<Account> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-//    if (loadAll) {
-//      pageIndex = 0;
-//      pageSize = Integer.MAX_VALUE;
-//    }
-//    
-//    Account probe = new Account();
-//    if (mapBean != null) {
-//      probe.setDeleted(MapBeanUtils.getBoolean(mapBean, "deleted"));
-//      probe.setUsername(MapBeanUtils.getString(mapBean, "username"));
-//      probe.setName(MapBeanUtils.getString(mapBean, "name"));
-//      probe.setStatus(MapBeanUtils.getString(mapBean, "status"));
-//    }
-//    
-//    ExampleMatcher matcher = ExampleMatcher.matching()
-//        .withMatcher("deleted", ExampleMatcher.GenericPropertyMatchers.exact())
-//        .withMatcher("username", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("status", ExampleMatcher.GenericPropertyMatchers.exact());
-//    
-//    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-//    Example<Account> example = Example.of(probe, matcher);
-//    
-//    Page<Account> page = this.findAll(example, pageRequest);
-//    
-//    return page;
-//  }
-  
-  /*
-  public default User selectById(String id) {
-    
-    try {
-      Optional<User> entity = this.findById(id);
-      
-      return entity.get();
-    } catch(RuntimeException e) {
-      System.out.println("RuntimeException:"+e.getMessage());
-    } catch(Exception e) {
-      System.out.println("Exception:"+e.getMessage());
-    }
-    
-    return null;
-  }
-  
-  public default User insert(User entity) {
-    
-    if (entity.getCompanyId() == null || entity.getCompanyId().isEmpty()) {
-      entity.setCompanyId("1");
-    }
-    
-    entity.setDeleted(false);
-    //entity.setAddAccount(AuthUtil.getRemoteUser());
-    entity.setAddTime(Calendar.getInstance().getTime());
-    
-    User e = this.save(entity);
-    
-    return e;
-  }
-  
-  public default User update(User entity) {
-    
-    //entity.setEditAccount(AuthUtil.getRemoteUser());
-    entity.setEditTime(Calendar.getInstance().getTime());
-    
-    User e = this.save(entity);
-    
-    return e;
-  }
-  */
-  
-  public default Account selectByUsername(String username) {
-    Account probe = new Account();
-    probe.setUsername(username);
-    
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("username", ExampleMatcher.GenericPropertyMatchers.exact());
-    
-    Example<Account> example = Example.of(probe, matcher);
-    
-    Optional<Account> u = this.findOne(example);
-    
-    if (u.isPresent()) {
-      return u.get();
-    }
-    
-    return null;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountRoleRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountRoleRepository.java
deleted file mode 100644
index 503f3b5..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/AccountRoleRepository.java
+++ /dev/null
@@ -1,191 +0,0 @@
-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.Account;
-import com.supwisdom.institute.backend.base.domain.entity.AccountRole;
-import com.supwisdom.institute.backend.base.domain.entity.Role;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface AccountRoleRepository extends BaseJpaRepository<AccountRole> {
-
-  public default Page<AccountRole> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    AccountRole probe = new AccountRole();
-    if (mapBean != null) {
-      probe.setAccountId(MapBeanUtils.getString(mapBean, "accountId"));
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-    Example<AccountRole> example = Example.of(probe, matcher);
-
-    Page<AccountRole> page = this.findAll(example, pageRequest);
-
-    return page;
-  }
-
-  public default Page<AccountRole> selectAccountRoles(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    AccountRole probe = new AccountRole();
-    if (mapBean != null) {
-      probe.setAccountId(MapBeanUtils.getString(mapBean, "accountId"));
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountRole> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<AccountRole> page = this.findAll(example, pageRequest); // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public default void relateAccountRoles(Account account, List<AccountRole> accountRoles) {
-
-    List<AccountRole> existAccountRoles = this.selectListByAccountId(account.getId());
-
-    Map<String, AccountRole> existMapAccountRoles = new LinkedHashMap<String, AccountRole>();
-    for (AccountRole accountRole : existAccountRoles) {
-      String k = String.format("%s", accountRole.getRoleId());
-      existMapAccountRoles.put(k, accountRole);
-    }
-
-    for (AccountRole accountRole : accountRoles) {
-      String k = String.format("%s", accountRole.getRoleId());
-
-      if (existMapAccountRoles.containsKey(k)) {
-        existMapAccountRoles.remove(k);
-      } else {
-        accountRole.setCompanyId(account.getCompanyId());
-        accountRole.setAccountId(account.getId());
-
-        this.insert(accountRole);
-      }
-    }
-
-    for (AccountRole accountRole : existMapAccountRoles.values()) {
-      this.deleteById(accountRole.getId());
-    }
-  }
-
-  public default List<AccountRole> selectListByAccountId(String accountId) {
-
-    AccountRole probe = new AccountRole();
-    probe.setAccountId(accountId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("accountId",
-        ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountRole> example = Example.of(probe, matcher);
-
-    List<AccountRole> accountRoles = this.findAll(example);
-
-    return accountRoles;
-  }
-
-  public default void relateRoleAccounts(Role role, List<AccountRole> accountRoles) {
-
-    List<AccountRole> existRoleAccounts = this.selectListByRoleId(role.getId());
-
-    Map<String, AccountRole> existMapRoleAccounts = new LinkedHashMap<String, AccountRole>();
-    for (AccountRole accountRole : existRoleAccounts) {
-      String k = String.format("%s", accountRole.getAccountId());
-      existMapRoleAccounts.put(k, accountRole);
-    }
-
-    for (AccountRole accountRole : accountRoles) {
-      String k = String.format("%s", accountRole.getAccountId());
-
-      if (existMapRoleAccounts.containsKey(k)) {
-        existMapRoleAccounts.remove(k);
-      } else {
-        accountRole.setCompanyId(role.getCompanyId());
-        accountRole.setRoleId(role.getId());
-
-        this.insert(accountRole);
-      }
-    }
-
-    for (AccountRole accountRole : existMapRoleAccounts.values()) {
-      this.deleteById(accountRole.getId());
-    }
-  }
-
-  public default List<AccountRole> selectListByRoleId(String roleId) {
-
-    AccountRole probe = new AccountRole();
-    probe.setRoleId(roleId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("roleId",
-        ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountRole> example = Example.of(probe, matcher);
-
-    List<AccountRole> accountRoles = this.findAll(example);
-
-    return accountRoles;
-  }
-  
-  public default AccountRole selectOneByAccountRole(String accountId, String roleId) {
-
-    AccountRole probe = new AccountRole();
-    probe.setAccountId(accountId);
-    probe.setRoleId(roleId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
-        ;
-
-    Example<AccountRole> example = Example.of(probe, matcher);
-    
-    Optional<AccountRole> o = this.findOne(example);
-    
-    return o.isPresent() ? o.get() : null;
-  }
-
-  public default void addAccountRole(String accountId, String roleId) {
-
-    AccountRole accountRole = this.selectOneByAccountRole(accountId, roleId);
-    
-    if (accountRole == null) {
-      accountRole = new AccountRole();
-      //accountRole.setCompanyId(companyId);
-      accountRole.setAccountId(accountId);
-      accountRole.setRoleId(roleId);
-      
-      this.insert(accountRole);
-    }
-  }
-
-  public default void removeAccountRole(String accountId, String roleId) {
-
-    AccountRole accountRole = this.selectOneByAccountRole(accountId, roleId);
-    
-    if (accountRole != null) {
-      this.deleteById(accountRole.getId());
-    }
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/ApplicationRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/ApplicationRepository.java
deleted file mode 100644
index 3e1b6ea..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/ApplicationRepository.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.repo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Repository;
-import org.springframework.util.StringUtils;
-
-import com.supwisdom.institute.backend.base.domain.entity.Application;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface ApplicationRepository extends BaseJpaRepository<Application> {
-  
-  @Override
-  public default Specification<Application> convertToSpec(Map<String, Object> mapBean) {
-    
-    Specification<Application> spec = new Specification<Application>() {
-
-      /**
-       * 
-       */
-      private static final long serialVersionUID = -263282246904382286L;
-
-      @Override
-      public Predicate toPredicate(Root<Application> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        
-        if (mapBean != null) {
-
-          if (MapBeanUtils.getBoolean(mapBean, "deleted") != null) {
-            predicates.add(criteriaBuilder.equal(root.get("deleted"), MapBeanUtils.getBoolean(mapBean, "deleted")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "code"))) {
-            predicates.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "code") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) {
-            predicates.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "name") + "%"));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "status"))) {
-            predicates.add(criteriaBuilder.equal(root.get("status"), MapBeanUtils.getString(mapBean, "status")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "url"))) {
-            predicates.add(criteriaBuilder.like(root.get("url"), "%" + MapBeanUtils.getString(mapBean, "url") + "%"));
-          }
-          
-          List<Predicate> predicatesKeyword = new ArrayList<>();
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "keyword"))) {
-            predicatesKeyword.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            
-            predicates.add(criteriaBuilder.or(predicatesKeyword.toArray(new Predicate[predicatesKeyword.size()])));
-          }
-        }
-        
-        return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-      }
-      
-    };
-    
-    return spec;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/ConfigRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/ConfigRepository.java
deleted file mode 100644
index 052115e..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/ConfigRepository.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.repo;
-
-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.Config;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * @author loie
- */
-@Repository
-public interface ConfigRepository extends BaseJpaRepository<Config> {
-  
-  public default Page<Config> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    Config probe = new Config();
-    if (mapBean != null) {
-      probe.setDeleted(MapBeanUtils.getBoolean(mapBean, "deleted"));
-      probe.setCategoryCode(MapBeanUtils.getString(mapBean, "categoryCode"));
-      probe.setCategoryName(MapBeanUtils.getString(mapBean, "categoryName"));
-      probe.setName(MapBeanUtils.getString(mapBean, "name"));
-      probe.setDescription(MapBeanUtils.getString(mapBean, "description"));
-      probe.setConfigKey(MapBeanUtils.getString(mapBean, "configKey"));
-      probe.setEditable(MapBeanUtils.getBoolean(mapBean, "editable"));
-    }
-    
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("deleted", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("categoryCode", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("categoryName", ExampleMatcher.GenericPropertyMatchers.contains())
-        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
-        .withMatcher("description", ExampleMatcher.GenericPropertyMatchers.contains())
-        .withMatcher("configKey", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("editable", ExampleMatcher.GenericPropertyMatchers.exact())
-    ;
-    
-    if (loadAll) {
-      pageIndex = 0;
-      pageSize = Integer.MAX_VALUE;
-    }
-    
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-    Example<Config> example = Example.of(probe, matcher);
-    
-    Page<Config> page = this.findAll(example, pageRequest);
-    
-    return page;
-  }
-
-  public default Config selectByCategoryKey(String categoryCode, String configKey) {
-    Config probe = new Config();
-    
-    probe.setDeleted(false);
-    probe.setCategoryCode(categoryCode);
-    probe.setConfigKey(configKey);
-    
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("deleted", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("categoryCode", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("configKey", ExampleMatcher.GenericPropertyMatchers.exact())
-    ;
-    
-    Example<Config> example = Example.of(probe, matcher);
-    
-    Optional<Config> config = this.findOne(example);
-    
-    return config.isPresent() ? config.get() : null;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/GroupRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/GroupRepository.java
deleted file mode 100644
index 75ad2b4..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/GroupRepository.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.repo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Repository;
-import org.springframework.util.StringUtils;
-
-import com.supwisdom.institute.backend.base.domain.entity.Group;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface GroupRepository extends BaseJpaRepository<Group> {
-
-
-  @Override
-  public default Specification<Group> convertToSpec(Map<String, Object> mapBean) {
-    
-    Specification<Group> spec = new Specification<Group>() {
-
-      /**
-       * 
-       */
-      private static final long serialVersionUID = 5467747850605022253L;
-
-      @Override
-      public Predicate toPredicate(Root<Group> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        
-        if (mapBean != null) {
-
-          if (MapBeanUtils.getBoolean(mapBean, "deleted") != null) {
-            predicates.add(criteriaBuilder.equal(root.get("deleted"), MapBeanUtils.getBoolean(mapBean, "deleted")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "code"))) {
-            predicates.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "code") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) {
-            predicates.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "name") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "memo"))) {
-            predicates.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "memo") + "%"));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "status"))) {
-            predicates.add(criteriaBuilder.equal(root.get("status"), MapBeanUtils.getString(mapBean, "status")));
-          }
-
-          List<Predicate> predicatesKeyword = new ArrayList<>();
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "keyword"))) {
-            predicatesKeyword.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            
-            predicates.add(criteriaBuilder.or(predicatesKeyword.toArray(new Predicate[predicatesKeyword.size()])));
-          }
-        }
-        
-        return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-      }
-      
-    };
-    
-    return spec;
-  }
-
-//  @Override
-//  public default Page<Group> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-//    if (loadAll) {
-//      pageIndex = 0;
-//      pageSize = Integer.MAX_VALUE;
-//    }
-//    
-//    Group probe = new Group();
-//    if (mapBean != null) {
-//      probe.setDeleted(MapBeanUtils.getBoolean(mapBean, "deleted"));
-//      probe.setCode(MapBeanUtils.getString(mapBean, "code"));
-//      probe.setName(MapBeanUtils.getString(mapBean, "name"));
-//      probe.setMemo(MapBeanUtils.getString(mapBean, "memo"));
-//      probe.setStatus(MapBeanUtils.getString(mapBean, "status"));
-//    }
-//    
-//    ExampleMatcher matcher = ExampleMatcher.matching()
-//        .withMatcher("deleted", ExampleMatcher.GenericPropertyMatchers.exact())
-//        .withMatcher("code", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("memo", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("status", ExampleMatcher.GenericPropertyMatchers.exact());
-//    
-//    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-//    Example<Group> example = Example.of(probe, matcher);
-//    
-//    Page<Group> page = this.findAll(example, pageRequest);
-//    
-//    return page;
-//  }
-  
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/GroupRoleRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/GroupRoleRepository.java
deleted file mode 100644
index 35bd4d5..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/GroupRoleRepository.java
+++ /dev/null
@@ -1,191 +0,0 @@
-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.Group;
-import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
-import com.supwisdom.institute.backend.base.domain.entity.Role;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface GroupRoleRepository extends BaseJpaRepository<GroupRole> {
-
-  public default Page<GroupRole> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-    GroupRole probe = new GroupRole();
-    if (mapBean != null) {
-      probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-    Example<GroupRole> example = Example.of(probe, matcher);
-
-    Page<GroupRole> page = this.findAll(example, pageRequest);
-
-    return page;
-  }
-
-  public default Page<GroupRole> selectGroupRoles(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    GroupRole probe = new GroupRole();
-    if (mapBean != null) {
-      probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<GroupRole> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<GroupRole> page = this.findAll(example, pageRequest);  // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public default void relateGroupRoles(Group group, List<GroupRole> groupRoles) {
-
-    List<GroupRole> existGroupRoles = this.selectListByGroupId(group.getId());
-
-    Map<String, GroupRole> existMapGroupRoles = new LinkedHashMap<String, GroupRole>();
-    for (GroupRole groupRole : existGroupRoles) {
-      String k = String.format("%s", groupRole.getRoleId());
-      existMapGroupRoles.put(k, groupRole);
-    }
-
-    for (GroupRole groupRole : groupRoles) {
-      String k = String.format("%s", groupRole.getRoleId());
-
-      if (existMapGroupRoles.containsKey(k)) {
-        existMapGroupRoles.remove(k);
-      } else {
-        groupRole.setCompanyId(group.getCompanyId());
-        groupRole.setGroupId(group.getId());
-
-        this.insert(groupRole);
-      }
-    }
-
-    for (GroupRole groupRole : existMapGroupRoles.values()) {
-      this.deleteById(groupRole.getId());
-    }
-  }
-
-  public default List<GroupRole> selectListByGroupId(String groupId) {
-
-    GroupRole probe = new GroupRole();
-    probe.setGroupId(groupId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("groupId",
-        ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<GroupRole> example = Example.of(probe, matcher);
-
-    List<GroupRole> groupRoles = this.findAll(example);
-
-    return groupRoles;
-  }
-
-
-  public default void relateRoleGroups(Role role, List<GroupRole> groupRoles) {
-
-    List<GroupRole> existRoleGroups = this.selectListByRoleId(role.getCode());
-
-    Map<String, GroupRole> existMapRoleGroups = new LinkedHashMap<String, GroupRole>();
-    for (GroupRole groupRole : existRoleGroups) {
-      String k = String.format("%s", groupRole.getGroupId());
-      existMapRoleGroups.put(k, groupRole);
-    }
-
-    for (GroupRole groupRole : groupRoles) {
-      String k = String.format("%s", groupRole.getGroupId());
-
-      if (existMapRoleGroups.containsKey(k)) {
-        existMapRoleGroups.remove(k);
-      } else {
-        groupRole.setCompanyId(role.getCompanyId());
-        groupRole.setRoleId(role.getId());
-
-        this.insert(groupRole);
-      }
-    }
-
-    for (GroupRole groupRole : existMapRoleGroups.values()) {
-      this.deleteById(groupRole.getId());
-    }
-  }
-
-  public default List<GroupRole> selectListByRoleId(String roleId) {
-
-    GroupRole probe = new GroupRole();
-    probe.setRoleId(roleId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<GroupRole> example = Example.of(probe, matcher);
-
-    List<GroupRole> groupRoles = this.findAll(example);
-
-    return groupRoles;
-  }
-
-  public default GroupRole selectOneByGroupRole(String groupId, String roleId) {
-
-    GroupRole probe = new GroupRole();
-    probe.setGroupId(groupId);
-    probe.setRoleId(roleId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
-        ;
-
-    Example<GroupRole> example = Example.of(probe, matcher);
-    
-    Optional<GroupRole> o = this.findOne(example);
-    
-    return o.isPresent() ? o.get() : null;
-  }
-
-  public default void addGroupRole(String groupId, String roleId) {
-
-    GroupRole groupRole = this.selectOneByGroupRole(groupId, roleId);
-    
-    if (groupRole == null) {
-      groupRole = new GroupRole();
-      //groupRole.setCompanyId(companyId);
-      groupRole.setGroupId(groupId);
-      groupRole.setRoleId(roleId);
-      
-      this.insert(groupRole);
-    }
-  }
-
-  public default void removeGroupRole(String groupId, String roleId) {
-
-    GroupRole groupRole = this.selectOneByGroupRole(groupId, roleId);
-    
-    if (groupRole != null) {
-      this.deleteById(groupRole.getId());
-    }
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionRepository.java
deleted file mode 100644
index aaa0214..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionRepository.java
+++ /dev/null
@@ -1,419 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.repo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.transaction.Transactional;
-
-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.data.domain.Sort;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-import org.springframework.util.StringUtils;
-
-import com.supwisdom.institute.backend.base.domain.entity.Permission;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-@Transactional
-public interface PermissionRepository extends BaseJpaRepository<Permission> {
-  
-
-  @Override
-  public default Specification<Permission> convertToSpec(Map<String, Object> mapBean) {
-    
-    Specification<Permission> spec = new Specification<Permission>() {
-
-      /**
-       * 
-       */
-      private static final long serialVersionUID = 6195601104797641573L;
-
-      @Override
-      public Predicate toPredicate(Root<Permission> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        
-        if (mapBean != null) {
-
-          if (MapBeanUtils.getBoolean(mapBean, "deleted") != null) {
-            predicates.add(criteriaBuilder.equal(root.get("deleted"), MapBeanUtils.getBoolean(mapBean, "deleted")));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "code"))) {
-            predicates.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "code") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) {
-            predicates.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "name") + "%"));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "status"))) {
-            predicates.add(criteriaBuilder.equal(root.get("status"), MapBeanUtils.getString(mapBean, "status")));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "type"))) {
-            predicates.add(criteriaBuilder.equal(root.get("type"), MapBeanUtils.getString(mapBean, "type")));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "url"))) {
-            predicates.add(criteriaBuilder.like(root.get("url"), "%" + MapBeanUtils.getString(mapBean, "url") + "%"));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "applicationId"))) {
-            predicates.add(criteriaBuilder.equal(root.get("applicationId"), MapBeanUtils.getString(mapBean, "applicationId")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "parentId"))) {
-            predicates.add(criteriaBuilder.equal(root.get("parentId"), MapBeanUtils.getString(mapBean, "parentId")));
-          }
-
-//          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "grantTimeBegin"))) {
-//            String grantTimeBegin = MapBeanUtils.getString(mapBean, "grantTimeBegin");
-//            Date d = DateUtil.parseDate(grantTimeBegin+" 00:00:00", "yyyy-MM-dd HH:mm:ss");
-//            
-//            if (d != null) {
-//              predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("grantTime"), d));
-//            }
-//          }
-//
-//          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "grantTimeEnd"))) {
-//            String grantTimeEnd = MapBeanUtils.getString(mapBean, "grantTimeEnd");
-//            Date d = DateUtil.parseDate(grantTimeEnd+" 23:59:59", "yyyy-MM-dd HH:mm:ss");
-//            
-//            if (d != null) {
-//              predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("grantTime"), d));
-//            }
-//          }
-
-          List<Predicate> predicatesKeyword = new ArrayList<>();
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "keyword"))) {
-            predicatesKeyword.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            
-            predicates.add(criteriaBuilder.or(predicatesKeyword.toArray(new Predicate[predicatesKeyword.size()])));
-          }
-        }
-        
-        return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-      }
-      
-    };
-    
-    return spec;
-  }
-  
-  @Override
-  public default Page<Permission> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    if (loadAll) {
-      pageIndex = 0;
-      pageSize = Integer.MAX_VALUE;
-    }
-    
-    Permission probe = new Permission();
-    if (mapBean != null) {
-      probe.setDeleted(MapBeanUtils.getBoolean(mapBean, "deleted"));
-      probe.setCode(MapBeanUtils.getString(mapBean, "code"));
-      probe.setName(MapBeanUtils.getString(mapBean, "name"));
-      probe.setMemo(MapBeanUtils.getString(mapBean, "memo"));
-      probe.setStatus(MapBeanUtils.getString(mapBean, "status"));
-      probe.setType(MapBeanUtils.getString(mapBean, "type"));
-    }
-    
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("deleted", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("code", ExampleMatcher.GenericPropertyMatchers.contains())
-        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
-        .withMatcher("memo", ExampleMatcher.GenericPropertyMatchers.contains())
-        .withMatcher("status", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("type", ExampleMatcher.GenericPropertyMatchers.exact());
-    
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-    Example<Permission> example = Example.of(probe, matcher);
-    
-    Page<Permission> page = this.findAll(example, pageRequest);
-    
-    return page;
-  }
-  
-  
-  
-  @Query(value = "select max(p.rgt) from Permission p")
-  public int selectMaxRgt();
-  
-  @Query(value = "select p from Permission p where p.lft>:lft and p.rgt<:rgt order by p.lft")
-  public List<Permission> selectBetweenLftRgt(@Param("lft") int lft, @Param("rgt") int rgt);
-  
-  @Modifying
-  @Query(value = "update TB_BASE_PERMISSION "
-      + "set "
-      + "  LFT = (case when LFT >= :rgt then LFT + :offset else LFT end), "
-      + "  RGT = RGT + :offset "
-      + "where RGT >= :rgt", nativeQuery = true)
-  public int updateLftRgtWhenInsert(@Param("rgt") int rgt, @Param("offset") int offset);
-
-  @Modifying
-  @Query(value = "update TB_BASE_PERMISSION "
-      + "set "
-      + "  LFT = (case when LFT >= :rgt then LFT - :offset else LFT end), "
-      + "  RGT = RGT - :offset "
-      + "where RGT >= :rgt", nativeQuery = true)
-  public int updateLftRgtWhenDelete(@Param("rgt") int rgt, @Param("offset") int offset);
-  
-  
-  @Override
-  public default Permission insert(Permission entity) {
-
-    if (entity.getParentId() == null) {
-      entity.setParentId(Permission.ROOT_PARENT_ID);
-    }
-
-    if (entity.getParentId() == null || entity.getParentId().isEmpty() || Permission.ROOT_PARENT_ID.equals(entity.getParentId())) {
-      int maxRgt = selectMaxRgt();
-      entity.setLft((maxRgt+1));
-      entity.setRgt((maxRgt+1) + 1);
-      
-      entity.setLevel(1);
-    } else {
-      Permission parentEntity = this.selectById(entity.getParentId());
-      if (parentEntity == null) {
-        throw new RuntimeException(String.format("父级对象不存在!"));
-      } else {
-        // 将 lft或rgt 大于等于父级对象 rgt 的记录的 lft、rgt +offset
-        int rgt = parentEntity.getRgt();
-        int offset = 2;
-        updateLftRgtWhenInsert(rgt, offset);
-        
-        entity.setLft(rgt);
-        entity.setRgt(rgt + 1);
-        
-        entity.setLevel(parentEntity.getLevel() + 1);
-      }
-    }
-    
-    return BaseJpaRepository.super.insert(entity);
-  }
-  
-  @Override
-  public default Permission update(Permission entity) {
-
-    Permission originEntity = this.selectById(entity.getId());
-    if (originEntity == null) {
-      return null;
-    }
-    
-    //if (!this.checkFieldExists("code", entity.getCode(), entity.getId())) {
-    //  throw new RuntimeException(String.format("代码重复!"));
-    //}
-    
-    if (originEntity.getParentId() == null) {
-      originEntity.setParentId(Permission.ROOT_PARENT_ID);
-    }
-    
-    if (entity.getParentId() == null) {
-      entity.setParentId(Permission.ROOT_PARENT_ID);
-    }
-    
-    if (!originEntity.getParentId().equals(entity.getParentId()) ) {
-
-      int lft = originEntity.getLft();
-      int rgt = originEntity.getRgt();
-      int level = originEntity.getLevel();
-      int offset = rgt - lft +1;
-      
-      List<Permission> childEntities = this.selectBetweenLftRgt(lft, rgt);
-
-      if (entity.getParentId() == null || entity.getParentId().isEmpty() || Permission.ROOT_PARENT_ID.equals(entity.getParentId())) {
-        // 将 lft或rgt 大于等于该对象 rgt 的记录的 lft、rgt -offset
-        updateLftRgtWhenDelete(rgt, offset);
-  
-        int maxRgt = selectMaxRgt();
-        entity.setLft((maxRgt+1));
-        entity.setRgt((maxRgt+1) + 1 +offset-2);
-        
-        entity.setLevel(1);
-      } else {
-        // 将 lft或rgt 大于等于该对象 rgt 的记录的 lft、rgt -offset
-        updateLftRgtWhenDelete(rgt, offset);
-
-        Permission parentEntity = this.selectById(entity.getParentId());
-        if (parentEntity == null) {
-          throw new RuntimeException(String.format("父级对象不存在!"));
-        }
-        //System.out.println(String.format("pLft %s, pRgt %s", parentEntity.getLft(), parentEntity.getRgt()));
-        if (parentEntity.getLft() >= originEntity.getLft() && parentEntity.getRgt() <= originEntity.getRgt()) {
-          throw new RuntimeException(String.format("不能设置自身或自身的子节点作为父级!"));
-        }
-        
-        //parentEntity = this.selectById(entity.getParentId()); System.out.println(String.format("pLft %s, pRgt %s", parentEntity.getLft(), parentEntity.getRgt()));
-        // 将 lft或rgt 大于等于父级对象 rgt 的记录的 lft、rgt +offset
-        //int pLft = parentEntity.getLft();
-        int pRgt = parentEntity.getRgt();
-        updateLftRgtWhenInsert(pRgt, offset);
-        
-        entity.setLft(pRgt);
-        entity.setRgt(pRgt + 1 + offset-2);
-        
-        entity.setLevel(parentEntity.getLevel() + 1);
-      }
-      
-      int newLft = entity.getLft();
-      int newRgt = entity.getRgt();
-      int newLevel = entity.getLevel();
-      //System.out.println(String.format("newLft %s, newRgt %s, newLevel %s", newLft, newRgt, newLevel));
-      //System.out.println(String.format("lft %s, rgt %s, level %s", lft, rgt, level));
-      for (Permission childEntity : childEntities) {
-        //Permission pEntity = this.selectById(childEntity.getParentId());
-        
-        int cLft = childEntity.getLft();
-        int cRgt = childEntity.getRgt();
-        int cLevel = childEntity.getLevel();
-        
-        childEntity.setLft(cLft + (newLft - lft));
-        childEntity.setRgt(cRgt + (newRgt - rgt));
-        
-        childEntity.setLevel(cLevel + (newLevel - level));
-        
-        BaseJpaRepository.super.update(childEntity);
-      }
-
-    }
-    
-    return BaseJpaRepository.super.update(entity);
-  }
-
-  @Override
-  public default void delete(String id) {
-    
-    Permission originEntity = this.selectById(id);
-    if (originEntity == null) {
-      return;
-    }
-
-    int lft = originEntity.getLft();
-    int rgt = originEntity.getRgt();
-    int offset = rgt - lft +1;
-
-    // FIXME: 判断是否有子节点
-    //if (lft + 1 != rgt) {
-    //  return;
-    //}
-
-    List<Permission> childEntities = this.selectBetweenLftRgt(lft, rgt);
-    for (Permission childEntity : childEntities) {
-      BaseJpaRepository.super.delete(childEntity.getId());
-    }
-    
-    // 将 lft或rgt 大于等于该对象 rgt 的记录的 lft、rgt -offset
-    updateLftRgtWhenDelete(rgt, offset);
-    
-    BaseJpaRepository.super.delete(id);
-  }
-  
-  
-
-
-  public default List<Permission> selectList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    
-    Specification<Permission> spec = convertToSpec(mapBean);
-    
-    if (loadAll) {
-      pageIndex = 0;
-      pageSize = Integer.MAX_VALUE;
-    }
-    
-    Sort sort = convertToSort(orderBy);
-
-    if (sort == null) {
-      return this.findAll(spec);
-    } else {
-      return this.findAll(spec, sort);
-    }
-  }
-
-  
-
-  @Query(value = "select p from Permission p "
-      + "inner join RolePermission rp on p.id=rp.permissionId "
-      + "inner join Role r on rp.roleId=r.id "
-      + "inner join AccountRole ar on r.id=ar.roleId "
-      + "inner join Account a on ar.accountId=a.id "
-      + "where a.username=:username "
-      + "and p.lft >= :lft and p.rgt <= :rgt "
-      + "and (:type is null or p.type=:type) "
-      + "and p.status='1' and r.status='1' and a.status='1' and a.enabled=1 ")
-  public List<Permission> selectAccountRolePermissionByUsername(@Param("username") String username, @Param("lft") int lft, @Param("rgt") int rgt, @Param("type") String type);
-  
-  @Query(value = "select p from Permission p "
-      + "inner join RolePermission rp on p.id=rp.permissionId "
-      + "inner join Role r on rp.roleId=r.id "
-      + "inner join GroupRole gr on r.id=gr.roleId "
-      + "inner join Group_ g on gr.groupId=g.id "
-      + "inner join AccountGroup ag on g.id=ag.groupId "
-      + "inner join Account a on ag.accountId=a.id "
-      + "where a.username=:username "
-      + "and p.lft >= :lft and p.rgt <= :rgt "
-      + "and (:type is null or p.type=:type) "
-      + "and p.status='1' and r.status='1' and g.status='1' and a.status='1' and a.enabled=1 ")
-  public List<Permission> selectAccountGroupRolePermissionByUsername(@Param("username") String username, @Param("lft") int lft, @Param("rgt") int rgt, @Param("type") String type);
-
-
-  @Query(value = "select p from Permission p "
-      + "inner join RolePermission rp on p.id=rp.permissionId "
-      + "inner join Role r on rp.roleId=r.id "
-      + "inner join AccountRole ar on r.id=ar.roleId "
-      + "inner join Account a on ar.accountId=a.id "
-      + "where a.username=:username "
-      + "and p.applicationId = :applicationId "
-      + "and (:type is null or p.type=:type) "
-      + "and p.status='1' and r.status='1' and a.status='1' and a.enabled=1 ")
-  public List<Permission> selectAccountRolePermissionByUsername(@Param("username") String username, @Param("applicationId") String applicationId, @Param("type") String type);
-  
-  @Query(value = "select p from Permission p "
-      + "inner join RolePermission rp on p.id=rp.permissionId "
-      + "inner join Role r on rp.roleId=r.id "
-      + "inner join GroupRole gr on r.id=gr.roleId "
-      + "inner join Group_ g on gr.groupId=g.id "
-      + "inner join AccountGroup ag on g.id=ag.groupId "
-      + "inner join Account a on ag.accountId=a.id "
-      + "where a.username=:username "
-      + "and p.applicationId = :applicationId "
-      + "and (:type is null or p.type=:type) "
-      + "and p.status='1' and r.status='1' and g.status='1' and a.status='1' and a.enabled=1 ")
-  public List<Permission> selectAccountGroupRolePermissionByUsername(@Param("username") String username, @Param("applicationId") String applicationId, @Param("type") String type);
-
-
-  @Query(value = "select p from Permission p "
-      + "inner join RolePermission rp on p.id=rp.permissionId "
-      + "inner join Role r on rp.roleId=r.id "
-      + "inner join AccountRole ar on r.id=ar.roleId "
-      + "inner join Account a on ar.accountId=a.id "
-      + "where a.username=:username "
-      + "and (:type is null or p.type=:type) "
-      + "and p.status='1' and r.status='1' and a.status='1' and a.enabled=1 ")
-  public List<Permission> selectAccountRolePermissionByUsername(@Param("username") String username, @Param("type") String type);
-  
-  @Query(value = "select p from Permission p "
-      + "inner join RolePermission rp on p.id=rp.permissionId "
-      + "inner join Role r on rp.roleId=r.id "
-      + "inner join GroupRole gr on r.id=gr.roleId "
-      + "inner join Group_ g on gr.groupId=g.id "
-      + "inner join AccountGroup ag on g.id=ag.groupId "
-      + "inner join Account a on ag.accountId=a.id "
-      + "where a.username=:username "
-      + "and (:type is null or p.type=:type) "
-      + "and p.status='1' and r.status='1' and g.status='1' and a.status='1' and a.enabled=1 ")
-  public List<Permission> selectAccountGroupRolePermissionByUsername(@Param("username") String username, @Param("type") String type);
-
-}
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
deleted file mode 100644
index c40aef7..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionResourceRepository.java
+++ /dev/null
@@ -1,194 +0,0 @@
-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/ResourceRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/ResourceRepository.java
deleted file mode 100644
index a037866..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/ResourceRepository.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.repo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.data.domain.Example;
-import org.springframework.data.domain.ExampleMatcher;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Repository;
-import org.springframework.util.StringUtils;
-
-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 ResourceRepository extends BaseJpaRepository<Resource> {
-
-  @Override
-  public default Specification<Resource> convertToSpec(Map<String, Object> mapBean) {
-    
-    Specification<Resource> spec = new Specification<Resource>() {
-
-      /**
-       * 
-       */
-      private static final long serialVersionUID = 7690039558726467041L;
-
-      @Override
-      public Predicate toPredicate(Root<Resource> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        
-        if (mapBean != null) {
-
-          if (MapBeanUtils.getBoolean(mapBean, "deleted") != null) {
-            predicates.add(criteriaBuilder.equal(root.get("deleted"), MapBeanUtils.getBoolean(mapBean, "deleted")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "code"))) {
-            predicates.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "code") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) {
-            predicates.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "name") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "memo"))) {
-            predicates.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "memo") + "%"));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "status"))) {
-            predicates.add(criteriaBuilder.equal(root.get("status"), MapBeanUtils.getString(mapBean, "status")));
-          }
-          
-          List<Predicate> predicatesKeyword = new ArrayList<>();
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "keyword"))) {
-            predicatesKeyword.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            
-            predicates.add(criteriaBuilder.or(predicatesKeyword.toArray(new Predicate[predicatesKeyword.size()])));
-          }
-        }
-        
-        return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-      }
-      
-    };
-    
-    return spec;
-  }
-  
-//  @Override
-//  public default Page<Resource> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-//    if (loadAll) {
-//      pageIndex = 0;
-//      pageSize = Integer.MAX_VALUE;
-//    }
-//    
-//    Resource probe = new Resource();
-//    if (mapBean != null) {
-//      probe.setDeleted(MapBeanUtils.getBoolean(mapBean, "deleted"));
-//      probe.setCode(MapBeanUtils.getString(mapBean, "code"));
-//      probe.setName(MapBeanUtils.getString(mapBean, "name"));
-//      probe.setMemo(MapBeanUtils.getString(mapBean, "memo"));
-//      probe.setStatus(MapBeanUtils.getString(mapBean, "status"));
-//    }
-//    
-//    ExampleMatcher matcher = ExampleMatcher.matching()
-//        .withMatcher("deleted", ExampleMatcher.GenericPropertyMatchers.exact())
-//        .withMatcher("code", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("memo", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("status", ExampleMatcher.GenericPropertyMatchers.exact());
-//    
-//    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-//    Example<Resource> example = Example.of(probe, matcher);
-//    
-//    Page<Resource> page = this.findAll(example, pageRequest);
-//    
-//    return page;
-//  }
-
-  public default Resource selectByCode(String code) {
-    Resource probe = new Resource();
-    probe.setCode(code);
-    
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("code", ExampleMatcher.GenericPropertyMatchers.exact());
-    
-    Example<Resource> example = Example.of(probe, matcher);
-    
-    Optional<Resource> o = this.findOne(example);
-    
-    if (o.isPresent()) {
-      return o.get();
-    }
-    
-    return null;
-  }
-  
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RolePermissionRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RolePermissionRepository.java
deleted file mode 100644
index 95f2814..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RolePermissionRepository.java
+++ /dev/null
@@ -1,193 +0,0 @@
-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.Role;
-import com.supwisdom.institute.backend.base.domain.entity.RolePermission;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface RolePermissionRepository extends BaseJpaRepository<RolePermission> {
-
-  public default Page<RolePermission> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-    RolePermission probe = new RolePermission();
-    if (mapBean != null) {
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-      probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-    Example<RolePermission> example = Example.of(probe, matcher);
-
-    Page<RolePermission> page = this.findAll(example, pageRequest);
-
-    return page;
-  }
-
-  public default Page<RolePermission> selectRolePermissions(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    RolePermission probe = new RolePermission();
-    if (mapBean != null) {
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-      probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<RolePermission> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<RolePermission> page = this.findAll(example, pageRequest); // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public default void relateRolePermissions(Role role, List<RolePermission> rolePermissions) {
-
-    List<RolePermission> existRolePermissions = this.selectListByRoleId(role.getId());
-
-    Map<String, RolePermission> existMapRolePermissions = new LinkedHashMap<String, RolePermission>();
-    for (RolePermission rolePermission : existRolePermissions) {
-      String k = String.format("%s", rolePermission.getPermissionId());
-      existMapRolePermissions.put(k, rolePermission);
-    }
-
-    for (RolePermission rolePermission : rolePermissions) {
-      String k = String.format("%s", rolePermission.getPermissionId());
-
-      if (existMapRolePermissions.containsKey(k)) {
-        existMapRolePermissions.remove(k);
-      } else {
-        rolePermission.setCompanyId(role.getCompanyId());
-        rolePermission.setRoleId(role.getId());
-
-        this.insert(rolePermission);
-      }
-    }
-
-    for (RolePermission rolePermission : existMapRolePermissions.values()) {
-      this.deleteById(rolePermission.getId());
-    }
-  }
-
-  public default List<RolePermission> selectListByRoleId(String roleId) {
-
-    RolePermission probe = new RolePermission();
-    probe.setRoleId(roleId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("roleId",
-        ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<RolePermission> example = Example.of(probe, matcher);
-
-    List<RolePermission> rolePermissions = this.findAll(example);
-
-    return rolePermissions;
-  }
-
-  public default void relatePermissionRoles(Permission permission, List<RolePermission> rolePermissions) {
-
-    // 获取权限已关联的角色
-    List<RolePermission> existPermissionRoles = this.selectListByPermissionId(permission.getId());
-
-    Map<String, RolePermission> existMapPermissionRoles = new LinkedHashMap<String, RolePermission>();
-    for (RolePermission rolePermission : existPermissionRoles) {
-      String k = String.format("%s", rolePermission.getRoleId());
-      existMapPermissionRoles.put(k, rolePermission);
-    }
-
-    // 保存未关联的角色
-    for (RolePermission rolePermission : rolePermissions) {
-      String k = String.format("%s", rolePermission.getRoleId());
-
-      if (existMapPermissionRoles.containsKey(k)) {
-        existMapPermissionRoles.remove(k);
-      } else {
-        rolePermission.setCompanyId(permission.getCompanyId());
-        rolePermission.setPermissionId(permission.getId());
-
-        this.insert(rolePermission);
-      }
-    }
-
-    // 删除移除关联的角色
-    for (RolePermission rolePermission : existMapPermissionRoles.values()) {
-      this.deleteById(rolePermission.getId());
-    }
-  }
-
-  public default List<RolePermission> selectListByPermissionId(String permissionId) {
-
-    RolePermission probe = new RolePermission();
-    probe.setPermissionId(permissionId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("permissionId",
-        ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<RolePermission> example = Example.of(probe, matcher);
-
-    List<RolePermission> rolePermissions = this.findAll(example);
-
-    return rolePermissions;
-  }
-
-  public default RolePermission selectOneByRolePermission(String roleId, String permissionId) {
-
-    RolePermission probe = new RolePermission();
-    probe.setRoleId(roleId);
-    probe.setPermissionId(permissionId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
-        ;
-
-    Example<RolePermission> example = Example.of(probe, matcher);
-    
-    Optional<RolePermission> o = this.findOne(example);
-    
-    return o.isPresent() ? o.get() : null;
-  }
-
-  public default void addRolePermission(String roleId, String permissionId) {
-
-    RolePermission rolePermission = this.selectOneByRolePermission(roleId, permissionId);
-    
-    if (rolePermission == null) {
-      rolePermission = new RolePermission();
-      //rolePermission.setCompanyId(companyId);
-      rolePermission.setRoleId(roleId);
-      rolePermission.setPermissionId(permissionId);
-      
-      this.insert(rolePermission);
-    }
-  }
-
-  public default void removeRolePermission(String roleId, String permissionId) {
-
-    RolePermission rolePermission = this.selectOneByRolePermission(roleId, permissionId);
-    
-    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
deleted file mode 100644
index 00c3ee6..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RoleRepository.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.repo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.data.domain.Example;
-import org.springframework.data.domain.ExampleMatcher;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-import org.springframework.util.StringUtils;
-
-import com.supwisdom.institute.backend.base.domain.entity.Role;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface RoleRepository extends BaseJpaRepository<Role> {
-
-  @Override
-  public default Specification<Role> convertToSpec(Map<String, Object> mapBean) {
-    
-    Specification<Role> spec = new Specification<Role>() {
-
-      /**
-       * 
-       */
-      private static final long serialVersionUID = -263282246904382286L;
-
-      @Override
-      public Predicate toPredicate(Root<Role> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        
-        if (mapBean != null) {
-
-          if (MapBeanUtils.getBoolean(mapBean, "deleted") != null) {
-            predicates.add(criteriaBuilder.equal(root.get("deleted"), MapBeanUtils.getBoolean(mapBean, "deleted")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "code"))) {
-            predicates.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "code") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) {
-            predicates.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "name") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "memo"))) {
-            predicates.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "memo") + "%"));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "status"))) {
-            predicates.add(criteriaBuilder.equal(root.get("status"), MapBeanUtils.getString(mapBean, "status")));
-          }
-
-          List<Predicate> predicatesKeyword = new ArrayList<>();
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "keyword"))) {
-            predicatesKeyword.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            
-            predicates.add(criteriaBuilder.or(predicatesKeyword.toArray(new Predicate[predicatesKeyword.size()])));
-          }
-        }
-        
-        return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-      }
-      
-    };
-    
-    return spec;
-  }
-
-//  @Override
-//  public default Page<Role> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-//    if (loadAll) {
-//      pageIndex = 0;
-//      pageSize = Integer.MAX_VALUE;
-//    }
-//    
-//    Role probe = new Role();
-//    if (mapBean != null) {
-//      probe.setDeleted(MapBeanUtils.getBoolean(mapBean, "deleted"));
-//      probe.setCode(MapBeanUtils.getString(mapBean, "code"));
-//      probe.setName(MapBeanUtils.getString(mapBean, "name"));
-//      probe.setMemo(MapBeanUtils.getString(mapBean, "memo"));
-//      probe.setStatus(MapBeanUtils.getString(mapBean, "status"));
-//    }
-//    
-//    ExampleMatcher matcher = ExampleMatcher.matching()
-//        .withMatcher("deleted", ExampleMatcher.GenericPropertyMatchers.exact())
-//        .withMatcher("code", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("memo", ExampleMatcher.GenericPropertyMatchers.contains())
-//        .withMatcher("status", ExampleMatcher.GenericPropertyMatchers.exact());
-//    
-//    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-//    Example<Role> example = Example.of(probe, matcher);
-//    
-//    Page<Role> page = this.findAll(example, pageRequest);
-//    
-//    return page;
-//  }
-  
-  
-  public default Role selectByCode(String code) {
-    Role probe = new Role();
-    probe.setCode(code);
-    
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("code", ExampleMatcher.GenericPropertyMatchers.exact());
-    
-    Example<Role> example = Example.of(probe, matcher);
-    
-    Optional<Role> o = this.findOne(example);
-    
-    if (o.isPresent()) {
-      return o.get();
-    }
-    
-    return null;
-  }
-  
-  @Query(value = "select r from Role r "
-      + "inner join AccountRole ar on r.id=ar.roleId "
-      + "inner join Account a on ar.accountId=a.id "
-      + "where a.username=:username "
-      + "and r.status='1' and a.status='1' and a.enabled=1 ")
-  public List<Role> selectAccountRoleByUsername(@Param("username") String username);
-  
-  @Query(value = "select r from Role r "
-      + "inner join GroupRole gr on r.id=gr.roleId "
-      + "inner join Group_ g on gr.groupId=g.id "
-      + "inner join AccountGroup ag on g.id=ag.groupId "
-      + "inner join Account a on ag.accountId=a.id "
-      + "where a.username=:username "
-      + "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/repo/RouteRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RouteRepository.java
deleted file mode 100644
index 425138b..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RouteRepository.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.repo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Repository;
-import org.springframework.util.StringUtils;
-
-import com.supwisdom.institute.backend.base.domain.entity.Route;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface RouteRepository extends BaseJpaRepository<Route> {
-  
-  @Override
-  public default Specification<Route> convertToSpec(Map<String, Object> mapBean) {
-    
-    Specification<Route> spec = new Specification<Route>() {
-
-      /**
-       * 
-       */
-      private static final long serialVersionUID = 9131799274128286026L;
-
-      @Override
-      public Predicate toPredicate(Root<Route> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        
-        if (mapBean != null) {
-
-          if (MapBeanUtils.getBoolean(mapBean, "deleted") != null) {
-            predicates.add(criteriaBuilder.equal(root.get("deleted"), MapBeanUtils.getBoolean(mapBean, "deleted")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "code"))) {
-            predicates.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "code") + "%"));
-          }
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) {
-            predicates.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "name") + "%"));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "status"))) {
-            predicates.add(criteriaBuilder.equal(root.get("status"), MapBeanUtils.getString(mapBean, "status")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "url"))) {
-            predicates.add(criteriaBuilder.like(root.get("url"), "%" + MapBeanUtils.getString(mapBean, "url") + "%"));
-          }
-          
-          List<Predicate> predicatesKeyword = new ArrayList<>();
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "keyword"))) {
-            predicatesKeyword.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            predicatesKeyword.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%"));
-            
-            predicates.add(criteriaBuilder.or(predicatesKeyword.toArray(new Predicate[predicatesKeyword.size()])));
-          }
-        }
-        
-        return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-      }
-      
-    };
-    
-    return spec;
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/.gitkeep b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/.gitkeep
+++ /dev/null
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/AccountService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/AccountService.java
deleted file mode 100644
index b0cad6c..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/AccountService.java
+++ /dev/null
@@ -1,203 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.service;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-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.Account;
-import com.supwisdom.institute.backend.base.domain.entity.AccountGroup;
-import com.supwisdom.institute.backend.base.domain.entity.AccountRole;
-import com.supwisdom.institute.backend.base.domain.repo.AccountGroupRepository;
-import com.supwisdom.institute.backend.base.domain.repo.AccountRepository;
-import com.supwisdom.institute.backend.base.domain.repo.AccountRoleRepository;
-import com.supwisdom.institute.backend.common.framework.service.ABaseService;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Service
-public class AccountService extends ABaseService<Account, AccountRepository> {
-  
-  @Override
-  public AccountRepository getRepo() {
-    return accountRepository;
-  }
-
-  @Autowired
-  private AccountRepository accountRepository;
-
-  @Autowired
-  private AccountGroupRepository accountGroupRepository;
-
-  @Autowired
-  private AccountRoleRepository accountRoleRepository;
-  
-  
-  @Override
-  public Account insert(Account entity) {
-
-    entity.setEnabled(Account.STATUS_ENABLED.equals(entity.getStatus()));
-    entity.setAccountNonExpired(true);
-    entity.setAccountNonLocked(true);
-    entity.setCredentialsNonExpired(true);
-    
-    return super.insert(entity);
-  }
-  
-  @Override
-  public Account update(Account entity) {
-    
-    entity.setEnabled(Account.STATUS_ENABLED.equals(entity.getStatus()));
-
-    return super.update(entity);
-  }
-  
-
-  public void deleteBatch(List<String> ids) {
-    
-    ids.stream().forEach(id -> {
-      this.deleteById(id);
-    });
-  }
-
-
-  public Page<AccountGroup> selectAccountGroups(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    AccountGroup probe = new AccountGroup();
-    if (mapBean != null) {
-      probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
-      probe.setAccountId(MapBeanUtils.getString(mapBean, "accountId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<AccountGroup> page = accountGroupRepository.findAll(example, pageRequest); // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public void relateAccountGroups(Account account, List<AccountGroup> accountGroups) {
-
-    List<AccountGroup> existAccountGroups = this.selectAccountGroupsByAccountId(account.getId());
-
-    Map<String, AccountGroup> existMapAccountGroups = new LinkedHashMap<String, AccountGroup>();
-    for (AccountGroup accountGroup : existAccountGroups) {
-      String k = String.format("%s", accountGroup.getGroupId());
-      existMapAccountGroups.put(k, accountGroup);
-    }
-
-    for (AccountGroup accountGroup : accountGroups) {
-      String k = String.format("%s", accountGroup.getGroupId());
-
-      if (existMapAccountGroups.containsKey(k)) {
-        existMapAccountGroups.remove(k);
-      } else {
-        accountGroup.setCompanyId(account.getCompanyId());
-        accountGroup.setAccountId(account.getId());
-
-        accountGroupRepository.insert(accountGroup);
-      }
-    }
-
-    for (AccountGroup accountGroup : existMapAccountGroups.values()) {
-      accountGroupRepository.deleteById(accountGroup.getId());
-    }
-  }
-
-  public List<AccountGroup> selectAccountGroupsByAccountId(String accountId) {
-
-    AccountGroup probe = new AccountGroup();
-    probe.setAccountId(accountId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-
-    List<AccountGroup> accountGroups = accountGroupRepository.findAll(example);
-
-    return accountGroups;
-  }
-
-  
-
-  public Page<AccountRole> selectAccountRoles(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    AccountRole probe = new AccountRole();
-    if (mapBean != null) {
-      probe.setAccountId(MapBeanUtils.getString(mapBean, "accountId"));
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountRole> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<AccountRole> page = accountRoleRepository.findAll(example, pageRequest); // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public void relateAccountRoles(Account account, List<AccountRole> accountRoles) {
-
-    List<AccountRole> existAccountRoles = this.selectAccountRolesByAccountId(account.getId());
-
-    Map<String, AccountRole> existMapAccountRoles = new LinkedHashMap<String, AccountRole>();
-    for (AccountRole accountRole : existAccountRoles) {
-      String k = String.format("%s", accountRole.getRoleId());
-      existMapAccountRoles.put(k, accountRole);
-    }
-
-    for (AccountRole accountRole : accountRoles) {
-      String k = String.format("%s", accountRole.getRoleId());
-
-      if (existMapAccountRoles.containsKey(k)) {
-        existMapAccountRoles.remove(k);
-      } else {
-        accountRole.setCompanyId(account.getCompanyId());
-        accountRole.setAccountId(account.getId());
-
-        accountRoleRepository.insert(accountRole);
-      }
-    }
-
-    for (AccountRole accountRole : existMapAccountRoles.values()) {
-      accountRoleRepository.deleteById(accountRole.getId());
-    }
-  }
-
-  public List<AccountRole> selectAccountRolesByAccountId(String accountId) {
-
-    AccountRole probe = new AccountRole();
-    probe.setAccountId(accountId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountRole> example = Example.of(probe, matcher);
-
-    List<AccountRole> accountRoles = accountRoleRepository.findAll(example);
-
-    return accountRoles;
-  }
-
-  
-  public Account selectByUsername(String username) {
-    return accountRepository.selectByUsername(username);
-  }
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ApplicationService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ApplicationService.java
deleted file mode 100644
index 17e7503..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ApplicationService.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.service;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-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.repo.ApplicationRepository;
-import com.supwisdom.institute.backend.base.domain.repo.PermissionRepository;
-import com.supwisdom.institute.backend.common.framework.service.ABaseService;
-
-@Service
-public class ApplicationService extends ABaseService<Application, ApplicationRepository> {
-
-  @Override
-  public ApplicationRepository getRepo() {
-    return applicationRepository;
-  }
-
-  @Autowired
-  private ApplicationRepository applicationRepository;
-  
-  @Autowired
-  private PermissionRepository permissionRepository;
-
-  @Override
-  public Application insert(Application entity) {
-    entity = super.insert(entity);
-    
-    Permission p = new Permission();
-    p.setId(entity.getId());
-    p.setCode(entity.getCode());
-    p.setName(entity.getName());
-    p.setMemo(entity.getMemo());
-    p.setStatus(entity.getStatus());
-    p.setType(Permission.TYPE_APPLICATION);
-    p.setApplicationId(entity.getId());
-    p.setParentId(Permission.ROOT_PARENT_ID);
-    p.setOrder(Permission.DEFAULT_ORDER);
-    
-    permissionRepository.insert(p);
-    
-    return entity;
-  }
-  
-  @Override
-  public Application update(Application entity) {
-    entity = super.update(entity);
-    
-    Permission p = permissionRepository.selectById(entity.getId());
-    if (p != null) {
-      p = new Permission();
-      p.setCode(entity.getCode());
-      p.setName(entity.getName());
-      p.setMemo(entity.getMemo());
-      p.setStatus(entity.getStatus());
-      p.setType(Permission.TYPE_APPLICATION);
-      p.setApplicationId(entity.getId());
-      p.setParentId(Permission.ROOT_PARENT_ID);
-      p.setOrder(Permission.DEFAULT_ORDER);
-      
-      permissionRepository.update(p);
-    } else {
-      p = new Permission();
-      p.setId(entity.getId());
-      p.setCode(entity.getCode());
-      p.setName(entity.getName());
-      p.setMemo(entity.getMemo());
-      p.setStatus(entity.getStatus());
-      p.setType(Permission.TYPE_APPLICATION);
-      p.setApplicationId(entity.getId());
-      p.setParentId(Permission.ROOT_PARENT_ID);
-      p.setOrder(Permission.DEFAULT_ORDER);
-      
-      permissionRepository.insert(p);
-    }
-    
-    return entity;
-  }
-  
-  public void deleteBatch(List<String> ids) {
-    
-    ids.stream().forEach(id -> {
-      this.deleteById(id);
-    });
-  }
-
-  
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ConfigService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ConfigService.java
deleted file mode 100644
index d41e362..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ConfigService.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.supwisdom.institute.backend.base.domain.entity.Config;
-import com.supwisdom.institute.backend.base.domain.repo.ConfigRepository;
-import com.supwisdom.institute.backend.common.framework.service.ABaseService;
-
-@Service
-public class ConfigService extends ABaseService<Config, ConfigRepository> {
-  
-  @Override
-  public ConfigRepository getRepo() {
-    return configRepository;
-  }
-
-  @Autowired
-  private ConfigRepository configRepository;
-
-  public Config selectByCategoryKey(String categoryCode, String configKey) {
-    
-    return configRepository.selectByCategoryKey(categoryCode, configKey);
-  }
-
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/GroupService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/GroupService.java
deleted file mode 100644
index 9951b3a..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/GroupService.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.service;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-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.AccountGroup;
-import com.supwisdom.institute.backend.base.domain.entity.Group;
-import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
-import com.supwisdom.institute.backend.base.domain.repo.AccountGroupRepository;
-import com.supwisdom.institute.backend.base.domain.repo.GroupRepository;
-import com.supwisdom.institute.backend.base.domain.repo.GroupRoleRepository;
-import com.supwisdom.institute.backend.common.framework.service.ABaseService;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Service
-public class GroupService extends ABaseService<Group, GroupRepository> {
-  
-  @Override
-  public GroupRepository getRepo() {
-    return groupRepository;
-  }
-
-  @Autowired
-  private GroupRepository groupRepository;
-
-  @Autowired
-  private AccountGroupRepository accountGroupRepository;
-
-  @Autowired
-  private GroupRoleRepository groupRoleRepository;
-
-
-  public void deleteBatch(List<String> ids) {
-    
-    ids.stream().forEach(id -> {
-      this.deleteById(id);
-    });
-  }
-
-
-  public Page<AccountGroup> selectGroupAccounts(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    AccountGroup probe = new AccountGroup();
-    if (mapBean != null) {
-      probe.setAccountId(MapBeanUtils.getString(mapBean, "accountId"));
-      probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-    ;
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<AccountGroup> page = accountGroupRepository.findAll(example, pageRequest); // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public void relateGroupAccounts(Group group, List<AccountGroup> accountGroups) {
-
-    List<AccountGroup> existGroupAccounts = this.selectGroupAccountsByGroupId(group.getId());
-
-    Map<String, AccountGroup> existMapGroupAccounts = new LinkedHashMap<String, AccountGroup>();
-    for (AccountGroup accountGroup : existGroupAccounts) {
-      String k = String.format("%s", accountGroup.getAccountId());
-      existMapGroupAccounts.put(k, accountGroup);
-    }
-
-    for (AccountGroup accountGroup : accountGroups) {
-      String k = String.format("%s", accountGroup.getAccountId());
-
-      if (existMapGroupAccounts.containsKey(k)) {
-        existMapGroupAccounts.remove(k);
-      } else {
-        accountGroup.setCompanyId(group.getCompanyId());
-        accountGroup.setGroupId(group.getId());
-
-        accountGroupRepository.insert(accountGroup);
-      }
-    }
-
-    for (AccountGroup accountGroup : existMapGroupAccounts.values()) {
-      accountGroupRepository.deleteById(accountGroup.getId());
-    }
-  }
-
-  public List<AccountGroup> selectGroupAccountsByGroupId(String groupId) {
-
-    AccountGroup probe = new AccountGroup();
-    probe.setGroupId(groupId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountGroup> example = Example.of(probe, matcher);
-
-    List<AccountGroup> accountGroups = accountGroupRepository.findAll(example);
-
-    return accountGroups;
-  }
-  
-  
-  
-
-  public Page<GroupRole> selectGroupRoles(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    GroupRole probe = new GroupRole();
-    if (mapBean != null) {
-      probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<GroupRole> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<GroupRole> page = groupRoleRepository.findAll(example, pageRequest);  // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public void relateGroupRoles(Group group, List<GroupRole> groupRoles) {
-
-    List<GroupRole> existGroupRoles = this.selectGroupRolesByGroupId(group.getId());
-
-    Map<String, GroupRole> existMapGroupRoles = new LinkedHashMap<String, GroupRole>();
-    for (GroupRole groupRole : existGroupRoles) {
-      String k = String.format("%s", groupRole.getRoleId());
-      existMapGroupRoles.put(k, groupRole);
-    }
-
-    for (GroupRole groupRole : groupRoles) {
-      String k = String.format("%s", groupRole.getRoleId());
-
-      if (existMapGroupRoles.containsKey(k)) {
-        existMapGroupRoles.remove(k);
-      } else {
-        groupRole.setCompanyId(group.getCompanyId());
-        groupRole.setGroupId(group.getId());
-
-        groupRoleRepository.insert(groupRole);
-      }
-    }
-
-    for (GroupRole groupRole : existMapGroupRoles.values()) {
-      groupRoleRepository.deleteById(groupRole.getId());
-    }
-  }
-
-  public List<GroupRole> selectGroupRolesByGroupId(String groupId) {
-
-    GroupRole probe = new GroupRole();
-    probe.setGroupId(groupId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("groupId",
-        ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<GroupRole> example = Example.of(probe, matcher);
-
-    List<GroupRole> groupRoles = groupRoleRepository.findAll(example);
-
-    return groupRoles;
-  }
-
-
-}
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
deleted file mode 100644
index c546400..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/PermissionService.java
+++ /dev/null
@@ -1,319 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.service;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-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.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
-public class PermissionService extends ABaseService<Permission, PermissionRepository> {
-  
-  @Override
-  public PermissionRepository getRepo() {
-    return permissionRepository;
-  }
-
-  @Autowired
-  private PermissionRepository permissionRepository;
-
-  @Autowired
-  private PermissionResourceRepository permissionResourceRepository;
-
-  @Autowired
-  private RoleRepository roleRepository;
-
-  @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) {
-    
-    ids.stream().forEach(id -> {
-      this.deleteById(id);
-    });
-  }
-  
-  
-
-  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);
-    
-    return permission;
-  }
-  
-  private List<Permission> selectApplicationPermissionList() {
-    Map<String, Object> mapBean = new HashMap<String, Object>();
-    mapBean.put("type", Permission.TYPE_APPLICATION);
-    
-    return permissionRepository.selectList(true, -1, -1, mapBean, null);
-  }
-
-  public PermissionTreeNode selectPermissionTree(String applicationId, String type) {
-
-    Map<String, Object> mapBean = new HashMap<String, Object>();
-    if (StringUtils.isNotBlank(type)) {
-      mapBean.put("type", type);
-    }
-    
-    String rootTreeNodeId = "0";
-    
-    List<Permission> permissions = new ArrayList<Permission>();
-    
-    if (StringUtils.isBlank(applicationId)) {
-      Permission rootPermission = new Permission();
-      rootPermission.setId(Permission.ROOT_PARENT_ID);
-      rootPermission.setCode("root");
-      rootPermission.setName("根");
-      
-      permissions.add(rootPermission);
-      rootTreeNodeId = rootPermission.getId();
-
-      List<Permission> applicationPermissions = this.selectApplicationPermissionList();
-      permissions.addAll(applicationPermissions);
-    } else {
-      Permission applicationPermission = permissionRepository.selectById(applicationId); // this.selectApplicationPermissionByCode(applicationCode);
-      if (applicationPermission == null) {
-        return null;
-      }
-      
-      permissions.add(applicationPermission);
-      rootTreeNodeId = applicationPermission.getId();
-    }
-    
-    List<Permission> menuPermissions = permissionRepository.selectList(true, -1, -1, mapBean, null);
-    permissions.addAll(menuPermissions);
-
-    return convertPermissionTree(permissions, rootTreeNodeId);
-  }
-  
-  private PermissionTreeNode convertPermissionTree(List<Permission> permissions, String rootTreeNodeId) {
-    if (permissions == null || permissions.size() == 0) {
-      return null;
-    }
-
-    Map<String, PermissionTreeNode> parentTreeNode = new LinkedHashMap<String, PermissionTreeNode>();
-
-    for (Permission permission : permissions) {
-      PermissionTreeNode treeNode = EntityUtils.copy(permission, new PermissionTreeNode());
-      treeNode.setChildren(new ArrayList<PermissionTreeNode>());
-      
-      if (parentTreeNode.containsKey(treeNode.getId())) {
-        continue;
-      }
-      parentTreeNode.put(treeNode.getId(), treeNode);
-    }
-    
-    for (PermissionTreeNode treeNode : parentTreeNode.values()) {
-      if (!parentTreeNode.containsKey(treeNode.getParentId())) {
-        continue;
-      }
-      
-      parentTreeNode.get(treeNode.getParentId()).getChildren().add(treeNode);
-    }
-    
-    return parentTreeNode.get(rootTreeNodeId);
-  }
-
-  
-
-//  public Permission selectApplicationPermissionByCode(String code) {
-//    Permission probe = new Permission();
-//    probe.setCode(code);
-//    probe.setType("1");
-//    
-//    ExampleMatcher matcher = ExampleMatcher.matching()
-//        .withMatcher("code", ExampleMatcher.GenericPropertyMatchers.exact())
-//        .withMatcher("type", ExampleMatcher.GenericPropertyMatchers.exact());
-//    
-//    Example<Permission> example = Example.of(probe, matcher);
-//    
-//    Optional<Permission> o = permissionRepository.findOne(example);
-//    
-//    if (o.isPresent()) {
-//      return o.get();
-//    }
-//    
-//    return null;
-//  }
-  
-
-  public List<Permission> selectByUsername(String username, String applicationId, String type) {
-    List<Permission> permissions = new ArrayList<Permission>();
-    
-//    Permission applicationPermission = permissionRepository.selectById(applicationId);
-//    if (applicationPermission == null) {
-//      return permissions;
-//    }
-//    
-//    int lft = applicationPermission.getLft();
-//    int rgt = applicationPermission.getRgt();
-    
-    if (StringUtils.isBlank(applicationId)) {
-      List<Permission> accountRolePermissions = permissionRepository.selectAccountRolePermissionByUsername(username, type);
-      permissions.addAll(accountRolePermissions);
-      
-      List<Permission> accountGroupRolePermissions = permissionRepository.selectAccountGroupRolePermissionByUsername(username, type);
-      permissions.addAll(accountGroupRolePermissions);
-    } else {
-      List<Permission> accountRolePermissions = permissionRepository.selectAccountRolePermissionByUsername(username, applicationId, type);
-      permissions.addAll(accountRolePermissions);
-      
-      List<Permission> accountGroupRolePermissions = permissionRepository.selectAccountGroupRolePermissionByUsername(username, applicationId, type);
-      permissions.addAll(accountGroupRolePermissions);
-    }
-    
-    return EntityUtils.distinctList(permissions);
-  }
-  
-  @Deprecated
-  public PermissionTreeNode selectPermissionTreeByUsername(String username, String applicationId, String type) {
-    String rootTreeNodeId = "0";
-    
-    List<Permission> permissions = new ArrayList<Permission>();
-    
-    if (StringUtils.isBlank(applicationId)) {
-      Permission rootPermission = new Permission();
-      rootPermission.setId(Permission.ROOT_PARENT_ID);
-      rootPermission.setCode("root");
-      rootPermission.setName("根");
-      
-      permissions.add(rootPermission);
-      rootTreeNodeId = rootPermission.getId();
-
-      List<Permission> applicationPermissions = this.selectApplicationPermissionList();
-      permissions.addAll(applicationPermissions);
-    } else {
-      Permission applicationPermission = permissionRepository.selectById(applicationId); // this.selectApplicationPermissionByCode(applicationCode);
-      if (applicationPermission == null) {
-        return null;
-      }
-      
-      permissions.add(applicationPermission);
-      rootTreeNodeId = applicationPermission.getId();
-    }
-    
-    List<Permission> menuPermissions = this.selectByUsername(username, applicationId, type);
-    permissions.addAll(menuPermissions);
-
-    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
deleted file mode 100644
index eea0422..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java
+++ /dev/null
@@ -1,58 +0,0 @@
-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
-public class ResourceService extends ABaseService<Resource, ResourceRepository> {
-  
-  @Override
-  public ResourceRepository getRepo() {
-    return resourceRepository;
-  }
-
-  @Autowired
-  private ResourceRepository resourceRepository;
-
-  @Autowired
-  private RoleRepository roleRepository;
-
-  
-  public void deleteBatch(List<String> ids) {
-    
-    ids.stream().forEach(id -> {
-      this.deleteById(id);
-    });
-  }
-
-
-  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/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RoleService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RoleService.java
deleted file mode 100644
index c66e3ff..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RoleService.java
+++ /dev/null
@@ -1,268 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.service;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-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.AccountRole;
-import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
-import com.supwisdom.institute.backend.base.domain.entity.Role;
-import com.supwisdom.institute.backend.base.domain.entity.RolePermission;
-import com.supwisdom.institute.backend.base.domain.repo.AccountRoleRepository;
-import com.supwisdom.institute.backend.base.domain.repo.GroupRoleRepository;
-import com.supwisdom.institute.backend.base.domain.repo.RolePermissionRepository;
-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;
-
-@Service
-public class RoleService extends ABaseService<Role, RoleRepository> {
-  
-  @Override
-  public RoleRepository getRepo() {
-    return roleRepository;
-  }
-
-  @Autowired
-  private RoleRepository roleRepository;
-
-  @Autowired
-  private AccountRoleRepository accountRoleRepository;
-
-  @Autowired
-  private GroupRoleRepository groupRoleRepository;
-
-  @Autowired
-  private RolePermissionRepository rolePermissionRepository;
-
-
-  public void deleteBatch(List<String> ids) {
-    
-    ids.stream().forEach(id -> {
-      this.deleteById(id);
-    });
-  }
-
-  
-  public Page<AccountRole> selectRoleAccounts(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    AccountRole probe = new AccountRole();
-    if (mapBean != null) {
-      probe.setAccountId(MapBeanUtils.getString(mapBean, "accountId"));
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("accountId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountRole> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<AccountRole> page = accountRoleRepository.findAll(example, pageRequest); // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public void relateRoleAccounts(Role role, List<AccountRole> roleAccounts) {
-
-    List<AccountRole> existRoleAccounts = this.selectRoleAccountsByRoleId(role.getId());
-
-    Map<String, AccountRole> existMapRoleAccounts = new LinkedHashMap<String, AccountRole>();
-    for (AccountRole accountRole : existRoleAccounts) {
-      String k = String.format("%s", accountRole.getAccountId());
-      existMapRoleAccounts.put(k, accountRole);
-    }
-
-    for (AccountRole accountRole : roleAccounts) {
-      String k = String.format("%s", accountRole.getAccountId());
-
-      if (existMapRoleAccounts.containsKey(k)) {
-        existMapRoleAccounts.remove(k);
-      } else {
-        accountRole.setCompanyId(role.getCompanyId());
-        accountRole.setRoleId(role.getId());
-
-        accountRoleRepository.insert(accountRole);
-      }
-    }
-
-    for (AccountRole accountRole : existMapRoleAccounts.values()) {
-      accountRoleRepository.deleteById(accountRole.getId());
-    }
-  }
-
-  public List<AccountRole> selectRoleAccountsByRoleId(String roleId) {
-
-    AccountRole probe = new AccountRole();
-    probe.setRoleId(roleId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<AccountRole> example = Example.of(probe, matcher);
-
-    List<AccountRole> accountRoles = accountRoleRepository.findAll(example);
-
-    return accountRoles;
-  }
-  
-  
-
-  public Page<GroupRole> selectRoleGroups(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    GroupRole probe = new GroupRole();
-    if (mapBean != null) {
-      probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<GroupRole> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<GroupRole> page = groupRoleRepository.findAll(example, pageRequest);  // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public void relateRoleGroups(Role role, List<GroupRole> groupRoles) {
-
-    List<GroupRole> existRoleGroups = this.selectRoleGroupsByRoleId(role.getCode());
-
-    Map<String, GroupRole> existMapRoleGroups = new LinkedHashMap<String, GroupRole>();
-    for (GroupRole groupRole : existRoleGroups) {
-      String k = String.format("%s", groupRole.getGroupId());
-      existMapRoleGroups.put(k, groupRole);
-    }
-
-    for (GroupRole groupRole : groupRoles) {
-      String k = String.format("%s", groupRole.getGroupId());
-
-      if (existMapRoleGroups.containsKey(k)) {
-        existMapRoleGroups.remove(k);
-      } else {
-        groupRole.setCompanyId(role.getCompanyId());
-        groupRole.setRoleId(role.getId());
-
-        groupRoleRepository.insert(groupRole);
-      }
-    }
-
-    for (GroupRole groupRole : existMapRoleGroups.values()) {
-      groupRoleRepository.deleteById(groupRole.getId());
-    }
-  }
-
-  public List<GroupRole> selectRoleGroupsByRoleId(String roleId) {
-
-    GroupRole probe = new GroupRole();
-    probe.setRoleId(roleId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<GroupRole> example = Example.of(probe, matcher);
-
-    List<GroupRole> groupRoles = groupRoleRepository.findAll(example);
-
-    return groupRoles;
-  }
-
-
-  public Page<RolePermission> selectRolePermissions(int pageIndex, int pageSize, Map<String, Object> mapBean) {
-
-    RolePermission probe = new RolePermission();
-    if (mapBean != null) {
-      probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
-      probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
-    }
-
-    ExampleMatcher matcher = ExampleMatcher.matching()
-        .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
-        .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<RolePermission> example = Example.of(probe, matcher);
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-
-    Page<RolePermission> page = rolePermissionRepository.findAll(example, pageRequest); // FIXME: 多表关联查询
-
-    return page;
-  }
-
-  public void relateRolePermissions(Role role, List<RolePermission> rolePermissions) {
-
-    List<RolePermission> existRolePermissions = this.selectRolePermissionsByRoleId(role.getId());
-
-    Map<String, RolePermission> existMapRolePermissions = new LinkedHashMap<String, RolePermission>();
-    for (RolePermission rolePermission : existRolePermissions) {
-      String k = String.format("%s", rolePermission.getPermissionId());
-      existMapRolePermissions.put(k, rolePermission);
-    }
-
-    for (RolePermission rolePermission : rolePermissions) {
-      String k = String.format("%s", rolePermission.getPermissionId());
-
-      if (existMapRolePermissions.containsKey(k)) {
-        existMapRolePermissions.remove(k);
-      } else {
-        rolePermission.setCompanyId(role.getCompanyId());
-        rolePermission.setRoleId(role.getId());
-
-        rolePermissionRepository.insert(rolePermission);
-      }
-    }
-
-    for (RolePermission rolePermission : existMapRolePermissions.values()) {
-      rolePermissionRepository.deleteById(rolePermission.getId());
-    }
-  }
-
-  public List<RolePermission> selectRolePermissionsByRoleId(String roleId) {
-
-    RolePermission probe = new RolePermission();
-    probe.setRoleId(roleId);
-
-    ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("roleId",
-        ExampleMatcher.GenericPropertyMatchers.exact());
-
-    Example<RolePermission> example = Example.of(probe, matcher);
-
-    List<RolePermission> rolePermissions = rolePermissionRepository.findAll(example);
-
-    return rolePermissions;
-  }
-
-  
-  
-
-  public List<Role> selectByUsername(String username) {
-    List<Role> roles = new ArrayList<Role>();
-    
-    List<Role> userRoles = roleRepository.selectAccountRoleByUsername(username);
-    roles.addAll(userRoles);
-    
-    List<Role> userGroupRoles = roleRepository.selectAccountGroupRoleByUsername(username);
-    roles.addAll(userGroupRoles);
-    
-    roles = EntityUtils.distinctList(roles);
-    
-    return roles;
-  }
-  
-}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RouteService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RouteService.java
deleted file mode 100644
index f93595f..0000000
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RouteService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.supwisdom.institute.backend.base.domain.service;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.supwisdom.institute.backend.base.domain.entity.Route;
-import com.supwisdom.institute.backend.base.domain.repo.RouteRepository;
-import com.supwisdom.institute.backend.common.framework.service.ABaseService;
-
-@Service
-public class RouteService extends ABaseService<Route, RouteRepository> {
-
-  @Override
-  public RouteRepository getRepo() {
-    return routeRepository;
-  }
-  
-  @Autowired
-  private RouteRepository routeRepository;
-
-
-  public void deleteBatch(List<String> ids) {
-    
-    ids.stream().forEach(id -> {
-      this.deleteById(id);
-    });
-  }
-
-  
-}
diff --git a/base/pom.xml b/base/pom.xml
deleted file mode 100644
index 0e85a49..0000000
--- a/base/pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-  </parent>
-  
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-base-aggregator</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Supwisdom Backend Framework Base Aggregator</name>
-  <description>Supwisdom Backend Framework Base Aggregator project</description>
-
-  <modules>
-    <module>domain</module>
-    <module>api</module>
-  </modules>
-
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/bff/admin/.gitignore b/bff/admin/.gitignore
deleted file mode 100644
index b83d222..0000000
--- a/bff/admin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/bff/admin/Dockerfile b/bff/admin/Dockerfile
deleted file mode 100644
index b91c9f4..0000000
--- a/bff/admin/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-FROM harbor.supwisdom.com/institute/openjdk:8-jre-alpine
-
-ENV ENABLE_JMX_SSL=false
-ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=docker
-ENV SPRING_PROFILES_ACTIVE=docker
-
-ARG NAME
-ARG VERSION
-ARG JAR_FILE
-
-LABEL name=$NAME \
-      version=$VERSION
-
-EXPOSE 8080
-
-EXPOSE 8443
-
-COPY --chown=java-app:java-app target/${JAR_FILE} /home/java-app/lib/app.jar
-
-# COPY --chown=java-app:java-app target/doc /home/java-app/doc
-# COPY --chown=java-app:java-app target/api-docs /home/java-app/api-docs
diff --git a/bff/admin/pom.xml b/bff/admin/pom.xml
deleted file mode 100644
index 5aa05cf..0000000
--- a/bff/admin/pom.xml
+++ /dev/null
@@ -1,223 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-    <relativePath>../../</relativePath>
-  </parent>
-
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-admin-bff</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
-  <name>Supwisdom Backend Framework Admin Backend for Frontend</name>
-  <description>Supwisdom Backend Framework Admin Backend for Frontend project</description>
-
-  <properties>
-    <start-class>com.supwisdom.institute.backend.admin.bff.Application</start-class>
-  </properties>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-    </dependency>
-
-    <!-- 微服务 健康监控 -->
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-actuator</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-web</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.cloud</groupId>
-      <artifactId>spring-cloud-starter-openfeign</artifactId>
-    </dependency>
-    <!-- openfeign's dependency -->
-    <dependency>
-      <groupId>com.netflix.feign</groupId>
-      <artifactId>feign-httpclient</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpcore</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-online-doc</artifactId>
-    </dependency>
-
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-mvc</artifactId>
-    </dependency> -->
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-object-mapper</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-i18n</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-lang</artifactId>
-    </dependency> -->
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-framework</artifactId>
-    </dependency>
-    
-    
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger2</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger-ui</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>mysql</groupId>
-      <artifactId>mysql-connector-java</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-
-    <!-- 热部署,无需重启项目 -->
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-devtools</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <finalName>${project.artifactId}</finalName>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-release-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-
-
-      <!-- <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>2.4.3</version>
-        <configuration>
-          <encoding>${project.build.sourceEncoding}</encoding>
-        </configuration>
-        <executions>
-          <execution>
-            <id>copy-doc-resources</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <encoding>utf-8</encoding>
-              <outputDirectory>${basedir}/target/doc</outputDirectory>
-              <overwrite>true</overwrite>
-              <resources>
-                <resource>
-                  <directory>${basedir}/../doc</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-api-docs-resources</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <encoding>utf-8</encoding>
-              <outputDirectory>${basedir}/target/api-docs</outputDirectory>
-              <overwrite>true</overwrite>
-              <resources>
-                <resource>
-                  <directory>${basedir}/../api-docs</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin> -->
-
-
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-
-      <plugin>
-        <groupId>com.spotify</groupId>
-        <artifactId>dockerfile-maven-plugin</artifactId>
-        <configuration>
-          <skip>false</skip>
-        </configuration>
-      </plugin>
-
-    </plugins>
-
-  </build>
-
-</project>
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
deleted file mode 100644
index 64ea622..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff;
-
-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;
-import com.supwisdom.institute.backend.common.framework.exception.EnableCustomExceptionHandler;
-
-@SpringBootApplication
-@EnableFeignClients
-
-@EnableScheduling
-
-@EnableSimpleUserTransmit
-
-@EnableCustomExceptionHandler
-
-@EnableInfrasOnlineDoc
-public class Application {
-
-  public static void main(String[] args) {
-    SpringApplication.run(Application.class, args);
-  }
-  
-}
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
deleted file mode 100644
index d149eee..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/autorefesh/base/InMemeryPermissionRoleSetAutoRefresh.java
+++ /dev/null
@@ -1,26 +0,0 @@
-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/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/.gitkeep
+++ /dev/null
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/base/AdminBaseController.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/base/AdminBaseController.java
deleted file mode 100644
index 6224970..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/base/AdminBaseController.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.controller.base;
-
-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.RestController;
-
-import com.supwisdom.institute.backend.common.core.transmit.user.UserContext;
-
-@RestController
-@RequestMapping(value = "/v1/admin/base")
-public class AdminBaseController {
-  
-  @RequestMapping(method = RequestMethod.GET, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  public String hello() {
-    return "hello, " + UserContext.getUsername();
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/biz/AdminBizController.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/biz/AdminBizController.java
deleted file mode 100644
index 8c46261..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/biz/AdminBizController.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.controller.biz;
-
-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.RestController;
-
-import com.supwisdom.institute.backend.admin.bff.api.v1.service.biz.BizService;
-
-@RestController
-@RequestMapping(value = "/v1/admin/biz")
-public class AdminBizController {
-  
-  @Autowired
-  BizService bizService;
-
-  @RequestMapping(method = RequestMethod.GET, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  public String biz() {
-    
-    bizService.query(true, -1, -1);
-    
-    return "biz";
-  }
-
-}
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
deleted file mode 100644
index c88e7c5..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/me/MeController.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.controller.me;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
-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.RestController;
-
-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.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;
-import com.supwisdom.institute.backend.common.core.transmit.user.User;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-
-@Api(value = "BFFMe", tags = { "me" }, description = "登录用户相关信息的接口")
-@RestController
-@RequestMapping(value = "/v1/me")
-public class MeController {
-  
-  @Autowired
-  private AuthnService authnService;
-  
-  @ApiOperation(
-      tags = { "me" },
-      value = "获取登录用户的基本信息", notes = "获取登录用户的基本信息", nickname = "user"
-  )
-  @RequestMapping(method = RequestMethod.GET, path = "/user", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  public DefaultApiResponse<CurrentUserResponseData> user() {
-    
-    User user = CurrentUserUtil.currentUser();
-    
-    CurrentUser cu = new CurrentUser();
-    cu.setUsername(user.getUsername());
-    cu.setRoles(user.getRoles());
-    cu.setAttributes(user.getAttributes());
-    
-    // XXX: 如果需要放入其他信息,可以扩展CurrentUser,并从服务接口中获取后写入数据
-    
-    CurrentUserResponseData data = CurrentUserResponseData.of(cu);
-    return new DefaultApiResponse<CurrentUserResponseData>(data);
-  }
-  
-  @ApiOperation(
-      tags = { "me" },
-      value = "获取登录用户的访问菜单", notes = "获取登录用户的访问菜单", nickname = "accountMenus"
-  )
-  @RequestMapping(method = RequestMethod.GET, path = "/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  public DefaultApiResponse<GrantedMenusResponseData> accountMenus() {
-    
-    String username = CurrentUserUtil.currentUsername();
-    
-    List<Permission> menus =  authnService.menus(username, "1");  // XXX: applicationId
-    
-    List<GrantedMenu> grantedMenus = new ArrayList<>();
-    
-    menus.forEach(m -> {
-      GrantedMenu grantedMenu = new GrantedMenu();
-      grantedMenu = EntityUtils.copy(m, grantedMenu);
-      grantedMenus.add(grantedMenu);
-    });
-    
-    GrantedMenusResponseData data = GrantedMenusResponseData.of(grantedMenus);
-    return new DefaultApiResponse<GrantedMenusResponseData>(data);
-    
-  }
-  
-}
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
deleted file mode 100644
index 1b04e65..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/open/OpenController.java
+++ /dev/null
@@ -1,53 +0,0 @@
-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.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 = "/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() {
-    
-    List<Menu> menus = new ArrayList<>();
-
-    List<PermissionRoleSet> permissionRoleSets = authnService.getPermissionRoleSets("1"); // XXX: 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
deleted file mode 100644
index ab6da53..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/controller/open/OpenSyncController.java
+++ /dev/null
@@ -1,55 +0,0 @@
-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 = "/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/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/.gitkeep
+++ /dev/null
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Account.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Account.java
deleted file mode 100644
index ebb0513..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Account.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
-
-@Getter
-@Setter
-public class Account extends ABaseModel {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -4889952442290543101L;
-
-  private String id;
-
-  /**
-   * 用户名
-   */
-  private String username;
-  
-  /**
-   * 密码
-   */
-  private String password;
-
-  /**
-   * 是否可用,1 可用,0 不可用,默认:1
-   */
-  private Boolean enabled;
-  /**
-   * 账号未过期,1 未过期,0 过期,默认:1
-   */
-  private Boolean accountNonExpired;
-  /**
-   * 账号未锁定,1 未锁定,0 锁定,默认:1
-   */
-  private Boolean accountNonLocked;
-  /**
-   * 密码未过期,1 未过期,0 过期,默认:1
-   */
-  private Boolean credentialsNonExpired;
-
-  /**
-   * 姓名
-   */
-  private String name;
-
-  /**
-   * 备注
-   */
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  private String status;
-
-  /**
-   * 登录手机
-   */
-  private String mobile;
-  /**
-   * 登录邮箱
-   */
-  private String email;
-
-}
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
deleted file mode 100644
index b0f6c48..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Application.java
+++ /dev/null
@@ -1,39 +0,0 @@
-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
deleted file mode 100644
index 5877bf9..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Permission.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
-
-@Getter
-@Setter
-public class Permission extends ABaseModel {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -3042842657207449148L;
-
-  private String id;
-
-  /**
-   * 代码
-   */
-  private String code;
-
-  /**
-   * 名称
-   */
-  private String name;
-
-  /**
-   * 备注
-   */
-  private String memo;
-
-  /**
-   * 状态(1 启用,0 停用)
-   */
-  private String status;
-
-  /**
-   * 菜单图标
-   */
-  private String icon;
-
-  /**
-   * 类型(1 应用,2 菜单,3 操作)
-   */
-  private String type;
-
-  /**
-   * 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/base/PermissionRoleSet.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/PermissionRoleSet.java
deleted file mode 100644
index 6080107..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/PermissionRoleSet.java
+++ /dev/null
@@ -1,114 +0,0 @@
-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
deleted file mode 100644
index 665154d..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/ResourceRoleSet.java
+++ /dev/null
@@ -1,80 +0,0 @@
-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/base/Role.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Role.java
deleted file mode 100644
index d8c5144..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/base/Role.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
-
-@Getter
-@Setter
-public class Role extends ABaseModel {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -8551951601186240995L;
-
-  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/biz/Biz.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/biz/Biz.java
deleted file mode 100644
index a290125..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/biz/Biz.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.model.biz;
-
-import java.util.Date;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
-
-public class Biz extends ABaseModel {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8755876583168251137L;
-  
-  @Getter
-  @Setter
-  private String id;
-
-  @Getter
-  @Setter
-  private String name;
-  
-  @Getter
-  @Setter
-  private Boolean bool;
-  
-  @Getter
-  @Setter
-  private Date date;
-
-  @Getter
-  @Setter
-  private Integer num;
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/me/CurrentUser.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/me/CurrentUser.java
deleted file mode 100644
index 3563b30..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/me/CurrentUser.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.model.me;
-
-import java.util.List;
-import java.util.Map;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
-
-public class CurrentUser extends ABaseModel {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 2049212615500816301L;
-  
-  @Getter
-  @Setter
-  private String username;
-  
-  @Getter
-  @Setter
-  private List<String> roles;
-  
-  @Getter
-  @Setter
-  private Map<String, Object> attributes;
-
-}
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
deleted file mode 100644
index 5d8cd70..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/me/GrantedMenu.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.model.me;
-
-import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class GrantedMenu extends ABaseModel {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -1261755008133562980L;
-
-  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/Menu.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/Menu.java
deleted file mode 100644
index b3bdc99..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/Menu.java
+++ /dev/null
@@ -1,64 +0,0 @@
-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
deleted file mode 100644
index 72986bc..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/model/open/SyncRoleModel.java
+++ /dev/null
@@ -1,39 +0,0 @@
-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/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/.gitkeep
+++ /dev/null
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/configuration/BaseFeignClientConfiguration.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/configuration/BaseFeignClientConfiguration.java
deleted file mode 100644
index da7040b..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/configuration/BaseFeignClientConfiguration.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.configuration;
-
-import org.apache.http.conn.HttpClientConnectionManager;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.commons.httpclient.ApacheHttpClientFactory;
-import org.springframework.context.annotation.Bean;
-
-import com.supwisdom.institute.backend.common.core.feign.FeignClientBuilder;
-
-import feign.Client;
-
-public class BaseFeignClientConfiguration {
-
-  @Bean
-  public Client feignClient(
-      @Value("${sw-backend-base-api.client-auth.enabled:false}") boolean enabled,
-      @Value("${sw-backend-base-api.client-auth.key-password:}") String keyPassword,
-      @Value("${sw-backend-base-api.client-auth.key-store:}") String keyStore,
-      @Value("${sw-backend-base-api.client-auth.key-store-password:}") String keyStorePassword,
-      @Value("${sw-backend-base-api.client-auth.trust-store:}") String trustStore,
-      @Value("${sw-backend-base-api.client-auth.trust-store-password:}") String trustStorePassword,
-      ApacheHttpClientFactory httpClientFactory,
-      HttpClientConnectionManager httpClientConnectionManager) {
-    
-    return FeignClientBuilder.builder()
-        .enabled(enabled)
-        .keyPassword(keyPassword)
-        .keyStore(keyStore)
-        .keyStorePassword(keyStorePassword)
-        .trustStore(trustStore)
-        .trustStorePassword(trustStorePassword)
-        .build()
-        .apacheHttpClient(httpClientFactory, httpClientConnectionManager);
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFallbackFactory.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFallbackFactory.java
deleted file mode 100644
index e965dab..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFallbackFactory.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.v1.authn;
-
-import org.springframework.stereotype.Component;
-
-import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.bff.api.v1.remote.exception.FallbackError;
-
-import feign.hystrix.FallbackFactory;
-
-@Component
-public class AuthnRemoteFallbackFactory implements FallbackFactory<AuthnRemoteFeignClient> {
-
-  @Override
-  public AuthnRemoteFeignClient create(Throwable cause) {
-    return new AuthnRemoteFeignClient() {
-
-      @Override
-      public JSONObject account(String username) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject roles(String username) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject applications(String username, String applicationId) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject menus(String username, String applicationId) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject operations(String username, String applicationId) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject resources(String username, String applicationId) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        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/AuthnRemoteFeignClient.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFeignClient.java
deleted file mode 100644
index 0486ffd..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/base/v1/authn/AuthnRemoteFeignClient.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.v1.authn;
-
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.configuration.BaseFeignClientConfiguration;
-
-@FeignClient(
-    configuration = {BaseFeignClientConfiguration.class},
-    name = "base-admin-account-remote-feign-client",
-    url = "${sw-backend-base-api.uri}/v1/authn",
-    fallbackFactory = AuthnRemoteFallbackFactory.class
-)
-public interface AuthnRemoteFeignClient {
-  
-  @RequestMapping(method = RequestMethod.GET, path = "/{username}/account")
-  JSONObject account(
-      @PathVariable(name = "username") String username);
-
-  @RequestMapping(method = RequestMethod.GET, path = "/{username}/roles")
-  JSONObject roles(
-      @PathVariable(name = "username") String username);
-
-  @RequestMapping(method = RequestMethod.GET, path = "/{username}/applications")
-  JSONObject applications(
-      @PathVariable(name = "username") String username,
-      @RequestParam(name = "applicationId", required = false) String applicationId);
-
-  @RequestMapping(method = RequestMethod.GET, path = "/{username}/menus")
-  JSONObject menus(
-      @PathVariable(name = "username") String username,
-      @RequestParam(name = "applicationId", required = false) String applicationId);
-
-  @RequestMapping(method = RequestMethod.GET, path = "/{username}/operations")
-  JSONObject operations(
-      @PathVariable(name = "username") String username,
-      @RequestParam(name = "applicationId", required = false) String applicationId);
-
-
-  @RequestMapping(method = RequestMethod.GET, path = "/{username}/resources")
-  JSONObject resources(
-      @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/remote/biz/configuration/BizFeignClientConfiguration.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/biz/configuration/BizFeignClientConfiguration.java
deleted file mode 100644
index 1e031d0..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/biz/configuration/BizFeignClientConfiguration.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.remote.biz.configuration;
-
-import org.apache.http.conn.HttpClientConnectionManager;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.commons.httpclient.ApacheHttpClientFactory;
-import org.springframework.context.annotation.Bean;
-
-import com.supwisdom.institute.backend.common.core.feign.FeignClientBuilder;
-
-import feign.Client;
-
-public class BizFeignClientConfiguration {
-
-  @Bean
-  public Client feignClient(
-      @Value("${sw-backend-biz-api.client-auth.enabled:false}") boolean enabled,
-      @Value("${sw-backend-biz-api.client-auth.key-password:}") String keyPassword,
-      @Value("${sw-backend-biz-api.client-auth.key-store:}") String keyStore,
-      @Value("${sw-backend-biz-api.client-auth.key-store-password:}") String keyStorePassword,
-      @Value("${sw-backend-biz-api.client-auth.trust-store:}") String trustStore,
-      @Value("${sw-backend-biz-api.client-auth.trust-store-password:}") String trustStorePassword,
-      ApacheHttpClientFactory httpClientFactory,
-      HttpClientConnectionManager httpClientConnectionManager) {
-    
-    return FeignClientBuilder.builder()
-      .enabled(enabled)
-      .keyPassword(keyPassword)
-      .keyStore(keyStore)
-      .keyStorePassword(keyStorePassword)
-      .trustStore(trustStore)
-      .trustStorePassword(trustStorePassword)
-      .build()
-      .apacheHttpClient(httpClientFactory, httpClientConnectionManager);
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java
deleted file mode 100644
index c73d3ee..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.remote.biz.v1.admin;
-
-import org.springframework.stereotype.Component;
-
-import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.biz.Biz;
-import com.supwisdom.institute.backend.admin.bff.api.v1.remote.exception.FallbackError;
-
-import feign.hystrix.FallbackFactory;
-
-@Component
-public class AdminBizRemoteFallbackFactory implements FallbackFactory<AdminBizRemoteFeignClient> {
-
-  @Override
-  public AdminBizRemoteFeignClient create(Throwable cause) {
-    return new AdminBizRemoteFeignClient() {
-
-      @Override
-      public JSONObject query(boolean loadAll, int pageIndex, int pageSize) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject load(String id) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject create(Biz biz) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject update(String id, Biz biz) {
-        if (cause != null) {
-          cause.printStackTrace();
-        }
-        return FallbackError.defaultErrorJson(cause);
-      }
-
-      @Override
-      public JSONObject delete(String id) {
-        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/biz/v1/admin/AdminBizRemoteFeignClient.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/biz/v1/admin/AdminBizRemoteFeignClient.java
deleted file mode 100644
index 7c25a01..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/biz/v1/admin/AdminBizRemoteFeignClient.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.remote.biz.v1.admin;
-
-import org.springframework.cloud.openfeign.FeignClient;
-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.RequestParam;
-
-import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.biz.Biz;
-import com.supwisdom.institute.backend.admin.bff.api.v1.remote.biz.configuration.BizFeignClientConfiguration;
-
-@FeignClient(
-    configuration = {BizFeignClientConfiguration.class},
-    name = "biz-admin-biz-remote-feign-client",
-    url = "${sw-backend-biz-api.uri}/v1/admin/biz",
-    fallbackFactory = AdminBizRemoteFallbackFactory.class
-)
-public interface AdminBizRemoteFeignClient {
-  
-  @RequestMapping(method = RequestMethod.GET)
-  JSONObject query(
-      @RequestParam(name = "loadAll") boolean loadAll,
-      @RequestParam(name = "pageIndex") int pageIndex,
-      @RequestParam(name = "pageSize") int pageSize
-      
-  );
-  
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}")
-  JSONObject load(
-      @PathVariable(name = "id") String id
-  );
-
-  @RequestMapping(method = RequestMethod.POST)
-  JSONObject create(
-      @RequestBody Biz biz
-  );
-
-  @RequestMapping(method = RequestMethod.PUT, path = "/{id}")
-  JSONObject update(
-      @PathVariable(name = "id") String id,
-      @RequestBody Biz biz
-  );
-  
-  @RequestMapping(method = RequestMethod.DELETE, path = "/{id}")
-  JSONObject delete(
-      @PathVariable(name = "id") String id
-  );
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/exception/FallbackError.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/exception/FallbackError.java
deleted file mode 100644
index 14f8326..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/remote/exception/FallbackError.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.remote.exception;
-
-import com.alibaba.fastjson.JSONObject;
-
-public class FallbackError {
-  
-  private FallbackError() {
-    
-  }
-  
-  public static JSONObject defaultErrorJson(Throwable cause) {
-    JSONObject error = new JSONObject();
-    
-    error.put("code", -1);
-    error.put("message", cause.getMessage());
-    error.put("error", cause.getMessage());
-    
-    return error;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/.gitkeep
+++ /dev/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
deleted file mode 100644
index 8f6d9df..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/base/AuthnService.java
+++ /dev/null
@@ -1,202 +0,0 @@
-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/service/biz/BizService.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/biz/BizService.java
deleted file mode 100644
index 0fa9bdf..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/service/biz/BizService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.service.biz;
-
-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.remote.biz.v1.admin.AdminBizRemoteFeignClient;
-import com.supwisdom.institute.backend.admin.bff.api.v1.vo.biz.response.data.BizQueryResponseData;
-
-@Service
-public class BizService {
-  
-  @Autowired
-  private AdminBizRemoteFeignClient bizRemote;
-  
-  public BizQueryResponseData query(boolean loadAll, int pageIndex, int pageSize) {
-    
-    JSONObject jsonObject = bizRemote.query(loadAll, pageIndex, pageSize);
-    if (jsonObject == null) {
-      return null;
-    }
-    
-    if (jsonObject.getIntValue("code") == 0) {
-      JSONObject data = jsonObject.getJSONObject("data");
-      
-      return data.toJavaObject(BizQueryResponseData.class);
-    }
-    
-    return null;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/.gitkeep
+++ /dev/null
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/biz/response/data/BizQueryResponseData.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/biz/response/data/BizQueryResponseData.java
deleted file mode 100644
index 8b3891b..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/biz/response/data/BizQueryResponseData.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.vo.biz.response.data;
-
-import java.util.List;
-import java.util.Map;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.biz.Biz;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiQueryResponseData;
-
-public class BizQueryResponseData implements IApiQueryResponseData<Biz> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -380945463584664943L;
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Biz> items;
-  
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/me/response/data/CurrentUserResponseData.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/me/response/data/CurrentUserResponseData.java
deleted file mode 100644
index 97443d3..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/me/response/data/CurrentUserResponseData.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.vo.me.response.data;
-
-import org.springframework.beans.BeanUtils;
-
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.me.CurrentUser;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class CurrentUserResponseData extends CurrentUser implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 2296310299015658064L;
-
-  public static CurrentUserResponseData of(CurrentUser currentUser) {
-    CurrentUserResponseData data = new CurrentUserResponseData();
-    
-    BeanUtils.copyProperties(currentUser, data);
-    
-    return data;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/me/response/data/GrantedMenusResponseData.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/me/response/data/GrantedMenusResponseData.java
deleted file mode 100644
index 2aacc52..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/me/response/data/GrantedMenusResponseData.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.api.v1.vo.me.response.data;
-
-import java.util.List;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.me.GrantedMenu;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
-
-public class GrantedMenusResponseData implements IApiResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7495122676647463043L;
-  
-  @Getter
-  @Setter
-  private List<GrantedMenu> menus;
-
-  public static GrantedMenusResponseData of(List<GrantedMenu> grantedMenus) {
-    GrantedMenusResponseData data = new GrantedMenusResponseData();
-    
-    data.setMenus(grantedMenus);
-    
-    return data;
-  }
-
-}
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
deleted file mode 100644
index 6beabd2..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/open/response/data/MenusResponseData.java
+++ /dev/null
@@ -1,30 +0,0 @@
-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
deleted file mode 100644
index 69453b6..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/api/v1/vo/open/response/data/OpenSyncRolesResponseData.java
+++ /dev/null
@@ -1,35 +0,0 @@
-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.setApplicationId(applicationId);
-    data.setRoles(roles);
-    
-    return data;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/FeignBasicAuthRequestInterceptor.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/FeignBasicAuthRequestInterceptor.java
deleted file mode 100644
index 191e1e8..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/FeignBasicAuthRequestInterceptor.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.configuration;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import feign.RequestInterceptor;
-import feign.RequestTemplate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.util.StringUtils;
-
-import java.io.IOException;
-import java.util.*;
-
-/**
- * feign请求参数转化
- * @author fengpy
- */
-//@Configuration
-public class FeignBasicAuthRequestInterceptor implements RequestInterceptor {
-    @Autowired
-    private ObjectMapper objectMapper;
-
-    public FeignBasicAuthRequestInterceptor() {}
-
-    @Override
-    public void apply(RequestTemplate template) {
-        ///**get-pojo贯穿*/
-        if (template.method().equals("GET") && template.request().body() != null) {
-            try {
-                JsonNode jsonNode = objectMapper.readTree(template.request().body());
-                //template.body(null);
-                Map<String, Collection<String>> queries = new HashMap<>();
-                //feign 不支持 GET 方法传 POJO, json body转query
-                buildQuery(jsonNode, "", queries);
-                template.queries(queries);
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    //处理 get-pojo贯穿
-    private void buildQuery(JsonNode jsonNode, String path, Map<String, Collection<String>> queries) {
-        if (!jsonNode.isContainerNode()) { //叶子节点
-            if (jsonNode.isNull()) {
-                return;
-            }
-            Collection<String> values = queries.get(path);
-            if (null == values) {
-                values = new ArrayList<>();
-                queries.put(path, values);
-            }
-            values.add(jsonNode.asText());
-            return;
-        }
-        if (jsonNode.isArray()) { //数组节点
-            Iterator<JsonNode> it = jsonNode.elements();
-            while (it.hasNext()) {
-                buildQuery(it.next(), path, queries);
-            }
-        } else {
-            Iterator<Map.Entry<String, JsonNode>> it = jsonNode.fields();
-            while (it.hasNext()) {
-                Map.Entry<String, JsonNode> entry = it.next();
-                if (StringUtils.hasText(path)) {
-                    if ("mapBean".equals(path)||"orderBy".equals(path)||"sequence".equals(path)) {
-                        buildQuery(entry.getValue(), path + "[" + entry.getKey() + "]", queries);
-                    } else {
-                        buildQuery(entry.getValue(), path + "." + entry.getKey(), queries);
-                    }
-                } else { //根节点
-                    buildQuery(entry.getValue(), entry.getKey(), queries);
-                }
-            }
-        }
-    }
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java
deleted file mode 100644
index 5a1022a..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.configuration;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.AuthorizationScopeBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.ApiKey;
-import springfox.documentation.service.AuthorizationScope;
-import springfox.documentation.service.BasicAuth;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.SecurityReference;
-import springfox.documentation.service.SecurityScheme;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger.web.UiConfiguration;
-import springfox.documentation.swagger.web.UiConfigurationBuilder;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-import static com.google.common.collect.Lists.*;
-
-@Configuration
-@EnableSwagger2
-public class Swagger2Config {
-
-  @Value("${swagger2.apis.basePackage:com.supwisdom.institute}")
-  private String basePackage;
-
-  @Bean
-  public Docket createRestApi() {
-    return new Docket(DocumentationType.SWAGGER_2)
-        .securitySchemes(securitySchemes())
-        .securityContexts(securityContexts())
-        .apiInfo(apiInfo())
-        .select()
-        .apis(RequestHandlerSelectors.basePackage(basePackage))
-        .paths(PathSelectors.any())
-        .build()
-    ;
-  }
-
-  private ApiInfo apiInfo() {
-    Contact contact = new Contact("Backend Admin BFF", "https://sw-backend-api.supwisdom.com/swagger-ui.html", ""); // name, url, email
-    return new ApiInfoBuilder()
-        .title("Backend Admin BFF APIs")
-        .description("管理后台 - 后端接口<br /><br />"
-            + "X-FORWARD-USER(测试用):<br /><br />"
-            + "明文:{\"attributes\":{\"accountId\":\"1\"},\"roles\":[\"ROLE_ADMIN\",\"administrator\",\"user\"],\"username\":\"swadmin\"}<br /><br />"
-            + "Base64:eyJhdHRyaWJ1dGVzIjp7ImFjY291bnRJZCI6IjEifSwicm9sZXMiOlsiUk9MRV9BRE1JTiIsImFkbWluaXN0cmF0b3IiLCJ1c2VyIl0sInVzZXJuYW1lIjoic3dhZG1pbiJ9<br /><br />"
-            + "使用 Base64字符串 进行 Authorize,然后进行接口测试<br /><br />"
-            + "若需要其他帐号,请自行拼接明文,再进行 Base64 编码<br /><br />"
-            + ""
-        )
-        .termsOfServiceUrl("http://www.supwisdom.com/")
-        .contact(contact)
-        .version("1.0")
-        .build();
-  }
-  
-  private List<SecurityScheme> securitySchemes() {
-    //return newArrayList(new BasicAuth("sample"));
-    return newArrayList(
-        //new BasicAuth("Basic"),
-        //new ApiKey("JWTToken", "Authorization", "header"), 
-        new ApiKey("SimpleUserTransmit", "X-FORWARD-USER", "header"));
-  }
-  
-  private List<SecurityContext> securityContexts() {
-
-    List<SecurityReference> globalSecurityReference = newArrayList(
-        new SecurityReference("SimpleUserTransmit", new AuthorizationScope[]{new AuthorizationScope("global", "accessEverything")}));
-    
-//    AuthorizationScope[] authScopes = new AuthorizationScope[1];
-//    authScopes[0] = new AuthorizationScopeBuilder()
-//            .scope("read")
-//            .description("read access")
-//            .build();
-//    SecurityReference securityReference = SecurityReference.builder()
-//            .reference("sample")
-//            .scopes(authScopes)
-//            .build();
-
-    return newArrayList(
-        SecurityContext.builder()
-          .securityReferences(newArrayList(globalSecurityReference))
-          .build());
-  }
-
-  @Bean
-  public UiConfiguration uiConfig() {
-    
-    return UiConfigurationBuilder.builder().build();
-    
-//    return new UiConfiguration(null, // url
-//        "none", // docExpansion => none | list
-//        "alpha", // apiSorter => alpha
-//        "schema", // defaultModelRendering => schema
-//        UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS,
-//        false, // enableJsonEditor => true || false
-//        true, // showRequestHeaders => true | false
-//        60000L); // requestTimeout => in milliseconds, defaults to null
-//    // (uses jquery xh timeout)
-  }
-  
-  
-//  @Bean
-//  public SecurityConfiguration oauth2() {
-//      return SecurityConfigurationBuilder.builder()
-//          .clientId("common")
-//          .clientSecret("secret")
-//          .scopeSeparator(" ")
-//          .useBasicAuthenticationWithAccessCodeGrant(true)
-//          .build();
-//  }
-//  
-//  @Bean
-//  public SecurityConfiguration basic() {
-//      return SecurityConfigurationBuilder.builder()
-//          .clientId("common")
-//          .clientSecret("secret")
-//          .scopeSeparator(" ")
-//          .useBasicAuthenticationWithAccessCodeGrant(true)
-//          .build();
-//  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/utils/CurrentUserUtil.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/utils/CurrentUserUtil.java
deleted file mode 100644
index b97e5ae..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/utils/CurrentUserUtil.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.utils;
-
-import com.supwisdom.institute.backend.common.core.transmit.user.User;
-import com.supwisdom.institute.backend.common.core.transmit.user.UserContext;
-
-public class CurrentUserUtil {
-  
-  public static User currentUser() {
-    User user = UserContext.getUser();
-    
-    if (user == null) {
-      throw new RuntimeException("current user is null");
-    }
-    
-    return user;
-  }
-  
-  public static String currentUsername() {
-    return currentUser().getUsername();
-  }
-
-  public static String currentUserAccountId() {
-    return String.valueOf(currentUser().getAttributes().get("accountId"));
-  }
-
-}
diff --git a/bff/admin/src/main/resources/application-docker.yml b/bff/admin/src/main/resources/application-docker.yml
deleted file mode 100644
index 81e78c9..0000000
--- a/bff/admin/src/main/resources/application-docker.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-server:
-  port: ${SERVER_PORT:8443}
-  ssl:
-    enabled: ${SSL_ENABLED:true}
-    clientAuth: NEED
-    key-store: ${SSL_KEYSTORE_FILE:file:/certs/server/server.keystore}
-    key-store-password: ${SSL_KEYSTORE_PASSWORD:}
-    trust-store: ${SSL_TRUSTSTORE_FILE:file:/certs/server/server.truststore}
-    trust-store-password: ${SSL_TRUSTSTORE_PASSWORD:}
-  tomcat: 
-    accesslog: 
-      enabled: ${TOMCAT_ACCESSLOG_ENABLED:false}
-      buffered: ${TOMCAT_ACCESSLOG_BUFFERED:true}
-      directory: ${TOMCAT_ACCESSLOG_DIR:log}
-      prefix: ${TOMCAT_ACCESSLOG_PREFIX:sa-api-accesslog}
-      suffix: ${TOMCAT_ACCESSLOG_SUFFIX:.log}
-      file-date-format: ${TOMCAT_ACCESSLOG_FILE_DATE_FORMAT:.yyyy-MM-dd}
-      rotate: ${TOMCAT_ACCESSLOG_ROTATE:true}
-
-
-##
-# logging
-#
-logging:
-  level:
-    root: INFO
-    com.supwisdom: INFO
-
-
-spring:
-  jackson:
-    time-zone: ${JACKSON_TIME_ZONE:Asia/Shanghai}
-
-
-##
-# online-doc
-#
-infras.online-doc.enabled: ${INFRAS_ONLINE_DOC_ENABLED:false}
-infras.online-doc.md-docs.staitc.path: ${INFRAS_ONLINE_DOC_MD_DOCS_STATIC_PATH:/doc/}
-infras.online-doc.api-docs.staitc.path: ${INFRAS_ONLINE_DOC_API_DOCS_STATIC_PATH:/api-docs/}
-
-
-##
-# server url for feign
-#
-sw-backend-base-api: 
-  uri: ${SW_BACKEND_BASE_API_URI:https://sw-backend-admin-sa}
-  client-auth:
-    enabled: ${SW_BACKEND_BASE_API_CLIENT_AUTH_ENABLED:true}
-    key-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEY_PASSWORD:}
-    key-store: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
-    key-store-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
-    trust-store: ${SW_BACKEND_BASE_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
-    trust-store-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
-
-sw-backend-system-api: 
-  uri: ${SW_BACKEND_SYSTEM_API_URI:https://sw-backend-admin-sa}
-  client-auth:
-    enabled: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_ENABLED:true}
-    key-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEY_PASSWORD:}
-    key-store: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
-    key-store-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
-    trust-store: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
-    trust-store-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
-
-sw-backend-biz-api: 
-  uri: ${SW_BACKEND_BIZ_API_URI:https://sw-backend-biz-sa}
-  client-auth:
-    enabled: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_ENABLED:true}
-    key-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEY_PASSWORD:}
-    key-store: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
-    key-store-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
-    trust-store: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
-    trust-store-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
diff --git a/bff/admin/src/main/resources/application.yml b/bff/admin/src/main/resources/application.yml
deleted file mode 100644
index 8ad7215..0000000
--- a/bff/admin/src/main/resources/application.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-server:
-  port: 8081
-  ssl:
-    enabled: false
-
-
-##
-# logging
-#
-logging:
-  level:
-    root: INFO
-    com.supwisdom: DEBUG
-#    org.springframework.web: INFO
-#    org.springframework.cloud.openfeign: INFO
-
-
-swagger2.apis.basePackage: com.supwisdom.institute
-
-
-spring:
-  jackson:
-    time-zone: Asia/Shanghai
-
-
-feign:
-  client:
-    config:
-      default:
-        #errorDecoder: com.supwisdom.leaveschool.common.config.BaseExceptionErrorDecoder
-        connectTimeout: 12000
-        readTimeout: 12000
-        loggerLevel: full
-  hystrix:
-    enabled: true
-  httpclient:
-    enabled: true
-
-hystrix:
-  command:
-    default:
-      execution:
-        timeout:
-          enabled: true
-        isolation:
-          thread:
-            timeoutInMilliseconds: 12000
-
-
-##
-# infras.online-doc
-#
-infras.online-doc.enabled: true
-infras.online-doc.md-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/doc/
-infras.online-doc.api-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/api-docs/
-
-
-##
-# server url for feign
-#
-sw-backend-base-api:
-  uri: http://localhost:8082
-
-sw-backend-system-api: 
-  uri: http://localhost:8082
-
-sw-backend-biz-api: 
-  uri: http://localhost:8082
diff --git a/bff/admin/src/main/resources/bootstrap.yml b/bff/admin/src/main/resources/bootstrap.yml
deleted file mode 100644
index b2a926b..0000000
--- a/bff/admin/src/main/resources/bootstrap.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-spring:
-  application:
-    name: sw-backend-admin-aggr
diff --git a/bff/pom.xml b/bff/pom.xml
deleted file mode 100644
index 5a351f0..0000000
--- a/bff/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-  </parent>
-  
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-bff-parent</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Supwisdom Backend Framework Backend for Frontend</name>
-  <description>Supwisdom Backend Framework Backend for Frontend project</description>
-
-  <modules>
-    <module>admin</module>
-  </modules>
-
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/biz/api/pom.xml b/biz/api/pom.xml
deleted file mode 100644
index 6a28a99..0000000
--- a/biz/api/pom.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-    <relativePath>../../</relativePath>
-  </parent>
-
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-biz-api</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
-  <name>Supwisdom Backend Framework BIZ API</name>
-  <description>Supwisdom Backend Framework BIZ API project</description>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-web</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-core</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-utils</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-framework</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-biz-domain</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-release-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/v1/admin/AdminBizController.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/v1/admin/AdminBizController.java
deleted file mode 100644
index aa324c6..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/v1/admin/AdminBizController.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.v1.admin;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-
-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.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.biz.api.vo.request.BizCreateRequest;
-import com.supwisdom.institute.backend.biz.api.vo.request.BizQueryRequest;
-import com.supwisdom.institute.backend.biz.api.vo.request.BizUpdateRequest;
-import com.supwisdom.institute.backend.biz.api.vo.response.BizCreateResponseData;
-import com.supwisdom.institute.backend.biz.api.vo.response.BizLoadResponseData;
-import com.supwisdom.institute.backend.biz.api.vo.response.BizQueryResponseData;
-import com.supwisdom.institute.backend.biz.api.vo.response.BizRemoveResponseData;
-import com.supwisdom.institute.backend.biz.api.vo.response.BizUpdateResponseData;
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.biz.domain.exception.BizException;
-import com.supwisdom.institute.backend.biz.domain.service.BizService;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-
-@Api(value = "BizAdminBiz", tags = { "BizAdminBiz" }, description = "Biz示例接口")
-@RestController
-@RequestMapping("/v1/admin/biz")
-public class AdminBizController {
-  
-  @Autowired
-  private BizService bizService;
-
-  /**
-   * @param bizQueryRequest
-   * @return
-   */
-  @ApiOperation(value = "查询配置列表", notes = "查询配置列表", nickname = "systemAdminBizQuery")
-  @ApiImplicitParams({
-    @ApiImplicitParam(name = "loadAll", value = "是否加载全部", required = true, dataType = "boolean", paramType = "query", defaultValue = "false"),
-    @ApiImplicitParam(name = "pageIndex", value = "分页 - 页码", required = true, dataType = "int", paramType = "query", defaultValue = "0", example = "0"),
-    @ApiImplicitParam(name = "pageSize", value = "分页 - 每页记录数", required = true, dataType = "int", paramType = "query", defaultValue = "20", example = "20"),
-    @ApiImplicitParam(name = "mapBean[deleted]", value = "查询条件 - 删除状态 (精确)", required = false, dataType = "boolean", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[categoryCode]", value = "查询条件 - 分类代码 (精确)", required = false, dataType = "string", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[categoryName]", value = "查询条件 - 分类名称 (模糊)", required = false, dataType = "string", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[name]", value = "查询条件 - 名称 (模糊)", required = false, dataType = "string", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[description]", value = "查询条件 - 描述 (模糊)", required = false, dataType = "string", paramType = "query"),
-    @ApiImplicitParam(name = "mapBean[bizKey]", value = "查询条件 - 配置Key (精确)", required = false, dataType = "string", paramType = "query"),
-  })
-  @RequestMapping(method = RequestMethod.GET, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<BizQueryResponseData> query(BizQueryRequest bizQueryRequest) {
-    
-    Page<Biz> page = bizService.selectPageList(
-        bizQueryRequest.isLoadAll(),
-        bizQueryRequest.getPageIndex(),
-        bizQueryRequest.getPageSize(),
-        bizQueryRequest.getMapBean(),
-        bizQueryRequest.getOrderBy());
-
-    BizQueryResponseData resp = BizQueryResponseData.of(bizQueryRequest).build(page);
-    
-    return new DefaultApiResponse<BizQueryResponseData>(resp);
-  }
-
-  /**
-   * @param id
-   * @return
-   */
-  @ApiOperation(value = "根据ID获取配置项", notes = "根据ID获取配置项", nickname="systemAdminBizLoad")
-  @RequestMapping(method = RequestMethod.GET, path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<BizLoadResponseData> load(
-      @PathVariable("id") String id) {
-    
-    if (id == null || id.length() == 0) {
-      throw BizException.newInstance("exception.get.id.must.not.empty");
-    }
-    
-    Biz biz = bizService.selectById(id);
-    
-    if (biz == null) {
-      throw BizException.newInstance("exception.get.domain.not.exist");
-    }
-
-    BizLoadResponseData resp = BizLoadResponseData.of(biz);
-    
-    return new DefaultApiResponse<BizLoadResponseData>(resp);
-  }
-  
-  /**
-   * @param bizCreateRequest
-   * @return
-   */
-  @ApiOperation(value = "创建配置项", notes = "创建配置项", nickname = "systemAdminBizCreate")
-  @RequestMapping(method = RequestMethod.POST, produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.CREATED)
-  @ResponseBody
-  public DefaultApiResponse<BizCreateResponseData> create(
-      @RequestBody BizCreateRequest bizCreateRequest) {
-
-    // FIXME: 验证数据有效性
-
-    Biz entity = EntityUtils.copy(bizCreateRequest, new Biz());
-
-    Biz ret = bizService.insert(entity);
-
-    BizCreateResponseData resp = BizCreateResponseData.of(ret);
-
-    return new DefaultApiResponse<BizCreateResponseData>(resp);
-  }
-
-  @ApiOperation(value = "更新", notes = "更新", nickname = "systemAdminBizUpdate")
-  @RequestMapping(method = RequestMethod.PUT, path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<BizUpdateResponseData> update(
-      @PathVariable("id") String id,
-      @RequestBody BizUpdateRequest bizUpdateRequest) {
-
-    if (id == null || id.length() == 0) {
-      throw BizException.newInstance("exception.update.id.must.not.empty");
-    }
-
-    Biz tmp = bizService.selectById(id);
-    if (tmp == null) {
-      throw BizException.newInstance("exception.update.domain.not.exist");
-    }
-
-    Biz entity = EntityUtils.copy(bizUpdateRequest, new Biz());
-    entity.setId(id);
-
-    entity = EntityUtils.merge(tmp, entity);
-    
-    Biz ret = bizService.update(entity);
-
-    BizUpdateResponseData resp = BizUpdateResponseData.of(ret);
-    
-    return new DefaultApiResponse<BizUpdateResponseData>(resp);
-  }
-  
-  @ApiOperation(value = "删除", notes = "删除", nickname = "systemAdminBizRemove")
-  @RequestMapping(method = RequestMethod.DELETE, path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  @ResponseStatus(value = HttpStatus.OK)
-  @ResponseBody
-  public DefaultApiResponse<BizRemoveResponseData> remove(
-      @PathVariable("id") String id) {
-    
-    if (id == null || id.length() == 0) {
-      throw BizException.newInstance("exception.remove.id.must.not.empty");
-    }
-
-    Biz tmp = bizService.selectById(id);
-    if (tmp == null) {
-      throw BizException.newInstance("exception.remove.domain.not.exist");
-    }
-    
-    bizService.deleteById(id);
-    
-    BizRemoveResponseData resp = BizRemoveResponseData.of(tmp);
-    
-    return new DefaultApiResponse<BizRemoveResponseData>(resp);
-  }
-
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/v1/admin/AdminHelloController.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/v1/admin/AdminHelloController.java
deleted file mode 100644
index a46c806..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/v1/admin/AdminHelloController.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.v1.admin;
-
-import io.swagger.annotations.Api;
-import lombok.extern.slf4j.Slf4j;
-
-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.RestController;
-
-import com.supwisdom.institute.backend.common.core.transmit.user.User;
-import com.supwisdom.institute.backend.common.core.transmit.user.UserContext;
-
-@Api(value = "BizAdminHello", tags = { "BizAdminHello" }, description = "示例接口")
-@Slf4j
-@RestController
-@RequestMapping("/v1/admin/hello")
-public class AdminHelloController {
-  
-  @RequestMapping(method = RequestMethod.GET, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  public User biz() {
-    User user = UserContext.getUser(); log.debug("{}", user);
-    return user;
-  }
-
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizCreateRequest.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizCreateRequest.java
deleted file mode 100644
index e6b6f0e..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizCreateRequest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.vo.request;
-
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest;
-
-/**
- * @author loie
- */
-public class BizCreateRequest extends Biz implements IApiCreateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -3512866840130579457L;
-
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizQueryRequest.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizQueryRequest.java
deleted file mode 100644
index 7f60870..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizQueryRequest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.vo.request;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Map;
-
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author loie
- */
-public class BizQueryRequest implements IApiQueryRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -4345168235529389375L;
-
-  @Getter
-  @Setter
-  private boolean loadAll = false;
-
-  @Getter
-  @Setter
-  private int pageIndex = 0;
-
-  @Getter
-  @Setter
-  private int pageSize = 20;
-
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, Object> mapBean;
-
-  @Getter
-  @Setter
-  @ApiModelProperty(hidden = true)
-  private Map<String, String> orderBy;
-
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizUpdateRequest.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizUpdateRequest.java
deleted file mode 100644
index 74973ce..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/request/BizUpdateRequest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.vo.request;
-
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class BizUpdateRequest extends Biz implements IApiUpdateRequest {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 6002556449210326472L;
-
-  @Getter
-  @Setter
-  private String id;
-
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizCreateResponseData.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizCreateResponseData.java
deleted file mode 100644
index 9a91fce..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizCreateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.vo.response;
-
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class BizCreateResponseData extends Biz implements IApiCreateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -7081539211184618366L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private BizCreateResponseData() {
-
-  }
-
-  public static BizCreateResponseData of(Biz entity) {
-    BizCreateResponseData data = new BizCreateResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizLoadResponseData.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizLoadResponseData.java
deleted file mode 100644
index 84c2864..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizLoadResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.vo.response;
-
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class BizLoadResponseData extends Biz implements IApiLoadResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = -921871332091924834L;
-  
-  @Getter
-  @Setter
-  private String id;
-  
-  private BizLoadResponseData() {
-    
-  }
-  
-  public static BizLoadResponseData of(Biz entity) {
-    BizLoadResponseData data = new BizLoadResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizQueryResponseData.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizQueryResponseData.java
deleted file mode 100644
index 3c19ad1..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizQueryResponseData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.vo.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-
-import com.supwisdom.institute.backend.biz.api.vo.request.BizQueryRequest;
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiQueryResponseData;
-
-/**
- * @author loie
- */
-public class BizQueryResponseData implements IApiQueryResponseData<Biz> {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5706417972093485886L;
-  
-  private BizQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    this.loadAll = loadAll;
-    this.pageIndex = pageIndex;
-    this.pageSize = pageSize;
-    this.mapBean = mapBean;
-    this.orderBy = orderBy;
-  }
-
-  public static BizQueryResponseData of(BizQueryRequest queryRequest) {
-    BizQueryResponseData data = new BizQueryResponseData(
-        queryRequest.isLoadAll(), 
-        queryRequest.getPageIndex(), 
-        queryRequest.getPageSize(), 
-        queryRequest.getMapBean(), 
-        queryRequest.getOrderBy()
-    );
-    
-    return data;
-  }
-  
-  public BizQueryResponseData build(Page<Biz> page) {
-    this.currentItemCount = page.getNumberOfElements();
-    this.pageCount = page.getTotalPages();
-    this.recordCount = page.getTotalElements();
-    this.items = page.getContent();
-
-    return this;
-  }
-
-  @Getter
-  private boolean loadAll;
-  @Getter
-  private int pageIndex;
-  @Getter
-  private int pageSize;
-  @Getter
-  private Map<String, Object> mapBean;
-  @Getter
-  private Map<String, String> orderBy;
-  
-  @Getter
-  @Setter
-  private int pageCount;
-  @Getter
-  @Setter
-  private long recordCount;
-  
-  @Getter
-  @Setter
-  private int currentItemCount;
-  
-  @Getter
-  @Setter
-  private List<Biz> items;
-  
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizRemoveResponseData.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizRemoveResponseData.java
deleted file mode 100644
index 0d3f019..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizRemoveResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.vo.response;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData;
-
-/**
- * @author loie
- */
-public class BizRemoveResponseData implements IApiRemoveResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 7920962172100289008L;
-
-  @Getter
-  @Setter
-  private String id;
-
-  private BizRemoveResponseData() {
-
-  }
-
-  public static BizRemoveResponseData of(Biz entity) {
-    BizRemoveResponseData data = new BizRemoveResponseData();
-
-    return EntityUtils.copy(entity, data);
-  }
-
-}
diff --git a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizUpdateResponseData.java b/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizUpdateResponseData.java
deleted file mode 100644
index 19bef62..0000000
--- a/biz/api/src/main/java/com/supwisdom/institute/backend/biz/api/vo/response/BizUpdateResponseData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.supwisdom.institute.backend.biz.api.vo.response;
-
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author loie
- */
-public class BizUpdateResponseData extends Biz implements IApiUpdateResponseData {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 4502820318022107903L;
-  
-  @Getter
-  @Setter
-  private String id;
-
-  private BizUpdateResponseData() {
-    
-  }
-  
-  public static BizUpdateResponseData of(Biz entity) {
-    BizUpdateResponseData data = new BizUpdateResponseData();
-    
-    return EntityUtils.copy(entity, data);
-  }
-  
-}
diff --git a/biz/domain/pom.xml b/biz/domain/pom.xml
deleted file mode 100644
index 0f4001f..0000000
--- a/biz/domain/pom.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-    <relativePath>../../</relativePath>
-  </parent>
-
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-biz-domain</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
-  <name>Supwisdom Backend Framework BIZ Domain</name>
-  <description>Supwisdom Backend Framework BIZ Domain project</description>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-core</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-utils</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-common-framework</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-data-jpa</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-release-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/entity/Biz.java b/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/entity/Biz.java
deleted file mode 100644
index 553cc05..0000000
--- a/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/entity/Biz.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.supwisdom.institute.backend.biz.domain.entity;
-
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import com.supwisdom.institute.backend.common.framework.entity.ABaseEntity;
-
-@Entity
-@Table(name = "TB_BIZ")
-public class Biz extends ABaseEntity {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 5503233707196628811L;
-  
-  @Getter
-  @Setter
-  @Column(name = "NAME")
-  private String name;
-  
-  @Getter
-  @Setter
-  @Column(name = "BOOL")
-  private Boolean bool;
-  
-  @Getter
-  @Setter
-  @Column(name = "DATE")
-  private Date date;
-
-  @Getter
-  @Setter
-  @Column(name = "NUM")
-  private Integer num;
-
-}
diff --git a/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/exception/BizException.java b/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/exception/BizException.java
deleted file mode 100644
index 2ae5778..0000000
--- a/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/exception/BizException.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.supwisdom.institute.backend.biz.domain.exception;
-
-import com.supwisdom.institute.backend.common.framework.exception.BaseException;
-
-public class BizException extends BaseException {
-
-  /**
-   * 
-   */
-  private static final long serialVersionUID = 8112079911386045865L;
-
-}
diff --git a/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/repo/BizRepository.java b/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/repo/BizRepository.java
deleted file mode 100644
index cfeae8f..0000000
--- a/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/repo/BizRepository.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package com.supwisdom.institute.backend.biz.domain.repo;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.domain.Sort.Order;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Repository;
-import org.springframework.util.StringUtils;
-
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
-import com.supwisdom.institute.backend.common.util.DateUtil;
-import com.supwisdom.institute.backend.common.util.MapBeanUtils;
-
-@Repository
-public interface BizRepository extends BaseJpaRepository<Biz> {
-  
-  default Specification<Biz> convertSpecification(Map<String, Object> mapBean) {
-
-    Specification<Biz> spec = new Specification<Biz>() {
-
-      /**
-       * 
-       */
-      private static final long serialVersionUID = -1820403213133310124L;
-
-      @Override
-      public Predicate toPredicate(Root<Biz> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        
-        if (mapBean != null) {
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) {
-            predicates.add(criteriaBuilder.like(root.get("name"), MapBeanUtils.getString(mapBean, "name")));
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getBoolean(mapBean, "bool"))) {
-            predicates.add(criteriaBuilder.equal(root.get("bool"), MapBeanUtils.getBoolean(mapBean, "bool")));
-          }
-          
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "dateBegin"))) {
-            String grantTimeBegin = MapBeanUtils.getString(mapBean, "dateBegin");
-            Date d = DateUtil.parseDate(grantTimeBegin+" 00:00:00", "yyyy-MM-dd HH:mm:ss");
-            
-            if (d != null) {
-              predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("date"), d));
-            }
-          }
-
-          if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "dateEnd"))) {
-            String grantTimeEnd = MapBeanUtils.getString(mapBean, "dateEnd");
-            Date d = DateUtil.parseDate(grantTimeEnd+" 23:59:59", "yyyy-MM-dd HH:mm:ss");
-            
-            if (d != null) {
-              predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("date"), d));
-            }
-          }
-        }
-        
-        return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-      }
-      
-    };
-    
-    return spec;
-  }
-  
-  @Override
-  public default Page<Biz> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
-    
-    Specification<Biz> spec = this.convertSpecification(mapBean);
-
-    if (loadAll) {
-      pageIndex = 0;
-      pageSize = Integer.MAX_VALUE;
-    }
-    
-    Sort sort = new Sort(Sort.Direction.DESC, "date");  // Sort.unsorted
-
-    if (orderBy != null) {
-      List<Order> orders = new ArrayList<>();
-      
-      orderBy.forEach((k, v) -> {
-        if ("asc".equalsIgnoreCase(v)) {
-          Order order = Order.asc(k);
-          orders.add(order);
-        } else if ("desc".equalsIgnoreCase(v)) {
-          Order order = Order.desc(k);
-          orders.add(order);
-        } else {
-          Order order = Order.by(k);
-          orders.add(order);
-        }
-      });
-      
-      sort = Sort.by(orders);
-    }
-
-    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize, sort);
-    
-    return this.findAll(spec, pageRequest);
-  }
-
-}
diff --git a/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/service/BizService.java b/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/service/BizService.java
deleted file mode 100644
index 43f1dd7..0000000
--- a/biz/domain/src/main/java/com/supwisdom/institute/backend/biz/domain/service/BizService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.supwisdom.institute.backend.biz.domain.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.supwisdom.institute.backend.biz.domain.entity.Biz;
-import com.supwisdom.institute.backend.biz.domain.repo.BizRepository;
-import com.supwisdom.institute.backend.common.framework.service.ABaseService;
-
-@Service
-public class BizService extends ABaseService<Biz, BizRepository> {
-  
-  @Autowired
-  private BizRepository bizRepository;
-
-  @Override
-  public BizRepository getRepo() {
-    return bizRepository;
-  }
-
-}
diff --git a/biz/pom.xml b/biz/pom.xml
deleted file mode 100644
index 112975a..0000000
--- a/biz/pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-  </parent>
-  
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-biz-aggregator</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Supwisdom Backend Framework BIZ Aggregator</name>
-  <description>Supwisdom Backend Framework BIZ Aggregator project</description>
-
-  <modules>
-    <module>domain</module>
-    <module>api</module>
-  </modules>
-
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/sa/admin/Dockerfile b/sa/admin/Dockerfile
deleted file mode 100644
index f7bf86e..0000000
--- a/sa/admin/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM harbor.supwisdom.com/institute/openjdk:8-jre-alpine
-
-ENV ENABLE_JMX_SSL=false
-ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=docker
-ENV SPRING_PROFILES_ACTIVE=docker
-
-ARG NAME
-ARG VERSION
-ARG JAR_FILE
-
-LABEL name=$NAME \
-      version=$VERSION
-
-EXPOSE 8080
-
-EXPOSE 8443
-
-COPY --chown=java-app:java-app target/${JAR_FILE} /home/java-app/lib/app.jar
diff --git a/sa/admin/pom.xml b/sa/admin/pom.xml
deleted file mode 100644
index b34afc3..0000000
--- a/sa/admin/pom.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-    <relativePath>../../</relativePath>
-  </parent>
-
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-admin-sa</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
-  <name>Supwisdom Backend Framework Admin Super Admin</name>
-  <description>Supwisdom Backend Framework Admin Super Admin project</description>
-
-  <properties>
-    <start-class>com.supwisdom.institute.backend.admin.sa.Application</start-class>
-  </properties>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-    </dependency>
-
-    <!-- 微服务 健康监控 -->
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-actuator</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.cloud</groupId>
-      <artifactId>spring-cloud-starter-openfeign</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-web</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-online-doc</artifactId>
-    </dependency>
-
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-mvc</artifactId>
-    </dependency> -->
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-object-mapper</artifactId>
-    </dependency> -->
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-i18n</artifactId>
-    </dependency> -->
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-lang</artifactId>
-    </dependency> -->
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-base-api</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger2</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger-ui</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>mysql</groupId>
-      <artifactId>mysql-connector-java</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-
-    <!-- 热部署,无需重启项目 -->
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-devtools</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <finalName>${project.artifactId}</finalName>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-release-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-
-
-      <!-- <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>2.4.3</version>
-        <configuration>
-          <encoding>${project.build.sourceEncoding}</encoding>
-        </configuration>
-        <executions>
-          <execution>
-            <id>copy-doc-resources</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <encoding>utf-8</encoding>
-              <outputDirectory>${basedir}/target/doc</outputDirectory>
-              <overwrite>true</overwrite>
-              <resources>
-                <resource>
-                  <directory>${basedir}/../doc</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-api-docs-resources</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <encoding>utf-8</encoding>
-              <outputDirectory>${basedir}/target/api-docs</outputDirectory>
-              <overwrite>true</overwrite>
-              <resources>
-                <resource>
-                  <directory>${basedir}/../api-docs</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin> -->
-
-
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-
-      <plugin>
-        <groupId>com.spotify</groupId>
-        <artifactId>dockerfile-maven-plugin</artifactId>
-        <configuration>
-          <skip>false</skip>
-        </configuration>
-      </plugin>
-
-    </plugins>
-
-  </build>
-
-</project>
diff --git a/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/Application.java b/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/Application.java
deleted file mode 100644
index 8bf05fd..0000000
--- a/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/Application.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.supwisdom.institute.backend.admin.sa;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
-
-import com.supwisdom.infras.online.doc.configuration.EnableInfrasOnlineDoc;
-import com.supwisdom.institute.backend.common.core.transmit.annotation.EnableSimpleUserTransmit;
-import com.supwisdom.institute.backend.common.framework.exception.EnableCustomExceptionHandler;
-
-@SpringBootApplication
-
-@EnableSimpleUserTransmit
-@EnableCustomExceptionHandler
-
-@EnableInfrasOnlineDoc
-
-@EntityScan(basePackages = {"com.supwisdom.**.domain.entity"})  // 扫描子项目下的实体
-@EnableJpaRepositories(basePackages = {"com.supwisdom.**.domain.repo"})  // 扫描子项目下的持久类
-@ComponentScan(basePackages = {"com.supwisdom"})
-public class Application {
-
-  public static void main(String[] args) {
-    SpringApplication.run(Application.class, args);
-  }
-  
-  @Bean
-  public CorsFilter corsFilter() {
-    final CorsConfiguration config = new CorsConfiguration();
-    // config.setAllowCredentials(true);
-    config.addAllowedOrigin("*");
-    config.addAllowedHeader("*");
-    config.addAllowedMethod("*");
-
-    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-    source.registerCorsConfiguration("/v2/api-docs", config);
-
-    return new CorsFilter(source);
-  }
-
-}
diff --git a/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/configuration/Swagger2Config.java b/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/configuration/Swagger2Config.java
deleted file mode 100644
index 287cea5..0000000
--- a/sa/admin/src/main/java/com/supwisdom/institute/backend/admin/sa/configuration/Swagger2Config.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.supwisdom.institute.backend.admin.sa.configuration;
-
-import static com.google.common.collect.Lists.newArrayList;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.ApiKey;
-import springfox.documentation.service.AuthorizationScope;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.SecurityReference;
-import springfox.documentation.service.SecurityScheme;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger.web.UiConfiguration;
-import springfox.documentation.swagger.web.UiConfigurationBuilder;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@Configuration
-@EnableSwagger2
-public class Swagger2Config {
-
-  @Value("${swagger2.apis.basePackage:com.supwisdom.institute}")
-  private String basePackage;
-
-  @Bean
-  public Docket createRestApi() {
-    return new Docket(DocumentationType.SWAGGER_2)
-        .securitySchemes(securitySchemes())
-        .securityContexts(securityContexts())
-        .apiInfo(apiInfo())
-        .select()
-        .apis(RequestHandlerSelectors.basePackage(basePackage))
-        .paths(PathSelectors.any())
-        .build()
-    ;
-  }
-
-  private ApiInfo apiInfo() {
-    Contact contact = new Contact("Backend Admin Super Admin", "https://sw-backend-sa.supwisdom.com/swagger-ui.html", ""); // name, url, email
-    return new ApiInfoBuilder()
-        .title("Backend Admin Super Admin APIs")
-        .description("管理后台 - 服务接口<br /><br />"
-            + "X-FORWARD-USER(测试用):<br /><br />"
-            + "明文:{\"attributes\":{\"accountId\":\"1\"},\"roles\":[\"ROLE_ADMIN\",\"administrator\",\"user\"],\"username\":\"swadmin\"}<br /><br />"
-            + "Base64:eyJhdHRyaWJ1dGVzIjp7ImFjY291bnRJZCI6IjEifSwicm9sZXMiOlsiUk9MRV9BRE1JTiIsImFkbWluaXN0cmF0b3IiLCJ1c2VyIl0sInVzZXJuYW1lIjoic3dhZG1pbiJ9<br /><br />"
-            + "使用 Base64字符串 进行 Authorize,然后进行接口测试<br /><br />"
-            + "若需要其他帐号,请自行拼接明文,再进行 Base64 编码<br /><br />"
-            + ""
-        )
-        .termsOfServiceUrl("http://www.supwisdom.com/")
-        .contact(contact)
-        .version("1.0")
-        .build();
-  }
-
-  private List<SecurityScheme> securitySchemes() {
-    //return newArrayList(new BasicAuth("sample"));
-    return newArrayList(
-        //new BasicAuth("Basic"),
-        //new ApiKey("JWTToken", "Authorization", "header"), 
-        new ApiKey("SimpleUserTransmit", "X-FORWARD-USER", "header"));
-  }
-  
-  private List<SecurityContext> securityContexts() {
-
-    List<SecurityReference> globalSecurityReference = newArrayList(
-        new SecurityReference("SimpleUserTransmit", new AuthorizationScope[]{new AuthorizationScope("global", "accessEverything")}));
-    
-//    AuthorizationScope[] authScopes = new AuthorizationScope[1];
-//    authScopes[0] = new AuthorizationScopeBuilder()
-//            .scope("read")
-//            .description("read access")
-//            .build();
-//    SecurityReference securityReference = SecurityReference.builder()
-//            .reference("sample")
-//            .scopes(authScopes)
-//            .build();
-
-    return newArrayList(
-        SecurityContext.builder()
-          .securityReferences(newArrayList(globalSecurityReference))
-          .build());
-  }
-
-  @Bean
-  UiConfiguration uiConfig() {
-    
-    return UiConfigurationBuilder.builder().build();
-    
-//    return new UiConfiguration(null, // url
-//        "none", // docExpansion => none | list
-//        "alpha", // apiSorter => alpha
-//        "schema", // defaultModelRendering => schema
-//        UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS,
-//        false, // enableJsonEditor => true || false
-//        true, // showRequestHeaders => true | false
-//        60000L); // requestTimeout => in milliseconds, defaults to null
-//    // (uses jquery xh timeout)
-  }
-
-}
diff --git a/sa/admin/src/main/resources/application-docker.yml b/sa/admin/src/main/resources/application-docker.yml
deleted file mode 100644
index d72a475..0000000
--- a/sa/admin/src/main/resources/application-docker.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-server:
-  port: ${SERVER_PORT:8443}
-  ssl:
-    enabled: ${SSL_ENABLED:true}
-    clientAuth: NEED
-    key-store: ${SSL_KEYSTORE_FILE:file:/certs/server/server.keystore}
-    key-store-password: ${SSL_KEYSTORE_PASSWORD:}
-    trust-store: ${SSL_TRUSTSTORE_FILE:file:/certs/server/server.truststore}
-    trust-store-password: ${SSL_TRUSTSTORE_PASSWORD:}
-  tomcat: 
-    accesslog: 
-      enabled: ${TOMCAT_ACCESSLOG_ENABLED:false}
-      buffered: ${TOMCAT_ACCESSLOG_BUFFERED:true}
-      directory: ${TOMCAT_ACCESSLOG_DIR:log}
-      prefix: ${TOMCAT_ACCESSLOG_PREFIX:sa-api-accesslog}
-      suffix: ${TOMCAT_ACCESSLOG_SUFFIX:.log}
-      file-date-format: ${TOMCAT_ACCESSLOG_FILE_DATE_FORMAT:.yyyy-MM-dd}
-      rotate: ${TOMCAT_ACCESSLOG_ROTATE:true}
-
-
-##
-# logging
-#
-logging:
-  level:
-    root: INFO
-    com.supwisdom: INFO
-
-
-spring:
-  jackson:
-    time-zone: ${JACKSON_TIME_ZONE:Asia/Shanghai}
-
-  datasource:
-    driver-class-name: ${JDBC_DRIVER_CLASS_NAME:com.mysql.cj.jdbc.Driver}
-    url: ${JDBC_URL:jdbc:mysql://mysql-server:3306/sw-admin}
-    username: ${JDBC_USERNAME:sw-admin}
-    password: ${JDBC_PASSWORD:}
-
-
-##
-# online-doc
-#
-infras.online-doc.enabled: ${INFRAS_ONLINE_DOC_ENABLED:false}
-infras.online-doc.md-docs.staitc.path: ${INFRAS_ONLINE_DOC_MD_DOCS_STATIC_PATH:/doc/}
-infras.online-doc.api-docs.staitc.path: ${INFRAS_ONLINE_DOC_API_DOCS_STATIC_PATH:/api-docs/}
diff --git a/sa/admin/src/main/resources/application.yml b/sa/admin/src/main/resources/application.yml
deleted file mode 100644
index 93558d2..0000000
--- a/sa/admin/src/main/resources/application.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-server:
-  port: 8082
-  ssl:
-    enabled: false
-
-
-##
-# logging
-#
-logging:
-  level:
-    root: INFO
-    com.supwisdom: DEBUG
-#    org.springframework.web: INFO
-#    org.springframework.cloud.openfeign: INFO
-
-
-swagger2.apis.basePackage: com.supwisdom.institute
-
-
-spring:
-  jackson:
-    time-zone: Asia/Shanghai
-  datasource:
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://localhost:3306/sw-admin
-    username: root
-    password: root
-    hikari:
-      data-source-properties:
-        useSSL: false
-        characterEncoding: utf8
-        characterSetResults: utf8
-  jpa: 
-    hibernate:
-      ddl-auto: none
-      naming:
-        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
-    show-sql: false
-
-
-##
-# infras.online-doc
-#
-infras.online-doc.enabled: true
-infras.online-doc.md-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/doc/
-infras.online-doc.api-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/api-docs/
diff --git a/sa/admin/src/main/resources/bootstrap.yml b/sa/admin/src/main/resources/bootstrap.yml
deleted file mode 100644
index 5e82cca..0000000
--- a/sa/admin/src/main/resources/bootstrap.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-spring:
-  application:
-    name: sw-backend-admin-sa
diff --git a/sa/biz/.gitignore b/sa/biz/.gitignore
deleted file mode 100644
index b83d222..0000000
--- a/sa/biz/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/sa/biz/Dockerfile b/sa/biz/Dockerfile
deleted file mode 100644
index f7bf86e..0000000
--- a/sa/biz/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM harbor.supwisdom.com/institute/openjdk:8-jre-alpine
-
-ENV ENABLE_JMX_SSL=false
-ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=docker
-ENV SPRING_PROFILES_ACTIVE=docker
-
-ARG NAME
-ARG VERSION
-ARG JAR_FILE
-
-LABEL name=$NAME \
-      version=$VERSION
-
-EXPOSE 8080
-
-EXPOSE 8443
-
-COPY --chown=java-app:java-app target/${JAR_FILE} /home/java-app/lib/app.jar
diff --git a/sa/biz/pom.xml b/sa/biz/pom.xml
deleted file mode 100644
index e66847d..0000000
--- a/sa/biz/pom.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-    <relativePath>../../</relativePath>
-  </parent>
-
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-biz-sa</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
-  <name>Supwisdom Backend Framework Biz Super Admin</name>
-  <description>Supwisdom Backend Framework Biz Super Admin project</description>
-
-  <properties>
-    <start-class>com.supwisdom.institute.backend.biz.sa.Application</start-class>
-  </properties>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-    </dependency>
-
-    <!-- 微服务 健康监控 -->
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-actuator</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.cloud</groupId>
-      <artifactId>spring-cloud-starter-openfeign</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-web</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-online-doc</artifactId>
-    </dependency>
-
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-mvc</artifactId>
-    </dependency> -->
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-object-mapper</artifactId>
-    </dependency> -->
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-i18n</artifactId>
-    </dependency> -->
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-lang</artifactId>
-    </dependency> -->
-
-
-    <dependency>
-      <groupId>com.supwisdom.institute</groupId>
-      <artifactId>sw-backend-biz-api</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger2</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger-ui</artifactId>
-    </dependency>
-
-
-    <dependency>
-      <groupId>mysql</groupId>
-      <artifactId>mysql-connector-java</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-
-    <!-- 热部署,无需重启项目 -->
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-devtools</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <finalName>${project.artifactId}</finalName>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-release-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-
-
-      <!-- <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>2.4.3</version>
-        <configuration>
-          <encoding>${project.build.sourceEncoding}</encoding>
-        </configuration>
-        <executions>
-          <execution>
-            <id>copy-doc-resources</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <encoding>utf-8</encoding>
-              <outputDirectory>${basedir}/target/doc</outputDirectory>
-              <overwrite>true</overwrite>
-              <resources>
-                <resource>
-                  <directory>${basedir}/../doc</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-api-docs-resources</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <encoding>utf-8</encoding>
-              <outputDirectory>${basedir}/target/api-docs</outputDirectory>
-              <overwrite>true</overwrite>
-              <resources>
-                <resource>
-                  <directory>${basedir}/../api-docs</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin> -->
-
-
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-
-      <plugin>
-        <groupId>com.spotify</groupId>
-        <artifactId>dockerfile-maven-plugin</artifactId>
-        <configuration>
-          <skip>false</skip>
-        </configuration>
-      </plugin>
-
-    </plugins>
-
-  </build>
-
-</project>
diff --git a/sa/biz/src/main/java/com/supwisdom/institute/backend/biz/sa/Application.java b/sa/biz/src/main/java/com/supwisdom/institute/backend/biz/sa/Application.java
deleted file mode 100644
index b2b44be..0000000
--- a/sa/biz/src/main/java/com/supwisdom/institute/backend/biz/sa/Application.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.supwisdom.institute.backend.biz.sa;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
-
-import com.supwisdom.infras.online.doc.configuration.EnableInfrasOnlineDoc;
-import com.supwisdom.institute.backend.common.core.transmit.annotation.EnableSimpleUserTransmit;
-import com.supwisdom.institute.backend.common.framework.exception.EnableCustomExceptionHandler;
-
-@SpringBootApplication
-
-@EnableSimpleUserTransmit
-@EnableCustomExceptionHandler
-
-@EnableInfrasOnlineDoc
-
-@EntityScan(basePackages = {"com.supwisdom.**.domain.entity"})  // 扫描子项目下的实体
-@EnableJpaRepositories(basePackages = {"com.supwisdom.**.domain.repo"})  // 扫描子项目下的持久类
-@ComponentScan(basePackages = {"com.supwisdom"})
-public class Application {
-
-  public static void main(String[] args) {
-    SpringApplication.run(Application.class, args);
-  }
-  
-  @Bean
-  public CorsFilter corsFilter() {
-    final CorsConfiguration config = new CorsConfiguration();
-    // config.setAllowCredentials(true);
-    config.addAllowedOrigin("*");
-    config.addAllowedHeader("*");
-    config.addAllowedMethod("*");
-
-    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-    source.registerCorsConfiguration("/v2/api-docs", config);
-
-    return new CorsFilter(source);
-  }
-
-}
diff --git a/sa/biz/src/main/java/com/supwisdom/institute/backend/biz/sa/configuration/Swagger2Config.java b/sa/biz/src/main/java/com/supwisdom/institute/backend/biz/sa/configuration/Swagger2Config.java
deleted file mode 100644
index f2ffe33..0000000
--- a/sa/biz/src/main/java/com/supwisdom/institute/backend/biz/sa/configuration/Swagger2Config.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.supwisdom.institute.backend.biz.sa.configuration;
-
-import static com.google.common.collect.Lists.newArrayList;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.ApiKey;
-import springfox.documentation.service.AuthorizationScope;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.SecurityReference;
-import springfox.documentation.service.SecurityScheme;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger.web.UiConfiguration;
-import springfox.documentation.swagger.web.UiConfigurationBuilder;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@Configuration
-@EnableSwagger2
-public class Swagger2Config {
-
-  @Value("${swagger2.apis.basePackage:com.supwisdom.institute}")
-  private String basePackage;
-
-  @Bean
-  public Docket createRestApi() {
-    return new Docket(DocumentationType.SWAGGER_2)
-        .securitySchemes(securitySchemes())
-        .securityContexts(securityContexts())
-        .apiInfo(apiInfo())
-        .select()
-        .apis(RequestHandlerSelectors.basePackage(basePackage))
-        .paths(PathSelectors.any())
-        .build()
-    ;
-  }
-
-  private ApiInfo apiInfo() {
-    Contact contact = new Contact("Backend Biz Super Admin", "https://sw-backend-biz-sa.supwisdom.com/swagger-ui.html", ""); // name, url, email
-    return new ApiInfoBuilder()
-        .title("Backend Biz Super Admin APIs")
-        .description("管理后台 - 服务接口<br /><br />"
-            + "X-FORWARD-USER(测试用):<br /><br />"
-            + "明文:{\"attributes\":{\"accountId\":\"1\"},\"roles\":[\"ROLE_ADMIN\",\"administrator\",\"user\"],\"username\":\"swadmin\"}<br /><br />"
-            + "Base64:eyJhdHRyaWJ1dGVzIjp7ImFjY291bnRJZCI6IjEifSwicm9sZXMiOlsiUk9MRV9BRE1JTiIsImFkbWluaXN0cmF0b3IiLCJ1c2VyIl0sInVzZXJuYW1lIjoic3dhZG1pbiJ9<br /><br />"
-            + "使用 Base64字符串 进行 Authorize,然后进行接口测试<br /><br />"
-            + "若需要其他帐号,请自行拼接明文,再进行 Base64 编码<br /><br />"
-            + ""
-        )
-        .termsOfServiceUrl("http://www.supwisdom.com/")
-        .contact(contact)
-        .version("1.0")
-        .build();
-  }
-
-  private List<SecurityScheme> securitySchemes() {
-    //return newArrayList(new BasicAuth("sample"));
-    return newArrayList(
-        //new BasicAuth("Basic"),
-        //new ApiKey("JWTToken", "Authorization", "header"), 
-        new ApiKey("SimpleUserTransmit", "X-FORWARD-USER", "header"));
-  }
-  
-  private List<SecurityContext> securityContexts() {
-
-    List<SecurityReference> globalSecurityReference = newArrayList(
-        new SecurityReference("SimpleUserTransmit", new AuthorizationScope[]{new AuthorizationScope("global", "accessEverything")}));
-    
-//    AuthorizationScope[] authScopes = new AuthorizationScope[1];
-//    authScopes[0] = new AuthorizationScopeBuilder()
-//            .scope("read")
-//            .description("read access")
-//            .build();
-//    SecurityReference securityReference = SecurityReference.builder()
-//            .reference("sample")
-//            .scopes(authScopes)
-//            .build();
-
-    return newArrayList(
-        SecurityContext.builder()
-          .securityReferences(newArrayList(globalSecurityReference))
-          .build());
-  }
-
-  @Bean
-  UiConfiguration uiConfig() {
-    
-    return UiConfigurationBuilder.builder().build();
-    
-//    return new UiConfiguration(null, // url
-//        "none", // docExpansion => none | list
-//        "alpha", // apiSorter => alpha
-//        "schema", // defaultModelRendering => schema
-//        UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS,
-//        false, // enableJsonEditor => true || false
-//        true, // showRequestHeaders => true | false
-//        60000L); // requestTimeout => in milliseconds, defaults to null
-//    // (uses jquery xh timeout)
-  }
-
-}
diff --git a/sa/biz/src/main/resources/application-docker.yml b/sa/biz/src/main/resources/application-docker.yml
deleted file mode 100644
index cbf3924..0000000
--- a/sa/biz/src/main/resources/application-docker.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-server:
-  port: ${SERVER_PORT:8443}
-  ssl:
-    enabled: ${SSL_ENABLED:true}
-    clientAuth: NEED
-    key-store: ${SSL_KEYSTORE_FILE:file:/certs/server/server.keystore}
-    key-store-password: ${SSL_KEYSTORE_PASSWORD:}
-    trust-store: ${SSL_TRUSTSTORE_FILE:file:/certs/server/server.truststore}
-    trust-store-password: ${SSL_TRUSTSTORE_PASSWORD:}
-  tomcat: 
-    accesslog: 
-      enabled: ${TOMCAT_ACCESSLOG_ENABLED:false}
-      buffered: ${TOMCAT_ACCESSLOG_BUFFERED:true}
-      directory: ${TOMCAT_ACCESSLOG_DIR:log}
-      prefix: ${TOMCAT_ACCESSLOG_PREFIX:sa-api-accesslog}
-      suffix: ${TOMCAT_ACCESSLOG_SUFFIX:.log}
-      file-date-format: ${TOMCAT_ACCESSLOG_FILE_DATE_FORMAT:.yyyy-MM-dd}
-      rotate: ${TOMCAT_ACCESSLOG_ROTATE:true}
-
-
-##
-# logging
-#
-logging:
-  level:
-    root: INFO
-    com.supwisdom: INFO
-
-
-spring:
-  jackson:
-    time-zone: ${JACKSON_TIME_ZONE:Asia/Shanghai}
-
-  datasource:
-    driver-class-name: ${JDBC_DRIVER_CLASS_NAME:com.mysql.cj.jdbc.Driver}
-    url: ${JDBC_URL:jdbc:mysql://mysql-server:3306/sw-biz}
-    username: ${JDBC_USERNAME:sw-biz}
-    password: ${JDBC_PASSWORD:}
-
-
-##
-# online-doc
-#
-infras.online-doc.enabled: ${INFRAS_ONLINE_DOC_ENABLED:false}
-infras.online-doc.md-docs.staitc.path: ${INFRAS_ONLINE_DOC_MD_DOCS_STATIC_PATH:/doc/}
-infras.online-doc.api-docs.staitc.path: ${INFRAS_ONLINE_DOC_API_DOCS_STATIC_PATH:/api-docs/}
diff --git a/sa/biz/src/main/resources/application.yml b/sa/biz/src/main/resources/application.yml
deleted file mode 100644
index 531f8bd..0000000
--- a/sa/biz/src/main/resources/application.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-server:
-  port: 8083
-  ssl:
-    enabled: false
-
-
-##
-# logging
-#
-logging:
-  level:
-    root: INFO
-    com.supwisdom: DEBUG
-#    org.springframework.web: INFO
-#    org.springframework.cloud.openfeign: INFO
-
-
-swagger2.apis.basePackage: com.supwisdom.institute
-
-
-spring:
-  jackson:
-    time-zone: Asia/Shanghai
-  datasource:
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://localhost:3306/sw-biz
-    username: root
-    password: root
-    hikari:
-      data-source-properties:
-        useSSL: false
-        characterEncoding: utf8
-        characterSetResults: utf8
-  jpa: 
-    hibernate:
-      ddl-auto: none
-      naming:
-        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
-    show-sql: false
-
-
-##
-# infras.online-doc
-#
-infras.online-doc.enabled: true
-infras.online-doc.md-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/doc/
-infras.online-doc.api-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/api-docs/
diff --git a/sa/biz/src/main/resources/bootstrap.yml b/sa/biz/src/main/resources/bootstrap.yml
deleted file mode 100644
index 8c1026a..0000000
--- a/sa/biz/src/main/resources/bootstrap.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-spring:
-  application:
-    name: sw-backend-biz-sa
diff --git a/sa/pom.xml b/sa/pom.xml
deleted file mode 100644
index 237ebec..0000000
--- a/sa/pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.2-SNAPSHOT</version>
-  </parent>
-  
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-sa-parent</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Supwisdom Backend Framework Super Admin</name>
-  <description>Supwisdom Backend Framework Super Admin project</description>
-
-  <modules>
-    <module>admin</module>
-    <module>biz</module>
-  </modules>
-
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>