Finish role add and edit
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
package top.fatweb.api.service.permission
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage
|
||||
import com.baomidou.mybatisplus.extension.service.IService
|
||||
import top.fatweb.api.entity.permission.Role
|
||||
import top.fatweb.api.param.authentication.RoleAddParam
|
||||
import top.fatweb.api.param.authentication.RoleChangeStatusParam
|
||||
import top.fatweb.api.param.authentication.RoleGetParam
|
||||
import top.fatweb.api.param.authentication.RoleUpdateParam
|
||||
import top.fatweb.api.vo.PageVo
|
||||
import top.fatweb.api.vo.permission.RoleVo
|
||||
import top.fatweb.api.vo.permission.RoleWithPowerVo
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -16,9 +19,13 @@ import top.fatweb.api.param.authentication.RoleGetParam
|
||||
* @since 2023-10-25
|
||||
*/
|
||||
interface IRoleService : IService<Role> {
|
||||
fun getPage(roleGetParam: RoleGetParam?): IPage<Role>
|
||||
fun getPage(roleGetParam: RoleGetParam?): PageVo<RoleWithPowerVo>
|
||||
|
||||
fun add(roleAddParam: RoleAddParam): Role?
|
||||
fun getOne(id: Long): RoleWithPowerVo?
|
||||
|
||||
fun add(roleAddParam: RoleAddParam): RoleVo?
|
||||
|
||||
fun update(roleUpdateParam: RoleUpdateParam): RoleVo?
|
||||
|
||||
fun changeStatus(roleChangeStatusParam: RoleChangeStatusParam): Boolean
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package top.fatweb.api.service.permission.impl
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage
|
||||
import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
|
||||
import org.springframework.stereotype.Service
|
||||
@@ -12,9 +12,13 @@ import top.fatweb.api.mapper.permission.RoleMapper
|
||||
import top.fatweb.api.param.authentication.RoleAddParam
|
||||
import top.fatweb.api.param.authentication.RoleChangeStatusParam
|
||||
import top.fatweb.api.param.authentication.RoleGetParam
|
||||
import top.fatweb.api.param.authentication.RoleUpdateParam
|
||||
import top.fatweb.api.service.permission.IPowerRoleService
|
||||
import top.fatweb.api.service.permission.IRoleService
|
||||
import top.fatweb.api.util.PageUtil
|
||||
import top.fatweb.api.vo.PageVo
|
||||
import top.fatweb.api.vo.permission.RoleVo
|
||||
import top.fatweb.api.vo.permission.RoleWithPowerVo
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -28,39 +32,95 @@ import top.fatweb.api.util.PageUtil
|
||||
class RoleServiceImpl(
|
||||
private val powerRoleService: IPowerRoleService
|
||||
) : ServiceImpl<RoleMapper, Role>(), IRoleService {
|
||||
override fun getPage(roleGetParam: RoleGetParam?): IPage<Role> {
|
||||
val rolePage = Page<Role>(roleGetParam?.currentPage ?: 1, roleGetParam?.pageSize ?: 20)
|
||||
override fun getPage(roleGetParam: RoleGetParam?): PageVo<RoleWithPowerVo> {
|
||||
val roleIdsPage = Page<Long>(roleGetParam?.currentPage ?: 1, roleGetParam?.pageSize ?: 20)
|
||||
|
||||
PageUtil.setPageSort(roleGetParam, rolePage)
|
||||
PageUtil.setPageSort(roleGetParam, roleIdsPage)
|
||||
|
||||
return baseMapper.selectPage(rolePage)
|
||||
val roleIdsIPage = baseMapper.selectPage(roleIdsPage)
|
||||
|
||||
val rolePage = Page<Role>(roleIdsPage.current, roleIdsIPage.size, roleIdsIPage.total)
|
||||
rolePage.setRecords(baseMapper.getWithPowerByList(roleIdsIPage.records))
|
||||
|
||||
|
||||
return RoleConverter.rolePageToRoleWithPowerPageVo(rolePage)
|
||||
}
|
||||
|
||||
override fun getOne(id: Long): RoleWithPowerVo? {
|
||||
return baseMapper.selectOne(id)?.let { RoleConverter.roleToRoleWithPowerVo(it) } ?: let { null }
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
override fun add(roleAddParam: RoleAddParam): Role? {
|
||||
override fun add(roleAddParam: RoleAddParam): RoleVo? {
|
||||
val fullPowerIds: HashSet<Long> = hashSetOf()
|
||||
roleAddParam.powerIds?.forEach {
|
||||
fullPowerIds.add(it)
|
||||
fullPowerIds.add(it / 100 * 100)
|
||||
fullPowerIds.add(it / 10000 * 10000)
|
||||
fullPowerIds.add(it / 1000000 * 1000000)
|
||||
}
|
||||
val role = RoleConverter.roleAddParamToRole(roleAddParam)
|
||||
if (baseMapper.insert(role) == 1) {
|
||||
if (roleAddParam.powerIds.isNullOrEmpty()) {
|
||||
return role
|
||||
if (fullPowerIds.isEmpty()) {
|
||||
return RoleConverter.roleToRoleVo(role)
|
||||
}
|
||||
|
||||
if (powerRoleService.saveBatch(
|
||||
roleAddParam.powerIds.map {
|
||||
PowerRole().apply {
|
||||
roleId = role.id
|
||||
powerId = it
|
||||
}
|
||||
if (powerRoleService.saveBatch(fullPowerIds.map {
|
||||
PowerRole().apply {
|
||||
roleId = role.id
|
||||
powerId = it
|
||||
}
|
||||
)
|
||||
) {
|
||||
return role
|
||||
})) {
|
||||
return RoleConverter.roleToRoleVo(role)
|
||||
}
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
@Transactional
|
||||
override fun update(roleUpdateParam: RoleUpdateParam): RoleVo? {
|
||||
val fullPowerIds: HashSet<Long> = hashSetOf()
|
||||
roleUpdateParam.powerIds?.forEach {
|
||||
fullPowerIds.add(it)
|
||||
fullPowerIds.add(it / 100 * 100)
|
||||
fullPowerIds.add(it / 10000 * 10000)
|
||||
fullPowerIds.add(it / 1000000 * 1000000)
|
||||
}
|
||||
val role = RoleConverter.roleUpdateParamToRole(roleUpdateParam)
|
||||
val oldPowerList = baseMapper.getPowerList(roleUpdateParam.id)
|
||||
val addPowerIds = HashSet<Long>()
|
||||
val removePowerIds = HashSet<Long>()
|
||||
fullPowerIds.forEach { addPowerIds.add(it) }
|
||||
oldPowerList.forEach {
|
||||
if (it != null) {
|
||||
removePowerIds.add(it)
|
||||
}
|
||||
}
|
||||
removePowerIds.removeAll(addPowerIds)
|
||||
oldPowerList.toSet().let { addPowerIds.removeAll(it) }
|
||||
|
||||
baseMapper.updateById(role)
|
||||
|
||||
removePowerIds.forEach {
|
||||
powerRoleService.remove(
|
||||
KtQueryWrapper(PowerRole()).eq(
|
||||
PowerRole::roleId, roleUpdateParam.id
|
||||
).eq(PowerRole::powerId, it)
|
||||
)
|
||||
}
|
||||
|
||||
addPowerIds.forEach {
|
||||
powerRoleService.save(PowerRole().apply {
|
||||
roleId = roleUpdateParam.id
|
||||
powerId = it
|
||||
})
|
||||
}
|
||||
|
||||
return RoleConverter.roleToRoleVo(role)
|
||||
}
|
||||
|
||||
override fun changeStatus(roleChangeStatusParam: RoleChangeStatusParam): Boolean {
|
||||
return updateById(RoleConverter.roleChangeStatusParamToRole(roleChangeStatusParam))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user