Browse Source

单点登陆修改

wangliang 3 years ago
parent
commit
315b2636bb

+ 4 - 4
distributed-print/src/main/java/com/qmth/distributed/print/interceptor/AuthInterceptor.java

@@ -22,11 +22,11 @@ public class AuthInterceptor extends ExtendInterceptor {
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         log.info("preHandle is come in");
-//        if (request.getServletPath().contains(endpoint)) {
+        if (request.getServletPath().contains(endpoint)) {
             return true;
-//        } else {
-//            return AuthUtil.adminAuthInterceptor(request, response, handler);
-//        }
+        } else {
+            return AuthUtil.adminAuthInterceptor(request, response, handler);
+        }
     }
 
     @Override

+ 49 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/PrivilegeDto.java

@@ -1,16 +1,20 @@
 package com.qmth.teachcloud.common.bean.dto;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.enums.PrivilegeEnum;
+import io.swagger.annotations.ApiModelProperty;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
 /**
  * @Date: 2021/3/29.
  */
-public class PrivilegeDto {
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PrivilegeDto implements Serializable {
 
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
@@ -23,6 +27,50 @@ public class PrivilegeDto {
     private Integer sequence;
     private List<PrivilegeDto> children = new ArrayList<>();
 
+    @ApiModelProperty(value = "按钮权限集合")
+    List<MenuDto> buttons;
+
+    @ApiModelProperty(value = "链接权限集合")
+    List<MenuDto> links;
+
+    @ApiModelProperty(value = "数据列表权限集合")
+    List<MenuDto> lists;
+
+    @ApiModelProperty(value = "查询列表权限集合")
+    List<MenuDto> conditions;
+
+    public List<MenuDto> getButtons() {
+        return buttons;
+    }
+
+    public void setButtons(List<MenuDto> buttons) {
+        this.buttons = buttons;
+    }
+
+    public List<MenuDto> getLinks() {
+        return links;
+    }
+
+    public void setLinks(List<MenuDto> links) {
+        this.links = links;
+    }
+
+    public List<MenuDto> getLists() {
+        return lists;
+    }
+
+    public void setLists(List<MenuDto> lists) {
+        this.lists = lists;
+    }
+
+    public List<MenuDto> getConditions() {
+        return conditions;
+    }
+
+    public void setConditions(List<MenuDto> conditions) {
+        this.conditions = conditions;
+    }
+
     public Long getId() {
         return id;
     }

+ 12 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysPrivilege.java

@@ -69,6 +69,18 @@ public class SysPrivilege extends BaseEntity implements Serializable {
     @TableField(value = "enable")
     private Boolean enable;
 
+    @ApiModelProperty(value = "是否显示,0:不显示,1:显示")
+    @TableField(value = "display")
+    private Boolean display;
+
+    public Boolean getDisplay() {
+        return display;
+    }
+
+    public void setDisplay(Boolean display) {
+        this.display = display;
+    }
+
     public Long getSchoolId() {
         return schoolId;
     }

+ 38 - 84
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysPrivilegeServiceImpl.java

@@ -85,27 +85,25 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
         Long schoolId = SystemConstant.getHeadOrUserSchoolId();
         QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
         sysPrivilegeQueryWrapper.lambda().eq(SysPrivilege::getSchoolId, schoolId)
-                .ne(SysPrivilege::getType, PrivilegeEnum.URL);
+                .ne(SysPrivilege::getType, PrivilegeEnum.URL)
+                .eq(SysPrivilege::getDisplay, true);
         List<SysPrivilege> sysPrivilegeList = this.list(sysPrivilegeQueryWrapper);
 
         LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
-        List<MenuPrivilegeDto> menuPrivilegeDtoList = new ArrayList<>();
         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) {
-            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);
-
             if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU) {
-                menuPrivilegeDtoList.add(gson.fromJson(gson.toJson(m), MenuPrivilegeDto.class));
+                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);
@@ -117,83 +115,39 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
             }
         }
 
-        Iterator<Long> iterator = map.keySet().iterator();
         Set<Long> deleteKeys = new HashSet<>();
-        while (iterator.hasNext()) {
-            Long parentId = iterator.next();
-//            List<MenuDto> menuDtos = linkedMultiValueMap.get(parentId);
-//            List<MenuDto> buttons = null, links = null, lists = null, conditions = null;
-//            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.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);
-//                }
-//            }
-            if (map.get(parentId).getParentId() != null) {
-                map.get(map.get(parentId).getParentId()).getChildren().add(map.get(parentId));
-                deleteKeys.add(parentId);
+        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);
         }
-
-//        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> 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.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 ArrayList<>(map.values());
     }
 

+ 3 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -746,7 +746,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleNames.toString().hashCode()), platform.name());
         //TODO 测试用
-//        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
+        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
         ExpireTimeBean expireTime = AuthUtil.getExpireTime(platform);
         TBSession tbSession = new TBSession(sysUser.getSchoolId(), sessionId, String.valueOf(sysUser.getId()), roleNames.toString(),
                 platform.name(), platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token,
@@ -754,8 +754,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         tbSessionService.saveOrUpdate(tbSession);
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
-//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
+//        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
         loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? loginResult.new SchoolNativeBean(authBean.getSchool()) : null);
         loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
         loginResult.setTime(System.currentTimeMillis());