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.entity.permission.Role
import top.fatweb.api.mapper.permission.RoleMapper import top.fatweb.api.mapper.permission.RoleMapper
import top.fatweb.api.param.authentication.* 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.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
@@ -27,7 +29,9 @@ import top.fatweb.api.vo.permission.RoleWithPowerVo
*/ */
@Service @Service
class RoleServiceImpl( class RoleServiceImpl(
private val powerRoleService: IPowerRoleService private val powerRoleService: IPowerRoleService,
private val elementService: IElementService,
private val menuService: IMenuService
) : ServiceImpl<RoleMapper, Role>(), IRoleService { ) : ServiceImpl<RoleMapper, Role>(), IRoleService {
override fun getPage(roleGetParam: RoleGetParam?): PageVo<RoleWithPowerVo> { override fun getPage(roleGetParam: RoleGetParam?): PageVo<RoleWithPowerVo> {
val roleIdsPage = Page<Long>(roleGetParam?.currentPage ?: 1, roleGetParam?.pageSize ?: 20) val roleIdsPage = Page<Long>(roleGetParam?.currentPage ?: 1, roleGetParam?.pageSize ?: 20)
@@ -53,16 +57,11 @@ class RoleServiceImpl(
@Transactional @Transactional
override fun add(roleAddParam: RoleAddParam): RoleVo? { override fun add(roleAddParam: RoleAddParam): RoleVo? {
val fullPowerIds: HashSet<Long> = hashSetOf() val fullPowerIds = roleAddParam.powerIds?.let { getFullPowerIds(it) }
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) val role = RoleConverter.roleAddParamToRole(roleAddParam)
if (baseMapper.insert(role) == 1) { if (baseMapper.insert(role) == 1) {
if (fullPowerIds.isEmpty()) { if (fullPowerIds.isNullOrEmpty()) {
return RoleConverter.roleToRoleVo(role) return RoleConverter.roleToRoleVo(role)
} }
@@ -81,18 +80,13 @@ class RoleServiceImpl(
@Transactional @Transactional
override fun update(roleUpdateParam: RoleUpdateParam): RoleVo? { override fun update(roleUpdateParam: RoleUpdateParam): RoleVo? {
val fullPowerIds: HashSet<Long> = hashSetOf() val fullPowerIds = roleUpdateParam.powerIds?.let { getFullPowerIds(it) }
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 role = RoleConverter.roleUpdateParamToRole(roleUpdateParam)
val oldPowerList = baseMapper.getPowerList(roleUpdateParam.id) val oldPowerList = baseMapper.getPowerList(roleUpdateParam.id)
val addPowerIds = HashSet<Long>() val addPowerIds = HashSet<Long>()
val removePowerIds = HashSet<Long>() val removePowerIds = HashSet<Long>()
fullPowerIds.forEach { addPowerIds.add(it) } fullPowerIds?.forEach { addPowerIds.add(it) }
oldPowerList.forEach { oldPowerList.forEach {
if (it != null) { if (it != null) {
removePowerIds.add(it) removePowerIds.add(it)
@@ -135,4 +129,30 @@ class RoleServiceImpl(
baseMapper.deleteBatchIds(roleDeleteParam.ids) baseMapper.deleteBatchIds(roleDeleteParam.ids)
powerRoleService.remove(KtQueryWrapper(PowerRole()).`in`(PowerRole::roleId, 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) insert into t_element(id, name, menu_id, parent_id)
values (1010100, '查询', 1010000, null), values (1010100, '查询', 1010000, null),
(1010200, '增加', 1010000, 1010100), (1010200, '增加', 1010000, null),
(1010300, '修改', 1010000, 1010100), (1010300, '修改', 1010000, null),
(1020100, '查询', 1020000, null), (1020100, '查询', 1020000, null),
(1020200, '增加', 1020000, 1020100), (1020200, '增加', 1020000, null),
(1020300, '修改', 1020000, 1020100), (1020300, '修改', 1020000, null),
(1020400, '删除', 1020000, 1020100), (1020400, '删除', 1020000, null),
(1030100, '查询', 1030000, null), (1030100, '查询', 1030000, null),
(1030200, '增加', 1030000, 1030100), (1030200, '增加', 1030000, null),
(1030300, '修改', 1030000, 1030100), (1030300, '修改', 1030000, null),
(1030400, '删除', 1030000, 1030100) as new_value (1030400, '删除', 1030000, null) as new_value
on duplicate key update name = new_value.name, on duplicate key update name = new_value.name,
menu_id = new_value.menu_id, menu_id = new_value.menu_id,
parent_id = new_value.parent_id; parent_id = new_value.parent_id;