From cb49a3d0a7a56a445bbe4b8cdd8fc2a4eba77df2 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Fri, 10 Nov 2023 09:43:27 +0800 Subject: [PATCH] Add get power set --- .../controller/permission/PowerController.kt | 23 ++++++ .../converter/permission/ElementConverter.kt | 14 ++++ .../converter/permission/GroupConverter.kt | 22 +++--- .../api/converter/permission/MenuConverter.kt | 15 ++++ .../converter/permission/ModuleConverter.kt | 12 +++ .../permission/OperationConverter.kt | 14 ++++ .../converter/permission/PowerConverter.kt | 13 ++++ .../api/converter/permission/RoleConverter.kt | 73 ++++++------------ .../api/converter/permission/UserConverter.kt | 77 ++++--------------- .../converter/permission/UserInfoConverter.kt | 16 ++++ .../fatweb/api/entity/permission/PowerSet.kt | 16 ++++ .../api/service/permission/IPowerService.kt | 5 +- .../permission/impl/PowerServiceImpl.kt | 17 +++- .../fatweb/api/vo/permission/PowerSetVo.kt | 18 +++++ 14 files changed, 209 insertions(+), 126 deletions(-) create mode 100644 src/main/kotlin/top/fatweb/api/controller/permission/PowerController.kt create mode 100644 src/main/kotlin/top/fatweb/api/converter/permission/ElementConverter.kt create mode 100644 src/main/kotlin/top/fatweb/api/converter/permission/MenuConverter.kt create mode 100644 src/main/kotlin/top/fatweb/api/converter/permission/ModuleConverter.kt create mode 100644 src/main/kotlin/top/fatweb/api/converter/permission/OperationConverter.kt create mode 100644 src/main/kotlin/top/fatweb/api/converter/permission/PowerConverter.kt create mode 100644 src/main/kotlin/top/fatweb/api/converter/permission/UserInfoConverter.kt create mode 100644 src/main/kotlin/top/fatweb/api/entity/permission/PowerSet.kt create mode 100644 src/main/kotlin/top/fatweb/api/vo/permission/PowerSetVo.kt diff --git a/src/main/kotlin/top/fatweb/api/controller/permission/PowerController.kt b/src/main/kotlin/top/fatweb/api/controller/permission/PowerController.kt new file mode 100644 index 0000000..33d1e97 --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/controller/permission/PowerController.kt @@ -0,0 +1,23 @@ +package top.fatweb.api.controller.permission + +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.tags.Tag +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import top.fatweb.api.converter.permission.PowerConverter +import top.fatweb.api.service.permission.IPowerService + +/** + * 权限 前端控制器 + */ +@Tag(name = "权限管理", description = "权限管理相关接口") +@RestController +@RequestMapping("/system/power") +class PowerController( + private val powerService: IPowerService +) { + @Operation(summary = "获取权限列表") + @GetMapping + fun get() = PowerConverter.powerSetToPowerSetVo(powerService.getAll()) +} \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/ElementConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/ElementConverter.kt new file mode 100644 index 0000000..8b3df59 --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/converter/permission/ElementConverter.kt @@ -0,0 +1,14 @@ +package top.fatweb.api.converter.permission + +import top.fatweb.api.entity.permission.Element +import top.fatweb.api.vo.permission.ElementVo + +object ElementConverter { + fun elementToElementVo(element: Element) = ElementVo( + id = element.id, + name = element.name, + powerId = element.powerId, + parentId = element.parentId, + menuId = element.menuId + ) +} \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/GroupConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/GroupConverter.kt index 2b73ffd..571bd07 100644 --- a/src/main/kotlin/top/fatweb/api/converter/permission/GroupConverter.kt +++ b/src/main/kotlin/top/fatweb/api/converter/permission/GroupConverter.kt @@ -6,17 +6,19 @@ import top.fatweb.api.vo.PageVo import top.fatweb.api.vo.permission.GroupVo object GroupConverter { + fun groupToGroupVo(group: Group) = GroupVo( + id = group.id, + name = group.name, + enable = group.enable == 1 + ) + fun groupPageToGroupPageVo(groupPage: IPage): PageVo = PageVo( - groupPage.total, - groupPage.pages, - groupPage.size, - groupPage.current, - groupPage.records.map { - GroupVo( - id = it.id, - name = it.name, - enable = it.enable == 1 - ) + total = groupPage.total, + pages = groupPage.pages, + size = groupPage.size, + current = groupPage.current, + records = groupPage.records.map { + groupToGroupVo(it) } ) } \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/MenuConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/MenuConverter.kt new file mode 100644 index 0000000..c7863c7 --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/converter/permission/MenuConverter.kt @@ -0,0 +1,15 @@ +package top.fatweb.api.converter.permission + +import top.fatweb.api.entity.permission.Menu +import top.fatweb.api.vo.permission.MenuVo + +object MenuConverter { + fun menuToMenuVo(menu: Menu) = MenuVo( + id = menu.id, + name = menu.name, + url = menu.url, + powerId = menu.powerId, + parentId = menu.parentId, + moduleId = menu.moduleId + ) +} \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/ModuleConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/ModuleConverter.kt new file mode 100644 index 0000000..712d8cd --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/converter/permission/ModuleConverter.kt @@ -0,0 +1,12 @@ +package top.fatweb.api.converter.permission + +import top.fatweb.api.entity.permission.Module +import top.fatweb.api.vo.permission.ModuleVo + +object ModuleConverter { + fun moduleToModuleVo(module: Module) = ModuleVo( + id = module.id, + name = module.name, + powerId = module.powerId + ) +} \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/OperationConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/OperationConverter.kt new file mode 100644 index 0000000..6efadbb --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/converter/permission/OperationConverter.kt @@ -0,0 +1,14 @@ +package top.fatweb.api.converter.permission + +import top.fatweb.api.entity.permission.Operation +import top.fatweb.api.vo.permission.OperationVo + +object OperationConverter { + fun operationToOperationVo(operation: Operation) = OperationVo( + id = operation.id, + name = operation.name, + code = operation.code, + powerId = operation.powerId, + elementId = operation.elementId + ) +} \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/PowerConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/PowerConverter.kt new file mode 100644 index 0000000..43877fb --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/converter/permission/PowerConverter.kt @@ -0,0 +1,13 @@ +package top.fatweb.api.converter.permission + +import top.fatweb.api.entity.permission.PowerSet +import top.fatweb.api.vo.permission.PowerSetVo + +object PowerConverter { + fun powerSetToPowerSetVo(powerSet: PowerSet) = PowerSetVo( + moduleList = powerSet.moduleList?.map { ModuleConverter.moduleToModuleVo(it) }, + menuList = powerSet.menuList?.map { MenuConverter.menuToMenuVo(it) }, + elementList = powerSet.elementList?.map { ElementConverter.elementToElementVo(it) }, + operationList = powerSet.operationList?.map { OperationConverter.operationToOperationVo(it) } + ) +} \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/RoleConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/RoleConverter.kt index 04d92c0..876d347 100644 --- a/src/main/kotlin/top/fatweb/api/converter/permission/RoleConverter.kt +++ b/src/main/kotlin/top/fatweb/api/converter/permission/RoleConverter.kt @@ -8,52 +8,29 @@ import top.fatweb.api.vo.PageVo import top.fatweb.api.vo.permission.* object RoleConverter { + fun roleToRoleVo(role: Role): RoleVo = RoleVo( + id = role.id, + name = role.name, + enable = role.enable == 1 + ) + + fun roleToRoleWithPowerVo(role: Role) = RoleWithPowerVo( + id = role.id, + name = role.name, + enable = role.enable == 1, + modules = role.modules?.map { ModuleConverter.moduleToModuleVo(it) }, + menus = role.menus?.map { MenuConverter.menuToMenuVo(it) }, + elements = role.elements?.map { ElementConverter.elementToElementVo(it) }, + operations = role.operations?.map { OperationConverter.operationToOperationVo(it) } + ) + fun rolePageToRoleWithPowerPageVo(rolePage: IPage): PageVo = PageVo( - rolePage.total, - rolePage.pages, - rolePage.size, - rolePage.current, - rolePage.records.map { - RoleWithPowerVo( - id = it.id, - name = it.name, - enable = it.enable == 1, - modules = it.modules?.map { module -> - ModuleVo( - id = module.id, - name = module.name, - powerId = module.powerId - ) - }, - menus = it.menus?.map { menu -> - MenuVo( - id = menu.id, - name = menu.name, - url = menu.url, - powerId = menu.powerId, - parentId = menu.powerId, - moduleId = menu.moduleId - ) - }, - elements = it.elements?.map { element -> - ElementVo( - id = element.id, - name = element.name, - powerId = element.powerId, - parentId = element.parentId, - menuId = element.menuId - ) - }, - operations = it.operations?.map { operation -> - OperationVo( - id = operation.id, - name = operation.name, - code = operation.code, - powerId = operation.powerId, - elementId = operation.elementId - ) - } - ) + total = rolePage.total, + pages = rolePage.pages, + size = rolePage.size, + current = rolePage.current, + records = rolePage.records.map { + roleToRoleWithPowerVo(it) } ) @@ -62,10 +39,4 @@ object RoleConverter { enable = if (roleAddParam.enable == true) 1 else 0 powers = roleAddParam.powerIds?.map { Power().apply { id = it } } } - - fun roleToRoleVo(role: Role): RoleVo = RoleVo( - id = role.id, - name = role.name, - enable = role.enable == 1 - ) } \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/UserConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/UserConverter.kt index f983c49..e84b210 100644 --- a/src/main/kotlin/top/fatweb/api/converter/permission/UserConverter.kt +++ b/src/main/kotlin/top/fatweb/api/converter/permission/UserConverter.kt @@ -5,13 +5,9 @@ import top.fatweb.api.param.authentication.LoginParam import top.fatweb.api.vo.permission.* object UserConverter { - fun loginParamToUser(loginParam: LoginParam): User { - val user = User().apply { - username = loginParam.username - password = loginParam.password - } - - return user + fun loginParamToUser(loginParam: LoginParam) = User().apply { + username = loginParam.username + password = loginParam.password } fun userToUserWithPowerInfoVo(user: User) = UserWithPowerInfoVo( @@ -27,49 +23,20 @@ object UserConverter { lastLoginIp = user.lastLoginIp, createTime = user.createTime, updateTime = user.updateTime, - userInfo = user.userInfo?.let { UserInfoVo( - id = it.id, - userId = it.userId, - nickname = it.nickname, - avatar = it.avatar, - email = it.email, - createTime = it.createTime, - updateTime = it.updateTime - ) }, + userInfo = user.userInfo?.let { + UserInfoConverter.userInfoToUserInfoVo(it) + }, modules = user.modules?.map { - ModuleVo( - id = it.id, - name = it.name, - powerId = it.powerId - ) + ModuleConverter.moduleToModuleVo(it) }, menus = user.menus?.map { - MenuVo( - id = it.id, - name = it.name, - url = it.url, - powerId = it.powerId, - parentId = it.parentId, - moduleId = it.moduleId - ) + MenuConverter.menuToMenuVo(it) }, elements = user.elements?.map { - ElementVo( - id = it.id, - name = it.name, - powerId = it.powerId, - parentId = it.parentId, - menuId = it.menuId - ) + ElementConverter.elementToElementVo(it) }, operations = user.operations?.map { - OperationVo( - id = it.id, - name = it.name, - code = it.code, - powerId = it.powerId, - elementId = it.elementId - ) + OperationConverter.operationToOperationVo(it) } ) @@ -86,28 +53,14 @@ object UserConverter { lastLoginIp = user.lastLoginIp, createTime = user.createTime, updateTime = user.updateTime, - userInfo = user.userInfo?.let { UserInfoVo( - id = it.id, - userId = it.userId, - nickname = it.nickname, - avatar = it.avatar, - email = it.email, - createTime = it.createTime, - updateTime = it.updateTime - ) }, + userInfo = user.userInfo?.let { + UserInfoConverter.userInfoToUserInfoVo(it) + }, roles = user.roles?.map { - RoleVo( - id = it.id, - name = it.name, - enable = it.enable == 1 - ) + RoleConverter.roleToRoleVo(it) }, groups = user.groups?.map { - GroupVo( - id = it.id, - name = it.name, - enable = it.enable == 1 - ) + GroupConverter.groupToGroupVo(it) } ) } \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/converter/permission/UserInfoConverter.kt b/src/main/kotlin/top/fatweb/api/converter/permission/UserInfoConverter.kt new file mode 100644 index 0000000..0d3e2b6 --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/converter/permission/UserInfoConverter.kt @@ -0,0 +1,16 @@ +package top.fatweb.api.converter.permission + +import top.fatweb.api.entity.permission.UserInfo +import top.fatweb.api.vo.permission.UserInfoVo + +object UserInfoConverter { + fun userInfoToUserInfoVo(userInfo: UserInfo) = UserInfoVo( + id = userInfo.id, + userId = userInfo.userId, + nickname = userInfo.nickname, + avatar = userInfo.avatar, + email = userInfo.email, + createTime = userInfo.createTime, + updateTime = userInfo.updateTime + ) +} \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/entity/permission/PowerSet.kt b/src/main/kotlin/top/fatweb/api/entity/permission/PowerSet.kt new file mode 100644 index 0000000..744862d --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/entity/permission/PowerSet.kt @@ -0,0 +1,16 @@ +package top.fatweb.api.entity.permission + +import java.io.Serializable + +/** + * 权限集合 + */ +class PowerSet : Serializable { + var moduleList: List? = null + + var menuList: List? = null + + var elementList: List? = null + + var operationList: List? = null +} \ No newline at end of file diff --git a/src/main/kotlin/top/fatweb/api/service/permission/IPowerService.kt b/src/main/kotlin/top/fatweb/api/service/permission/IPowerService.kt index c7040ad..0f0993a 100644 --- a/src/main/kotlin/top/fatweb/api/service/permission/IPowerService.kt +++ b/src/main/kotlin/top/fatweb/api/service/permission/IPowerService.kt @@ -2,6 +2,7 @@ package top.fatweb.api.service.permission import com.baomidou.mybatisplus.extension.service.IService import top.fatweb.api.entity.permission.Power +import top.fatweb.api.entity.permission.PowerSet /** *

@@ -11,4 +12,6 @@ import top.fatweb.api.entity.permission.Power * @author FatttSnake * @since 2023-10-25 */ -interface IPowerService : IService +interface IPowerService : IService { + fun getAll(): PowerSet +} diff --git a/src/main/kotlin/top/fatweb/api/service/permission/impl/PowerServiceImpl.kt b/src/main/kotlin/top/fatweb/api/service/permission/impl/PowerServiceImpl.kt index 4c2b243..7d304cd 100644 --- a/src/main/kotlin/top/fatweb/api/service/permission/impl/PowerServiceImpl.kt +++ b/src/main/kotlin/top/fatweb/api/service/permission/impl/PowerServiceImpl.kt @@ -3,8 +3,9 @@ package top.fatweb.api.service.permission.impl import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl import org.springframework.stereotype.Service import top.fatweb.api.entity.permission.Power +import top.fatweb.api.entity.permission.PowerSet import top.fatweb.api.mapper.permission.PowerMapper -import top.fatweb.api.service.permission.IPowerService +import top.fatweb.api.service.permission.* /** *

@@ -15,4 +16,16 @@ import top.fatweb.api.service.permission.IPowerService * @since 2023-10-25 */ @Service -class PowerServiceImpl : ServiceImpl(), IPowerService +class PowerServiceImpl( + private val moduleService: IModuleService, + private val menuService: IMenuService, + private val elementService: IElementService, + private val operationService: IOperationService +) : ServiceImpl(), IPowerService { + override fun getAll() = PowerSet().apply { + moduleList = moduleService.list() + menuList = menuService.list() + elementList = elementService.list() + operationList = operationService.list() + } +} diff --git a/src/main/kotlin/top/fatweb/api/vo/permission/PowerSetVo.kt b/src/main/kotlin/top/fatweb/api/vo/permission/PowerSetVo.kt new file mode 100644 index 0000000..600b114 --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/vo/permission/PowerSetVo.kt @@ -0,0 +1,18 @@ +package top.fatweb.api.vo.permission + +import io.swagger.v3.oas.annotations.media.Schema + +@Schema(description = "权限集合返回参数") +data class PowerSetVo( + @Schema(description = "模块列表") + val moduleList: List?, + + @Schema(description = "菜单列表") + val menuList: List?, + + @Schema(description = "页面元素列表") + val elementList: List?, + + @Schema(description = "功能列表") + val operationList: List? +)