Finish role add and get
This commit is contained in:
@@ -2,10 +2,8 @@ package top.fatweb.api.controller.permission
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation
|
import io.swagger.v3.oas.annotations.Operation
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag
|
import io.swagger.v3.oas.annotations.tags.Tag
|
||||||
import org.springframework.web.bind.annotation.GetMapping
|
import jakarta.validation.Valid
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
import org.springframework.web.bind.annotation.*
|
||||||
import org.springframework.web.bind.annotation.RequestMapping
|
|
||||||
import org.springframework.web.bind.annotation.RestController
|
|
||||||
import top.fatweb.api.converter.permission.RoleConverter
|
import top.fatweb.api.converter.permission.RoleConverter
|
||||||
import top.fatweb.api.entity.common.ResponseCode
|
import top.fatweb.api.entity.common.ResponseCode
|
||||||
import top.fatweb.api.entity.common.ResponseResult
|
import top.fatweb.api.entity.common.ResponseResult
|
||||||
@@ -14,6 +12,7 @@ import top.fatweb.api.param.authentication.RoleGetParam
|
|||||||
import top.fatweb.api.service.permission.IRoleService
|
import top.fatweb.api.service.permission.IRoleService
|
||||||
import top.fatweb.api.vo.PageVo
|
import top.fatweb.api.vo.PageVo
|
||||||
import top.fatweb.api.vo.permission.RoleVo
|
import top.fatweb.api.vo.permission.RoleVo
|
||||||
|
import top.fatweb.api.vo.permission.RoleWithPowerVo
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色表 前端控制器
|
* 角色表 前端控制器
|
||||||
@@ -29,9 +28,9 @@ class RoleController(
|
|||||||
) {
|
) {
|
||||||
@Operation(summary = "获取角色列表")
|
@Operation(summary = "获取角色列表")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
fun get(roleGetParam: RoleGetParam?): ResponseResult<PageVo<RoleVo>> {
|
fun get(roleGetParam: RoleGetParam?): ResponseResult<PageVo<RoleWithPowerVo>> {
|
||||||
return ResponseResult.success(
|
return ResponseResult.success(
|
||||||
ResponseCode.DATABASE_SELECT_SUCCESS, data = RoleConverter.rolePageToRolePageVo(
|
ResponseCode.DATABASE_SELECT_SUCCESS, data = RoleConverter.rolePageToRoleWithPowerPageVo(
|
||||||
roleService.getPage(roleGetParam)
|
roleService.getPage(roleGetParam)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -39,9 +38,9 @@ class RoleController(
|
|||||||
|
|
||||||
@Operation(summary = "添加角色")
|
@Operation(summary = "添加角色")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
fun add(roleAddParam: RoleAddParam): ResponseResult<RoleVo> {
|
fun add(@Valid @RequestBody roleAddParam: RoleAddParam): ResponseResult<RoleVo> {
|
||||||
return roleService.add(roleAddParam)
|
return roleService.add(roleAddParam)
|
||||||
?.let { ResponseResult.success(ResponseCode.DATABASE_INSERT_SUCCESS, data = it) }
|
?.let { ResponseResult.success(ResponseCode.DATABASE_INSERT_SUCCESS, data = RoleConverter.roleToRoleVo(it)) }
|
||||||
?: let { ResponseResult.fail(ResponseCode.DATABASE_INSERT_FAILED) }
|
?: let { ResponseResult.fail(ResponseCode.DATABASE_INSERT_FAILED) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,26 +5,61 @@ import top.fatweb.api.entity.permission.Power
|
|||||||
import top.fatweb.api.entity.permission.Role
|
import top.fatweb.api.entity.permission.Role
|
||||||
import top.fatweb.api.param.authentication.RoleAddParam
|
import top.fatweb.api.param.authentication.RoleAddParam
|
||||||
import top.fatweb.api.vo.PageVo
|
import top.fatweb.api.vo.PageVo
|
||||||
import top.fatweb.api.vo.permission.RoleVo
|
import top.fatweb.api.vo.permission.*
|
||||||
|
|
||||||
object RoleConverter {
|
object RoleConverter {
|
||||||
fun rolePageToRolePageVo(rolePage: IPage<Role>): PageVo<RoleVo> = PageVo(
|
fun rolePageToRoleWithPowerPageVo(rolePage: IPage<Role>): PageVo<RoleWithPowerVo> = PageVo(
|
||||||
rolePage.total,
|
rolePage.total,
|
||||||
rolePage.pages,
|
rolePage.pages,
|
||||||
rolePage.size,
|
rolePage.size,
|
||||||
rolePage.current,
|
rolePage.current,
|
||||||
rolePage.records.map {
|
rolePage.records.map {
|
||||||
RoleVo(
|
RoleWithPowerVo(
|
||||||
id = it.id,
|
id = it.id,
|
||||||
name = it.name,
|
name = it.name,
|
||||||
enable = it.enable == 1
|
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
|
||||||
|
)
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
fun roleAddParamToRole(roleAddParam: RoleAddParam): Role = Role().apply {
|
fun roleAddParamToRole(roleAddParam: RoleAddParam): Role = Role().apply {
|
||||||
name = roleAddParam.name
|
name = roleAddParam.name
|
||||||
enable = if (roleAddParam.enable) 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 } }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ object UserConverter {
|
|||||||
name = it.name,
|
name = it.name,
|
||||||
url = it.url,
|
url = it.url,
|
||||||
powerId = it.powerId,
|
powerId = it.powerId,
|
||||||
parentId = it.parentId
|
parentId = it.parentId,
|
||||||
|
moduleId = it.moduleId
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
elements = user.elements?.map {
|
elements = user.elements?.map {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.auth0.jwt.exceptions.SignatureVerificationException
|
|||||||
import com.auth0.jwt.exceptions.TokenExpiredException
|
import com.auth0.jwt.exceptions.TokenExpiredException
|
||||||
import org.slf4j.Logger
|
import org.slf4j.Logger
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
|
import org.springframework.dao.DuplicateKeyException
|
||||||
import org.springframework.http.converter.HttpMessageNotReadableException
|
import org.springframework.http.converter.HttpMessageNotReadableException
|
||||||
import org.springframework.jdbc.BadSqlGrammarException
|
import org.springframework.jdbc.BadSqlGrammarException
|
||||||
import org.springframework.security.authentication.BadCredentialsException
|
import org.springframework.security.authentication.BadCredentialsException
|
||||||
@@ -76,6 +77,11 @@ class ExceptionHandler {
|
|||||||
ResponseResult.fail(ResponseCode.DATABASE_EXECUTE_ERROR, "Incorrect SQL syntax", null)
|
ResponseResult.fail(ResponseCode.DATABASE_EXECUTE_ERROR, "Incorrect SQL syntax", null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is DuplicateKeyException -> {
|
||||||
|
logger.debug(e.localizedMessage, e)
|
||||||
|
ResponseResult.fail(ResponseCode.DATABASE_INSERT_FAILED, "Duplicate key", null)
|
||||||
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
logger.error(e.localizedMessage, e)
|
logger.error(e.localizedMessage, e)
|
||||||
ResponseResult.fail(ResponseCode.SYSTEM_ERROR, data = null)
|
ResponseResult.fail(ResponseCode.SYSTEM_ERROR, data = null)
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import jakarta.validation.constraints.NotBlank
|
|||||||
|
|
||||||
data class RoleAddParam(
|
data class RoleAddParam(
|
||||||
@Schema(description = "角色名称")
|
@Schema(description = "角色名称")
|
||||||
@field:NotBlank
|
@field:NotBlank(message = "Name can not be blank")
|
||||||
val name: String,
|
val name: String?,
|
||||||
|
|
||||||
@Schema(description = "启用")
|
@Schema(description = "启用")
|
||||||
val enable: Boolean = true,
|
val enable: Boolean? = true,
|
||||||
|
|
||||||
@Schema(description = "权限 ID 列表")
|
@Schema(description = "权限 ID 列表")
|
||||||
val powerIds: List<Long>? = null
|
val powerIds: List<Long>? = null
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.IService
|
|||||||
import top.fatweb.api.entity.permission.Role
|
import top.fatweb.api.entity.permission.Role
|
||||||
import top.fatweb.api.param.authentication.RoleAddParam
|
import top.fatweb.api.param.authentication.RoleAddParam
|
||||||
import top.fatweb.api.param.authentication.RoleGetParam
|
import top.fatweb.api.param.authentication.RoleGetParam
|
||||||
import top.fatweb.api.vo.permission.RoleVo
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -18,5 +17,5 @@ import top.fatweb.api.vo.permission.RoleVo
|
|||||||
interface IRoleService : IService<Role> {
|
interface IRoleService : IService<Role> {
|
||||||
fun getPage(roleGetParam: RoleGetParam?): IPage<Role>
|
fun getPage(roleGetParam: RoleGetParam?): IPage<Role>
|
||||||
|
|
||||||
fun add(roleAddParam: RoleAddParam): RoleVo?
|
fun add(roleAddParam: RoleAddParam): Role?
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import top.fatweb.api.param.authentication.RoleGetParam
|
|||||||
import top.fatweb.api.service.permission.IPowerRoleService
|
import top.fatweb.api.service.permission.IPowerRoleService
|
||||||
import top.fatweb.api.service.permission.IRoleService
|
import top.fatweb.api.service.permission.IRoleService
|
||||||
import top.fatweb.api.util.PageUtil
|
import top.fatweb.api.util.PageUtil
|
||||||
import top.fatweb.api.vo.permission.RoleVo
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -38,11 +37,15 @@ class RoleServiceImpl(
|
|||||||
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
override fun add(roleAddParam: RoleAddParam): RoleVo? {
|
override fun add(roleAddParam: RoleAddParam): Role? {
|
||||||
val role = RoleConverter.roleAddParamToRole(roleAddParam)
|
val role = RoleConverter.roleAddParamToRole(roleAddParam)
|
||||||
if (baseMapper.insert(role) == 1) {
|
if (baseMapper.insert(role) == 1) {
|
||||||
|
if (roleAddParam.powerIds.isNullOrEmpty()) {
|
||||||
|
return role
|
||||||
|
}
|
||||||
|
|
||||||
if (powerRoleService.saveBatch(
|
if (powerRoleService.saveBatch(
|
||||||
roleAddParam.powerIds?.map {
|
roleAddParam.powerIds.map {
|
||||||
PowerRole().apply {
|
PowerRole().apply {
|
||||||
roleId = role.id
|
roleId = role.id
|
||||||
powerId = it
|
powerId = it
|
||||||
@@ -50,7 +53,7 @@ class RoleServiceImpl(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
return RoleConverter.roleToRoleVo(role)
|
return role
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,5 +16,8 @@ data class MenuVo(
|
|||||||
val powerId: Long?,
|
val powerId: Long?,
|
||||||
|
|
||||||
@Schema(description = "父 ID")
|
@Schema(description = "父 ID")
|
||||||
val parentId: Long?
|
val parentId: Long?,
|
||||||
|
|
||||||
|
@Schema(description = "模块 ID")
|
||||||
|
val moduleId: Long?
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -13,5 +13,17 @@ data class RoleWithPowerVo(
|
|||||||
val name: String?,
|
val name: String?,
|
||||||
|
|
||||||
@Schema(description = "启用", example = "true")
|
@Schema(description = "启用", example = "true")
|
||||||
val enable: Boolean?
|
val enable: Boolean?,
|
||||||
|
|
||||||
|
@Schema(description = "模块列表")
|
||||||
|
val modules: List<ModuleVo>?,
|
||||||
|
|
||||||
|
@Schema(description = "菜单列表")
|
||||||
|
val menus: List<MenuVo>?,
|
||||||
|
|
||||||
|
@Schema(description = "页面元素列表")
|
||||||
|
val elements: List<ElementVo>?,
|
||||||
|
|
||||||
|
@Schema(description = "功能列表")
|
||||||
|
val operations: List<OperationVo>?
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user