Complete core functions #9

Merged
FatttSnake merged 171 commits from FatttSnake into dev 2024-02-23 11:56:35 +08:00
2 changed files with 45 additions and 25 deletions
Showing only changes of commit 419a883020 - Show all commits

View File

@@ -10,6 +10,8 @@ import top.fatweb.api.entity.permission.PowerRole
import top.fatweb.api.entity.permission.Role
import top.fatweb.api.mapper.permission.RoleMapper
import top.fatweb.api.param.authentication.*
import top.fatweb.api.service.permission.IElementService
import top.fatweb.api.service.permission.IMenuService
import top.fatweb.api.service.permission.IPowerRoleService
import top.fatweb.api.service.permission.IRoleService
import top.fatweb.api.util.PageUtil
@@ -27,7 +29,9 @@ import top.fatweb.api.vo.permission.RoleWithPowerVo
*/
@Service
class RoleServiceImpl(
private val powerRoleService: IPowerRoleService
private val powerRoleService: IPowerRoleService,
private val elementService: IElementService,
private val menuService: IMenuService
) : ServiceImpl<RoleMapper, Role>(), IRoleService {
override fun getPage(roleGetParam: RoleGetParam?): PageVo<RoleWithPowerVo> {
val roleIdsPage = Page<Long>(roleGetParam?.currentPage ?: 1, roleGetParam?.pageSize ?: 20)
@@ -53,16 +57,11 @@ class RoleServiceImpl(
@Transactional
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 fullPowerIds = roleAddParam.powerIds?.let { getFullPowerIds(it) }
val role = RoleConverter.roleAddParamToRole(roleAddParam)
if (baseMapper.insert(role) == 1) {
if (fullPowerIds.isEmpty()) {
if (fullPowerIds.isNullOrEmpty()) {
return RoleConverter.roleToRoleVo(role)
}
@@ -81,18 +80,13 @@ class RoleServiceImpl(
@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 fullPowerIds = roleUpdateParam.powerIds?.let { getFullPowerIds(it) }
val role = RoleConverter.roleUpdateParamToRole(roleUpdateParam)
val oldPowerList = baseMapper.getPowerList(roleUpdateParam.id)
val addPowerIds = HashSet<Long>()
val removePowerIds = HashSet<Long>()
fullPowerIds.forEach { addPowerIds.add(it) }
fullPowerIds?.forEach { addPowerIds.add(it) }
oldPowerList.forEach {
if (it != null) {
removePowerIds.add(it)
@@ -135,4 +129,30 @@ class RoleServiceImpl(
baseMapper.deleteBatchIds(roleDeleteParam.ids)
powerRoleService.remove(KtQueryWrapper(PowerRole()).`in`(PowerRole::roleId, roleDeleteParam.ids))
}
private fun getFullPowerIds(powerIds: List<Long>): Set<Long> {
val fullPowerIds: HashSet<Long> = hashSetOf()
powerIds.forEach {
fullPowerIds.add(it)
getElementParent(it / 100 * 100, fullPowerIds)
getMenuParent(it / 10000 * 10000, fullPowerIds)
fullPowerIds.add(it / 1000000 * 1000000)
}
return fullPowerIds
}
private fun getElementParent(id: Long, parentIds: HashSet<Long>) {
parentIds.add(id)
elementService.getById(id)?.parentId?.let {
getElementParent(it, parentIds)
}
}
private fun getMenuParent(id: Long, parentIds: HashSet<Long>) {
parentIds.add(id)
menuService.getById(id)?.parentId?.let {
getMenuParent(it, parentIds)
}
}
}

View File

@@ -52,16 +52,16 @@ on duplicate key update name =new_value.name,
insert into t_element(id, name, menu_id, parent_id)
values (1010100, '查询', 1010000, null),
(1010200, '增加', 1010000, 1010100),
(1010300, '修改', 1010000, 1010100),
(1010200, '增加', 1010000, null),
(1010300, '修改', 1010000, null),
(1020100, '查询', 1020000, null),
(1020200, '增加', 1020000, 1020100),
(1020300, '修改', 1020000, 1020100),
(1020400, '删除', 1020000, 1020100),
(1020200, '增加', 1020000, null),
(1020300, '修改', 1020000, null),
(1020400, '删除', 1020000, null),
(1030100, '查询', 1030000, null),
(1030200, '增加', 1030000, 1030100),
(1030300, '修改', 1030000, 1030100),
(1030400, '删除', 1030000, 1030100) as new_value
(1030200, '增加', 1030000, null),
(1030300, '修改', 1030000, null),
(1030400, '删除', 1030000, null) as new_value
on duplicate key update name = new_value.name,
menu_id = new_value.menu_id,
parent_id = new_value.parent_id;