Răsfoiți Sursa

3.4.0 update

xiaofei 1 an în urmă
părinte
comite
8d8c0bedee
19 a modificat fișierele cu 109 adăugiri și 94 ștergeri
  1. 0 9
      distributed-print-business/src/main/resources/db/delete-data.sql
  2. 4 1
      distributed-print/install/mysql/upgrade/3.4.0.sql
  3. 5 5
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicOperationLogController.java
  4. 2 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleController.java
  5. 2 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java
  6. 11 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/DataPermissionRule.java
  7. 22 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/BasicOperationLogResult.java
  8. 5 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/DataPermissionTypeEnum.java
  9. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicOperationLogMapper.java
  10. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysRoleMapper.java
  11. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicOperationLogService.java
  12. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysRoleService.java
  13. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicOperationLogServiceImpl.java
  14. 31 39
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicRoleDataPermissionServiceImpl.java
  15. 6 12
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java
  16. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  17. 2 2
      teachcloud-common/src/main/resources/mapper/BasicOperationLogMapper.xml
  18. 10 9
      teachcloud-common/src/main/resources/mapper/SysRoleMapper.xml
  19. 1 1
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysRoleController.java

+ 0 - 9
distributed-print-business/src/main/resources/db/delete-data.sql

@@ -56,20 +56,14 @@ DELETE t FROM basic_role_data_permission t where t.school_id = #{schoolId};
 DELETE t FROM client_print_data t where t.school_id = #{schoolId};
 DELETE t FROM client_status t where t.school_id = #{schoolId};
 
-DELETE t FROM cloud_user_push_status t where t.school_id = #{schoolId};
 DELETE t FROM course_target t where t.school_id = #{schoolId};
 DELETE t FROM course_evaluation t where t.school_id = #{schoolId};
 DELETE t FROM course_weight t where t.school_id = #{schoolId};
 DELETE t FROM course_dimension t where t.school_id = #{schoolId};
 
-DELETE t FROM exam_card_detail t where exists(select temp.* from(select ecd.id from exam_card_detail ecd join exam_card ec on ec.id = ecd.card_id where ec.school_id = #{schoolId}) temp where t.id = temp.id);
 DELETE t FROM exam_card t where t.school_id = #{schoolId};
 DELETE t FROM exam_detail t where t.school_id = #{schoolId};
 DELETE t FROM exam_detail_course t where t.school_id = #{schoolId};
-DELETE t FROM exam_paper_group_marker t where exists(select temp.* from (select epgm.id from exam_paper_group_marker epgm join exam_paper_group epg on epg.id = epgm.group_id join exam_paper_structure eps on eps.id = epg.exam_paper_structure_id where eps.school_id = #{schoolId}) temp where temp.id = t.id);
-DELETE t FROM exam_paper_group t where exists(select temp.* from (select epg.id from exam_paper_group epg join exam_paper_structure eps on eps.id = epg.exam_paper_structure_id where eps.school_id = #{schoolId}) temp where temp.id = t.id);
-DELETE t FROM exam_paper_class_marker t where exists (select 1 from exam_paper_structure a where a.school_id = #{schoolId} and t.exam_paper_structure_id = a.id);
-DELETE t FROM exam_paper_structure t where t.school_id = #{schoolId};
 DELETE t FROM exam_print_plan t where t.school_id = #{schoolId};
 DELETE t FROM exam_student t where t.school_id = #{schoolId};
 DELETE t FROM exam_task t where t.school_id = #{schoolId};
@@ -81,7 +75,6 @@ DELETE t FROM exam_task_paper_log t where exists(select temp.* from(select et.id
 DELETE t FROM exam_task_print t where t.school_id = #{schoolId};
 DELETE t FROM exam_task_review_log t where exists(select temp.* from(select et.id from exam_task et where et.school_id = #{schoolId}) temp where t.exam_task_id = temp.id);
 DELETE t FROM exam_task_temp t where t.school_id = #{schoolId};
-DELETE t FROM exam_task_sync t where t.school_id = #{schoolId};
 
 DELETE t FROM grade_batch_student t where exists(select temp.* from(select gb.id from grade_batch gb where gb.school_id = #{schoolId}) temp where t.batch_id = temp.id);
 DELETE t FROM grade_batch_student_clazz t where exists(select temp.* from(select gb.id from grade_batch gb where gb.school_id = #{schoolId}) temp where t.batch_id = temp.id);
@@ -121,8 +114,6 @@ DELETE t FROM t_s_auth t where t.school_id = #{schoolId};
 DELETE t FROM t_school_privilege t where t.school_id = #{schoolId};
 DELETE t FROM t_school_role t where t.school_id = #{schoolId};
 DELETE t FROM t_sync_exam_student_score t where t.school_id = #{schoolId};
-DELETE t FROM t_sync_stmms_exam t where t.school_id = #{schoolId};
-DELETE t FROM t_sync_exam_log t where t.school_id = #{schoolId};
 
 DELETE t FROM teach_clazz t where t.school_id = #{schoolId};
 DELETE t FROM teach_course t where t.school_id = #{schoolId};

+ 4 - 1
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -34,4 +34,7 @@ drop table exam_paper_group_marker;
 drop table exam_paper_structure;
 drop table exam_task_sync;
 drop table t_sync_exam_log;
-drop table t_sync_stmms_exam;
+drop table t_sync_stmms_exam;
+
+-- delete脚本需要加上新增的表
+

+ 5 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicOperationLogController.java

@@ -37,14 +37,14 @@ public class BasicOperationLogController {
     @ApiOperation(value = "日志管理-分页查询")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result findOperationLogPage(@ApiParam(value = "操作类型") @RequestParam(required = false) OperationTypeEnum customizedOperationType,
-                                       @ApiParam(value = "操作时间 - 起始") @RequestParam(required = false) Long startTime,
-                                       @ApiParam(value = "操作时间 - 终止") @RequestParam(required = false) Long endTime,
-                                       @ApiParam(value = "操作人姓名") @RequestParam(required = false) String operatorName,
+    public Result findOperationLogPage(@ApiParam(value = "操作类型") @RequestParam(required = false) OperationTypeEnum operationType,
+                                       @ApiParam(value = "操作时间(起始)") @RequestParam(required = false) Long startTime,
+                                       @ApiParam(value = "操作时间(终止)") @RequestParam(required = false) Long endTime,
+                                       @ApiParam(value = "操作人姓名/工号") @RequestParam(required = false) String operatorName,
                                        @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                        @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(basicOperationLogService.findOperationLogPage(customizedOperationType, startTime, endTime, operatorName, requestUser, pageNumber, pageSize));
+        return ResultUtil.ok(basicOperationLogService.findOperationLogPage(operationType, startTime, endTime, operatorName, requestUser, pageNumber, pageSize));
     }
 
     @ApiOperation(value = "日志管理-试卷、题卡预览接口保存")

+ 2 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleController.java

@@ -129,8 +129,8 @@ public class SysRoleController {
      */
     @ApiOperation(value = "用户已绑定角色列表")
     @RequestMapping(value = "/get_user_roles", method = RequestMethod.POST)
-    public Result getUserRoles(@RequestParam(value = "userId", required = true) Long userId) {
-        return ResultUtil.ok(sysRoleService.getUserRoles(userId));
+    public Result getUserRoles(@RequestParam(value = "userId") Long userId) {
+        return ResultUtil.ok(sysRoleService.listUserRoleIds(userId));
     }
 
     /**

+ 2 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java

@@ -173,7 +173,7 @@ public class SysUserController {
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/remove", method = RequestMethod.POST)
     @OperationLogDetail(operationType = OperationTypeEnum.DELETE)
-    public Result remove(@RequestParam(value = "id", required = true) Long id) throws NoSuchAlgorithmException {
+    public Result remove(@RequestParam(value = "id") Long id) throws NoSuchAlgorithmException {
         return ResultUtil.ok(sysUserService.remove(id));
     }
 
@@ -220,7 +220,7 @@ public class SysUserController {
     @RequestMapping(value = "/import", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
     @OperationLogDetail(operationType = OperationTypeEnum.IMPORT)
-    public Result sysUserImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
+    public Result sysUserImportAsync(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Map<String, Object> map = printCommonService.saveTask(file, TaskTypeEnum.USER_IMPORT);
         map.put(SystemConstant.SYS_USER, sysUser);

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

@@ -17,6 +17,9 @@ public class DataPermissionRule implements Serializable {
     @ApiModelProperty("登录用户数据权限(只允许看自己的数据)")
     private Long requestUserId;
 
+    @ApiModelProperty("登录用户数据权限(只允许看自己的课程数据)")
+    private Set<Long> courseIdSet;
+
     public Set<Long> getOrgIdSet() {
         return orgIdSet;
     }
@@ -32,4 +35,12 @@ public class DataPermissionRule implements Serializable {
     public void setRequestUserId(Long requestUserId) {
         this.requestUserId = requestUserId;
     }
+
+    public Set<Long> getCourseIdSet() {
+        return courseIdSet;
+    }
+
+    public void setCourseIdSet(Set<Long> courseIdSet) {
+        this.courseIdSet = courseIdSet;
+    }
 }

+ 22 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/BasicOperationLogResult.java

@@ -36,10 +36,16 @@ public class BasicOperationLogResult implements Serializable {
     @ApiModelProperty("自定义操作类型")
     private OperationTypeEnum operationType;
 
+    @ApiModelProperty("自定义操作类型")
+    private String operationTypeName;
+
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty("创建时间")
     private Long createTime;
 
+    @ApiModelProperty("请求参数")
+    private String args;
+
     public Long getId() {
         return id;
     }
@@ -96,6 +102,14 @@ public class BasicOperationLogResult implements Serializable {
         this.operationType = operationType;
     }
 
+    public String getOperationTypeName() {
+        return this.operationType == null ? null : this.operationType.getName();
+    }
+
+    public void setOperationTypeName(String operationTypeName) {
+        this.operationTypeName = operationTypeName;
+    }
+
     public Long getCreateTime() {
         return createTime;
     }
@@ -103,4 +117,12 @@ public class BasicOperationLogResult implements Serializable {
     public void setCreateTime(Long createTime) {
         this.createTime = createTime;
     }
+
+    public String getArgs() {
+        return args;
+    }
+
+    public void setArgs(String args) {
+        this.args = args;
+    }
 }

+ 5 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/DataPermissionTypeEnum.java

@@ -13,10 +13,11 @@ import java.util.stream.Collectors;
  * @Date: 2022-12-06
  */
 public enum DataPermissionTypeEnum {
-    SELF("仅本人数据权限", 1),
-    SELF_ORG("本部门数据权限", 2),
-    SELF_ORG_BELOW("本部门及下级部门数据权限", 3),
-    ALL("全部数据权限", 4);
+    SELF("本人数据", 1),
+    SELF_COURSE("本人课程数据", 2),
+    SELF_ORG("本部门数据", 3),
+    SELF_ORG_BELOW("本部门及下级部门数据", 4),
+    ALL("全部数据", 5);
 
     @ApiModelProperty("描述")
     private final String desc;

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicOperationLogMapper.java

@@ -31,7 +31,7 @@ public interface BasicOperationLogMapper extends BaseMapper<BasicOperationLog> {
      */
     IPage<BasicOperationLogResult> findOperationLogPage(@Param("iPage") Page<BasicMajorResult> iPage,
                                                         @Param("schoolId") Long schoolId,
-                                                        @Param("customizedOperationType") OperationTypeEnum customizedOperationType,
+                                                        @Param("operationType") OperationTypeEnum operationType,
                                                         @Param("startTime") Long startTime,
                                                         @Param("endTime") Long endTime,
                                                         @Param("operatorName") String operatorName,

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysRoleMapper.java

@@ -18,7 +18,7 @@ import java.util.List;
  */
 public interface SysRoleMapper extends BaseMapper<SysRole> {
 
-    List<SysRole> listRolesByUserId(Long id);
+    List<SysRole> listRolesByUserId(@Param("userId") Long userId);
 
     IPage<SysRole> listPage(Page<SysRole> page, @Param("schoolId") Long schoolId, @Param("name") String name, @Param("enable") Boolean enable);
 

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

@@ -26,7 +26,7 @@ public interface BasicOperationLogService extends IService<BasicOperationLog> {
      * @param pageSize                分页容量
      * @return 分页结果
      */
-    IPage<BasicOperationLogResult> findOperationLogPage(OperationTypeEnum customizedOperationType, Long startTime, Long endTime, String operatorName, SysUser requestUser, int pageNumber, int pageSize);
+    IPage<BasicOperationLogResult> findOperationLogPage(OperationTypeEnum operationType, Long startTime, Long endTime, String operatorName, SysUser requestUser, int pageNumber, int pageSize);
 
     void saveOperateLogWithNoAuth(Long schoolId, Long userId, String detail, OperationTypeEnum operationTypeEnum, String args);
 }

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

@@ -39,9 +39,9 @@ public interface SysRoleService extends IService<SysRole> {
 
     boolean removeReport(Long id);
 
-    List<Long> getUserRoles(Long userId);
+    List<Long> listUserRoleIds(Long userId);
 
-    List<SysRole> listRolesByUserId(Long id);
+    List<SysRole> listRolesByUserId(Long userId);
 
     List<SysRole> list(Long[] roleIds, String name);
 

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

@@ -29,13 +29,13 @@ public class BasicOperationLogServiceImpl extends ServiceImpl<BasicOperationLogM
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Override
-    public IPage<BasicOperationLogResult> findOperationLogPage(OperationTypeEnum customizedOperationType, Long startTime, Long endTime, String operatorName, SysUser requestUser, int pageNumber, int pageSize) {
+    public IPage<BasicOperationLogResult> findOperationLogPage(OperationTypeEnum operationType, Long startTime, Long endTime, String operatorName, SysUser requestUser, int pageNumber, int pageSize) {
         Long schoolId = requestUser.getSchoolId();
         if (SystemConstant.strNotNull(operatorName)) {
             operatorName = SystemConstant.translateSpecificSign(operatorName);
         }
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
-        return this.baseMapper.findOperationLogPage(new Page<>(pageNumber, pageSize), schoolId, customizedOperationType, startTime, endTime, operatorName, dpr);
+        return this.baseMapper.findOperationLogPage(new Page<>(pageNumber, pageSize), schoolId, operationType, startTime, endTime, operatorName, dpr);
     }
 
     @Override

+ 31 - 39
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicRoleDataPermissionServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.common.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionInfo;
@@ -19,10 +20,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -142,13 +140,12 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
         DataPermissionRule result = new DataPermissionRule();
         if (Objects.nonNull(sysPrivilege)) {
             // 角色集合
-            List<Long> roleIdList = sysRoleService.getUserRoles(requestUserId);
+            List<SysRole> sysRoleList = sysRoleService.listRolesByUserId(requestUserId);
             // 数据库中存在该方法的url
             int maxWeight = 0;
             DataPermissionTypeEnum finalPermissionType = null;
-            for (Long roleId : roleIdList) {
-                DataPermissionTypeEnum roleDataPermissionType = this.searchRoleDataPermissionByPrivilege(roleId,
-                        sysPrivilege, schoolId);
+            for (SysRole sysRole : sysRoleList) {
+                DataPermissionTypeEnum roleDataPermissionType = this.searchRoleDataPermissionByPrivilege(sysRole, sysPrivilege, schoolId);
                 if (Objects.nonNull(roleDataPermissionType)) {
                     // 角色数据权限不为空时,筛选出所有角色在该url中的最大范围数据权限为该url的最终数据权限
                     int weight = roleDataPermissionType.getWeight();
@@ -159,20 +156,24 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
                     }
                 }
             }
-            if (Objects.nonNull(finalPermissionType)) {
-                // 最终数据权限不为空
-                SysUser requestUser = sysUserService.getById(requestUserId);
-                switch (finalPermissionType) {
+
+            // 默认为本人数据权限
+            if (Objects.isNull(finalPermissionType)) {
+                finalPermissionType = DataPermissionTypeEnum.SELF;
+            }
+            // 最终数据权限不为空
+            SysUser requestUser = sysUserService.getById(requestUserId);
+            switch (finalPermissionType) {
                 case SELF:
                     // 只能看自己创建的
                     result.setRequestUserId(requestUserId);
                     break;
+                case SELF_COURSE:
+                    // todo 课程数据权限
                 case SELF_ORG:
                     // 只能看自己所在机构
                     Long orgId = requestUser.getOrgId();
-                    Set<Long> orgIdSet = new HashSet<>();
-                    orgIdSet.add(orgId);
-                    result.setOrgIdSet(orgIdSet);
+                    result.setOrgIdSet(new HashSet<>(Arrays.asList(orgId)));
                     break;
                 case SELF_ORG_BELOW:
                     // 只能看自己所在机构和所辖机构
@@ -180,7 +181,6 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
                     break;
                 default:
                     break;
-                }
             }
         }
         return result;
@@ -189,57 +189,49 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
     /**
      * 递归搜索角色的数据权限
      *
-     * @param roleId    角色id
+     * @param sysRole   角色对象
      * @param privilege url权限
      * @return 角色数据权限规则
      */
-    private DataPermissionTypeEnum searchRoleDataPermissionByPrivilege(Long roleId, SysPrivilege privilege, Long schoolId) {
+    private DataPermissionTypeEnum searchRoleDataPermissionByPrivilege(SysRole sysRole, SysPrivilege privilege, Long schoolId) {
         Long privilegeId = privilege.getId();
         PrivilegeEnum type = privilege.getType();
         // 如果是菜单,搜索该菜单是否绑定了数据权限
         if (PrivilegeEnum.MENU.equals(type)) {
-            SysRole sysRole = sysRoleService.getById(roleId);
             QueryWrapper<BasicRoleDataPermission> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(BasicRoleDataPermission::getRoleId, roleId)
-                    .eq(BasicRoleDataPermission::getPrivilegeId, privilegeId)
-                    .eq(BasicRoleDataPermission::getSchoolId, schoolId);
+            LambdaQueryWrapper<BasicRoleDataPermission> lambda = queryWrapper.lambda();
+            lambda.eq(BasicRoleDataPermission::getRoleId, sysRole.getId())
+                    .eq(BasicRoleDataPermission::getPrivilegeId, privilegeId);
+            if (sysRole.getDefaultRole()) {
+                lambda.isNull(BasicRoleDataPermission::getSchoolId);
+            } else {
+                lambda.eq(BasicRoleDataPermission::getSchoolId, schoolId);
+            }
             BasicRoleDataPermission basicRoleDataPermission = this.getOne(queryWrapper);
             if (Objects.nonNull(basicRoleDataPermission)) {
                 // 有数据权限
                 return basicRoleDataPermission.getDataPermissionType();
-            } else if (sysRole.getDefaultRole()) {
-                // 查询默认
-                BasicRoleDataPermission defaultBasicRoleDataPermission = this.getOne(new QueryWrapper<BasicRoleDataPermission>().lambda()
-                        .eq(BasicRoleDataPermission::getRoleId, roleId)
-                        .eq(BasicRoleDataPermission::getPrivilegeId, privilegeId).isNull(BasicRoleDataPermission::getSchoolId));
-                if (Objects.nonNull(defaultBasicRoleDataPermission)) {
-                    // 有数据权限
-                    return defaultBasicRoleDataPermission.getDataPermissionType();
-                }
             }
         }
         // 如果该url不是菜单类型则查询其父目录
-        return getDataPermissionRule(roleId, privilege, schoolId);
+        return getDataPermissionRule(sysRole, privilege, schoolId);
     }
 
     /**
      * 查询父菜单是否包含数据权限
      *
-     * @param roleId    角色id
+     * @param sysRole   角色对象
      * @param privilege 权限
      * @return 数据权限规则
      */
-    private DataPermissionTypeEnum getDataPermissionRule(Long roleId, SysPrivilege privilege, Long schoolId) {
+    private DataPermissionTypeEnum getDataPermissionRule(SysRole sysRole, SysPrivilege privilege, Long schoolId) {
         Long parentId = privilege.getParentId();
         if (SystemConstant.longNotNull(parentId)) {
             SysPrivilege parent = sysPrivilegeService.getById(parentId);
             if (Objects.nonNull(parent)) {
-                return this.searchRoleDataPermissionByPrivilege(roleId, parent, schoolId);
-            } else {
-                return null;
+                return this.searchRoleDataPermissionByPrivilege(sysRole, parent, schoolId);
             }
-        } else {
-            return null;
         }
+        return DataPermissionTypeEnum.SELF;
     }
 }

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

@@ -18,12 +18,12 @@ import com.qmth.teachcloud.common.mapper.SysRoleMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.security.NoSuchAlgorithmException;
@@ -319,20 +319,14 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     }
 
     @Override
-    public List<Long> getUserRoles(Long userId) {
-        QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(SysUserRole::getUserId, userId);
-        List<SysUserRole> sysUserRoles = sysUserRoleService.list(queryWrapper);
-        List<Long> list = new ArrayList<>();
-        if (sysUserRoles != null && sysUserRoles.size() > 0) {
-            list = sysUserRoles.stream().map(m -> m.getRoleId()).collect(Collectors.toList());
-        }
-        return list;
+    public List<Long> listUserRoleIds(Long userId) {
+        List<SysRole> sysRoleList = listRolesByUserId(userId);
+        return CollectionUtils.isEmpty(sysRoleList) ? new ArrayList<>() : sysRoleList.stream().map(SysRole::getId).collect(Collectors.toList());
     }
 
     @Override
-    public List<SysRole> listRolesByUserId(Long id) {
-        return this.baseMapper.listRolesByUserId(id);
+    public List<SysRole> listRolesByUserId(Long userId) {
+        return this.baseMapper.listRolesByUserId(userId);
     }
 
     @Override

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

@@ -264,7 +264,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         String schoolCode = null;
         basicSchool = basicSchoolService.getById(sysUser.getSchoolId());
         if (Objects.isNull(basicSchool)) {
-            List<Long> userRoles = sysRoleService.getUserRoles(sysUser.getId());
+            List<Long> userRoles = sysRoleService.listUserRoleIds(sysUser.getId());
             List<SysRole> sysRoleList = sysRoleService.list(new QueryWrapper<SysRole>().lambda().in(SysRole::getId, userRoles));
             Set<RoleTypeEnum> roleType = sysRoleList.stream().map(SysRole::getType).collect(Collectors.toSet());
             if (roleType.contains(RoleTypeEnum.ADMIN)) {

+ 2 - 2
teachcloud-common/src/main/resources/mapper/BasicOperationLogMapper.xml

@@ -20,7 +20,7 @@
             <if test="schoolId != null">
                 AND bol.school_id = #{schoolId}
             </if>
-            <if test="customizedOperationType != null">
+            <if test="operationType != null">
                 AND bol.operation_type = #{operationType}
             </if>
             <if test="startTime != null">
@@ -30,7 +30,7 @@
                 AND #{endTime} >= bol.create_time
             </if>
             <if test="operatorName != null and operatorName != ''">
-                AND su.login_name LIKE CONCAT('%',#{operatorName},'%')
+                AND (su.real_name LIKE CONCAT('%',#{operatorName},'%') OR su.login_name LIKE CONCAT('%',#{operatorName},'%'))
             </if>
             <if test="dpr != null">
                 <if test="dpr.requestUserId != null">

+ 10 - 9
teachcloud-common/src/main/resources/mapper/SysRoleMapper.xml

@@ -24,17 +24,18 @@
     </sql>
 
     <select id="listRolesByUserId" resultMap="BaseResultMap">
-        SELECT distinct
-            a.id,
-            a.name,
-            a.type,
-            a.default_role
+        SELECT
+            sr.*
         FROM
-            sys_role a
-                JOIN
-            sys_user_role b ON a.id = b.role_id
+            sys_role sr
         WHERE
-            b.user_id = #{id}
+            EXISTS( SELECT
+                        1
+                    FROM
+                        sys_user_role sur
+                    WHERE
+                        sr.id = sur.role_id AND sur.user_id = #{userId})
+
     </select>
 
     <select id="listPage" resultMap="BaseResultMap">

+ 1 - 1
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysRoleController.java

@@ -112,7 +112,7 @@ public class SysRoleController {
     @ApiOperation(value = "用户已绑定角色列表")
     @RequestMapping(value = "/get_user_roles", method = RequestMethod.POST)
     public Result getUserRoles(@RequestParam(value = "userId", required = true) Long userId) {
-        return ResultUtil.ok(sysRoleService.getUserRoles(userId));
+        return ResultUtil.ok(sysRoleService.listUserRoleIds(userId));
     }
 }