diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java index 922b0a4f0..f5cbe5fbe 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java @@ -19,16 +19,20 @@ package com.pig4cloud.pigx.admin.controller; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.entity.SysRole; import com.pig4cloud.pigx.admin.api.vo.RoleVO; import com.pig4cloud.pigx.admin.service.SysRoleMenuService; import com.pig4cloud.pigx.admin.service.SysRoleService; +import com.pig4cloud.pigx.common.core.constant.CacheConstants; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.log.annotation.SysLog; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -51,6 +55,7 @@ public class SysRoleController { /** * 通过ID查询角色信息 + * * @param id ID * @return 角色信息 */ @@ -61,42 +66,49 @@ public class SysRoleController { /** * 添加角色 + * * @param sysRole 角色信息 * @return success、false */ @SysLog("添加角色") @PostMapping @PreAuthorize("@pms.hasPermission('sys_role_add')") + @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) public R save(@Valid @RequestBody SysRole sysRole) { return R.ok(sysRoleService.save(sysRole)); } /** * 修改角色 + * * @param sysRole 角色信息 * @return success/false */ @SysLog("修改角色") @PutMapping @PreAuthorize("@pms.hasPermission('sys_role_edit')") + @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) public R update(@Valid @RequestBody SysRole sysRole) { return R.ok(sysRoleService.updateById(sysRole)); } /** * 删除角色 + * * @param id * @return */ @SysLog("删除角色") @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('sys_role_del')") + @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) public R removeById(@PathVariable Integer id) { return R.ok(sysRoleService.removeRoleById(id)); } /** * 获取角色列表 + * * @return 角色列表 */ @GetMapping("/list") @@ -106,6 +118,7 @@ public class SysRoleController { /** * 分页查询角色信息 + * * @param page 分页对象 * @return 分页对象 */ @@ -116,6 +129,7 @@ public class SysRoleController { /** * 更新角色菜单 + * * @param roleVo 角色对象 * @return success、false */ @@ -123,18 +137,18 @@ public class SysRoleController { @PutMapping("/menu") @PreAuthorize("@pms.hasPermission('sys_role_perm')") public R saveRoleMenus(@RequestBody RoleVO roleVo) { - SysRole sysRole = sysRoleService.getById(roleVo.getRoleId()); - return R.ok(sysRoleMenuService.saveRoleMenus(sysRole.getRoleCode(), roleVo.getRoleId(), roleVo.getMenuIds())); + return R.ok(sysRoleService.updateRoleMenus(roleVo)); } /** * 通过角色ID 查询角色列表 + * * @param roleIdList 角色ID * @return */ @PostMapping("/getRoleList") - public R getRoleList(@RequestBody List roleIdList) { - return R.ok(sysRoleService.listByIds(roleIdList)); + public R getRoleList(@RequestBody List roleIdList) { + return R.ok(sysRoleService.findRolesByRoleIds(roleIdList, CollUtil.join(roleIdList, StrUtil.UNDERLINE))); } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRoleService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRoleService.java index d5448e5a9..f7e5e63bc 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRoleService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRoleService.java @@ -21,6 +21,7 @@ package com.pig4cloud.pigx.admin.service; import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.admin.api.entity.SysRole; +import com.pig4cloud.pigx.admin.api.vo.RoleVO; import java.util.List; @@ -36,16 +37,34 @@ public interface SysRoleService extends IService { /** * 通过用户ID,查询角色信息 + * * @param userId * @return */ List findRolesByUserId(Integer userId); + /** + * 根据角色ID 查询角色列表 + * + * @param roleIdList 角色ID列表 + * @param key 缓存key + * @return + */ + List findRolesByRoleIds(List roleIdList, String key); + /** * 通过角色ID,删除角色 + * * @param id * @return */ Boolean removeRoleById(Integer id); + /** + * 根据角色菜单列表 + * + * @param roleVo 角色&菜单列表 + * @return + */ + Boolean updateRoleMenus(RoleVO roleVo); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java index 3c07abe7f..ed47fbf5d 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java @@ -61,7 +61,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl private final SysRoleMenuMapper sysRoleMenuMapper; @Override - @Cacheable(value = CacheConstants.MENU_DETAILS, key = "#roleId + '_menu'", unless = "#result.isEmpty()") + @Cacheable(value = CacheConstants.MENU_DETAILS, key = "#roleId", unless = "#result.isEmpty()") public List findMenuByRoleId(Integer roleId) { return baseMapper.listMenusByRoleId(roleId); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleMenuServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleMenuServiceImpl.java index 1192167a7..aaa90ebb9 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleMenuServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleMenuServiceImpl.java @@ -58,7 +58,7 @@ public class SysRoleMenuServiceImpl extends ServiceImplquery().lambda().eq(SysRoleMenu::getRoleId, roleId)); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java index 94d28d4e5..29e6d6c85 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java @@ -23,10 +23,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.pig4cloud.pigx.admin.api.entity.SysRole; import com.pig4cloud.pigx.admin.api.entity.SysRoleMenu; +import com.pig4cloud.pigx.admin.api.vo.RoleVO; import com.pig4cloud.pigx.admin.mapper.SysRoleMapper; -import com.pig4cloud.pigx.admin.mapper.SysRoleMenuMapper; +import com.pig4cloud.pigx.admin.service.SysRoleMenuService; import com.pig4cloud.pigx.admin.service.SysRoleService; +import com.pig4cloud.pigx.common.core.constant.CacheConstants; import lombok.AllArgsConstructor; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -44,10 +47,11 @@ import java.util.List; @AllArgsConstructor public class SysRoleServiceImpl extends ServiceImpl implements SysRoleService { - private SysRoleMenuMapper sysRoleMenuMapper; + private SysRoleMenuService roleMenuService; /** * 通过用户ID,查询角色信息 + * * @param userId * @return */ @@ -56,16 +60,41 @@ public class SysRoleServiceImpl extends ServiceImpl impl return baseMapper.listRolesByUserId(userId); } + /** + * 根据角色ID 查询角色列表,注意缓存删除 + * + * @param roleIdList 角色ID列表 + * @param key 缓存key + * @return + */ + @Override + @Cacheable(value = CacheConstants.ROLE_DETAILS, key = "#key") + public List findRolesByRoleIds(List roleIdList, String key) { + return baseMapper.selectBatchIds(roleIdList); + } + /** * 通过角色ID,删除角色,并清空角色菜单缓存 + * * @param id * @return */ @Override @Transactional(rollbackFor = Exception.class) public Boolean removeRoleById(Integer id) { - sysRoleMenuMapper.delete(Wrappers.update().lambda().eq(SysRoleMenu::getRoleId, id)); + roleMenuService.remove(Wrappers.update().lambda().eq(SysRoleMenu::getRoleId, id)); return this.removeById(id); } + /** + * 根据角色菜单列表 + * + * @param roleVo 角色&菜单列表 + * @return + */ + @Override + public Boolean updateRoleMenus(RoleVO roleVo) { + SysRole sysRole = baseMapper.selectById(roleVo.getRoleId()); + return roleMenuService.saveRoleMenus(sysRole.getRoleCode(), roleVo.getRoleId(), roleVo.getMenuIds()); + } }