|
@@ -7,16 +7,17 @@ import com.google.gson.Gson;
|
|
|
import com.qmth.teachcloud.common.bean.dto.MenuDto;
|
|
|
import com.qmth.teachcloud.common.bean.dto.MenuPrivilegeDto;
|
|
|
import com.qmth.teachcloud.common.bean.dto.PrivilegeDto;
|
|
|
-import com.qmth.teachcloud.common.bean.dto.SysRolePrivilegeDto;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.SysPrivilege;
|
|
|
import com.qmth.teachcloud.common.entity.SysRolePrivilege;
|
|
|
+import com.qmth.teachcloud.common.entity.TSchoolPrivilege;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.teachcloud.common.enums.PrivilegeEnum;
|
|
|
import com.qmth.teachcloud.common.enums.PrivilegePropertyEnum;
|
|
|
import com.qmth.teachcloud.common.mapper.SysPrivilegeMapper;
|
|
|
import com.qmth.teachcloud.common.service.SysPrivilegeService;
|
|
|
import com.qmth.teachcloud.common.service.SysRolePrivilegeService;
|
|
|
+import com.qmth.teachcloud.common.service.TSchoolPrivilegeService;
|
|
|
import com.qmth.teachcloud.common.util.JacksonUtil;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -46,6 +47,9 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
|
|
|
@Resource
|
|
|
SysPrivilegeMapper sysPrivilegeMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ TSchoolPrivilegeService tSchoolPrivilegeService;
|
|
|
+
|
|
|
@Override
|
|
|
@Deprecated
|
|
|
public List<PrivilegeDto> listPrivilegeTree() {
|
|
@@ -87,7 +91,12 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
|
|
|
*/
|
|
|
@Override
|
|
|
public List<PrivilegeDto> listPrivilegeTreeNew() {
|
|
|
-// Long schoolId = SystemConstant.getHeadOrUserSchoolId();
|
|
|
+ Long schoolId = SystemConstant.getHeadOrUserSchoolId();
|
|
|
+ List<TSchoolPrivilege> tSchoolPrivilegeList = tSchoolPrivilegeService.findBySchoolId(schoolId);
|
|
|
+ Set<Long> customPrivilegeIds = null;
|
|
|
+ if (Objects.nonNull(tSchoolPrivilegeList) && tSchoolPrivilegeList.size() > 0) {
|
|
|
+ customPrivilegeIds = tSchoolPrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toSet());
|
|
|
+ }
|
|
|
QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
|
|
|
sysPrivilegeQueryWrapper.lambda()
|
|
|
.ne(SysPrivilege::getType, PrivilegeEnum.URL)
|
|
@@ -100,67 +109,13 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
|
|
|
// sysPrivilegeQueryWrapper.lambda().eq(SysPrivilege::getSchoolId, schoolId);
|
|
|
// }
|
|
|
List<SysPrivilege> sysPrivilegeList = this.list(sysPrivilegeQueryWrapper);
|
|
|
-
|
|
|
- LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
|
|
|
- Map<Long, PrivilegeDto> map = new LinkedHashMap<>();
|
|
|
- Gson gson = new Gson();
|
|
|
- List<MenuDto> menuDtoList = gson.fromJson(JacksonUtil.parseJson(sysPrivilegeList), new TypeToken<List<MenuDto>>() {
|
|
|
- }.getType());
|
|
|
- for (MenuDto m : menuDtoList) {
|
|
|
- if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU) {
|
|
|
- PrivilegeDto privilegeDto = new PrivilegeDto();
|
|
|
- privilegeDto.setId(m.getId());
|
|
|
- privilegeDto.setName(m.getName());
|
|
|
- privilegeDto.setUrl(m.getUrl());
|
|
|
- privilegeDto.setType(m.getType());
|
|
|
- privilegeDto.setParentId(m.getParentId());
|
|
|
- privilegeDto.setSequence(m.getSequence());
|
|
|
- map.put(m.getId(), privilegeDto);
|
|
|
- } else {
|
|
|
- if (!linkedMultiValueMap.containsKey(m.getParentId())) {
|
|
|
- linkedMultiValueMap.add(m.getParentId(), m);
|
|
|
- } else {
|
|
|
- List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getParentId());
|
|
|
- menuDtos.add(m);
|
|
|
- linkedMultiValueMap.put(m.getParentId(), menuDtos);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Set<Long> deleteKeys = new HashSet<>();
|
|
|
- map.forEach((k, v) -> {
|
|
|
- List<MenuDto> menuDtos = linkedMultiValueMap.get(k);
|
|
|
- List<MenuDto> buttons = null, links = null, lists = null, conditions = null;
|
|
|
- if (Objects.nonNull(menuDtos)) {
|
|
|
- for (MenuDto menuDto : menuDtos) {
|
|
|
- if (v.getId().longValue() == menuDto.getParentId().longValue() && menuDto.getType() == PrivilegeEnum.BUTTON) {
|
|
|
- buttons = Objects.isNull(buttons) ? new ArrayList<>() : buttons;
|
|
|
- buttons.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
- v.setButtons(buttons);
|
|
|
- } else if (v.getId().longValue() == menuDto.getParentId().longValue() && menuDto.getType() == PrivilegeEnum.LINK) {
|
|
|
- links = Objects.isNull(links) ? new ArrayList<>() : links;
|
|
|
- links.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
- v.setLinks(links);
|
|
|
- } else if (v.getId().longValue() == menuDto.getParentId().longValue() && menuDto.getType() == PrivilegeEnum.LIST) {
|
|
|
- lists = Objects.isNull(lists) ? new ArrayList<>() : lists;
|
|
|
- lists.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
- v.setLists(lists);
|
|
|
- } else if (v.getId().longValue() == menuDto.getParentId().longValue() && menuDto.getType() == PrivilegeEnum.CONDITION) {
|
|
|
- conditions = Objects.isNull(conditions) ? new ArrayList<>() : conditions;
|
|
|
- conditions.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
- v.setConditions(conditions);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (v.getParentId() > 0 && v.getType() == PrivilegeEnum.MENU) {
|
|
|
- map.get(v.getParentId()).getChildren().add(v);
|
|
|
- deleteKeys.add(k);
|
|
|
- }
|
|
|
- });
|
|
|
- for (Long key : deleteKeys) {
|
|
|
- map.remove(key);
|
|
|
+ if (Objects.nonNull(customPrivilegeIds) && customPrivilegeIds.size() > 0) {
|
|
|
+ sysPrivilegeQueryWrapper = new QueryWrapper<>();
|
|
|
+ sysPrivilegeQueryWrapper.lambda().in(SysPrivilege::getId, customPrivilegeIds);
|
|
|
+ List<SysPrivilege> sysPrivileges = this.list(sysPrivilegeQueryWrapper);
|
|
|
+ sysPrivilegeList.addAll(sysPrivileges);
|
|
|
}
|
|
|
- return new ArrayList<>(map.values());
|
|
|
+ return (List<PrivilegeDto>) this.getMenuTreeCommon(sysPrivilegeList);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -270,33 +225,114 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取所有角色权限
|
|
|
+ * 递归树查询(同级及以上)
|
|
|
*
|
|
|
+ * @param privilegeId
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<SysRolePrivilegeDto> getRolePrivilegeList() {
|
|
|
- return sysPrivilegeMapper.getRolePrivilegeList();
|
|
|
+ public List<SysPrivilege> findByConnectByParentId(Long privilegeId) {
|
|
|
+ return sysPrivilegeMapper.findByConnectByParentId(privilegeId);
|
|
|
}
|
|
|
|
|
|
+// /**
|
|
|
+// * 获取所有角色权限
|
|
|
+// *
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// @Override
|
|
|
+// public List<SysRolePrivilegeDto> getRolePrivilegeList() {
|
|
|
+// return sysPrivilegeMapper.getRolePrivilegeList();
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 获取所有角色权限数量
|
|
|
+// *
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// @Override
|
|
|
+// public Integer getRolePrivilegeCount() {
|
|
|
+// return sysPrivilegeMapper.getRolePrivilegeCount();
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 查找默认菜单权限
|
|
|
+// *
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// @Override
|
|
|
+// public List<SysPrivilege> findByDefault() {
|
|
|
+// return sysPrivilegeMapper.findByDefault();
|
|
|
+// }
|
|
|
|
|
|
/**
|
|
|
- * 获取所有角色权限数量
|
|
|
+ * 获取菜单树公用
|
|
|
*
|
|
|
+ * @param sysPrivilegeList
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public Integer getRolePrivilegeCount() {
|
|
|
- return sysPrivilegeMapper.getRolePrivilegeCount();
|
|
|
- }
|
|
|
+ public Collection<?> getMenuTreeCommon(Collection<?> sysPrivilegeList) {
|
|
|
+ LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
|
|
|
+ Map<Long, PrivilegeDto> map = new LinkedHashMap<>();
|
|
|
+ Gson gson = new Gson();
|
|
|
+ List<MenuDto> menuDtoList = gson.fromJson(JacksonUtil.parseJson(sysPrivilegeList), new TypeToken<List<MenuDto>>() {
|
|
|
+ }.getType());
|
|
|
+ for (MenuDto m : menuDtoList) {
|
|
|
+ if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU) {
|
|
|
+ PrivilegeDto privilegeDto = new PrivilegeDto();
|
|
|
+ privilegeDto.setId(m.getId());
|
|
|
+ privilegeDto.setName(m.getName());
|
|
|
+ privilegeDto.setUrl(m.getUrl());
|
|
|
+ privilegeDto.setType(m.getType());
|
|
|
+ privilegeDto.setParentId(m.getParentId());
|
|
|
+ privilegeDto.setSequence(m.getSequence());
|
|
|
+ map.put(m.getId(), privilegeDto);
|
|
|
+ } else {
|
|
|
+ if (!linkedMultiValueMap.containsKey(m.getParentId())) {
|
|
|
+ linkedMultiValueMap.add(m.getParentId(), m);
|
|
|
+ } else {
|
|
|
+ List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getParentId());
|
|
|
+ menuDtos.add(m);
|
|
|
+ linkedMultiValueMap.put(m.getParentId(), menuDtos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 查找默认菜单权限
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- public List<SysPrivilege> findByDefault() {
|
|
|
- return sysPrivilegeMapper.findByDefault();
|
|
|
+ Set<Long> deleteKeys = new HashSet<>();
|
|
|
+ map.forEach((k, v) -> {
|
|
|
+ List<MenuDto> menuDtos = linkedMultiValueMap.get(k);
|
|
|
+ List<MenuDto> buttons = null, links = null, lists = null, conditions = null;
|
|
|
+ if (Objects.nonNull(menuDtos)) {
|
|
|
+ for (MenuDto menuDto : menuDtos) {
|
|
|
+ if (v.getId().longValue() == menuDto.getParentId().longValue() && menuDto.getType() == PrivilegeEnum.BUTTON) {
|
|
|
+ buttons = Objects.isNull(buttons) ? new ArrayList<>() : buttons;
|
|
|
+ buttons.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
+ v.setButtons(buttons);
|
|
|
+ } else if (v.getId().longValue() == menuDto.getParentId().longValue() && menuDto.getType() == PrivilegeEnum.LINK) {
|
|
|
+ links = Objects.isNull(links) ? new ArrayList<>() : links;
|
|
|
+ links.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
+ v.setLinks(links);
|
|
|
+ } else if (v.getId().longValue() == menuDto.getParentId().longValue() && menuDto.getType() == PrivilegeEnum.LIST) {
|
|
|
+ lists = Objects.isNull(lists) ? new ArrayList<>() : lists;
|
|
|
+ lists.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
+ v.setLists(lists);
|
|
|
+ } else if (v.getId().longValue() == menuDto.getParentId().longValue() && menuDto.getType() == PrivilegeEnum.CONDITION) {
|
|
|
+ conditions = Objects.isNull(conditions) ? new ArrayList<>() : conditions;
|
|
|
+ conditions.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
+ v.setConditions(conditions);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (v.getParentId() > 0 && v.getType() == PrivilegeEnum.MENU) {
|
|
|
+ map.get(v.getParentId()).getChildren().add(v);
|
|
|
+ deleteKeys.add(k);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ for (Long key : deleteKeys) {
|
|
|
+ map.remove(key);
|
|
|
+ }
|
|
|
+ return new ArrayList<>(map.values());
|
|
|
}
|
|
|
}
|