package com.example.springboot.controller; import com.example.springboot.entity.*; import com.example.springboot.entity.vo.Result; import com.example.springboot.entity.vo.RolePermissionVo; import com.example.springboot.mapper.RolePermissionMapper; import com.example.springboot.service.PermissionService; import com.example.springboot.service.RolePermissionService; import com.example.springboot.service.RoleService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresRoles; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @Slf4j @Api(tags = "角色和权限关系") @RequestMapping("/api/rolePermission") public class RolePermissionController { @Autowired private RolePermissionService rolePermissionService; @Autowired private RoleService roleService; @Autowired private PermissionService permissionService; @ApiOperation(value = "添加或者更新角色和权限关系") @PostMapping("/saveOrUpdate") @RequiresPermissions({"rolePermission:add"}) @RequiresRoles({"admin"}) public Result saveOrUpdate(@RequestBody RolePermission rolePermission) { Integer count = rolePermissionService.lambdaQuery() .eq(RolePermission::getRoleId, rolePermission.getRoleId()) .eq(RolePermission::getPermissionId, rolePermission.getPermissionId()) .ne(rolePermission.getId() != null, RolePermission::getId, rolePermission.getId()) .count(); if (count > 0) return Result.fail("授权已存在"); rolePermissionService.saveOrUpdate(rolePermission); return Result.success(); } @ApiOperation(value = "根据id删除角色和权限关系") @PostMapping("/removeById") @RequiresPermissions({"rolePermission:delete"}) @RequiresRoles({"admin"}) public Result removeById(@RequestBody RolePermissionVo rolePermissionVO) { rolePermissionService.removeById(rolePermissionVO.getId()); return Result.success(); } @ApiOperation(value = "分页查询角色和权限关系") @GetMapping("/selectPage") @RequiresRoles({"admin"}) @RequiresPermissions({"rolePermission:select"}) public Result selectPage(RolePermissionVo rolePermissionVO) { return Result.success(rolePermissionService.selectPage(rolePermissionVO)); } @ApiOperation(value = "根据id查询角色和权限关系") @GetMapping("/getById") @RequiresRoles({"admin"}) @RequiresPermissions({"rolePermission:select"}) public Result getById(RolePermissionVo rolePermissionVO) { RolePermission rolePermission = rolePermissionService.getById(rolePermissionVO.getId()); if (rolePermission != null) { Role role = roleService.getById(rolePermission.getRoleId()); Permission permission = permissionService.getById(rolePermission.getPermissionId()); rolePermission.setRole(role); rolePermission.setPermission(permission); } return Result.success(rolePermission); } @Autowired private JdbcTemplate jdbcTemplate; @Autowired RolePermissionMapper RolePermissionMapper; ; @GetMapping("/getByRoleId") public com.example.springboot.common.Result selectquanxian(@RequestParam("roleId") int roleId) { List> resultSet = RolePermissionMapper.selectquanxian(roleId); List> permissions = new ArrayList<>(); for (Map result : resultSet) { Long role_id2 = (Long) result.get("role_id"); int state = (int) result.get("state"); Long permission_id = (Long) result.get("permission_id"); // 注意这里的类型是Long String permissionName = (String) result.get("name"); Map permission = new HashMap<>(); permission.put("roleId", role_id2.intValue()); permission.put("name", permissionName); permission.put("permission_id", permission_id.intValue()); // 将Long类型转换为int类型 permission.put("state", state); permissions.add(permission); } Map map = new HashMap<>(); map.put("permissionList", permissions); return com.example.springboot.common.Result.success(map); } @PostMapping("/savePermissions") public Result savePermissions(@RequestBody Map requestBody) { try { // 获取权限数据列表 List> permissions = (List>) requestBody.get("permissions"); // 遍历接收到的权限数据 for (Map permission : permissions) { // 获取权限项的roleId、name、state和permission_id int roleId = (int) permission.get("roleId"); String name = (String) permission.get("name"); int state = (int) permission.get("state"); int permissionId = (int) permission.get("permission_id"); // 根据roleId和permissionId查询是否已存在该权限记录 boolean exists = RolePermissionMapper.checkExists(roleId, permissionId); if (exists) { // 如果已存在该权限记录,则更新状态 RolePermissionMapper.updateState(roleId, permissionId, state); } else { // 如果不存在该权限记录,则新增一条权限记录 RolePermissionMapper.insert(roleId, permissionId, state); } } return Result.success(); // 成功保存权限后返回结果 } catch (Exception e) { e.printStackTrace(); return Result.fail("保存权限失败"); // 保存权限失败时返回错误信息 } } }