管理员、机关人员(教务部)看全部;教员看本人;学员看本人。
+ */ +@Component +public class JwglRoleHelper { + + @Resource + private JYBMapper jybMapper; + + @Resource + private XYXXMapper xyxxMapper; + + @Resource + private JYSDLBMapper jysdlbMapper; + + public boolean isAdmin() { + try { + if (SecurityUtils.isAdmin()) { + return true; + } + return hasRoleKey(Constants.SUPER_ADMIN); + } catch (Exception ex) { + return false; + } + } + + public boolean isDepartmentPersonnel() { + return isAdmin() || hasRoleKey(ROLE_DEPARTMENT_PERSONNEL); + } + + public boolean isResearchOffice() { + if (isDepartmentPersonnel()) { + return false; + } + if (hasRoleKey(ROLE_RESEARCH_OFFICE)) { + return true; + } + if (hasRoleKey(ROLE_TEACHER)) { + return false; + } + return StringUtils.isNotEmpty(findResearchOfficeId()); + } + + public boolean isTeacher() { + return !isDepartmentPersonnel() && !isResearchOffice() && hasRoleKey(ROLE_TEACHER); + } + + public boolean isStudent() { + return !isDepartmentPersonnel() && !hasRoleKey(ROLE_TEACHER) && hasRoleKey(ROLE_STUDENT); + } + + public String requireTeacherId() { + String teacherId = findTeacherId(); + if (StringUtils.isEmpty(teacherId)) { + throw new ServiceException("当前登录用户不是教员,无法查看教员数据", FORBIDDEN); + } + return teacherId; + } + + public String requireResearchOfficeId() { + String officeId = findResearchOfficeId(); + if (StringUtils.isEmpty(officeId)) { + throw new ServiceException("当前登录用户不是教研室账号,无法审批本室申请", FORBIDDEN); + } + return officeId; + } + + public String findResearchOfficeId() { + try { + String username = SecurityUtils.getUsername(); + if (StringUtils.isEmpty(username) || jysdlbMapper == null) { + return null; + } + return jysdlbMapper.selectResearchOfficeIdByAccount(username); + } catch (Exception ignored) { + return null; + } + } + + public String requireStudentId() { + String studentId = findStudentId(); + if (StringUtils.isEmpty(studentId)) { + throw new ServiceException("当前登录用户不是学员,无法查看学员数据", FORBIDDEN); + } + return studentId; + } + + public String findTeacherId() { + try { + String username = SecurityUtils.getUsername(); + if (StringUtils.isNotEmpty(username)) { + String fromLogin = jybMapper.selectTeacherIdByAccount(username); + if (StringUtils.isNotEmpty(fromLogin)) { + return fromLogin.trim(); + } + JYB byId = jybMapper.selectById(username); + if (byId != null) { + return byId.getJybh(); + } + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + SysUser user = loginUser.getUser(); + String nickName = user == null ? null : user.getNickName(); + if (StringUtils.isNotEmpty(nickName)) { + List