PermissionServiceImpl.java
5 KB
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
package com.uccc.admin.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.uccc.admin.domain.Permission;
import com.uccc.admin.mapper.PermissonMapper;
import com.uccc.admin.service.PermissionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* Created by bert on 2021-09-13 14:53
*/
@Service
public class PermissionServiceImpl implements PermissionService {
final private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PermissonMapper permissonMapper;
@Override
public List<Permission> getPermissionByUserId(Long id) {
return permissonMapper.selectUserPermission(id);
}
/**
*
* 'role': {
* 'name': '管理员',
* 'describe': '拥有所有权限',
* 'permissions': [ ] // 菜单数组
* 'companu':company
* },
* @param permissions
* @return
*/
@Override
public JSONArray formatPermissionList(List<Permission> permissions) {
JSONArray arr = new JSONArray();
permissions.forEach( d1-> {
if (d1.getParentId() == 0) { //一级
JSONObject json1 = new JSONObject();
json1.put("title", d1.getName());
json1.put("key", d1.getId());
JSONArray jsonArray = new JSONArray();
json1.put("children", jsonArray);
permissions.forEach( d2-> { //二级
if (d2.getParentId() == d1.getId()) {
JSONObject json2 = new JSONObject();
json2.put("title", d2.getName());
json2.put("key", d2.getId());
JSONArray jsonArray2 = new JSONArray();
json2.put("children", jsonArray2);
permissions.forEach(d3 ->{
if (d3.getParentId() == d2.getId()) {
JSONObject json3 = new JSONObject();
json3.put("title", d3.getName());
json3.put("key", d3.getId());
jsonArray2.add(json3);
}
});
jsonArray.add(json2);
}
});
arr.add(json1);
}
});
return arr;
}
@Override
public List<Permission> selectAllUserPermission(int type) {
return permissonMapper.selectAllUserPermission(type);
}
@Override
public JSONArray formatPermissions(List<Permission> permissions) {
JSONArray jsonArray = new JSONArray();
permissions.forEach(d->{
JSONObject jsonObject = new JSONObject();
jsonObject.put("roleId", d.getRoleName());
jsonObject.put("permissionId", d.getSubClass());
jsonObject.put("permissionName", d.getName());
jsonArray.add(jsonObject);
});
return jsonArray;
}
@Override
public boolean createRolePermission(int[] permissions, Long userId) {
AtomicBoolean result = new AtomicBoolean(true);
Arrays.stream(permissions).forEach(permissionId->{
int permissionCount = permissonMapper.createRolePermission(permissionId, userId);
if (!(permissionCount > 0)) {
result.set(false);
}
});
return result.get();
}
@Override
public boolean updateRolePermission(Long roleId, int[] permissions) {
AtomicBoolean result = new AtomicBoolean(true);
permissonMapper.deleteRolePermissionByUserId(roleId);
Arrays.stream(permissions).forEach(permissionId->{
int permissionCount = permissonMapper.createRolePermission(permissionId, roleId);
if (!(permissionCount > 0)) {
result.set(false);
}
});
return result.get();
}
@Override
public int[] formatRoleIds(List<Permission> permissionList) {
int[] roleIds = new int[permissionList.size()];
for (int i = 0; i<permissionList.size(); i++) {
int roleId = permissionList.get(i).getRoleId().intValue();
roleIds[i] = roleId;
}
HashSet<Integer> hashSet = new HashSet<Integer>(); // 去重
for (int i = 0; i < roleIds.length; i++){
hashSet.add(roleIds[i]);
}
Set<Integer> set = new TreeSet(hashSet); // 利用TreeSet排序
Integer[] integers = set.toArray(new Integer[]{});
int[] result = new int[integers.length]; // 我们排序、去重后的结果数组
for (int i = 0; i < integers.length; i++){
result[i] = integers[i];
}
return result;
}
}