From fecd42aaaa078e31b45858dd7b19023a784f73a9 Mon Sep 17 00:00:00 2001 From: Mlxa0324 <mlx950324@163.com> Date: Wed, 26 Oct 2022 09:40:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=E9=87=8D?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ibeetl/jlw/web/IndexController.java | 290 ++++++++++++------ 1 file changed, 195 insertions(+), 95 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/web/IndexController.java b/web/src/main/java/com/ibeetl/jlw/web/IndexController.java index f1b9cdbf..fe5712bb 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/IndexController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/IndexController.java @@ -5,6 +5,7 @@ import cn.jlw.Interceptor.SCoreUser; import cn.jlw.Interceptor.TStudent; import cn.jlw.Interceptor.TTeacher; import cn.jlw.token.TokenService; +import cn.jlw.util.EnumUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSONObject; import com.auth0.jwt.JWT; @@ -15,6 +16,7 @@ import com.auth0.jwt.interfaces.Claim; import com.auth0.jwt.interfaces.DecodedJWT; import com.ibeetl.admin.core.entity.CoreOrg; import com.ibeetl.admin.core.entity.CoreUser; +import com.ibeetl.admin.core.enums.MenuEnums; import com.ibeetl.admin.core.file.FileService; import com.ibeetl.admin.core.rbac.UserLoginInfo; import com.ibeetl.admin.core.rbac.tree.MenuItem; @@ -49,7 +51,7 @@ import java.util.*; import static cn.jlw.Interceptor.AuthenticationInterceptor.getToken; import static cn.jlw.Interceptor.AuthenticationInterceptor.indexTokenMap; import static cn.jlw.token.TokenService.updateByIds; -import static com.ibeetl.admin.core.enums.MenuEnums.*; +import static com.ibeetl.admin.core.enums.MenuEnums.JT_S_02; import static com.ibeetl.admin.core.service.CorePlatformService.tokenSessionMap; @Controller @@ -678,6 +680,124 @@ public class IndexController { return view; } +// @PostMapping("/login.json") +// @ResponseBody +// public JsonResult login(HttpServletRequest request, HttpServletResponse response,String code, String password, Integer type, Long typeId) { +// UniversitiesCollegesJurisdictionExperimentalSystem uSystem = new UniversitiesCollegesJurisdictionExperimentalSystem(); +// uSystem.setType(type); +// uSystem.setTypeId(typeId); +// Cookie c1 = new Cookie("JSESSIONID", request.getSession().getId()); +// c1.setPath("/"); +// response.addCookie(c1); +// UserLoginInfo info = null; +// try { +// info = userService.login(code, password); +// }catch (Exception e){ +// return JsonResult.failMessage(e.getMessage()); +// } +// CoreUser user = info.getUser(); +// CoreOrg currentOrg = info.getOrgs().get(0); +// for (CoreOrg org : info.getOrgs()) { +// if (org.getId().equals(user.getOrgId())) { +// currentOrg = org; +// break; +// } +// } +// info.setCurrentOrg(currentOrg); +// +// if(null != user && !Arrays.asList(JT_S_01.name(), JT_S_04.name()).contains(user.getJobType1())){//非管理员(包含学校管理员、超管) +//// if(null != type && null != typeId){ +// UniversitiesColleges universitiesColleges = universitiesCollegesService.getByOrgId(user.getOrgId()); +// if(null != universitiesColleges && ((Integer)1).equals(universitiesColleges.getUniversitiesCollegesStatus())){ +// uSystem.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId()); +// uSystem.set("useTypes","1,2"); +// List<UniversitiesCollegesJurisdictionExperimentalSystem>uSystemList = universitiesCollegesJurisdictionExperimentalSystemService.getValues(uSystem); +// if(null != uSystemList && uSystemList.size()>0){ +// uSystem = uSystemList.get(0); +// } +// if(null != uSystem && null != uSystem.getUniversitiesCollegesJurisdictionExperimentalSystemId()){ +// if(uSystem.getUseStartTime().getTime() <= System.currentTimeMillis() && uSystem.getUseEndTime().getTime() > System.currentTimeMillis()){ +// String msg = ""; +// if("JT_S_02".equals(user.getJobType1())){//如果是老师 快到期通知 +// if(uSystem.getUseEndTime().getTime() - System.currentTimeMillis() < 259200000L){ //少于3天做通知 +// msg = "请注意,系统即将过期"; +// } +// } +// +// JsonResult jsonResult = new JsonResult(); +// jsonResult.setCode(JsonReturnCode.SUCCESS.getCode()); +// jsonResult.setMsg(msg); +// +// if(JT_S_02.equals(user.getJobType1())){//老师 +// Teacher teacher = teacherService.getByUserId(user.getId()); +// String token = tokenService.getToken(teacher); +// +// if(StringUtils.isNotBlank(token)){ +// +// String keyId = UUID.randomUUID().toString(); +// indexTokenMap.put(keyId,token); +// jsonResult.setData(keyId); +// +// //断token的尾巴 +// if(StringUtils.isNotBlank(token)){ +// if(token.split("\\.").length > 3){ +// String loginTime = token.split("\\.")[3]; +// token = token.replace("."+loginTime,""); +// } +// } +// +// // 登录信息存放Session +// webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); +// platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); +// tokenSessionMap.put(token,new Object[]{user, info.getCurrentOrg(), info.getOrgs(), uSystem}); +// return jsonResult; +// } +// +// }else if(JT_S_03.equals(user.getJobType1())){//学生 +// +// Student s = studentService.getByUserId(user.getId()); +// String token = tokenService.getToken(s); +// +// if(StringUtils.isNotBlank(token)){ +// +// String keyId = UUID.randomUUID().toString(); +// indexTokenMap.put(keyId,token); +// jsonResult.setData(keyId); +// +// //断token的尾巴 +// if(StringUtils.isNotBlank(token)){ +// if(token.split("\\.").length > 3){ +// String loginTime = token.split("\\.")[3]; +// token = token.replace("."+loginTime,""); +// } +// } +// +// tokenSessionMap.put(token,new Object[]{user, info.getCurrentOrg(), info.getOrgs(), uSystem}); +// } +// +// // 登录信息存放Session +// webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); +// platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); +// } +// +// return jsonResult; +// } +// } +// }else { +// return JsonResult.failMessage("登录失败,此院校不存在"); +// } +//// } +//// return JsonResult.failMessage("登录失败,没有此系统权限"); +// }else { +// // 记录登录信息到session +// this.platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); +// // 登录信息存放Session。这里可能是学校管理员 +// webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); +// } +// return JsonResult.success(); +// } + + @PostMapping("/login.json") @ResponseBody public JsonResult login(HttpServletRequest request, HttpServletResponse response,String code, String password, Integer type, Long typeId) { @@ -703,120 +823,100 @@ public class IndexController { } info.setCurrentOrg(currentOrg); - if(null != user && !Arrays.asList(JT_S_01.name(), JT_S_04.name()).contains(user.getJobType1())){//非管理员(包含学校管理员、超管) -// if(null != type && null != typeId){ - UniversitiesColleges universitiesColleges = universitiesCollegesService.getByOrgId(user.getOrgId()); - if(null != universitiesColleges && ((Integer)1).equals(universitiesColleges.getUniversitiesCollegesStatus())){ - uSystem.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId()); - uSystem.set("useTypes","1,2"); - List<UniversitiesCollegesJurisdictionExperimentalSystem>uSystemList = universitiesCollegesJurisdictionExperimentalSystemService.getValues(uSystem); - if(null != uSystemList && uSystemList.size()>0){ - uSystem = uSystemList.get(0); - } - if(null != uSystem && null != uSystem.getUniversitiesCollegesJurisdictionExperimentalSystemId()){ - if(uSystem.getUseStartTime().getTime() <= System.currentTimeMillis() && uSystem.getUseEndTime().getTime() > System.currentTimeMillis()){ - String msg = ""; - if("JT_S_02".equals(user.getJobType1())){//如果是老师 快到期通知 - if(uSystem.getUseEndTime().getTime() - System.currentTimeMillis() < 259200000L){ //少于3天做通知 - msg = "请注意,系统即将过期"; - } - } - JsonResult jsonResult = new JsonResult(); - jsonResult.setCode(JsonReturnCode.SUCCESS.getCode()); - jsonResult.setMsg(msg); + switch (EnumUtil.fromString(MenuEnums.class, user.getJobType1())) { - if(JT_S_02.equals(user.getJobType1())){//老师 - Teacher teacher = teacherService.getByUserId(user.getId()); - String token = tokenService.getToken(teacher); + // 超管和学校管理员 + case JT_S_01: + case JT_S_04: { + // 记录登录信息到session + this.platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); + // 登录信息存放Session。这里可能是学校管理员 + webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); + } break; - if(StringUtils.isNotBlank(token)){ + // 教师 + case JT_S_02: { - String keyId = UUID.randomUUID().toString(); - indexTokenMap.put(keyId,token); - jsonResult.setData(keyId); + // 验证使用权,是否到期 + UniversitiesColleges universitiesColleges = universitiesCollegesService.getByOrgId(user.getOrgId()); - //断token的尾巴 - if(StringUtils.isNotBlank(token)){ - if(token.split("\\.").length > 3){ - String loginTime = token.split("\\.")[3]; - token = token.replace("."+loginTime,""); - } - } + if (universitiesColleges == null) { + return JsonResult.failMessage("登录失败,此院校不存在"); + } - // 登录信息存放Session - webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); - platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); - tokenSessionMap.put(token,new Object[]{user, info.getCurrentOrg(), info.getOrgs(), uSystem}); - return jsonResult; + if(null != universitiesColleges && ((Integer)1).equals(universitiesColleges.getUniversitiesCollegesStatus())) { + uSystem.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId()); + uSystem.set("useTypes", "1,2"); + List<UniversitiesCollegesJurisdictionExperimentalSystem> uSystemList = universitiesCollegesJurisdictionExperimentalSystemService.getValues(uSystem); + if (null != uSystemList && uSystemList.size() > 0) { + uSystem = uSystemList.get(0); + } + if (null != uSystem && null != uSystem.getUniversitiesCollegesJurisdictionExperimentalSystemId()) { + if (uSystem.getUseStartTime().getTime() <= System.currentTimeMillis() && uSystem.getUseEndTime().getTime() > System.currentTimeMillis()) { + + //如果是老师 快到期通知 + if (JT_S_02.name().equals(user.getJobType1())) { + //少于3天做通知 + if (uSystem.getUseEndTime().getTime() - System.currentTimeMillis() < 259200000L) { + return JsonResult.successMessage("请注意,系统即将过期"); } + } + } + } + } - }else if(JT_S_03.equals(user.getJobType1())){//学生 + Teacher teacher = teacherService.getByUserId(user.getId()); + String teacherToken = tokenService.getToken(teacher); - Student s = studentService.getByUserId(user.getId()); - String token = tokenService.getToken(s); + if(StringUtils.isNotBlank(teacherToken)) { - if(StringUtils.isNotBlank(token)){ + String keyId = UUID.randomUUID().toString(); + indexTokenMap.put(keyId, teacherToken); - String keyId = UUID.randomUUID().toString(); - indexTokenMap.put(keyId,token); - jsonResult.setData(keyId); + //断token的尾巴 + if (StringUtils.isNotBlank(teacherToken)) { + if (teacherToken.split("\\.").length > 3) { + String loginTime = teacherToken.split("\\.")[3]; + teacherToken = teacherToken.replace("." + loginTime, ""); + } + } - //断token的尾巴 - if(StringUtils.isNotBlank(token)){ - if(token.split("\\.").length > 3){ - String loginTime = token.split("\\.")[3]; - token = token.replace("."+loginTime,""); - } - } + // 登录信息存放Session + webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); + platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); + tokenSessionMap.put(teacherToken, new Object[]{user, info.getCurrentOrg(), info.getOrgs(), uSystem}); + return JsonResult.success(keyId); + } + } break; - tokenSessionMap.put(token,new Object[]{user, info.getCurrentOrg(), info.getOrgs(), uSystem}); - } + // 学生 + case JT_S_03: { + Student s = studentService.getByUserId(user.getId()); + String studentToken = tokenService.getToken(s); - // 登录信息存放Session - webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); - platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); - } + if (StringUtils.isNotBlank(studentToken)) { - return jsonResult; + String keyId = UUID.randomUUID().toString(); + indexTokenMap.put(keyId, studentToken); + + //断token的尾巴 + if (StringUtils.isNotBlank(studentToken)) { + if (studentToken.split("\\.").length > 3) { + String loginTime = studentToken.split("\\.")[3]; + studentToken = studentToken.replace("." + loginTime, ""); } } - }else { - return JsonResult.failMessage("登录失败,此院校不存在"); - } -// } -// return JsonResult.failMessage("登录失败,没有此系统权限"); - }else { - // 记录登录信息到session - this.platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); - // 登录信息存放Session。这里可能是学校管理员 - webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); - } - return JsonResult.success(); - } -// @PostMapping("/login.json") - @ResponseBody - public JsonResult login2(String code, String password) { - UserLoginInfo info = null; - try { - info = userService.login(code, password); - } catch (Exception e) { - return JsonResult.failMessage(e.getMessage()); - } - CoreUser user = info.getUser(); - - CoreOrg currentOrg = info.getOrgs().get(0); - for (CoreOrg org : info.getOrgs()) { - if (org.getId().equals(user.getOrgId())) { - currentOrg = org; - break; - } + tokenSessionMap.put(studentToken, new Object[]{user, info.getCurrentOrg(), info.getOrgs(), uSystem}); + // 登录信息存放Session + webPlatformService.setUserInfoToSessionByIdentity(info.getUser()); + platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), uSystem); + return JsonResult.success(keyId); + } + } break; } - info.setCurrentOrg(currentOrg); - // 保存用户信息到Session中 - this.platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs(), null); return JsonResult.success(); }