wangliang 3 年之前
父节点
当前提交
0197d1dc73

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

@@ -138,7 +138,6 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     @Transactional
     @Override
     public boolean saveRoleNew(SysRole role) {
-        long start = System.currentTimeMillis();
         try {
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;

+ 14 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -400,7 +400,10 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         if (all) {
             for (Platform p : Platform.values()) {
-                Set<String> roleNames = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
+                Set<String> roleNamesSet = authBean.getRoleList().stream().map(s -> s.getName()).collect(Collectors.toSet());
+                List<String> roleNames = new ArrayList<>();
+                roleNames.addAll(roleNamesSet);
+                Collections.sort(roleNames);
                 String sessionId = SessionUtil.digest(userId, Math.abs(roleNames.toString().hashCode()), p.name());
                 tbSessionService.removeById(sessionId);
                 redisUtil.deleteUserSession(sessionId);
@@ -435,10 +438,12 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
                 while (max <= size) {
                     List<UserRoleNameResult> userRoleNameResultList = sysUserService.selectRoleNames(userIds.subList(min, max));
                     for (UserRoleNameResult userRoleNameResult : userRoleNameResultList) {
+                        List<String> roleNames = Arrays.asList(userRoleNameResult.getRoleNames().split(","));
+                        Collections.sort(roleNames);
                         for (Platform p : Platform.values()) {
                             String sessionId = null;
                             try {
-                                sessionId = SessionUtil.digest(userRoleNameResult.getUserId(), Math.abs(Arrays.asList(userRoleNameResult.getRoleNames().split(",")).toString().hashCode()), p.name());
+                                sessionId = SessionUtil.digest(userRoleNameResult.getUserId(), Math.abs(roleNames.toString().hashCode()), p.name());
                             } catch (NoSuchAlgorithmException e) {
                                 e.printStackTrace();
                             }
@@ -909,15 +914,18 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         String token = SystemConstant.getUuid();
         commonCacheService.userCache(sysUser.getId());
         //添加用户会话缓存
-        Set<String> roleNames = new HashSet<>(), roleTypes = new HashSet<>();
+        Set<String> roleNamesSet = new HashSet<>(), roleTypes = new HashSet<>();
         List<RoleResult> roleSource = new ArrayList<>();
         for (SysRole s : authBean.getRoleList()) {
-            roleNames.add(s.getName());
+            roleNamesSet.add(s.getName());
             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<>();
+        roleNames.addAll(roleNamesSet);
+        Collections.sort(roleNames);
         String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleNames.toString().hashCode()), platform.name());
         //TODO 测试用
 //        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
@@ -928,8 +936,8 @@ 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 : roleNames, appSource, roleSource);
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource, roleSource);
+//        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);
         loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? loginResult.new SchoolNativeBean(authBean.getSchool()) : null);
         loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
         loginResult.setTime(System.currentTimeMillis());

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

@@ -132,8 +132,18 @@ public class SsoApiController {
         SysRole sysRole = sysRoleService.getOne(sysRoleQueryWrapper);
         Optional.ofNullable(sysRole).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("角色数据为空"));
 
-        SysUserRole sysUserRole = new SysUserRole(sysUser.getId(), sysRole.getId());
-        sysUserRoleService.save(sysUserRole);
+        QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
+        sysUserRoleQueryWrapper.lambda().eq(SysUserRole::getUserId, sysUser.getId())
+                .eq(SysUserRole::getRoleId, sysRole.getId());
+        SysUserRole sysUserRole = sysUserRoleService.getOne(sysUserRoleQueryWrapper);
+        if (Objects.isNull(sysUserRole)) {
+            sysUserRole = new SysUserRole(sysUser.getId(), sysRole.getId());
+            sysUserRoleService.save(sysUserRole);
+        } else {
+            if (!sysUser.getEnable()) {
+                sysUserRoleService.removeById(sysUserRole);
+            }
+        }
 
         UserAuthenticationDto userAuthenticationDto = new UserAuthenticationDto(String.valueOf(sysUser.getId()), SystemConstant.getUuid());
         ThirdUserAuthCacheUtil.setAuthCode(userAuthenticationDto);

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

@@ -95,7 +95,7 @@ public class SysUserController {
     /**
      * 新增/修改
      *
-     * @param userSaveParams
+     * @param userSaveReportParams
      * @return
      */
     @ApiOperation(value = "新增/修改")

+ 2 - 2
teachcloud-report/src/main/resources/application-dev.properties

@@ -59,7 +59,7 @@ sys.config.customThreadPoolCoreSize=true
 sys.config.analyzeThreadPoolCoreSize=false
 sys.config.sessionActive=1h
 sys.config.reportUrl=http://localhost:9099/#/student-report/
-sys.config.loginAuthenUrl=http://192.168.10.175:8057/#/login-authen/
+sys.config.loginAuthenUrl=http://192.168.10.86:8057/#/login-authen/
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
 org.center.url=https://solar.qmth.com.cn
@@ -135,7 +135,7 @@ sms.config.aliyunSMSAuditOverdueCode=SMS_217416271
 yun.mark.url=https://www.markingcloud.com
 yun.mark.studentScoreApi=/api/exam/student/score
 
-print.open.hostUrl=http://127.0.0.1:7001
+print.open.hostUrl=http://192.168.10.86:7001
 print.open.callbackUrlApi=/api/admin/print/notify/analysis/progress
 print.open.callbackPwd=123456
 print.open.paperConfig=/api/admin/print/open/paper_config