浏览代码

fix:教研分析3.4.0升级

caozixuan 11 月之前
父节点
当前提交
f6214877e7

+ 9 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/CommonCacheService.java

@@ -49,6 +49,13 @@ public interface CommonCacheService {
      */
     public MenuResult userMenuCache(Long userId);
 
+    /**
+     * 添加用户菜单缓存
+     * @param userId userId
+     * @return 结果
+     */
+    public MenuResult userMenuCacheForReport(Long userId);
+
     /**
      * 修改用户菜单缓存
      *
@@ -95,6 +102,8 @@ public interface CommonCacheService {
      */
     public AuthBean userAuthCache(Long userId);
 
+    public AuthBean userAuthCacheForReport(Long userId);
+
     /**
      * 修改用户鉴权缓存
      *

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

@@ -34,4 +34,6 @@ public interface SysUserRoleService extends IService<SysUserRole> {
     void removeByUserId(Long id);
 
     MenuResult listByUserId();
+
+    MenuResult listByUserIdForReport();
 }

+ 22 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TeachcloudCommonService.java

@@ -28,6 +28,12 @@ public interface TeachcloudCommonService {
      */
     MenuResult getUserMenu(Long userId);
 
+    /**
+     * 获取用户菜单
+     *
+     * @param userId 用户ID
+     */
+    MenuResult getUserMenuForReport(Long userId);
     /**
      * 新增用户权限
      *
@@ -73,6 +79,13 @@ public interface TeachcloudCommonService {
      */
     AuthBean getUserAuth(Long userId);
 
+    /**
+     * 获取用户权限(教研分析用)
+     *
+     * @param userId 用户ID
+     */
+    AuthBean getUserAuthForReport(Long userId);
+
     /**
      * 获取鉴权url
      *
@@ -182,6 +195,15 @@ public interface TeachcloudCommonService {
      */
     LoginResult login(String password, SysUser sysUser, AppSourceEnum appSource) throws NoSuchAlgorithmException;
 
+    /**
+     * 登录公用
+     *
+     * @param password  密码
+     * @param sysUser   用户对象
+     * @param appSource 来源
+     */
+    LoginResult loginForReport(String password, SysUser sysUser, AppSourceEnum appSource) throws NoSuchAlgorithmException;
+
     /**
      * 校验用户是否包含某权限
      *

+ 12 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/CommonCacheServiceImpl.java

@@ -107,6 +107,12 @@ public class CommonCacheServiceImpl implements CommonCacheService {
         return commonService.getUserMenu(userId);
     }
 
+    @Override
+    @Cacheable(value = SystemConstant.USER_MENU_CACHE, key = "#p0", unless = "#result == null")
+    public MenuResult userMenuCacheForReport(Long userId) {
+        return commonService.getUserMenuForReport(userId);
+    }
+
     /**
      * 修改用户菜单缓存
      *
@@ -177,6 +183,12 @@ public class CommonCacheServiceImpl implements CommonCacheService {
         return commonService.getUserAuth(userId);
     }
 
+    @Override
+    @Cacheable(value = SystemConstant.USER_OAUTH_CACHE, key = "#p0", unless = "#result == null")
+    public AuthBean userAuthCacheForReport(Long userId) {
+        return commonService.getUserAuthForReport(userId);
+    }
+
     /**
      * 修改用户鉴权缓存
      *

+ 6 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserRoleServiceImpl.java

@@ -68,4 +68,10 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         return commonCacheService.userMenuCache(sysUser.getId());
     }
+
+    @Override
+    public MenuResult listByUserIdForReport() {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return commonCacheService.userMenuCacheForReport(sysUser.getId());
+    }
 }

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

@@ -77,6 +77,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
     FileStoreUtil fileStoreUtil;
     @Resource
     SysUserService sysUserService;
+    @Resource
+    TSchoolPrivilegeService tSchoolPrivilegeService;
 
     /**
      * 获取用户菜单
@@ -168,6 +170,77 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         return new MenuResult(sysUser.getId(), menuPrivilegeDtoList);
     }
 
+    @Override
+    public MenuResult getUserMenuForReport(Long userId) {
+        SysUser sysUser = commonCacheService.userCache(userId);
+        List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(userId);
+        List<SysRolePrivilege> sysRolePrivilegeList = new ArrayList<>();
+        for (SysUserRole s : sysUserRoleList) {
+            SysRole sysRole = commonCacheService.roleCache(s.getRoleId());
+            if (Objects.nonNull(sysRole) && sysRole.getEnable()) {
+                sysRolePrivilegeList.addAll(commonCacheService.rolePrivilegeCache(sysUser.getSchoolId(), s.getRoleId()));
+            }
+        }
+        Set<Long> privilegeIds = sysRolePrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toSet());
+        QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
+        sysPrivilegeQueryWrapper.lambda()
+                .eq(SysPrivilege::getEnable, true).eq(SysPrivilege::getFrontDisplay, true)
+                .orderByAsc(SysPrivilege::getSequence);
+
+        if (!privilegeIds.isEmpty()) {
+            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);
+    }
+
     /**
      * 新增用户权限
      *
@@ -318,6 +391,63 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         return authBean;
     }
 
+    @Override
+    public AuthBean getUserAuthForReport(Long userId) {
+        AuthBean authBean = null;
+        try {
+            CommonCacheService commonCacheService = SpringContextHolder.getBean(CommonCacheService.class);
+            SysUser user = commonCacheService.userCache(userId);
+            if (Objects.isNull(user)) {
+                throw ExceptionResultEnum.USER_NO_DATA.exception();
+            }
+            //查询用户角色和权限
+            List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(user.getId());
+            if (Objects.nonNull(sysUserRoleList) && sysUserRoleList.size() > 0) {
+                Set<Long> roleIds = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
+                List<SysRolePrivilege> sysRolePrivilegeList = new ArrayList<>();
+                for (Long l : roleIds) {
+                    sysRolePrivilegeList.addAll(commonCacheService.rolePrivilegeCache(user.getSchoolId(), l));
+                }
+                Set<Long> privilegeIds = sysRolePrivilegeList.stream().map(SysRolePrivilege::getPrivilegeId).collect(Collectors.toSet());
+                QueryWrapper<SysRole> sysRoleQueryWrapper = new QueryWrapper<>();
+                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 -> Objects.equals(s.getName(), RoleTypeEnum.ADMIN.getName())).count() :
+                        0;
+                QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
+                if (count > 0) {//超级系统管理员
+                    //                    Long schoolId = Long.parseLong(ServletUtil.getRequestSchoolByNotVaild().toString());
+                    sysPrivilegeQueryWrapper.lambda()
+                            //                            .eq(SysPrivilege::getSchoolId, schoolId)
+                            .eq(SysPrivilege::getType, PrivilegeEnum.URL)
+                            .eq(SysPrivilege::getProperty, PrivilegePropertyEnum.AUTH);
+                    List<SysPrivilege> sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
+                    authBean = new AuthBean(sysRoleList,
+                            sysPrivilegeList.stream().map(SysPrivilege::getUrl).collect(Collectors.toSet()));
+                } else {
+                    BasicSchool tbSchool = Objects.nonNull(user.getSchoolId()) ?
+                            commonCacheService.schoolCache(user.getSchoolId()) :
+                            null;
+                    SysOrg org = Objects.nonNull(user.getOrgId()) ? commonCacheService.orgCache(user.getOrgId()) : null;
+                    List<SysPrivilege> sysPrivilegeList = new ArrayList<>();
+                    if (privilegeIds.size() > 0) {
+                        sysPrivilegeQueryWrapper.lambda().in(SysPrivilege::getId, privilegeIds)
+                                .eq(SysPrivilege::getType, PrivilegeEnum.URL)
+                                .eq(SysPrivilege::getProperty, PrivilegePropertyEnum.AUTH);
+                        sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
+                    }
+                    authBean = new AuthBean(sysRoleList,
+                            sysPrivilegeList.stream().map(SysPrivilege::getUrl).collect(Collectors.toSet()), tbSchool, org);
+                }
+            }
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            throw ExceptionResultEnum.ERROR.exception("添加用户鉴权缓存失败");
+        }
+        return authBean;
+    }
+
     /**
      * 获取鉴权url
      *
@@ -699,7 +829,9 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
             if (Objects.isNull(s.getSource()) && Objects.nonNull(s.getType())) {
                 roleTypes.add(s.getType().name());
             }
-            roleSource.add(Objects.nonNull(s.getType()) ? new RoleResult(s.getId(), s.getName(), s.getType().name(), s.getSource()) : new RoleResult(s.getId(), s.getName(), s.getSource()));
+            roleSource.add(Objects.nonNull(s.getType()) ?
+                    new RoleResult(s.getId(), s.getName(), s.getType().name(), s.getSource()) :
+                    new RoleResult(s.getId(), s.getName(), s.getSource()));
         }
         List<String> roleNames = new ArrayList<>();
         roleNames.addAll(roleNamesSet);
@@ -714,10 +846,16 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         tbSessionService.saveOrUpdate(tbSession);
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
-//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNamesSet, appSource, roleSource);
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNamesSet, appSource, roleSource, SystemConstant.VERSION_VALUE);
-        loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? Lists.newArrayList(loginResult.new SchoolNativeBean(authBean.getSchool())) : null);
-        loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
+//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test,
+//                Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNamesSet, appSource, roleSource);
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, token,
+                Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNamesSet, appSource, roleSource,
+                SystemConstant.VERSION_VALUE);
+        loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ?
+                Lists.newArrayList(loginResult.new SchoolNativeBean(authBean.getSchool())) :
+                null);
+        loginResult.setOrgInfo(
+                Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
         loginResult.setRole(role);
         loginResult.setTime(System.currentTimeMillis());
         String mobileNumber = sysUser.getMobileNumber();
@@ -729,8 +867,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         loginResult.setUserLoginCheckResult(new UserLoginCheckResult(sysUser.getId(), mobileNumber, pwdCount));
 //        //TODO 西交大切换学校定制
 //        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
-//        sysUserQueryWrapper.lambda().eq(SysUser::getLoginName, sysUser.getLoginName())
-//                .eq(SysUser::getEnable, true);
+//        sysUserQueryWrapper.lambda().eq(SysUser::getLoginName, sysUser.getLoginName()).eq(SysUser::getEnable, true);
 //        List<SysUser> sysUserList = sysUserService.list(sysUserQueryWrapper);
 //        if (sysUserList.size() > 1) {
 //            List<LoginResult.SchoolNativeBean> schoolNativeBeanList = new ArrayList<>(sysUserList.size());
@@ -743,6 +880,62 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         return loginResult;
     }
 
+    @Override
+    public LoginResult loginForReport(String password, SysUser sysUser, AppSourceEnum appSource)
+            throws NoSuchAlgorithmException {
+        //停用
+        if (!sysUser.getEnable()) {
+            throw ExceptionResultEnum.USER_ENABLE.exception();
+        }
+
+        Platform platform = ServletUtil.getRequestPlatform();
+        String deviceId = ServletUtil.getRequestDeviceId();
+        AuthBean authBean = commonService.getUserAuthForReport(sysUser.getId());
+        //添加用户鉴权缓存
+        if (Objects.isNull(authBean)) {
+            throw ExceptionResultEnum.ROLE_ENABLE_AUTHORIZATION.exception();
+        }
+        //生成token
+        String token = SystemConstant.getNanoId();
+        commonCacheService.userCache(sysUser.getId());
+        //添加用户会话缓存
+        Set<String> roleNamesSet = new HashSet<>(), roleTypes = new HashSet<>(), role = new HashSet<>();
+        List<RoleResult> roleSource = new ArrayList<>();
+        for (SysRole s : authBean.getRoleList()) {
+            roleNamesSet.add(s.getName());
+            if (s.getType() != null) {
+                role.add(s.getType().name());
+            }
+            if (Objects.isNull(s.getSource()) && Objects.nonNull(s.getType())) {
+                roleTypes.add(s.getType().name());
+            }
+            roleSource.add(Objects.nonNull(s.getType()) ? new RoleResult(s.getId(), s.getName(), s.getType().name(), s.getSource()) : new RoleResult(s.getId(), s.getName(), s.getSource()));
+        }
+        List<String> roleNames = new ArrayList<>(roleNamesSet);
+        Collections.sort(roleNames);
+        String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleNames.toString().hashCode()), platform.name());
+        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,
+                expireTime.getDate().getTime(), appSource);
+        tbSessionService.saveOrUpdate(tbSession);
+        redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, token,
+                roleTypes.size() > 0 ? roleTypes : roleNamesSet, appSource, roleSource, SystemConstant.VERSION_VALUE);
+        loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? Lists.newArrayList(loginResult.new SchoolNativeBean(authBean.getSchool())) : null);
+        loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
+        loginResult.setRole(role);
+        loginResult.setTime(System.currentTimeMillis());
+        String mobileNumber = sysUser.getMobileNumber();
+        int pwdCount = sysUser.getPwdCount();
+        if (roleTypes.contains(RoleTypeEnum.ADMIN.name())) {
+            mobileNumber = sysUser.getLoginName() + "(特殊权限)";
+            pwdCount = 1;
+        }
+        loginResult.setUserLoginCheckResult(new UserLoginCheckResult(sysUser.getId(), mobileNumber, pwdCount));
+        return loginResult;
+    }
+
     @Override
     public boolean containsPrivilege(Long userId, String button, String selectStudent) {
         MenuResult menuResult = commonCacheService.userMenuCache(userId);

+ 9 - 3
teachcloud-report/install/mysql/init/teachreport_db.sql

@@ -5,6 +5,8 @@ USE teachreport_db;
 DROP TABLE IF EXISTS `basic_attachment`;
 CREATE TABLE `basic_attachment` (
                                     `id` bigint NOT NULL,
+                                    `school_id` bigint DEFAULT NULL COMMENT '学校id',
+                                    `org_id` bigint DEFAULT NULL COMMENT '机构id',
                                     `name` varchar(100) NOT NULL COMMENT '文件名',
                                     `type` varchar(10) NOT NULL COMMENT '文件类型',
                                     `size` int NOT NULL COMMENT '单位(KB)',
@@ -12,6 +14,8 @@ CREATE TABLE `basic_attachment` (
                                     `path` varchar(2000) NOT NULL COMMENT '存储路径',
                                     `create_id` bigint DEFAULT NULL COMMENT '创建人',
                                     `create_time` bigint DEFAULT NULL COMMENT '创建时间',
+                                    `update_id` bigint DEFAULT NULL COMMENT '更新人',
+                                    `update_time` bigint DEFAULT NULL COMMENT '更新时间',
                                     `obj_id` bigint DEFAULT NULL COMMENT '关联业务id',
                                     PRIMARY KEY (`id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='所有附件记录表';
@@ -79,6 +83,7 @@ CREATE TABLE `basic_school` (
                                 `default_school` TINYINT(1) NULL DEFAULT 0 COMMENT '默认学校',
                                 `has_paper_number` tinyint(1) DEFAULT '0' COMMENT '该学校是否有固定试卷编号',
                                 `background_image` VARCHAR(500) DEFAULT NULL COMMENT '学校首页背景图',
+                                `exam_task_instr` varchar(500) DEFAULT NULL COMMENT '广药命题界面提示信息',
                                 PRIMARY KEY (`id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校基础表';
 
@@ -268,22 +273,23 @@ CREATE TABLE `sys_user` (
                             `school_id` bigint DEFAULT NULL COMMENT '学校ID',
                             `login_name` varchar(100) NOT NULL COMMENT '用户名',
                             `real_name` varchar(100) NOT NULL COMMENT '姓名',
+                            `code` varchar(100) DEFAULT NULL COMMENT '工号',
                             `password` varchar(50) NOT NULL COMMENT '密码',
                             `mobile_number` varchar(30) DEFAULT NULL COMMENT '手机号',
                             `org_id` bigint DEFAULT NULL,
                             `enable` tinyint NOT NULL DEFAULT '1' COMMENT 'false-禁用,true-启用',
+                            `pwd_count` tinyint DEFAULT '0' COMMENT '密码修改次数,默认为0',
                             `pwd_update_time` bigint DEFAULT NULL COMMENT '密码修改时间',
                             `remark` varchar(200) DEFAULT NULL COMMENT '备注',
                             `create_id` bigint DEFAULT NULL COMMENT '创建人',
                             `create_time` bigint DEFAULT NULL COMMENT '创建时间',
                             `update_id` bigint DEFAULT NULL,
                             `update_time` bigint DEFAULT NULL,
-                            `code` varchar(100) DEFAULT NULL COMMENT '工号',
-                            `pwd_count` tinyint DEFAULT '0' COMMENT '密码修改次数,默认为0',
                             `sync_status` varchar(100) DEFAULT NULL COMMENT '同步状态,NEED_PUSH_AGAIN("需要重新推送"),',
                             `historic_name` varchar(100) DEFAULT NULL COMMENT '历史用户名称',
                             `ui_setting` text COMMENT '阅卷参数',
                             `allow_manual_card` tinyint(1) DEFAULT '0' COMMENT '是否允许新增卡格式',
+                            `allow_course_scan` tinyint(1) DEFAULT '1' COMMENT '是否允许识别课程条码',
                             PRIMARY KEY (`id`) USING BTREE,
                             UNIQUE KEY `user_schoolId_loginName_idx` (`school_id`,`login_name`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
@@ -1712,7 +1718,7 @@ INSERT INTO `sys_role_privilege` VALUES (210, 4, 333, 1, null);
 INSERT INTO `sys_role_privilege` VALUES (211, 4, 250, 1, null);
 INSERT INTO `sys_role_privilege` VALUES (212, 4, 278, 1, null);
 
-INSERT INTO `sys_user` VALUES (1, NULL, 'sysadmin', 'sysadmin', 'UW10aDg3ODYzNTc3', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL);
+INSERT INTO `sys_user` (id, login_name, real_name, password, enable, sync_status) VALUES ('1', 'sysadmin', 'sysadmin', 'UW10aDg3ODYzNTc3', '1', '0');
 
 INSERT INTO `sys_user_role` VALUES (1, 1, 1, NULL, 1);
 

+ 14 - 0
teachcloud-report/install/mysql/upgrade/3.4.0.sql

@@ -0,0 +1,14 @@
+ALTER TABLE basic_attachment
+    ADD COLUMN school_id BIGINT NULL COMMENT '学校id' AFTER id,
+    ADD COLUMN org_id BIGINT NULL COMMENT '机构id' AFTER school_id,
+    ADD COLUMN update_id BIGINT NULL COMMENT '更新人' AFTER create_time,
+    ADD COLUMN update_time BIGINT NULL COMMENT '更新时间' AFTER update_id;
+
+
+ALTER TABLE sys_user
+    ADD COLUMN allow_course_scan TINYINT(1) NULL DEFAULT '1' COMMENT '是否允许识别课程条码' AFTER allow_manual_card,
+    CHANGE COLUMN code code VARCHAR(100) NULL COMMENT '工号' AFTER real_name,
+    CHANGE COLUMN pwd_count pwd_count TINYINT NULL DEFAULT '0' COMMENT '密码修改次数,默认为0' AFTER enable;
+
+ALTER TABLE basic_school
+    ADD COLUMN exam_task_instr VARCHAR(500) NULL COMMENT '广药命题界面提示信息' AFTER background_image;

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

@@ -182,7 +182,7 @@ public class SsoApiController {
         if (Objects.isNull(userAuthCode) || !Objects.equals(values[1], URLDecoder.decode(SignatureEntityTest.encrypt(userAuthCode), SystemConstant.CHARSET_NAME))) {
             throw ExceptionResultEnum.ERROR.exception("临时授权码已过期");
         }
-        LoginResult loginResult = teachcloudCommonService.login(sysUser.getPassword(), sysUser, appSource);
+        LoginResult loginResult = teachcloudCommonService.loginForReport(sysUser.getPassword(), sysUser, appSource);
         loginResult.setReturnUrl(ThirdUserAuthCacheUtil.getAuthReturnUrl(String.valueOf(sysUser.getId())));
         ThirdUserAuthCacheUtil.deleteAuthCode(values[0]);
         SystemConstant.deleteUserCache(sysUser.getId());

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

@@ -118,7 +118,7 @@ public class SysController {
 
         if (Objects.equals(login.getSchoolCode().toUpperCase(), RoleTypeEnum.ADMIN.name())) {
             userList.forEach(o -> {
-                AuthBean authBean = teachcloudCommonService.getUserAuth(o.getId());
+                AuthBean authBean = teachcloudCommonService.getUserAuthForReport(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)) {
@@ -160,7 +160,7 @@ public class SysController {
         if (!password.equals(sysUser.getPassword())) {
             throw ExceptionResultEnum.ERROR.exception("用户名或密码错误");
         }
-        return ResultUtil.ok(teachcloudCommonService.login(login.getPassword(), sysUser, AppSourceEnum.SYSTEM));
+        return ResultUtil.ok(teachcloudCommonService.loginForReport(login.getPassword(), sysUser, AppSourceEnum.SYSTEM));
     }
 
     /**
@@ -314,7 +314,7 @@ public class SysController {
     @ApiOperation(value = "查询用户权限")
     @RequestMapping(value = "/get_menu", method = RequestMethod.POST)
     public Result getMenu() {
-        return ResultUtil.ok(sysUserRoleService.listByUserId());
+        return ResultUtil.ok(sysUserRoleService.listByUserIdForReport());
     }
 
     @ApiOperation(value = "获取服务器时间")

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

@@ -114,7 +114,7 @@ public class TeachcloudReportAuthenticationService implements AuthorizationServi
                                   HttpServletRequest request,
                                   HttpServletResponse response) {
         //验证权限
-        AuthBean authBean = type.contains(SystemConstant.USER_OAUTH_CACHE) ? authBean = commonCacheService.userAuthCache(userId) : null;
+        AuthBean authBean = type.contains(SystemConstant.USER_OAUTH_CACHE) ? authBean = commonCacheService.userAuthCacheForReport(userId) : null;
         if (Objects.isNull(authBean)) {
             throw ExceptionResultEnum.ROLE_ENABLE_AUTHORIZATION.exception();
         }