| # 业务层接口 |
| public interface SysRoleService extends IService<SysRole> { |
| |
| |
| |
| |
| |
| |
| |
| IPage<SysRole> selectPage(Page<SysRole> page, SysRole sysRole); |
| |
| } |
| |
| # 业务层实现 |
| @Service |
| public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService { |
| |
| @Override |
| public IPage<SysRole> selectPage(Page<SysRole> page, SysRole sysRole) { |
| return baseMapper.selectPage(page, sysRole); |
| } |
| |
| } |
| |
| # 控制层 |
| @Controller |
| @RequestMapping("/role") |
| public class SysRoleController { |
| |
| |
| private static final String HTML_PREFIX = "system/role/"; |
| |
| |
| @GetMapping(value = {"/", ""}) |
| public String role() { |
| return HTML_PREFIX + "role-list"; |
| } |
| |
| |
| @Autowired |
| private SysRoleService sysRoleService; |
| |
| |
| @PreAuthorize("hasAuthority('sys:role:list')") |
| @GetMapping("/page") |
| @ResponseBody |
| public MengxueguResult page(Page<SysRole> page, SysRole sysRole) { |
| return MengxueguResult.ok( sysRoleService.selectPage(page, sysRole) ); |
| } |
| |
| } |
| # 持久层接口 |
| public interface SysPermissionMapper extends BaseMapper<SysPermission> { |
| |
| List<SysPermission> findByRoleId(@Param("roleId") Long roleId); |
| |
| } |
| |
| # 持久层映射 |
| <select id="findByRoleId" resultType="SysPermission"> |
| SELECT |
| DISTINCT p.* |
| FROM |
| sys_permission p |
| JOIN sys_role_permission rp ON p.id = rp.permission_id |
| JOIN sys_role sr ON rp.role_id = sr.id |
| WHERE rp.role_id = #{roleId} |
| ORDER BY p.id |
| </select> |
| |
| # 业务层接口 |
| |
| |
| |
| |
| |
| SysRole findById(Long id); |
| |
| # 业务层实现 |
| @Override |
| public SysRole findById(Long id) { |
| |
| SysRole sysRole = baseMapper.selectById(id); |
| |
| List<SysPermission> permissions = sysPermissionMapper.findByRoleId(id); |
| |
| sysRole.setPerList(permissions); |
| return sysRole; |
| } |
| |
| # 控制层接口 |
| |
| |
| |
| |
| |
| |
| @PreAuthorize("hasAnyAuthority('sys:role:add', 'sys:role:edit')") |
| @GetMapping(value={"/form", "/form/{id}"}) |
| public String form(@PathVariable(required = false) Long id, Model model) { |
| |
| SysRole role = sysRoleService.findById(id); |
| model.addAttribute("role", role); |
| return HTML_PREFIX + "role-form"; |
| } |
| # 持久层接口 |
| |
| |
| |
| |
| |
| boolean deleteRolePermissionByRoleId(@Param("roleId") Long roleId); |
| |
| |
| |
| |
| |
| |
| |
| boolean saveRolePermission(@Param("roleId") Long roleId,@Param("perIds") List<Long> perIds); |
| |
| # 持久层映射 |
| <!--通过角色id删除角色权限关系 表数据--> |
| <delete id="deleteRolePermissionByRoleId"> |
| DELETE FROM sys_role_permission where role_id = #{roleId} |
| </delete> |
| |
| <insert id="saveRolePermission"> |
| INSERT INTO sys_role_permission(role_id, permission_id) VALUES |
| <foreach collection="perIds" item="item" index="index" separator=","> |
| (#{roleId}, #{item}) |
| </foreach> |
| </insert> |
| |
| # 业务层实现 |
| |
| |
| |
| |
| |
| @Transactional |
| @Override |
| public boolean saveOrUpdate(SysRole entity) { |
| entity.setUpdateDate(new Date()); |
| |
| boolean flag = super.saveOrUpdate(entity); |
| if(flag) { |
| |
| baseMapper.deleteRolePermissionByRoleId(entity.getId()); |
| |
| if(CollectionUtils.isNotEmpty(entity.getPerIds())) { |
| baseMapper.saveRolePermission(entity.getId(), entity.getPerIds()); |
| } |
| } |
| return flag; |
| } |
| |
| # 控制层接口 |
| |
| |
| |
| |
| @PreAuthorize("hasAnyAuthority('sys:role:add', 'sys:role:edit')") |
| @RequestMapping(method = {RequestMethod.POST, RequestMethod.PUT}, value = "") |
| public String saveOrUpdate(SysRole sysRole) { |
| sysRoleService.saveOrUpdate(sysRole); |
| return "redirect:/role"; |
| } |
| # 业务层接口 |
| |
| |
| |
| |
| |
| |
| boolean deleteById(Long id); |
| |
| # 业务层实现 |
| @Transactional |
| @Override |
| public boolean deleteById(Long id) { |
| |
| baseMapper.deleteById(id); |
| |
| baseMapper.deleteRolePermissionByRoleId(id); |
| return true; |
| } |
| |
| # 控制层接口 |
| |
| |
| |
| |
| |
| @PreAuthorize("hasAuthority('sys:role:delete')") |
| @DeleteMapping("/{id}") |
| @ResponseBody |
| public MengxueguResult deleteById(@PathVariable("id") Long id) { |
| sysRoleService.deleteById(id); |
| return MengxueguResult.ok(); |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?