Add get power set

This commit is contained in:
2023-11-10 09:43:27 +08:00
parent d176cc684b
commit cb49a3d0a7
14 changed files with 209 additions and 126 deletions

View File

@@ -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())
}

View File

@@ -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
)
}

View File

@@ -6,17 +6,19 @@ import top.fatweb.api.vo.PageVo
import top.fatweb.api.vo.permission.GroupVo import top.fatweb.api.vo.permission.GroupVo
object GroupConverter { object GroupConverter {
fun groupToGroupVo(group: Group) = GroupVo(
id = group.id,
name = group.name,
enable = group.enable == 1
)
fun groupPageToGroupPageVo(groupPage: IPage<Group>): PageVo<GroupVo> = PageVo( fun groupPageToGroupPageVo(groupPage: IPage<Group>): PageVo<GroupVo> = PageVo(
groupPage.total, total = groupPage.total,
groupPage.pages, pages = groupPage.pages,
groupPage.size, size = groupPage.size,
groupPage.current, current = groupPage.current,
groupPage.records.map { records = groupPage.records.map {
GroupVo( groupToGroupVo(it)
id = it.id,
name = it.name,
enable = it.enable == 1
)
} }
) )
} }

View File

@@ -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
)
}

View File

@@ -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
)
}

View File

@@ -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
)
}

View File

@@ -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) }
)
}

View File

@@ -8,52 +8,29 @@ import top.fatweb.api.vo.PageVo
import top.fatweb.api.vo.permission.* import top.fatweb.api.vo.permission.*
object RoleConverter { 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<Role>): PageVo<RoleWithPowerVo> = PageVo( fun rolePageToRoleWithPowerPageVo(rolePage: IPage<Role>): PageVo<RoleWithPowerVo> = PageVo(
rolePage.total, total = rolePage.total,
rolePage.pages, pages = rolePage.pages,
rolePage.size, size = rolePage.size,
rolePage.current, current = rolePage.current,
rolePage.records.map { records = rolePage.records.map {
RoleWithPowerVo( roleToRoleWithPowerVo(it)
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
)
}
)
} }
) )
@@ -62,10 +39,4 @@ object RoleConverter {
enable = if (roleAddParam.enable == true) 1 else 0 enable = if (roleAddParam.enable == true) 1 else 0
powers = roleAddParam.powerIds?.map { Power().apply { id = it } } powers = roleAddParam.powerIds?.map { Power().apply { id = it } }
} }
fun roleToRoleVo(role: Role): RoleVo = RoleVo(
id = role.id,
name = role.name,
enable = role.enable == 1
)
} }

View File

@@ -5,13 +5,9 @@ import top.fatweb.api.param.authentication.LoginParam
import top.fatweb.api.vo.permission.* import top.fatweb.api.vo.permission.*
object UserConverter { object UserConverter {
fun loginParamToUser(loginParam: LoginParam): User { fun loginParamToUser(loginParam: LoginParam) = User().apply {
val user = User().apply { username = loginParam.username
username = loginParam.username password = loginParam.password
password = loginParam.password
}
return user
} }
fun userToUserWithPowerInfoVo(user: User) = UserWithPowerInfoVo( fun userToUserWithPowerInfoVo(user: User) = UserWithPowerInfoVo(
@@ -27,49 +23,20 @@ object UserConverter {
lastLoginIp = user.lastLoginIp, lastLoginIp = user.lastLoginIp,
createTime = user.createTime, createTime = user.createTime,
updateTime = user.updateTime, updateTime = user.updateTime,
userInfo = user.userInfo?.let { UserInfoVo( userInfo = user.userInfo?.let {
id = it.id, UserInfoConverter.userInfoToUserInfoVo(it)
userId = it.userId, },
nickname = it.nickname,
avatar = it.avatar,
email = it.email,
createTime = it.createTime,
updateTime = it.updateTime
) },
modules = user.modules?.map { modules = user.modules?.map {
ModuleVo( ModuleConverter.moduleToModuleVo(it)
id = it.id,
name = it.name,
powerId = it.powerId
)
}, },
menus = user.menus?.map { menus = user.menus?.map {
MenuVo( MenuConverter.menuToMenuVo(it)
id = it.id,
name = it.name,
url = it.url,
powerId = it.powerId,
parentId = it.parentId,
moduleId = it.moduleId
)
}, },
elements = user.elements?.map { elements = user.elements?.map {
ElementVo( ElementConverter.elementToElementVo(it)
id = it.id,
name = it.name,
powerId = it.powerId,
parentId = it.parentId,
menuId = it.menuId
)
}, },
operations = user.operations?.map { operations = user.operations?.map {
OperationVo( OperationConverter.operationToOperationVo(it)
id = it.id,
name = it.name,
code = it.code,
powerId = it.powerId,
elementId = it.elementId
)
} }
) )
@@ -86,28 +53,14 @@ object UserConverter {
lastLoginIp = user.lastLoginIp, lastLoginIp = user.lastLoginIp,
createTime = user.createTime, createTime = user.createTime,
updateTime = user.updateTime, updateTime = user.updateTime,
userInfo = user.userInfo?.let { UserInfoVo( userInfo = user.userInfo?.let {
id = it.id, UserInfoConverter.userInfoToUserInfoVo(it)
userId = it.userId, },
nickname = it.nickname,
avatar = it.avatar,
email = it.email,
createTime = it.createTime,
updateTime = it.updateTime
) },
roles = user.roles?.map { roles = user.roles?.map {
RoleVo( RoleConverter.roleToRoleVo(it)
id = it.id,
name = it.name,
enable = it.enable == 1
)
}, },
groups = user.groups?.map { groups = user.groups?.map {
GroupVo( GroupConverter.groupToGroupVo(it)
id = it.id,
name = it.name,
enable = it.enable == 1
)
} }
) )
} }

View File

@@ -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
)
}

View File

@@ -0,0 +1,16 @@
package top.fatweb.api.entity.permission
import java.io.Serializable
/**
* 权限集合
*/
class PowerSet : Serializable {
var moduleList: List<Module>? = null
var menuList: List<Menu>? = null
var elementList: List<Element>? = null
var operationList: List<Operation>? = null
}

View File

@@ -2,6 +2,7 @@ package top.fatweb.api.service.permission
import com.baomidou.mybatisplus.extension.service.IService import com.baomidou.mybatisplus.extension.service.IService
import top.fatweb.api.entity.permission.Power import top.fatweb.api.entity.permission.Power
import top.fatweb.api.entity.permission.PowerSet
/** /**
* <p> * <p>
@@ -11,4 +12,6 @@ import top.fatweb.api.entity.permission.Power
* @author FatttSnake * @author FatttSnake
* @since 2023-10-25 * @since 2023-10-25
*/ */
interface IPowerService : IService<Power> interface IPowerService : IService<Power> {
fun getAll(): PowerSet
}

View File

@@ -3,8 +3,9 @@ package top.fatweb.api.service.permission.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import top.fatweb.api.entity.permission.Power 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.mapper.permission.PowerMapper
import top.fatweb.api.service.permission.IPowerService import top.fatweb.api.service.permission.*
/** /**
* <p> * <p>
@@ -15,4 +16,16 @@ import top.fatweb.api.service.permission.IPowerService
* @since 2023-10-25 * @since 2023-10-25
*/ */
@Service @Service
class PowerServiceImpl : ServiceImpl<PowerMapper, Power>(), IPowerService class PowerServiceImpl(
private val moduleService: IModuleService,
private val menuService: IMenuService,
private val elementService: IElementService,
private val operationService: IOperationService
) : ServiceImpl<PowerMapper, Power>(), IPowerService {
override fun getAll() = PowerSet().apply {
moduleList = moduleService.list()
menuList = menuService.list()
elementList = elementService.list()
operationList = operationService.list()
}
}

View File

@@ -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<ModuleVo>?,
@Schema(description = "菜单列表")
val menuList: List<MenuVo>?,
@Schema(description = "页面元素列表")
val elementList: List<ElementVo>?,
@Schema(description = "功能列表")
val operationList: List<OperationVo>?
)