wuyouming666
2023-12-11 8f1c10fc1cfb02b208876f5cd140934baf753c11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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<Map<String, Object>> resultSet = RolePermissionMapper.selectquanxian(roleId);
 
        List<Map<String, Object>> permissions = new ArrayList<>();
        for (Map<String, Object> 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<String, Object> 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<String, Object> map = new HashMap<>();
        map.put("permissionList", permissions);
        return com.example.springboot.common.Result.success(map);
    }
 
 
    @PostMapping("/savePermissions")
    public Result savePermissions(@RequestBody Map<String, Object> requestBody) {
        try {
            // 获取权限数据列表
            List<Map<String, Object>> permissions = (List<Map<String, Object>>) requestBody.get("permissions");
            // 遍历接收到的权限数据
            for (Map<String, Object> 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("保存权限失败"); // 保存权限失败时返回错误信息
        }
    }
 
 
 
 
 
 
 
}