ModuleServiceImpl.java
2.78 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
package com.bsth.service.sys.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.stereotype.Service;
import com.bsth.common.ResponseCode;
import com.bsth.entity.sys.Module;
import com.bsth.entity.sys.Role;
import com.bsth.entity.sys.SysUser;
import com.bsth.repository.sys.ModuleRepository;
import com.bsth.security.util.SecurityUtils;
import com.bsth.service.impl.BaseServiceImpl;
import com.bsth.service.sys.ModuleService;
@Service
public class ModuleServiceImpl extends BaseServiceImpl<Module, Integer> implements ModuleService{
@Autowired
ModuleRepository moduleRepository;
@Override
public List<Module> findByGroupType(String group) {
String[] array;
if(group.indexOf(",") != -1){
array = group.split(",");
}
else
array = new String[]{group};
return moduleRepository.findByGroupType(array);
}
@Override
public Map<String, Object> delete(Integer id) {
Map<String, Object> map = new HashMap<>();
//判断删除的节点是否有子节点
List<Module> list = moduleRepository.findByPId(id);
if(null != list && list.size() > 0){
map.put("status", ResponseCode.ERROR);
map.put("msg", "失败,要删除的项还存在子节点");
}
else{
map = super.delete(id);
}
return map;
}
@Override
public List<Module> findByCurrentUser() {
SysUser user = SecurityUtils.getCurrentUser();
Set<Role> roles = user.getRoles();
List<Module> all = (List<Module>) moduleRepository.findAll(new Sort(Direction.ASC, "id"))
,results = new ArrayList<>();
Map<Integer, Module> map = new HashMap<>();
for(Module m : all){
map.put(m.getId(), m);
for(Role r : roles){
if(m.getRoles().contains(r))
results.add(m);
}
}
//上层目录和组节点
Set<Module> pSet = new HashSet<>();
for(Module m : results){
searchParentNode(m, map, pSet);
}
results.addAll(pSet);
return results;
}
/**
*
* @Title: searchParentNode
* @Description: TODO(搜索上层节点)
* @param @param m 当前节点
* @param @param idMap 全量的ID和节点对照
* @param @param pSet 上层节点容器
* @throws
*/
public void searchParentNode(Module m, Map<Integer, Module> idMap, Set<Module> pSet){
int pId = m.getpId();
if(pId > 0){
Module pModule = idMap.get(pId);
pSet.add(pModule);
if(null != pModule &&
null != pModule.getpId()
&& pModule.getpId() > 0)
searchParentNode(pModule, idMap, pSet);
}
}
}