From c9f93927c9281a19b8f1ff6ddfd7ddca1b70d842 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Thu, 1 Jun 2023 17:57:59 +0800 Subject: [PATCH] Added pagination to RoleManagement. Optimized get role list in GroupManagement and UserManagement. --- .../controller/permission/RoleController.java | 15 ++- .../mapper/permission/RoleMapper.java | 4 +- .../service/permission/IRoleService.java | 5 +- .../permission/impl/RoleServiceImpl.java | 7 +- ui/src/pages/power/GroupManagement.vue | 2 +- ui/src/pages/power/RoleManagement.vue | 109 ++++++++++++------ ui/src/pages/power/UserManagement.vue | 2 +- 7 files changed, 94 insertions(+), 50 deletions(-) diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java index 65fe509..3a5d59c 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java @@ -1,6 +1,7 @@ package com.cfive.pinnacle.controller.permission; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Role; import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; @@ -39,9 +40,17 @@ public class RoleController { @Operation(summary = "获取所有角色") @GetMapping - @PreAuthorize("hasAnyAuthority('system:role:get', 'system:role:add', 'system:role:delete', 'system:role:modeify', 'system:group:add', 'system:group:modify', 'system:user:add', 'system:user:modify')") - public ResponseResult> getAllRole() { - List roles = roleService.getAllRole(); + @PreAuthorize("hasAuthority('system:role:get')") + public ResponseResult> getAllRole(Long currentPage, Long pageSize) { + IPage roles = roleService.getAllRole(currentPage, pageSize); + return ResponseResult.databaseSelectSuccess(roles); + } + + @Operation(summary = "获取角色列表") + @GetMapping("list") + @PreAuthorize("hasAnyAuthority('system:group:add', 'system:group:modify', 'system:user:add', 'system:user:modify')") + public ResponseResult> getRoleList() { + List roles = roleService.list(); return ResponseResult.databaseSelectSuccess(roles); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/RoleMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/RoleMapper.java index ff5a804..56aa676 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/RoleMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/RoleMapper.java @@ -1,6 +1,6 @@ package com.cfive.pinnacle.mapper.permission; -import java.util.List; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Role; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -16,7 +16,7 @@ import org.apache.ibatis.annotations.Param; */ @Mapper public interface RoleMapper extends BaseMapper { - List getAll(); + IPage getAll(IPage roleIPage); Role getOneById(@Param("id") long id); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IRoleService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IRoleService.java index db761a6..2f8d375 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IRoleService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IRoleService.java @@ -1,10 +1,9 @@ package com.cfive.pinnacle.service.permission; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Role; import com.baomidou.mybatisplus.extension.service.IService; -import java.util.List; - /** *

* 角色 服务类 @@ -14,7 +13,7 @@ import java.util.List; * @since 2023-04-30 */ public interface IRoleService extends IService { - List getAllRole(); + IPage getAllRole(Long currentPage, Long pageSize); Role getRole(long id); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java index ecbbc56..f9aea3f 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java @@ -1,6 +1,8 @@ package com.cfive.pinnacle.service.permission.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cfive.pinnacle.entity.permission.Power; import com.cfive.pinnacle.entity.permission.Role; import com.cfive.pinnacle.entity.permission.PowerRole; @@ -42,8 +44,9 @@ public class RoleServiceImpl extends ServiceImpl implements IR } @Override - public List getAllRole() { - return roleMapper.getAll(); + public IPage getAllRole(Long currentPage, Long pageSize) { + IPage roleIPage = PageDTO.of(currentPage, pageSize); + return roleMapper.getAll(roleIPage); } @Override diff --git a/ui/src/pages/power/GroupManagement.vue b/ui/src/pages/power/GroupManagement.vue index 3c10431..42446ac 100644 --- a/ui/src/pages/power/GroupManagement.vue +++ b/ui/src/pages/power/GroupManagement.vue @@ -155,7 +155,7 @@ export default { }, getRoles() { this.dialogLoading = true - request.get('/role').then((res) => { + request.get('/role/list').then((res) => { const response = res.data if (response.code === DATABASE_SELECT_OK) { this.roles = response.data diff --git a/ui/src/pages/power/RoleManagement.vue b/ui/src/pages/power/RoleManagement.vue index b813bca..a604afb 100644 --- a/ui/src/pages/power/RoleManagement.vue +++ b/ui/src/pages/power/RoleManagement.vue @@ -21,6 +21,19 @@ @onDelete="handleDelete" custom-column-label_1="权限" /> + +

+ { - const response = res.data - if (response.code === DATABASE_SELECT_OK) { - const roles = response.data - for (const role of roles) { - role.customColumn_1 = [] - const menus = role.menus - const elements = role.elements - const operations = role.operations - for (const operation of operations) { - const element = _.find(elements, { id: operation.elementId }) - if (element.operations === undefined) { - element.operations = [] + request + .get('/role', { currentPage: this.currentPage, pageSize: this.pageSize }) + .then((res) => { + const response = res.data + if (response.code === DATABASE_SELECT_OK) { + const roles = response.data.records + this.totalCount = response.data.total + for (const role of roles) { + role.customColumn_1 = [] + const menus = role.menus + const elements = role.elements + const operations = role.operations + for (const operation of operations) { + const element = _.find(elements, { id: operation.elementId }) + if (element.operations === undefined) { + element.operations = [] + } + element.operations.push(operation) } - element.operations.push(operation) - } - for (const element of elements) { - const menu = _.find(menus, { id: element.menuId }) - if (menu.elements === undefined) { - menu.elements = [] - } - menu.elements.push(element) + for (const element of elements) { + const menu = _.find(menus, { id: element.menuId }) + if (menu.elements === undefined) { + menu.elements = [] + } + menu.elements.push(element) - const operas = [] - _.forEach(element.operations, (value) => { - operas.push(value.name) - }) - role.customColumn_1.push( - `${menu.name}/${element.name}/${_.join(operas, ';')}` - ) + const operas = [] + _.forEach(element.operations, (value) => { + operas.push(value.name) + }) + role.customColumn_1.push( + `${menu.name}/${element.name}/${_.join(operas, ';')}` + ) + } } + this.roleTable = roles + this.tableLoading = false + } else { + ElMessage.error({ + dangerouslyUseHTMLString: true, + message: '查询出错: ' + response.msg + }) } - this.roleTable = roles - this.tableLoading = false - } else { - ElMessage.error({ - dangerouslyUseHTMLString: true, - message: '查询出错: ' + response.msg - }) - } - }) + }) }, handleDialogOpen() { this.getPowerTree() @@ -330,6 +349,14 @@ export default { }, handleCancel() { this.dialogVisible = false + }, + handleSizeChange(pageSize) { + this.pageSize = pageSize + this.loadRoleTable() + }, + handleCurrentChange(currentPage) { + this.currentPage = currentPage + this.loadRoleTable() } }, mounted() { @@ -338,4 +365,10 @@ export default { } - + diff --git a/ui/src/pages/power/UserManagement.vue b/ui/src/pages/power/UserManagement.vue index ff176ff..37b5f67 100644 --- a/ui/src/pages/power/UserManagement.vue +++ b/ui/src/pages/power/UserManagement.vue @@ -226,7 +226,7 @@ export default { }, getRoles() { this.dialogLoading = true - request.get('/role').then((res) => { + request.get('/role/list').then((res) => { const response = res.data if (response.code === DATABASE_SELECT_OK) { this.roles = response.data