浏览代码

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

xiaof 3 年之前
父节点
当前提交
34514b644a
共有 31 个文件被更改,包括 357 次插入201 次删除
  1. 2 2
      distributed-print-business/pom.xml
  2. 2 2
      distributed-print/pom.xml
  3. 37 37
      distributed-print/src/main/java/com/qmth/distributed/print/api/ActivitiController.java
  4. 4 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java
  5. 9 19
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  6. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/auth/DistributedPrintAuthenticationService.java
  7. 3 3
      distributed-print/src/main/resources/application-dev.properties
  8. 1 1
      pom.xml
  9. 2 2
      teachcloud-common-api/pom.xml
  10. 2 2
      teachcloud-common/pom.xml
  11. 2 14
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/MenuResult.java
  12. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  13. 3 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FieldUniqueEnum.java
  14. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/RoleTypeEnum.java
  15. 14 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysOrgMapper.java
  16. 24 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/CacheService.java
  17. 22 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java
  18. 11 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TeachcloudCommonService.java
  19. 49 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/CacheServiceImpl.java
  20. 31 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java
  21. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java
  22. 1 59
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserRoleServiceImpl.java
  23. 5 5
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  24. 93 10
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java
  25. 2 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/AuthUtil.java
  26. 19 19
      teachcloud-common/src/main/resources/mapper/SysOrgMapper.xml
  27. 2 2
      teachcloud-report-business/pom.xml
  28. 2 2
      teachcloud-report/pom.xml
  29. 6 6
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysController.java
  30. 1 1
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/auth/TeachcloudReportAuthenticationService.java
  31. 2 2
      teachcloud-task/pom.xml

+ 2 - 2
distributed-print-business/pom.xml

@@ -4,7 +4,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.distributed.print.business</groupId>
     <artifactId>distributed-print-business</artifactId>
-    <version>2.1.1</version>
+    <version>2.2.0</version>
     <build>
         <plugins>
             <plugin>
@@ -22,7 +22,7 @@
     <parent>
         <groupId>com.qmth.distributed.print.service</groupId>
         <artifactId>distributed-print-service</artifactId>
-        <version>2.1.1</version>
+        <version>2.2.0</version>
     </parent>
 
     <dependencies>

+ 2 - 2
distributed-print/pom.xml

@@ -4,13 +4,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.distributed.print</groupId>
     <artifactId>distributed-print</artifactId>
-    <version>2.1.1</version>
+    <version>2.2.0</version>
     <packaging>jar</packaging>
 
     <parent>
         <groupId>com.qmth.distributed.print.service</groupId>
         <artifactId>distributed-print-service</artifactId>
-        <version>2.1.1</version>
+        <version>2.2.0</version>
     </parent>
 
     <dependencies>

+ 37 - 37
distributed-print/src/main/java/com/qmth/distributed/print/api/ActivitiController.java

@@ -36,12 +36,12 @@ public class ActivitiController {
     @Resource
     private ActivitiService activitiService;
 
-//    @ApiOperation(value = "注册流程")
-//    @RequestMapping(value = "/createDeployment", method = RequestMethod.POST)
-//    public Result createDeployment(@RequestParam(value = "processFileName") String processFileName) {
-//        activitiService.createDeployment(processFileName);
-//        return ResultUtil.ok();
-//    }
+    @ApiOperation(value = "注册流程")
+    @RequestMapping(value = "/createDeployment", method = RequestMethod.POST)
+    public Result createDeployment(@RequestParam(value = "processFileName") String processFileName) {
+        activitiService.createDeployment(processFileName);
+        return ResultUtil.ok();
+    }
 
     @ApiOperation(value = "上传流程")
     @RequestMapping(value = "/updateDeployment", method = RequestMethod.POST)
@@ -50,35 +50,35 @@ public class ActivitiController {
         return ResultUtil.ok();
     }
 
-//    @ApiOperation(value = "启动流程")
-//    @RequestMapping(value = "/startActivity", method = RequestMethod.POST)
-//    public Result startActivity(@RequestParam(value = "processKey") String processKey) {
-//        Map<String, Object> map = new HashMap<>();
-//        map.put("userId", 1L);
-//        map.put("approveId", 2L);
-//        map.put("assigneeId", 3L);
-//        activitiService.startActivity(processKey, map);
-//        return ResultUtil.ok();
-//    }
-//
-//    @ApiOperation(value = "获取待办")
-//    @RequestMapping(value = "/getTaskList", method = RequestMethod.POST)
-//    public Result getTaskList() {
-//        activitiService.getTaskList();
-//        return ResultUtil.ok();
-//    }
-//
-//    @ApiOperation(value = "提交")
-//    @RequestMapping(value = "/complete", method = RequestMethod.POST)
-//    public Result complete(@RequestParam(value = "taskId") String taskId) {
-//        activitiService.complete(taskId);
-//        return ResultUtil.ok();
-//    }
-//
-//    @ApiOperation(value = "根据流程id直接结束流程")
-//    @RequestMapping(value = "/deleteProcessInstance", method = RequestMethod.POST)
-//    public Result deleteProcessInstance(@RequestParam(value = "flowId") String flowId) {
-//        activitiService.deleteProcessInstance(flowId);
-//        return ResultUtil.ok();
-//    }
+    @ApiOperation(value = "启动流程")
+    @RequestMapping(value = "/startActivity", method = RequestMethod.POST)
+    public Result startActivity(@RequestParam(value = "processKey") String processKey) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("userId", 1L);
+        map.put("approveId", 2L);
+        map.put("assigneeId", 3L);
+        activitiService.startActivity(processKey, map);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "获取待办")
+    @RequestMapping(value = "/getTaskList", method = RequestMethod.POST)
+    public Result getTaskList() {
+        activitiService.getTaskList();
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "提交")
+    @RequestMapping(value = "/complete", method = RequestMethod.POST)
+    public Result complete(@RequestParam(value = "taskId") String taskId) {
+        activitiService.complete(taskId);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "根据流程id直接结束流程")
+    @RequestMapping(value = "/deleteProcessInstance", method = RequestMethod.POST)
+    public Result deleteProcessInstance(@RequestParam(value = "flowId") String flowId) {
+        activitiService.deleteProcessInstance(flowId);
+        return ResultUtil.ok();
+    }
 }

+ 4 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java

@@ -84,10 +84,10 @@ public class ClientController {
         }
         AuthBean authBean = teachcloudCommonService.getUserAuth(sysUser.getId());
         if (Objects.nonNull(authBean) && Objects.nonNull(authBean.getRoleList()) && authBean.getRoleList().size() > 0) {
-            Set<RoleTypeEnum> roleType = authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet());
-            if (!roleType.contains(RoleTypeEnum.PRINTER)) {
-                throw ExceptionResultEnum.ERROR.exception("客户端只允许" + RoleTypeEnum.PRINTER.getDesc() + "登录");
-            }
+            Set<String> roleNames = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
+//            if (!roleNames.contains(RoleTypeEnum.PRINTER)) {
+//                throw ExceptionResultEnum.ERROR.exception("客户端只允许" + RoleTypeEnum.PRINTER.getDesc() + "登录");
+//            }
         }
         return ResultUtil.ok(teachcloudCommonService.login(login.getPassword(), sysUser, AppSourceEnum.SYSTEM));
     }

+ 9 - 19
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -100,7 +100,7 @@ public class SysController {
         }
 
         BasicSchool basicSchool = null;
-        if (!Objects.equals(login.getSchoolCode().toUpperCase(), RoleTypeEnum.ADMIN.name())) {
+        if (!login.getSchoolCode().equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
             basicSchool = cacheService.schoolCache(login.getSchoolCode());
             if (Objects.isNull(basicSchool)) {
                 throw ExceptionResultEnum.SCHOOL_NO_DATA.exception();
@@ -111,7 +111,7 @@ public class SysController {
         }
         QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
         wrapper.lambda().eq(SysUser::getLoginName, login.getLoginName());
-        if (!Objects.equals(login.getSchoolCode().toUpperCase(), RoleTypeEnum.ADMIN.name())) {
+        if (!login.getSchoolCode().equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
             wrapper.lambda().eq(SysUser::getSchoolId, basicSchool.getId());
         }
         List<SysUser> userList = sysUserService.list(wrapper);
@@ -119,14 +119,12 @@ public class SysController {
         if (Objects.isNull(userList) || userList.size() == 0) {
             throw ExceptionResultEnum.USER_NO_DATA.exception();
         }
-        if (Objects.equals(login.getSchoolCode().toUpperCase(), RoleTypeEnum.ADMIN.name())) {
+        if (login.getSchoolCode().equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
             userList.forEach(o -> {
                 AuthBean authBean = teachcloudCommonService.getUserAuth(o.getId());
                 if (Objects.nonNull(authBean) && Objects.nonNull(authBean.getRoleList()) && authBean.getRoleList().size() > 0) {
-                    Set<RoleTypeEnum> roleType = authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet());
-                    if (!roleType.contains(RoleTypeEnum.ADMIN)
-//                            && !roleType.contains(RoleTypeEnum.CUSTOMER)
-                    ) {
+                    Set<String> roleNames = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
+                    if (!roleNames.contains(RoleTypeEnum.ADMIN.getDesc())) {
                         throw ExceptionResultEnum.ERROR.exception("学校代码为admin只允许超级管理员登录");
                     }
                 }
@@ -170,18 +168,10 @@ public class SysController {
     @ApiOperation(value = "登出")
     @RequestMapping(value = "/logout", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    public Result logout() {
+    public Result logout() throws NoSuchAlgorithmException {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
-        AuthBean authBean = cacheService.userAuthCache(sysUser.getId());
-        if (Objects.isNull(authBean)) {
-            throw ExceptionResultEnum.NOT_LOGIN.exception();
-        }
-        tbSessionService.removeById(tbSession.getId());
-        redisUtil.deleteUserSession(tbSession.getId());
-        cacheService.removeUserCache(sysUser.getId());
-        cacheService.removeUserAuthCache(sysUser.getId());
-        return ResultUtil.ok(new EditResult(sysUser.getId()));
+        teachcloudCommonService.removeUserInfo(sysUser.getId(), false);
+        return ResultUtil.ok();
     }
 
     /**
@@ -223,7 +213,7 @@ public class SysController {
     @ApiResponses({@ApiResponse(code = 200, message = "学校信息", response = EditResult.class)})
     @Aac(auth = BOOL.FALSE)
     public Result queryBySchoolCode(@ApiParam(value = "机构code", required = true) @RequestParam String code) {
-        if (!Objects.equals(code.toUpperCase(), RoleTypeEnum.ADMIN.name())) {
+        if (!code.equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
             BasicSchool basicSchool = cacheService.schoolCache(code);
             if (Objects.isNull(basicSchool)) {
                 throw ExceptionResultEnum.SCHOOL_NO_DATA.exception();

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/auth/DistributedPrintAuthenticationService.java

@@ -113,7 +113,7 @@ public class DistributedPrintAuthenticationService implements AuthorizationServi
         request.setAttribute(SystemConstant.ORG, authBean.getOrg());
 
         //超级系统管理员拥有所有权限
-        int count = Objects.nonNull(authBean) ? (int) authBean.getRoleList().stream().filter(s -> s.getType() == RoleTypeEnum.ADMIN).count() : 0;
+        int count = Objects.nonNull(authBean) ? (int) authBean.getRoleList().stream().filter(s -> Objects.equals(s.getName(), RoleTypeEnum.ADMIN.getDesc())).count() : 0;
         if (count > 0) {
             return true;
         }

+ 3 - 3
distributed-print/src/main/resources/application-dev.properties

@@ -12,14 +12,14 @@ spring.application.name=distributed-print
 #\u6570\u636E\u6E90\u914D\u7F6E
 db.host=localhost
 db.port=3306
-db.name=distributed-136
+db.name=distributed-v2.2.0
 db.username=root
 db.password=123456789
 
 #redis\u6570\u636E\u6E90\u914D\u7F6E
 com.qmth.redis.host=${db.host}
 com.qmth.redis.port=6379
-com.qmth.redis.db=0
+com.qmth.redis.db=15
 #com.qmth.redis.password=
 
 #mysql\u914D\u7F6E
@@ -84,7 +84,7 @@ org.center.orgQueryApi=/api/open/org/query
 #com.qmth.api.uri-prefix=/aaa
 #\u7EDF\u8BA1\u9875\u9762\u914D\u7F6E
 com.qmth.api.metrics-endpoint=/metrics-count
-com.qmth.api.global-auth=true
+com.qmth.api.global-auth=false
 #com.qmth.api.global-strict=false
 #com.qmth.api.global-rate-limit=1/5s
 

+ 1 - 1
pom.xml

@@ -4,7 +4,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.distributed.print.service</groupId>
     <artifactId>distributed-print-service</artifactId>
-    <version>2.1.1</version>
+    <version>2.2.0</version>
     <packaging>pom</packaging>
 
     <modules>

+ 2 - 2
teachcloud-common-api/pom.xml

@@ -4,13 +4,13 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>com.qmth.teachcloud.common.api</groupId>
 	<artifactId>teachcloud-common-api</artifactId>
-	<version>2.1.1</version>
+	<version>2.2.0</version>
 	<packaging>jar</packaging>
 
 	<parent>
 		<groupId>com.qmth.distributed.print.service</groupId>
 		<artifactId>distributed-print-service</artifactId>
-		<version>2.1.1</version>
+		<version>2.2.0</version>
 	</parent>
 
 	<dependencies>

+ 2 - 2
teachcloud-common/pom.xml

@@ -4,13 +4,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.teachcloud.common</groupId>
     <artifactId>teachcloud-common</artifactId>
-    <version>2.1.1</version>
+    <version>2.2.0</version>
     <packaging>jar</packaging>
 
     <parent>
         <groupId>com.qmth.distributed.print.service</groupId>
         <artifactId>distributed-print-service</artifactId>
-        <version>2.1.1</version>
+        <version>2.2.0</version>
     </parent>
 
     <dependencies>

+ 2 - 14
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/MenuResult.java

@@ -23,10 +23,6 @@ public class MenuResult implements Serializable {
     @ApiModelProperty(value = "用户id")
     Long userId;
 
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "角色名称")
-    Set<String> roleNames;
-
     @ApiModelProperty(value = "权限集合")
     List<MenuPrivilegeDto> privileges;
 
@@ -34,9 +30,9 @@ public class MenuResult implements Serializable {
 
     }
 
-    public MenuResult(Long userId, Set<String> roleNames) {
+    public MenuResult(Long userId, List<MenuPrivilegeDto> privileges) {
         this.userId = userId;
-        this.roleNames = roleNames;
+        this.privileges = privileges;
     }
 
     public Long getUserId() {
@@ -47,14 +43,6 @@ public class MenuResult implements Serializable {
         this.userId = userId;
     }
 
-    public Set<String> getRoleNames() {
-        return roleNames;
-    }
-
-    public void setRoleNames(Set<String> roleNames) {
-        this.roleNames = roleNames;
-    }
-
     public List<MenuPrivilegeDto> getPrivileges() {
         return privileges;
     }

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -70,6 +70,7 @@ public class SystemConstant {
     public static final String DEFAULT_SIGN = "#";
     public static final String PARENT_ORG = "武汉大学教务处";
     public static final String SCHOOL_CODE = "wdfx";
+    public static final String ADMIN_CODE = "admin";
 //    public static final int MAX_RETRY_CREATE_PDF_COUNT = 5;
 
     /**
@@ -82,6 +83,7 @@ public class SystemConstant {
      */
     public static final String USER_OAUTH_CACHE = "user:oauth:cache";
     public static final String USER_ACCOUNT_CACHE = "user:account:cache";
+    public static final String USER_MENU_CACHE = "user:menu:cache";
     public static final String SCHOOL_CACHE = "school:cache";
     public static final String SCHOOL_CODE_CACHE = "school:code:cache";
     public static final String ORG_CACHE = "org:cache";

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FieldUniqueEnum.java

@@ -15,7 +15,9 @@ public enum FieldUniqueEnum {
 
     schoolId_name_idx("角色名"),
 
-    org_schoolId_code_idx("机构编码");
+    org_schoolId_code_idx("机构编码"),
+
+    org_schoolId_name_idx("机构名称");
 
     private String title;
 

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/RoleTypeEnum.java

@@ -9,7 +9,7 @@ import java.util.List;
  */
 public enum RoleTypeEnum {
 
-    ADMIN("超级管理员"),
+    ADMIN("系统管理员"),
     SCHOOL_ADMIN("学校管理员"),
     EXAM_TEACHER("考务老师"),
     QUESTION_TEACHER("命题老师"),

+ 14 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysOrgMapper.java

@@ -2,6 +2,11 @@ package com.qmth.teachcloud.common.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qmth.teachcloud.common.entity.SysOrg;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +18,13 @@ import com.qmth.teachcloud.common.entity.SysOrg;
  */
 public interface SysOrgMapper extends BaseMapper<SysOrg> {
 
+    /**
+     * 根据机构类型查找用户
+     *
+     * @param schoolId
+     * @param orgId
+     * @param orgTypeEnum
+     * @return
+     */
+    List<SysUser> findUserByOrgType(@Param("schoolId") Long schoolId, @Param("orgId") Long orgId, @Param("orgTypeEnum") String orgTypeEnum);
 }

+ 24 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/CacheService.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.common.service;
 
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
+import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.PrivilegePropertyEnum;
 
@@ -39,6 +40,29 @@ public interface CacheService {
      */
     public void removeRoleCache(Long roleId);
 
+    /**
+     * 添加用户菜单缓存
+     *
+     * @param userId
+     * @return
+     */
+    public MenuResult userMenuCache(Long userId);
+
+    /**
+     * 修改用户菜单缓存
+     *
+     * @param userId
+     * @return
+     */
+    public MenuResult updateUserMenuCache(Long userId);
+
+    /**
+     * 删除用户菜单缓存
+     *
+     * @param userId
+     */
+    public void removeUserMenuCache(Long userId);
+
     /**
      * 添加用户缓存
      *

+ 22 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -3,6 +3,8 @@ package com.qmth.teachcloud.common.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.OrgDto;
 import com.qmth.teachcloud.common.entity.SysOrg;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 
 import java.util.List;
 
@@ -41,9 +43,28 @@ public interface SysOrgService extends IService<SysOrg> {
     /**
      * 查询或新建学院
      * 根据学院名称查询数据库是否有该开课学院,有则查询id,没有则新增并取出id
-     * @param schoolId 学校id
+     *
+     * @param schoolId    学校id
      * @param collegeName 学院名称
      * @return 查询或新增的开课学院id
      */
     Long searchOrInsert(Long schoolId, String collegeName);
+
+    /**
+     * 根据机构类型查找用户
+     *
+     * @param schoolId
+     * @param orgId
+     * @param orgTypeEnum
+     * @return
+     */
+    List<SysUser> findUserByOrgType(Long schoolId, Long orgId, OrgTypeEnum orgTypeEnum);
+
+    /**
+     * 根据orgId查找下属机构信息
+     *
+     * @param orgId
+     * @return
+     */
+    List<SysOrg> findAllByOrgId(Long orgId);
 }

+ 11 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TeachcloudCommonService.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.common.service;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
 import com.qmth.teachcloud.common.bean.dto.PrivilegeCacheDto;
 import com.qmth.teachcloud.common.bean.result.LoginResult;
+import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.bean.result.RolePrivilegeResult;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.SysRolePrivilege;
@@ -29,6 +30,14 @@ import java.util.Set;
  */
 public interface TeachcloudCommonService {
 
+    /**
+     * 获取用户菜单
+     *
+     * @param userId
+     * @return
+     */
+    public MenuResult getUserMenu(Long userId);
+
     /**
      * 新增用户权限
      *
@@ -81,8 +90,9 @@ public interface TeachcloudCommonService {
      * 删除用户信息
      *
      * @param userId
+     * @param all
      */
-    public void removeUserInfo(Long userId) throws NoSuchAlgorithmException;
+    public void removeUserInfo(Long userId, boolean all) throws NoSuchAlgorithmException;
 
     /**
      * 修改角色状态

+ 49 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/CacheServiceImpl.java

@@ -1,21 +1,32 @@
 package com.qmth.teachcloud.common.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
+import com.qmth.teachcloud.common.bean.dto.MenuDto;
+import com.qmth.teachcloud.common.bean.dto.MenuPrivilegeDto;
+import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
+import com.qmth.teachcloud.common.enums.PrivilegeEnum;
 import com.qmth.teachcloud.common.enums.PrivilegePropertyEnum;
 import com.qmth.teachcloud.common.service.*;
+import com.qmth.teachcloud.common.util.JacksonUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 缓存操作serviceImpl 实现类
@@ -43,6 +54,9 @@ public class CacheServiceImpl implements CacheService {
     @Resource
     SysRoleService sysRoleService;
 
+    @Resource
+    SysPrivilegeService sysPrivilegeService;
+
     /**
      * 添加角色缓存
      *
@@ -79,6 +93,41 @@ public class CacheServiceImpl implements CacheService {
 
     }
 
+    /**
+     * 添加用户菜单缓存
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    @Cacheable(value = SystemConstant.USER_MENU_CACHE, key = "#p0")
+    public MenuResult userMenuCache(Long userId) {
+        return commonService.getUserMenu(userId);
+    }
+
+    /**
+     * 修改用户菜单缓存
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    @CachePut(value = SystemConstant.USER_MENU_CACHE, key = "#p0")
+    public MenuResult updateUserMenuCache(Long userId) {
+        return commonService.getUserMenu(userId);
+    }
+
+    /**
+     * 删除用户菜单缓存
+     *
+     * @param userId
+     */
+    @Override
+    @CacheEvict(value = SystemConstant.USER_MENU_CACHE, key = "#p0")
+    public void removeUserMenuCache(Long userId) {
+
+    }
+
     /**
      * 添加用户缓存
      *

+ 31 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -14,6 +14,7 @@ import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.mapper.SysOrgMapper;
+import com.qmth.teachcloud.common.mapper.SysUserMapper;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.service.SysRoleService;
 import com.qmth.teachcloud.common.service.SysUserService;
@@ -40,9 +41,13 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
 
     @Resource
     private SysUserService sysUserService;
+
     @Resource
     private SysRoleService sysRoleService;
 
+    @Resource
+    SysOrgMapper sysOrgMapper;
+
     @Override
     public List<OrgDto> listOrgTree() {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -73,7 +78,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         for (Long key : deleteKeys) {
             map.remove(key);
         }
-
         return new ArrayList<>(map.values());
     }
 
@@ -235,4 +239,30 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         }
         return orgId;
     }
+
+    /**
+     * 根据机构类型查找用户
+     *
+     * @param schoolId
+     * @param orgId
+     * @param orgTypeEnum
+     * @return
+     */
+    @Override
+    public List<SysUser> findUserByOrgType(Long schoolId, Long orgId, OrgTypeEnum orgTypeEnum) {
+        return sysOrgMapper.findUserByOrgType(schoolId, orgId, orgTypeEnum.name());
+    }
+
+    /**
+     * 根据orgId查找下属机构信息
+     *
+     * @param orgId
+     * @return
+     */
+    @Override
+    public List<SysOrg> findAllByOrgId(Long orgId) {
+        QueryWrapper<SysOrg> sysOrgQueryWrapper = new QueryWrapper<>();
+        sysOrgQueryWrapper.lambda().eq(SysOrg::getParentId, orgId);
+        return this.list(sysOrgQueryWrapper);
+    }
 }

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

@@ -146,7 +146,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
                     //绑定该角色的用户都需要清除鉴权缓存
                     List<SysUserRole> sysUserRoleList = sysUserRoleService.listByRoleId(role.getId());
                     for (SysUserRole s : sysUserRoleList) {
-                        commonService.removeUserInfo(s.getUserId());
+                        commonService.removeUserInfo(s.getUserId(), true);
                     }
                 }
             } else {
@@ -178,7 +178,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         if (!role.getEnable()) {
             List<SysUserRole> sysUserRoleList = sysUserRoleService.listByRoleId(role.getId());
             for (SysUserRole s : sysUserRoleList) {
-                commonService.removeUserInfo(s.getUserId());
+                commonService.removeUserInfo(s.getUserId(), true);
             }
         }
         return true;

+ 1 - 59
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserRoleServiceImpl.java

@@ -66,65 +66,7 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
     @Override
     public MenuResult listByUserId() {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        AuthBean authBean = cacheService.userAuthCache(sysUser.getId());
-        List<MenuDto> menuDtoList = null;
-        for (SysRole role : authBean.getRoleList()) {
-            if (Objects.nonNull(role.getType()) && RoleTypeEnum.ADMIN.name().equals(role.getType().name())) {
-                menuDtoList = this.baseMapper.listAll(Objects.isNull(sysUser.getSchoolId()) ? (Long) ServletUtil.getRequestSchoolByNotVaild() : sysUser.getSchoolId());
-                break;
-            }
-        }
-        if (Objects.isNull(menuDtoList)) {
-            menuDtoList = this.baseMapper.listByUserId(sysUser.getId(), Objects.isNull(sysUser.getSchoolId()) ? (Long) ServletUtil.getRequestSchoolByNotVaild() : sysUser.getSchoolId());
-        }
-        LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
-        List<MenuPrivilegeDto> menuPrivilegeDtoList = new ArrayList<>();
-        Gson gson = new Gson();
-        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);
-                    }
-                }
-            }
-        }
-        MenuResult menuResult = new MenuResult(sysUser.getId(), authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet()));
-        menuResult.setPrivileges(menuPrivilegeDtoList);
-        return menuResult;
+        return cacheService.userMenuCache(sysUser.getId());
     }
 
     @Override

+ 5 - 5
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -105,7 +105,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         boolean success = this.update(updateWrapper);
         //如果状态为禁用,需要踢下线重新登录
         if (!user.getEnable()) {
-            commonService.removeUserInfo(user.getId());
+            commonService.removeUserInfo(user.getId(), true);
         }
         return success;
     }
@@ -121,7 +121,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         //如果原密码和旧密码不一致,需要重新登录
         if (!Objects.equals(user.getPassword(), oldPassword)) {
-            commonService.removeUserInfo(user.getId());
+            commonService.removeUserInfo(user.getId(), false);
         }
         return this.updateById(user);
     }
@@ -141,7 +141,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         boolean success = this.updateById(sysUser);
         //如果原密码和旧密码不一致,需要重新登录
         if (!Objects.equals(user.getOldPassword(), sysUser.getPassword())) {
-            commonService.removeUserInfo(sysUser.getId());
+            commonService.removeUserInfo(sysUser.getId(), false);
         }
         return success;
     }
@@ -293,7 +293,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
                     cacheService.removeUserRolePrivilegeCache(sysUser.getId());
                     commonService.addUserRolePrivilege(sysUser, userSaveParams.getRoleIds());
-                    commonService.removeUserInfo(sysUser.getId());
+                    commonService.removeUserInfo(sysUser.getId(), true);
                 }
                 //如果修改了机构或手机号,需更新用户缓存
                 if (Objects.nonNull(dbUser.getOrgId())) {
@@ -396,7 +396,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 }
                 //如果修改了角色,需要重新登录
                 if (count == 0 || dbUserRolesList.size() != userRolesList.size()) {
-                    commonService.removeUserInfo(sysUser.getId());
+                    commonService.removeUserInfo(sysUser.getId(), true);
                 }
                 //如果修改了机构或手机号,需更新用户缓存
                 if (Objects.nonNull(dbUser.getOrgId())) {

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

@@ -5,14 +5,19 @@ import cn.hutool.core.util.ZipUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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;
+import com.qmth.teachcloud.common.bean.dto.MenuPrivilegeDto;
 import com.qmth.teachcloud.common.bean.dto.OrgDto;
 import com.qmth.teachcloud.common.bean.dto.PrivilegeCacheDto;
 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.RolePrivilegeResult;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
@@ -84,6 +89,74 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
     @Resource
     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);
+    }
+
     /**
      * 新增用户权限
      *
@@ -171,7 +244,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
                 sysRoleQueryWrapper.lambda().in(SysRole::getId, roleIds)
                         .eq(SysRole::getEnable, true);
                 List<SysRole> sysRoleList = sysRoleService.list(sysRoleQueryWrapper);
-                int count = Objects.nonNull(sysRoleList) && sysRoleList.size() > 0 ? (int) sysRoleList.stream().filter(s -> s.getType() == RoleTypeEnum.ADMIN).count() : 0;
+                int count = Objects.nonNull(sysRoleList) && sysRoleList.size() > 0 ? (int) sysRoleList.stream().filter(s -> Objects.equals(s.getName(), RoleTypeEnum.ADMIN.getDesc())).count() : 0;
                 QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
                 if (count > 0) {//超级系统管理员
                     Long schoolId = (Long) ServletUtil.getRequestSchoolByNotVaild();
@@ -218,20 +291,30 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
      * 删除用户信息
      *
      * @param userId
+     * @param all
      */
     @Override
-    public void removeUserInfo(Long userId) throws NoSuchAlgorithmException {
+    public void removeUserInfo(Long userId, boolean all) throws NoSuchAlgorithmException {
         AuthBean authBean = cacheService.userAuthCache(userId);
         if (Objects.isNull(authBean)) {
             throw ExceptionResultEnum.NOT_LOGIN.exception();
         }
-        for (Platform p : Platform.values()) {
-            String sessionId = SessionUtil.digest(userId, Math.abs(authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet()).hashCode()), p.name());
-            tbSessionService.removeById(sessionId);
-            redisUtil.deleteUserSession(sessionId);
+        if (all) {
+            for (Platform p : Platform.values()) {
+                Set<String> roleNames = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
+                String sessionId = SessionUtil.digest(userId, Math.abs(roleNames.toString().hashCode()), p.name());
+                tbSessionService.removeById(sessionId);
+                redisUtil.deleteUserSession(sessionId);
+            }
+        } else {
+            TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
+            tbSessionService.removeById(tbSession.getId());
+            redisUtil.deleteUserSession(tbSession.getId());
         }
         cacheService.removeUserCache(userId);
         cacheService.removeUserAuthCache(userId);
+        cacheService.removeUserMenuCache(userId);
+        cacheService.removeUserRolePrivilegeCache(userId);
     }
 
     /**
@@ -653,18 +736,18 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         String token = SystemConstant.getUuid();
         cacheService.userCache(sysUser.getId());
         //添加用户会话缓存
-        Set<String> roleName = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
-        String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleName.toString().hashCode()), platform.name());
+        Set<String> roleNames = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
+        String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleNames.toString().hashCode()), platform.name());
         //TODO 测试用
         String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
         ExpireTimeBean expireTime = AuthUtil.getExpireTime(platform);
-        TBSession tbSession = new TBSession(sysUser.getSchoolId(), sessionId, String.valueOf(sysUser.getId()), roleName.toString(),
+        TBSession tbSession = new TBSession(sysUser.getSchoolId(), sessionId, String.valueOf(sysUser.getId()), roleNames.toString(),
                 platform.name(), platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token,
                 expireTime.getDate().getTime(), appSource);
         tbSessionService.saveOrUpdate(tbSession);
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, roleName, appSource);
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, roleNames, appSource);
 //        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, roleName, 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);

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

@@ -13,6 +13,7 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.PrivilegePropertyEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.service.CacheService;
+import org.apache.catalina.Role;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -148,7 +149,7 @@ public class AuthUtil {
         request.setAttribute(SystemConstant.ORG, authBean.getOrg());
 
         //超级系统管理员拥有所有权限
-        int count = Objects.nonNull(authBean) ? (int) authBean.getRoleList().stream().filter(s -> s.getType() == RoleTypeEnum.ADMIN).count() : 0;
+        int count = Objects.nonNull(authBean) ? (int) authBean.getRoleList().stream().filter(s -> Objects.equals(s.getName(), RoleTypeEnum.ADMIN.getDesc())).count() : 0;
         if (count > 0) {
             return true;
         }

+ 19 - 19
teachcloud-common/src/main/resources/mapper/SysOrgMapper.xml

@@ -2,24 +2,24 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.teachcloud.common.mapper.SysOrgMapper">
 
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.qmth.teachcloud.common.entity.SysOrg">
-    <result column="id" property="id" />
-        <result column="school_id" property="schoolId" />
-        <result column="ode" property="ode" />
-        <result column="name" property="name" />
-        <result column="parent_id" property="parentId" />
-        <result column="enable" property="enable" />
-        <result column="create_id" property="createId" />
-        <result column="create_time" property="createTime" />
-        <result column="update_id" property="updateId" />
-        <result column="update_time" property="updateTime" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        id,
-        school_id, ode, name, parent_id, enable, create_id, create_time, update_id, update_time
-    </sql>
+    <select id="findUserByOrgType" resultType="com.qmth.teachcloud.common.entity.SysUser">
+        select
+            *
+        from
+            sys_user su
+        join sys_org so on
+            su.org_id = so.id
+        <where>
+            <if test="schoolId != null and schoolId != ''">
+                and so.school_id = #{schoolId}
+            </if>
+            <if test="orgId != null and orgId != ''">
+                and so.id = #{orgId}
+            </if>
+            <if test="orgTypeEnum != null and orgTypeEnum != ''">
+                and so.`type` = #{orgTypeEnum}
+            </if>
+        </where>
+    </select>
 
 </mapper>

+ 2 - 2
teachcloud-report-business/pom.xml

@@ -4,7 +4,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>com.qmth.teachcloud.report.business</groupId>
 	<artifactId>teachcloud-report-business</artifactId>
-	<version>2.1.1</version>
+	<version>2.2.0</version>
 	<build>
 		<plugins>
 			<plugin>
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>com.qmth.distributed.print.service</groupId>
 		<artifactId>distributed-print-service</artifactId>
-		<version>2.1.1</version>
+		<version>2.2.0</version>
 	</parent>
 
 	<dependencies>

+ 2 - 2
teachcloud-report/pom.xml

@@ -4,13 +4,13 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>com.qmth.teachcloud.report</groupId>
 	<artifactId>teachcloud-report</artifactId>
-	<version>2.1.1</version>
+	<version>2.2.0</version>
 	<packaging>jar</packaging>
 
 	<parent>
 		<groupId>com.qmth.distributed.print.service</groupId>
 		<artifactId>distributed-print-service</artifactId>
-		<version>2.1.1</version>
+		<version>2.2.0</version>
 	</parent>
 
 	<dependencies>

+ 6 - 6
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysController.java

@@ -99,7 +99,7 @@ public class SysController {
         }
 
         BasicSchool basicSchool = null;
-        if (!Objects.equals(login.getSchoolCode().toUpperCase(), RoleTypeEnum.ADMIN.name())) {
+        if (!login.getSchoolCode().equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
             basicSchool = cacheService.schoolCache(login.getSchoolCode());
             if (Objects.isNull(basicSchool)) {
                 throw ExceptionResultEnum.SCHOOL_NO_DATA.exception();
@@ -110,7 +110,7 @@ public class SysController {
         }
         QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
         wrapper.lambda().eq(SysUser::getLoginName, login.getLoginName());
-        if (!Objects.equals(login.getSchoolCode().toUpperCase(), RoleTypeEnum.ADMIN.name())) {
+        if (!login.getSchoolCode().equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
             wrapper.lambda().eq(SysUser::getSchoolId, basicSchool.getId());
         }
         List<SysUser> userList = sysUserService.list(wrapper);
@@ -118,12 +118,12 @@ public class SysController {
         if (Objects.isNull(userList) || userList.size() == 0) {
             throw ExceptionResultEnum.USER_NO_DATA.exception();
         }
-        if (Objects.equals(login.getSchoolCode().toUpperCase(), RoleTypeEnum.ADMIN.name())) {
+        if (login.getSchoolCode().equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
             userList.forEach(o -> {
                 AuthBean authBean = teachcloudCommonService.getUserAuth(o.getId());
                 if (Objects.nonNull(authBean) && Objects.nonNull(authBean.getRoleList()) && authBean.getRoleList().size() > 0) {
-                    Set<RoleTypeEnum> roleType = authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet());
-                    if (!roleType.contains(RoleTypeEnum.ADMIN) && !roleType.contains(RoleTypeEnum.CUSTOMER)) {
+                    Set<String> roleNames = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
+                    if (!roleNames.contains(RoleTypeEnum.ADMIN.getDesc())) {
                         throw ExceptionResultEnum.ERROR.exception("学校代码为admin只允许超级管理员登录");
                     }
                 }
@@ -220,7 +220,7 @@ public class SysController {
     @ApiResponses({@ApiResponse(code = 200, message = "学校信息", response = EditResult.class)})
     @Aac(auth = BOOL.FALSE)
     public Result queryBySchoolCode(@ApiParam(value = "机构code", required = true) @RequestParam String code) {
-        if (!Objects.equals(code.toUpperCase(), RoleTypeEnum.ADMIN.name())) {
+        if (!code.equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
             BasicSchool basicSchool = cacheService.schoolCache(code);
             if (Objects.isNull(basicSchool)) {
                 throw ExceptionResultEnum.SCHOOL_NO_DATA.exception();

+ 1 - 1
teachcloud-report/src/main/java/com/qmth/teachcloud/report/auth/TeachcloudReportAuthenticationService.java

@@ -113,7 +113,7 @@ public class TeachcloudReportAuthenticationService implements AuthorizationServi
         request.setAttribute(SystemConstant.ORG, authBean.getOrg());
 
         //超级系统管理员拥有所有权限
-        int count = Objects.nonNull(authBean) ? (int) authBean.getRoleList().stream().filter(s -> s.getType() == RoleTypeEnum.ADMIN).count() : 0;
+        int count = Objects.nonNull(authBean) ? (int) authBean.getRoleList().stream().filter(s -> Objects.equals(s.getName(), RoleTypeEnum.ADMIN.getDesc())).count() : 0;
         if (count > 0) {
             return true;
         }

+ 2 - 2
teachcloud-task/pom.xml

@@ -4,13 +4,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.teachcloud.task</groupId>
     <artifactId>teachcloud-task</artifactId>
-    <version>2.1.1</version>
+    <version>2.2.0</version>
     <packaging>jar</packaging>
 
     <parent>
         <groupId>com.qmth.distributed.print.service</groupId>
         <artifactId>distributed-print-service</artifactId>
-        <version>2.1.1</version>
+        <version>2.2.0</version>
     </parent>
 
     <dependencies>