diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminGroupController.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminGroupController.java
index 7be730d..f8ab693 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminGroupController.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminGroupController.java
@@ -47,7 +47,7 @@
    * 
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/groups/1/users'
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/groups/1/users?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/groups/1/users?pageIndex=0&pageSize=20&mapBean[username]=username&mapBean[name]=name'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/groups/1/users?pageIndex=0&pageSize=20&mapBean[userUsername]=userUsername&mapBean[userName]=userName'
    * 
    * 
    * 
@@ -88,7 +88,7 @@
   /**
    * 
    * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/groups/1/users' \
-   * -d '{"groupUsers":[{"username":"test001"},{"username":"test002"}]}'
+   * -d '{"groupUsers":[{"userId":"1"},{"userId":"2"}]}'
    * 
    * 
    * @param id
@@ -162,7 +162,7 @@
   /**
    * 
    * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/groups/1/roles' \
-   * -d '{"groupRoles":[{"rolecode":"role001"},{"rolecode":"role002"}]}'
+   * -d '{"groupRoles":[{"roleId":"1"},{"roleId":"2"}]}'
    * 
    * 
    * @param id
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminPermissionController.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminPermissionController.java
index 2f63f1b..69f64c8 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminPermissionController.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminPermissionController.java
@@ -41,7 +41,7 @@
    * 
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/permissions/1/roles'
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/permissions/1/roles?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/permissions/1/roles?pageIndex=0&pageSize=20&mapBean[rolecode]=code&mapBean[rolename]=name'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/permissions/1/roles?pageIndex=0&pageSize=20&mapBean[roleCode]=roleCode&mapBean[roleName]=roleName'
    * 
    * 
    * 
@@ -82,7 +82,7 @@
   /**
    * 
    * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/permissions/1/roles' \
-   * -d '{"rolePermissions":[{"rolecode":"role001"},{"rolecode":"role002"}]}'
+   * -d '{"rolePermissions":[{"roleId":"1"},{"roleId":"2"}]}'
    * 
    * 
    * @param id
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminRoleController.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminRoleController.java
index a51fc96..cbd6845 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminRoleController.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminRoleController.java
@@ -47,7 +47,7 @@
    * 
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/users'
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/users?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/users?pageIndex=0&pageSize=20&mapBean[username]=username'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/users?pageIndex=0&pageSize=20&mapBean[userName]=userName'
    * 
    * 
    * 
@@ -72,7 +72,7 @@
     if (pagerRequestModel.getMapBean() == null) {
       pagerRequestModel.setMapBean(new HashMap<String, Object>());
     }
-    pagerRequestModel.getMapBean().put("rolecode", role.getCode());
+    pagerRequestModel.getMapBean().put("roleId", role.getId());
 
     Page<UserRole> page = userRoleRepository.selectUserRoles(pagerRequestModel.getPageIndex(),
         pagerRequestModel.getPageSize(), pagerRequestModel.getMapBean());
@@ -88,7 +88,7 @@
   /**
    * 
    * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/users' \
-   * -d '{"userRoles":[{"username":"test001"},{"username":"test002"}]}'
+   * -d '{"userRoles":[{"userId":"test001"},{"userId":"test002"}]}'
    * 
    * 
    * @param id
@@ -127,7 +127,7 @@
    * 
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/groups'
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/groups?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/groups?pageIndex=0&pageSize=20&mapBean[username]=username'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/groups?pageIndex=0&pageSize=20&mapBean[groupName]=groupName'
    * 
    * 
    * 
@@ -152,7 +152,7 @@
     if (pagerRequestModel.getMapBean() == null) {
       pagerRequestModel.setMapBean(new HashMap<String, Object>());
     }
-    pagerRequestModel.getMapBean().put("rolecode", role.getCode());
+    pagerRequestModel.getMapBean().put("roleId", role.getId());
 
     Page<GroupRole> page = groupRoleRepository.selectGroupRoles(pagerRequestModel.getPageIndex(),
         pagerRequestModel.getPageSize(), pagerRequestModel.getMapBean());
@@ -231,7 +231,7 @@
     if (pagerRequestModel.getMapBean() == null) {
       pagerRequestModel.setMapBean(new HashMap<String, Object>());
     }
-    pagerRequestModel.getMapBean().put("rolecode", role.getCode());
+    pagerRequestModel.getMapBean().put("roleId", role.getId());
 
     Page<RolePermission> page = rolePermissionRepository.selectRolePermissions(pagerRequestModel.getPageIndex(),
         pagerRequestModel.getPageSize(), pagerRequestModel.getMapBean());
@@ -247,7 +247,7 @@
   /**
    * 
    * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/roles/1/permissons' \
-   * -d '{"userRoles":[{"groupId":"1"},{"groupId":"2"}]}'
+   * -d '{"userRoles":[{"permissionId":"1"},{"permissionId":"2"}]}'
    * 
    * 
    * @param id
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
index d966324..7b53c29 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
@@ -421,7 +421,7 @@
    * 
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/groups'
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/groups?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/groups?pageIndex=0&pageSize=20&mapBean[rolecode]=code&mapBean[rolename]=name'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/groups?pageIndex=0&pageSize=20&mapBean[groupCode]=groupCode&mapBean[groupName]=groupName'
    * 
    * 
    * 
@@ -446,7 +446,7 @@
     if (pagerRequestModel.getMapBean() == null) {
       pagerRequestModel.setMapBean(new HashMap<String, Object>());
     }
-    pagerRequestModel.getMapBean().put("username", user.getUsername());
+    pagerRequestModel.getMapBean().put("userId", user.getId());
 
     Page<UserGroup> page = userGroupRepository.selectUserGroups(pagerRequestModel.getPageIndex(),
         pagerRequestModel.getPageSize(), pagerRequestModel.getMapBean());
@@ -495,7 +495,7 @@
    * 
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/roles'
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/roles?pageIndex=2&pageSize=50'
-   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/roles?pageIndex=0&pageSize=20&mapBean[rolecode]=code&mapBean[rolename]=name'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/roles?pageIndex=0&pageSize=20&mapBean[roleCode]=roleCode&mapBean[roleName]=roleName'
    * 
    * 
    * 
@@ -520,7 +520,7 @@
     if (pagerRequestModel.getMapBean() == null) {
       pagerRequestModel.setMapBean(new HashMap<String, Object>());
     }
-    pagerRequestModel.getMapBean().put("username", user.getUsername());
+    pagerRequestModel.getMapBean().put("userId", user.getId());
 
     Page<UserRole> page = userRoleRepository.selectUserRoles(pagerRequestModel.getPageIndex(),
         pagerRequestModel.getPageSize(), pagerRequestModel.getMapBean());
@@ -536,7 +536,7 @@
   /**
    * 
    * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1/roles' \
-   * -d '{"userRoles":[{"rolecode":"role001"},{"rolecode":"role002"}]}'
+   * -d '{"userRoles":[{"roleId":"1"},{"roleId":"2"}]}'
    * 
    * 
    * @param id
