|
@@ -5,14 +5,19 @@ import cn.hutool.core.util.ZipUtil;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
+import com.google.common.reflect.TypeToken;
|
|
|
|
+import com.google.gson.Gson;
|
|
import com.qmth.boot.core.enums.Platform;
|
|
import com.qmth.boot.core.enums.Platform;
|
|
import com.qmth.boot.tools.signature.SignatureType;
|
|
import com.qmth.boot.tools.signature.SignatureType;
|
|
import com.qmth.teachcloud.common.SignatureEntityTest;
|
|
import com.qmth.teachcloud.common.SignatureEntityTest;
|
|
import com.qmth.teachcloud.common.bean.auth.AuthBean;
|
|
import com.qmth.teachcloud.common.bean.auth.AuthBean;
|
|
import com.qmth.teachcloud.common.bean.auth.ExpireTimeBean;
|
|
import com.qmth.teachcloud.common.bean.auth.ExpireTimeBean;
|
|
|
|
+import com.qmth.teachcloud.common.bean.dto.MenuDto;
|
|
|
|
+import com.qmth.teachcloud.common.bean.dto.MenuPrivilegeDto;
|
|
import com.qmth.teachcloud.common.bean.dto.OrgDto;
|
|
import com.qmth.teachcloud.common.bean.dto.OrgDto;
|
|
import com.qmth.teachcloud.common.bean.dto.PrivilegeCacheDto;
|
|
import com.qmth.teachcloud.common.bean.dto.PrivilegeCacheDto;
|
|
import com.qmth.teachcloud.common.bean.result.LoginResult;
|
|
import com.qmth.teachcloud.common.bean.result.LoginResult;
|
|
|
|
+import com.qmth.teachcloud.common.bean.result.MenuResult;
|
|
import com.qmth.teachcloud.common.bean.result.PrivilegeResult;
|
|
import com.qmth.teachcloud.common.bean.result.PrivilegeResult;
|
|
import com.qmth.teachcloud.common.bean.result.RolePrivilegeResult;
|
|
import com.qmth.teachcloud.common.bean.result.RolePrivilegeResult;
|
|
import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
@@ -84,6 +89,74 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
|
|
@Resource
|
|
@Resource
|
|
BasicAttachmentService basicAttachmentService;
|
|
BasicAttachmentService basicAttachmentService;
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 获取用户菜单
|
|
|
|
+ *
|
|
|
|
+ * @param userId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public MenuResult getUserMenu(Long userId) {
|
|
|
|
+ SysUser sysUser = cacheService.userCache(userId);
|
|
|
|
+ List<SysUserRole> sysUserRoleList = cacheService.userRolePrivilegeCache(userId);
|
|
|
|
+ List<SysRolePrivilege> sysRolePrivilegeList = new ArrayList<>();
|
|
|
|
+ for (SysUserRole s : sysUserRoleList) {
|
|
|
|
+ sysRolePrivilegeList.addAll(cacheService.rolePrivilegeCache(s.getRoleId()));
|
|
|
|
+ }
|
|
|
|
+ Set<Long> privilegeIds = sysRolePrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toSet());
|
|
|
|
+ QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ sysPrivilegeQueryWrapper.lambda().in(SysPrivilege::getId, privilegeIds);
|
|
|
|
+ List<SysPrivilege> sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
|
|
|
|
+ Gson gson = new Gson();
|
|
|
|
+ List<MenuDto> menuDtoList = gson.fromJson(JacksonUtil.parseJson(sysPrivilegeList), new TypeToken<List<MenuDto>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
|
|
|
|
+ List<MenuPrivilegeDto> menuPrivilegeDtoList = new ArrayList<>();
|
|
|
|
+ for (MenuDto m : menuDtoList) {
|
|
|
|
+ if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU) {
|
|
|
|
+ menuPrivilegeDtoList.add(gson.fromJson(gson.toJson(m), MenuPrivilegeDto.class));
|
|
|
|
+ } 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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for (MenuPrivilegeDto m : menuPrivilegeDtoList) {
|
|
|
|
+ List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getId());
|
|
|
|
+ List<MenuDto> urls = null, buttons = null, links = null, lists = null, conditions = null;
|
|
|
|
+ if (Objects.nonNull(menuDtos)) {
|
|
|
|
+ for (MenuDto menuDto : menuDtos) {
|
|
|
|
+ if (menuDto.getType() == PrivilegeEnum.BUTTON) {
|
|
|
|
+ buttons = Objects.isNull(buttons) ? new ArrayList<>() : buttons;
|
|
|
|
+ buttons.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
|
+ m.setButtons(buttons);
|
|
|
|
+ } else if (menuDto.getType() == PrivilegeEnum.LINK) {
|
|
|
|
+ links = Objects.isNull(links) ? new ArrayList<>() : links;
|
|
|
|
+ links.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
|
+ m.setLinks(links);
|
|
|
|
+ } else if (menuDto.getType() == PrivilegeEnum.URL) {
|
|
|
|
+ urls = Objects.isNull(urls) ? new ArrayList<>() : urls;
|
|
|
|
+ urls.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
|
+ m.setUrls(urls);
|
|
|
|
+ } else if (menuDto.getType() == PrivilegeEnum.LIST) {
|
|
|
|
+ lists = Objects.isNull(lists) ? new ArrayList<>() : lists;
|
|
|
|
+ lists.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
|
+ m.setLists(lists);
|
|
|
|
+ } else if (menuDto.getType() == PrivilegeEnum.CONDITION) {
|
|
|
|
+ conditions = Objects.isNull(conditions) ? new ArrayList<>() : conditions;
|
|
|
|
+ conditions.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
|
|
|
|
+ m.setConditions(conditions);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return new MenuResult(sysUser.getId(), menuPrivilegeDtoList);
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 新增用户权限
|
|
* 新增用户权限
|
|
*
|
|
*
|
|
@@ -232,6 +305,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
|
|
}
|
|
}
|
|
cacheService.removeUserCache(userId);
|
|
cacheService.removeUserCache(userId);
|
|
cacheService.removeUserAuthCache(userId);
|
|
cacheService.removeUserAuthCache(userId);
|
|
|
|
+ cacheService.removeUserMenuCache(userId);
|
|
|
|
+ cacheService.removeUserRolePrivilegeCache(userId);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|