浏览代码

Merge branch 'dev_v2.2.0' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v2.2.0

xiaof 3 年之前
父节点
当前提交
5b96cd3bbb

+ 3 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/SysPrivilegeController.java

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.api;
 
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.bean.dto.PrivilegeDto;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
@@ -24,6 +26,7 @@ import java.util.List;
 @Api(tags = "菜单权限Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.sys}/privilege")
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class SysPrivilegeController {
 
     @Autowired

+ 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

+ 0 - 11
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/MenuPrivilegeDto.java

@@ -19,9 +19,6 @@ public class MenuPrivilegeDto extends MenuDto implements Serializable {
     @ApiModelProperty(value = "url权限集合")
     List<MenuDto> urls;
 
-    @ApiModelProperty(value = "选项卡权限集合")
-    List<MenuDto> tabs;
-
     @ApiModelProperty(value = "按钮权限集合")
     List<MenuDto> buttons;
 
@@ -34,14 +31,6 @@ public class MenuPrivilegeDto extends MenuDto implements Serializable {
     @ApiModelProperty(value = "查询列表权限集合")
     List<MenuDto> conditions;
 
-    public List<MenuDto> getTabs() {
-        return tabs;
-    }
-
-    public void setTabs(List<MenuDto> tabs) {
-        this.tabs = tabs;
-    }
-
     public List<MenuDto> getUrls() {
         return urls;
     }

+ 8 - 7
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysPrivilege.java

@@ -60,9 +60,10 @@ public class SysPrivilege extends BaseEntity implements Serializable {
     @TableField(value = "property")
     private String property;
 
-    @ApiModelProperty(value = "备注")
-    @TableField(value = "remark")
-    private String remark;
+    @ApiModelProperty(value = "关联属性,type为URL且property为AUTH才有")
+    @TableField(value = "related")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String related;
 
     @ApiModelProperty(value = "是否启用,0:停用,1:启用")
     @TableField(value = "enable")
@@ -136,12 +137,12 @@ public class SysPrivilege extends BaseEntity implements Serializable {
         this.property = property;
     }
 
-    public String getRemark() {
-        return remark;
+    public String getRelated() {
+        return related;
     }
 
-    public void setRemark(String remark) {
-        this.remark = remark;
+    public void setRelated(String related) {
+        this.related = related;
     }
 
     public Boolean getEnable() {

+ 0 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PrivilegeEnum.java

@@ -12,8 +12,6 @@ public enum PrivilegeEnum {
 
     MENU("菜单"),
 
-    TAB("选项卡"),
-
     BUTTON("按钮"),
 
     LINK("链接"),

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysPrivilegeServiceImpl.java

@@ -37,7 +37,8 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
     @Override
     public List<PrivilegeDto> listPrivilegeTree() {
         QueryWrapper<SysPrivilege> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().orderByAsc(SysPrivilege::getParentId, SysPrivilege::getSequence);
+        queryWrapper.lambda().orderByAsc(SysPrivilege::getParentId, SysPrivilege::getSequence)
+                .ne(SysPrivilege::getType, PrivilegeEnum.URL);
         List<SysPrivilege> orgList = this.list(queryWrapper);
         Map<Long, PrivilegeDto> map = new LinkedHashMap<>();
         for (SysPrivilege privilege : orgList) {

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

@@ -3,14 +3,17 @@ package com.qmth.teachcloud.common.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.entity.SysPrivilege;
 import com.qmth.teachcloud.common.entity.SysRole;
 import com.qmth.teachcloud.common.entity.SysRolePrivilege;
 import com.qmth.teachcloud.common.mapper.SysRolePrivilegeMapper;
+import com.qmth.teachcloud.common.service.SysPrivilegeService;
 import com.qmth.teachcloud.common.service.SysRolePrivilegeService;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -23,6 +26,9 @@ import java.util.List;
 @Service
 public class SysRolePrivilegeServiceImpl extends ServiceImpl<SysRolePrivilegeMapper, SysRolePrivilege> implements SysRolePrivilegeService {
 
+    @Resource
+    SysPrivilegeService sysPrivilegeService;
+
     @Override
     public void removeByRoleId(Long id) {
         UpdateWrapper<SysRolePrivilege> updateWrapper = new UpdateWrapper<>();
@@ -32,8 +38,24 @@ public class SysRolePrivilegeServiceImpl extends ServiceImpl<SysRolePrivilegeMap
 
     @Override
     public void saveBatch(SysRole role) {
+        QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
+        sysPrivilegeQueryWrapper.lambda().in(SysPrivilege::getId, role.getPrivilegeIds());
+        List<SysPrivilege> sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
+        Set<String> relatedSet = sysPrivilegeList.stream().filter(s -> Objects.nonNull(s.getRelated())).map(s -> s.getRelated()).collect(Collectors.toSet());
+        Set<Long> finalRelatedSet = new HashSet<>();
+        for (String s : relatedSet) {
+            if (s.contains(",")) {
+                String[] arrays = s.split(",");
+                for (int i = 0; i < arrays.length; i++) {
+                    finalRelatedSet.add(Long.parseLong(arrays[i]));
+                }
+            } else {
+                finalRelatedSet.add(Long.parseLong(s));
+            }
+        }
+        finalRelatedSet.addAll(Arrays.asList(role.getPrivilegeIds()));
         List<SysRolePrivilege> list = new ArrayList<>();
-        for (Long privilegeId : role.getPrivilegeIds()) {
+        for (Long privilegeId : finalRelatedSet) {
             SysRolePrivilege sysRolePrivilege = new SysRolePrivilege();
             sysRolePrivilege.setRoleId(role.getId());
             sysRolePrivilege.setPrivilegeId(privilegeId);

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

@@ -8,6 +8,8 @@ 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.tools.signature.SignatureType;
+import com.qmth.teachcloud.common.SignatureEntityTest;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
 import com.qmth.teachcloud.common.bean.auth.ExpireTimeBean;
 import com.qmth.teachcloud.common.bean.dto.MenuDto;
@@ -111,7 +113,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
         List<MenuPrivilegeDto> menuPrivilegeDtoList = new ArrayList<>();
         for (MenuDto m : menuDtoList) {
-            if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU || m.getType() == PrivilegeEnum.TAB) {
+            if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU) {
                 menuPrivilegeDtoList.add(gson.fromJson(gson.toJson(m), MenuPrivilegeDto.class));
             } else {
                 if (!linkedMultiValueMap.containsKey(m.getParentId())) {
@@ -125,14 +127,9 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         for (MenuPrivilegeDto m : menuPrivilegeDtoList) {
             List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getId());
-            List<MenuDto> urls = null, tabs = null, buttons = null, links = null, lists = null, conditions = null;
+            List<MenuDto> urls = null, buttons = null, links = null, lists = null, conditions = null;
             if (Objects.nonNull(menuDtos)) {
                 for (MenuDto menuDto : menuDtos) {
-//                    if (menuDto.getType() == PrivilegeEnum.TAB) {
-//                        tabs = Objects.isNull(buttons) ? new ArrayList<>() : tabs;
-//                        tabs.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
-//                        m.setTabs(buttons);
-//                    } else
                     if (menuDto.getType() == PrivilegeEnum.BUTTON) {
                         buttons = Objects.isNull(buttons) ? new ArrayList<>() : buttons;
                         buttons.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
@@ -740,10 +737,16 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         String token = SystemConstant.getUuid();
         cacheService.userCache(sysUser.getId());
         //添加用户会话缓存
-        Set<String> roleNames = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
+        Set<String> roleNames = new HashSet<>(), roleTypes = new HashSet<>();
+        for (SysRole s : authBean.getRoleList()) {
+            roleNames.add(s.getName());
+            if (Objects.nonNull(s.getType())) {
+                roleTypes.add(s.getType().name());
+            }
+        }
         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,
@@ -751,8 +754,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         tbSessionService.saveOrUpdate(tbSession);
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
-//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, roleNames, appSource);
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, 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, roleTypes, 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());

+ 6 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/AuthUtil.java

@@ -170,8 +170,12 @@ public class AuthUtil {
         Map<String, Boolean> map = new HashMap<>();
         Aac beanTypeAac = handlerMethod.getBeanType().getAnnotation(Aac.class);
         Aac classAac = handlerMethod.getMethodAnnotation(Aac.class);
-        map.computeIfAbsent(SystemConstant.AUTH, v -> beanTypeAac.auth() == BOOL.TRUE ? true : false);
-        map.computeIfAbsent(SystemConstant.AUTH, v -> classAac.auth() == BOOL.TRUE ? true : false);
+        if (Objects.nonNull(beanTypeAac)) {
+            map.computeIfAbsent(SystemConstant.AUTH, v -> beanTypeAac.auth() == BOOL.TRUE ? true : false);
+        }
+        if (Objects.nonNull(classAac)) {
+            map.computeIfAbsent(SystemConstant.AUTH, v -> classAac.auth() == BOOL.TRUE ? true : false);
+        }
 
         if (Objects.nonNull(map.get(SystemConstant.AUTH)) && !map.get(SystemConstant.AUTH)) {
             return true;