Răsfoiți Sursa

代码优化

wangliang 4 ani în urmă
părinte
comite
2e2abb420a

+ 1 - 1
themis-backend/src/main/java/com/qmth/themis/backend/api/SysController.java

@@ -144,7 +144,7 @@ public class SysController {
         } else {
             if (Objects.nonNull(mapParameter.get(SystemConstant.UPLOAD_TYPE))) {
                 Integer fileId = UploadFileEnum.convertToId((String) mapParameter.get(SystemConstant.UPLOAD_TYPE));
-                if (fileId == 3) {
+                if (fileId.intValue() == 3) {
                     url = dictionaryConfig.aliYunOssDomain().getPrivateUrl() + File.separator + filePath;
                 } else {
                     url = dictionaryConfig.aliYunOssDomain().getPublicUrl() + File.separator + filePath;

+ 21 - 21
themis-backend/src/main/java/com/qmth/themis/backend/api/TBUserController.java

@@ -81,11 +81,11 @@ public class TBUserController {
 
     @ApiOperation(value = "用户登录接口")
     @RequestMapping(value = "/login/account", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "用户信息", response = TBUser.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = TBUser.class)})
     public Result login(
-            @ApiJsonObject(name = "loginAccount", value = { @ApiJsonProperty(key = "loginName", description = "登录名"),
+            @ApiJsonObject(name = "loginAccount", value = {@ApiJsonProperty(key = "loginName", description = "登录名"),
                     @ApiJsonProperty(key = "password", description = "密码"),
-                    @ApiJsonProperty(key = "code", description = "机构代码") }) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> mapParameter)
+                    @ApiJsonProperty(key = "code", description = "机构代码")}) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> mapParameter)
             throws NoSuchAlgorithmException {
         if (Objects.isNull(mapParameter)) {
             throw new BusinessException(ExceptionResultEnum.USER_INFO_IS_NULL);
@@ -155,7 +155,7 @@ public class TBUserController {
 
     @ApiOperation(value = "短信验证码登陆接口")
     @RequestMapping(value = "/login/verifyCode", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "用户信息", response = TBUser.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = TBUser.class)})
     public Result verifyCode(@ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> mapParameter)
             throws NoSuchAlgorithmException {
         if (Objects.isNull(mapParameter.get("loginName")) || Objects.equals(mapParameter.get("loginName"), "")) {
@@ -538,7 +538,7 @@ public class TBUserController {
 
     @ApiOperation(value = "登出接口")
     @RequestMapping(value = "/logout", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     public Result logout() throws NoSuchAlgorithmException {
         TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
         TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
@@ -572,14 +572,14 @@ public class TBUserController {
     //    @CachePut(value = "user_cache", key = "'userCacheQuery'")
     @ApiOperation(value = "用户查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "用户信息", response = TBUserDto.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = TBUserDto.class)})
     public Result query(@ApiParam(value = "用户id", required = false) @RequestParam(required = false) Long id,
-            @ApiParam(value = "登录名", required = false) @RequestParam(required = false) String loginName,
-            @ApiParam(value = "姓名", required = false) @RequestParam(required = false) String name,
-            @ApiParam(value = "角色", required = false) @RequestParam(required = false) String roleCode,
-            @ApiParam(value = "是否启用", required = false) @RequestParam(required = false) Integer enable,
-            @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
-            @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
+                        @ApiParam(value = "登录名", required = false) @RequestParam(required = false) String loginName,
+                        @ApiParam(value = "姓名", required = false) @RequestParam(required = false) String name,
+                        @ApiParam(value = "角色", required = false) @RequestParam(required = false) String roleCode,
+                        @ApiParam(value = "是否启用", required = false) @RequestParam(required = false) Integer enable,
+                        @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
+                        @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
         TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
         IPage<TBUserDto> tbUserIPage = tbUserService
                 .userQuery(new Page<>(pageNumber, pageSize), id, loginName, name, roleCode, enable, tbUser.getOrgId());
@@ -597,7 +597,7 @@ public class TBUserController {
     //    @CacheEvict(value = "user_cache", key = "'userCacheQuery'")
     @ApiOperation(value = "用户新增/编辑接口")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     @Transactional
     public Result save(@ApiJsonObject(name = "userSave", value = {
             @ApiJsonProperty(key = "id", type = "long", example = "1", description = "新增不需要主键"),
@@ -607,7 +607,7 @@ public class TBUserController {
             @ApiJsonProperty(key = "password", description = "密码,新增必须"),
             @ApiJsonProperty(key = "enable", type = "int", example = "1", description = "是否启用"),
             @ApiJsonProperty(key = "mobileNumber", description = "手机号"),
-            @ApiJsonProperty(key = "roleCode", description = "角色") }) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> mapParameter) {
+            @ApiJsonProperty(key = "roleCode", description = "角色")}) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> mapParameter) {
         if (Objects.isNull(mapParameter)) {
             throw new BusinessException(ExceptionResultEnum.USER_INFO_IS_NULL);
         }
@@ -685,7 +685,7 @@ public class TBUserController {
 
     @ApiOperation(value = "获取短信验证码接口")
     @RequestMapping(value = "/getVerifyCode", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "{\"verifyCode\":123456}", response = Result.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"verifyCode\":123456}", response = Result.class)})
     public Result getVerifyCode(@ApiParam(value = "登录名", required = true) @RequestParam String loginName) {
         if (Objects.isNull(loginName) || Objects.equals(loginName, "")) {
             throw new BusinessException(ExceptionResultEnum.LOGIN_NAME_IS_NULL);
@@ -695,7 +695,7 @@ public class TBUserController {
 
     @ApiOperation(value = "获取短信验证码接口")
     @RequestMapping(value = "/validate/verifyCode", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     public Result validateVerifyCode(@ApiParam(value = "验证码", required = true) @RequestParam String verifyCode) {
         if (Objects.isNull(verifyCode) || Objects.equals(verifyCode, "")) {
             throw new BusinessException(ExceptionResultEnum.VERIFYCODE_IS_NULL);
@@ -705,7 +705,7 @@ public class TBUserController {
 
     @ApiOperation(value = "二次验证获取短信验证码接口")
     @RequestMapping(value = "/validate/getVerifyCode", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     public Result validateGetVerifyCode() {
         return ResultUtil.ok(Collections.singletonMap(SystemConstant.SUCCESS, true));
     }
@@ -713,10 +713,10 @@ public class TBUserController {
     @ApiOperation(value = "用户停用/启用接口")
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
     @Transactional
-    @ApiResponses({ @ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     public Result enableUser(@ApiJsonObject(name = "enableUser", value = {
             @ApiJsonProperty(key = "id", type = "long", example = "1", description = "用户id"),
-            @ApiJsonProperty(key = "enable", type = "int", example = "1", description = "停用/启用") }) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> user) {
+            @ApiJsonProperty(key = "enable", type = "int", example = "1", description = "停用/启用")}) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> user) {
         if (Objects.isNull(user.get("id")) || Objects.equals(user.get("id"), "")) {
             throw new BusinessException(ExceptionResultEnum.USER_ID_IS_NULL);
         }
@@ -738,11 +738,11 @@ public class TBUserController {
 
     @ApiOperation(value = "用户修改密码接口")
     @RequestMapping(value = "/updatePwd", method = RequestMethod.POST)
-    @ApiResponses({ @ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class) })
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     @Transactional
     public Result userUpdatePwd(@ApiJsonObject(name = "userUpdatePwd", value = {
             @ApiJsonProperty(key = "id", type = "long", example = "1", description = "用户ID"),
-            @ApiJsonProperty(key = "password", description = "新密码") }) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> mapParameter) {
+            @ApiJsonProperty(key = "password", description = "新密码")}) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> mapParameter) {
         if (Objects.isNull(mapParameter.get("id")) || Objects.equals(mapParameter.get("id"), "")) {
             throw new BusinessException(ExceptionResultEnum.USER_ID_IS_NULL);
         }

+ 3 - 3
themis-backend/src/main/java/com/qmth/themis/backend/api/TEOpenController.java

@@ -40,7 +40,7 @@ public class TEOpenController {
             @ApiParam(value = "分页页码", required = false) @RequestParam(required = false) Integer pageNumber,
             @ApiParam(value = "分页数", required = false) @RequestParam(required = false) Integer pageSize) {
 
-        if (pageSize != null && pageSize > 20) {
+        if (pageSize != null && pageSize.intValue() > 20) {
             throw new BusinessException("每页最大条数为20");
         }
         if (pageNumber == null) {
@@ -60,7 +60,7 @@ public class TEOpenController {
             @ApiParam(value = "是否有试卷", required = false) @RequestParam(required = false) Boolean hasPaper,
             @ApiParam(value = "分页页码", required = false) @RequestParam(required = false) Integer pageNumber,
             @ApiParam(value = "分页数", required = false) @RequestParam(required = false) Integer pageSize) {
-        if (pageSize != null && pageSize > 100) {
+        if (pageSize != null && pageSize.intValue() > 100) {
             throw new BusinessException("每页最大条数为100");
         }
         if (pageNumber == null) {
@@ -100,7 +100,7 @@ public class TEOpenController {
         if (examStudentIdGt == null) {
             examStudentIdGt = 0L;
         }
-        if (count != null && count > 20) {
+        if (count != null && count.intValue() > 20) {
             throw new BusinessException("count最大为20");
         }
         if (count == null) {

+ 4 - 4
themis-backend/src/main/java/com/qmth/themis/backend/aspect/ApiControllerAspect.java

@@ -72,10 +72,10 @@ public class ApiControllerAspect {
                     }
                 }
             }
-            log.info("============platform===========:{}", ServletUtil.getRequestPlatform());
-            log.info("============deviceId===========:{}", ServletUtil.getRequestDeviceId());
-            log.info("============Authorization===========:{}", ServletUtil.getRequestAuthorizationForAspect());
-            log.info("============time===========:{}", ServletUtil.getRequestTimeForTime());
+//            log.info("============platform===========:{}", ServletUtil.getRequestPlatform());
+//            log.info("============deviceId===========:{}", ServletUtil.getRequestDeviceId());
+//            log.info("============Authorization===========:{}", ServletUtil.getRequestAuthorizationForAspect());
+//            log.info("============time===========:{}", ServletUtil.getRequestTimeForTime());
             Object proceed = joinPoint.proceed();
             long end = System.currentTimeMillis();
             log.info("============耗时============:{}秒", (end - start) / 1000);

+ 78 - 64
themis-backend/src/main/java/com/qmth/themis/backend/interceptor/AuthInterceptor.java

@@ -14,6 +14,7 @@ import com.qmth.themis.common.enums.Platform;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.signature.SignatureInfo;
 import com.qmth.themis.common.signature.SignatureType;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.servlet.HandlerInterceptor;
@@ -60,72 +61,85 @@ public class AuthInterceptor implements HandlerInterceptor {
         String deviceId = ServletUtil.getRequestDeviceId();
         String authorization = ServletUtil.getRequestAuthorization();
         String time = ServletUtil.getRequestTime();
-        log.info("platform:{},deviceId:{},authorization:{},method:{},time:{}", platform, deviceId, authorization, method, time);
-        Long userId = null;
-        Long timestamp = Long.parseLong(time);
-        if (!SystemConstant.expire(timestamp.longValue())) {
-            final SignatureInfo info = SignatureInfo
-                    .parse(method.toLowerCase(), url, timestamp, authorization);
-            //测试
-//        final SignatureInfo info = SignatureInfo
-//                .parse(authorization);
-            if (Objects.nonNull(info) && info.getType() == SignatureType.TOKEN) {
-                String sessionId = info.getInvoker();
-                TBSession tbSession = (TBSession) redisUtil.getUserSession(sessionId);
-                if (Objects.isNull(tbSession)) {
-                    throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
-                } else {
-                    if (info.validate(tbSession.getAccessToken()) && info.getTimestamp() < tbSession.getExpireTime()
-                            && platform.name().equalsIgnoreCase(tbSession.getPlatform()) && Objects.equals(deviceId, tbSession.getDeviceId())) {
-                        userId = Long.parseLong(tbSession.getIdentity());
-                        Long expireTime = tbSession.getExpireTime();
-                        //手机端的token时长为一个月,所以会出现缓存没有的情况
-                        if (expireTime <= System.currentTimeMillis()) {//先判断时间是否过期
-                            throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
-                        }
-                        TBUser tbUser = (TBUser) redisUtil.getUser(userId);
-                        if (Objects.isNull(tbUser)) {
-                            tbUser = tbUserService.getById(userId);
-                            redisUtil.setUser(tbUser.getId(), tbUser);
-                        }
+        log.info("Start authorization: url:{}, method:{}, platform:{}, deviceId:{}, authorization:{}, time:{}", url,
+                method, platform, deviceId, authorization, time);
+        //校验时间戳是否过期
+        long timestamp = StringUtils.isNumeric(time) ? Long.parseLong(time) : 0L;
+        if (SystemConstant.expire(timestamp)) {
+            log.warn("Authorization faile: time expired, server time=" + System.currentTimeMillis());
+            throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
+        }
+        //测试
+//        final SignatureInfo info = SignatureInfo.parse(authorization);
+        //校验签名信息
+        final SignatureInfo info = SignatureInfo.parse(method.toLowerCase(), url, timestamp, authorization);
+        if (info == null) {
+            log.warn("Authorization faile: signature decode error");
+            throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
+        }
+        if (SignatureType.TOKEN != info.getType()) {
+            log.warn("Authorization faile: signature type is not Token");
+            throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
+        }
+        //校验session
+        String sessionId = info.getInvoker();
+        TBSession tbSession = (TBSession) redisUtil.getUserSession(sessionId);
+        if (Objects.isNull(tbSession)) {
+            log.warn("Authorization faile: session id not exists: " + sessionId);
+            throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
+        }
+        if (tbSession.getExpireTime() <= System.currentTimeMillis() || info.getTimestamp() > tbSession.getExpireTime()) {
+            log.warn("Authorization faile: session has expired, expire time=" + tbSession.getExpireTime());
+            throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
+        }
+        if (!info.validate(tbSession.getAccessToken())) {
+            log.warn("Authorization faile: access token invalid, session token is " + tbSession.getAccessToken());
+            throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
+        }
+        if (!tbSession.getPlatform().equalsIgnoreCase(platform.name())) {
+            log.warn("Authorization faile: platform invalid, session platform is " + tbSession.getPlatform());
+            throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
+        }
+        if (!tbSession.getDeviceId().equalsIgnoreCase(deviceId)) {
+            log.warn("Authorization faile: deviceId invalid, session deviceId is " + tbSession.getDeviceId());
+            throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
+        }
+        long userId = Long.parseLong(tbSession.getIdentity());
+        TBUser tbUser = (TBUser) redisUtil.getUser(userId);
+        if (Objects.isNull(tbUser)) {
+            tbUser = tbUserService.getById(userId);
+            redisUtil.setUser(tbUser.getId(), tbUser);
+        }
 
-                        request.setAttribute(SystemConstant.SESSION, tbSession);
-                        request.setAttribute(SystemConstant.ACCOUNT, tbUser);
+        request.setAttribute(SystemConstant.SESSION, tbSession);
+        request.setAttribute(SystemConstant.ACCOUNT, tbUser);
 
-                        AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.userOauth + "::" + userId);
-                        //验证权限
-                        if (Objects.isNull(authDto)) {
-                            authDto = cacheService.addAccountCache(userId);
-                        }
-                        request.setAttribute(SystemConstant.ORG, authDto.getTbOrg());
-                        //系统管理员拥有所有权限
-//                    if (authDto.getRoleCodes().contains(RoleEnum.SUPER_ADMIN.name())) {
-//                        return true;
-//                    }
-                        //系统公用接口不拦截
-                        List<String> sysUrls = dictionaryConfig.systemUrlDomain().getUrls();
-                        int sysCount = (int) sysUrls.stream().filter(s -> {
-                            return s.equalsIgnoreCase(url);
-                        }).count();
-                        if (sysCount > 0) {
-                            return true;
-                        }
-                        Set<String> urls = authDto.getUrls();
-                        int count = (int) urls.stream().filter(s -> {
-                            return s.equalsIgnoreCase(url);
-                        }).count();
-                        if (count == 0) {
-                            throw new BusinessException(ExceptionResultEnum.UN_AUTHORIZATION);
-                        }
-                    } else {
-                        throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
-                    }
-                }
-            } else {
-                throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
-            }
-        } else {
-            throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
+        AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.userOauth + "::" + userId);
+        //验证权限
+        if (Objects.isNull(authDto)) {
+            authDto = cacheService.addAccountCache(userId);
+        }
+        request.setAttribute(SystemConstant.ORG, authDto.getTbOrg());
+
+        //系统管理员拥有所有权限
+//        if (authDto.getRoleCodes().contains(RoleEnum.SUPER_ADMIN.name())) {
+//            return true;
+//        }
+        //系统公用接口不拦截
+        List<String> sysUrls = dictionaryConfig.systemUrlDomain().getUrls();
+        int sysCount = (int) sysUrls.stream().filter(s -> {
+            return s.equalsIgnoreCase(url);
+        }).count();
+        if (sysCount > 0) {
+            return true;
+        }
+        Set<String> urls = authDto.getUrls();
+        int count = (int) urls.stream().filter(s -> {
+            return s.equalsIgnoreCase(url);
+        }).count();
+        if (count == 0) {
+            log.warn("Authorization faile: url cannot access");
+            throw new BusinessException(ExceptionResultEnum.UN_AUTHORIZATION);
         }
         response.setStatus(ExceptionResultEnum.SUCCESS.getCode());
         return true;

+ 2 - 1
themis-business/src/main/java/com/qmth/themis/business/config/MapApiReader.java

@@ -4,7 +4,6 @@ import com.fasterxml.classmate.TypeResolver;
 import com.google.common.base.Optional;
 import com.qmth.themis.business.annotation.ApiJsonObject;
 import com.qmth.themis.business.annotation.ApiJsonProperty;
-import com.qmth.themis.business.service.impl.MqDtoServiceImpl;
 import org.apache.ibatis.javassist.*;
 import org.apache.ibatis.javassist.bytecode.AnnotationsAttribute;
 import org.apache.ibatis.javassist.bytecode.ConstPool;
@@ -107,6 +106,8 @@ public class MapApiReader implements ParameterBuilderPlugin {
             case "boolean":
                 fileType = ClassPool.getDefault().get(Boolean.class.getName());
                 break;
+            default:
+                break;
         }
         return fileType;
     }

+ 18 - 16
themis-business/src/main/java/com/qmth/themis/business/constant/SystemConstant.java

@@ -320,22 +320,24 @@ public class SystemConstant {
         calendar.setTime(now);
         long redisExpire = REDIS_EXPIRE_TIME;
         switch (source) {
-        case ADMIN_WEB:
-            calendar.add(Calendar.DAY_OF_YEAR, SystemConstant.ADMIN_WEB_SESSION_EXPIRE);
-            break;
-        case ADMIN_CLIENT:
-            calendar.add(Calendar.DAY_OF_YEAR, SystemConstant.ADMIN_CLIENT_SESSION_EXPIRE);
-            break;
-        case OE_CLIENT:
-            calendar.add(Calendar.DAY_OF_YEAR, SystemConstant.OE_CLIENT_SESSION_EXPIRE);
-            redisExpire = REDIS_CLIENT_EXPIRE_TIME;
-            break;
-        case OE_ANSWER:
-        case MOBILE_MONITOR_FIRST:
-        case MOBILE_MONITOR_SECOND:
-            calendar.add(Calendar.DAY_OF_YEAR, SystemConstant.MOBILE_SESSION_EXPIRE);
-            redisExpire = REDIS_PHONE_EXPIRE_TIME;
-            break;
+            case ADMIN_WEB:
+                calendar.add(Calendar.DAY_OF_YEAR, SystemConstant.ADMIN_WEB_SESSION_EXPIRE);
+                break;
+            case ADMIN_CLIENT:
+                calendar.add(Calendar.DAY_OF_YEAR, SystemConstant.ADMIN_CLIENT_SESSION_EXPIRE);
+                break;
+            case OE_CLIENT:
+                calendar.add(Calendar.DAY_OF_YEAR, SystemConstant.OE_CLIENT_SESSION_EXPIRE);
+                redisExpire = REDIS_CLIENT_EXPIRE_TIME;
+                break;
+            case OE_ANSWER:
+            case MOBILE_MONITOR_FIRST:
+            case MOBILE_MONITOR_SECOND:
+                calendar.add(Calendar.DAY_OF_YEAR, SystemConstant.MOBILE_SESSION_EXPIRE);
+                redisExpire = REDIS_PHONE_EXPIRE_TIME;
+                break;
+            default:
+                break;
         }
         dto.setDate(calendar.getTime());
         dto.setExpireSeconds(redisExpire);

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEOpenServiceImpl.java

@@ -319,7 +319,7 @@ public class TEOpenServiceImpl implements TEOpenService {
                     temList.add(bean);
                     map.put(bean.getExamStudentId(), temList);
                 } else {
-                    if (temList.get(0).getObjectiveScore() == bean.getObjectiveScore()) {
+                    if (temList.get(0).getObjectiveScore().doubleValue() == bean.getObjectiveScore().doubleValue()) {
                         temList.add(bean);
                     } else if (temList.get(0).getObjectiveScore() < bean.getObjectiveScore()) {
                         temList = new ArrayList<OpenRecordNeedMarkBean>();

+ 3 - 3
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -1047,14 +1047,14 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
                 Integer breakExpireSeconds = Objects.isNull(ec.getBreakExpireSeconds()) ?
                         0 :
                         ec.getBreakExpireSeconds();
-                if (breakExpireSeconds > 0) {
+                if (breakExpireSeconds.intValue() > 0) {
                     List<String> list = SystemConstant.mqDelayLevelList.subList(5, 15);
                     String level = null;
-                    if (breakExpireSeconds <= 60) {
+                    if (breakExpireSeconds.intValue() <= 60) {
                         level = "1m";
                     } else {
                         Integer time = breakExpireSeconds.intValue() / 60;
-                        if (time >= 30) {
+                        if (time.intValue() >= 30) {
                             level = "30m";
                         } else {
                             for (String s : list) {

+ 4 - 3
themis-common/src/main/java/com/qmth/themis/common/util/SimpleBeanUtil.java

@@ -19,8 +19,9 @@ public class SimpleBeanUtil {
 		while (ret) {
 			clazzs.add(oo);
 			oo = oo.getSuperclass();
-			if (oo == null || oo == Object.class)
+			if (oo == null || oo == Object.class) {
 				break;
+			}
 		}
 
 		Map<String, Object> map = new HashMap<String, Object>();
@@ -46,9 +47,9 @@ public class SimpleBeanUtil {
 	}
 
 	public static  <T> T mapToObject(Map<String, Object> map, Class<T> beanClass) {
-		if (map == null)
+		if (map == null) {
 			return null;
-
+		}
 		try {
 			T obj = beanClass.newInstance();
 

+ 5 - 10
themis-exam/src/main/java/com/qmth/themis/exam/interceptor/AuthInterceptor.java

@@ -88,7 +88,7 @@ public class AuthInterceptor implements HandlerInterceptor {
             log.warn("Authorization faile: session id not exists: " + sessionId);
             throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
         }
-        if (tbSession.getExpireTime() < System.currentTimeMillis() || info.getTimestamp() > tbSession.getExpireTime()) {
+        if (tbSession.getExpireTime() <= System.currentTimeMillis() || info.getTimestamp() > tbSession.getExpireTime()) {
             log.warn("Authorization faile: session has expired, expire time=" + tbSession.getExpireTime());
             throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
         }
@@ -104,11 +104,6 @@ public class AuthInterceptor implements HandlerInterceptor {
             log.warn("Authorization faile: deviceId invalid, session deviceId is " + tbSession.getDeviceId());
             throw new BusinessException(ExceptionResultEnum.AUTHORIZATION_ERROR);
         }
-        //Long expireTime = tbSession.getExpireTime();
-        //手机端的token时长为一个月,所以会出现缓存没有的情况
-        //if (expireTime <= System.currentTimeMillis()) {//先判断时间是否过期
-        //    throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
-        //}
         long userId = Long.parseLong(tbSession.getIdentity());
         TEStudentCacheDto teStudentCacheDto = (TEStudentCacheDto) redisUtil.getStudent(userId);
         if (Objects.isNull(teStudentCacheDto)) {
@@ -128,9 +123,9 @@ public class AuthInterceptor implements HandlerInterceptor {
         }
         request.setAttribute(SystemConstant.ORG, authDto.getTbOrg());
         //系统管理员拥有所有权限
-        //                    if (authDto.getRoleCodes().contains(RoleEnum.SUPER_ADMIN.name())) {
-        //                        return true;
-        //                    }
+//        if (authDto.getRoleCodes().contains(RoleEnum.SUPER_ADMIN.name())) {
+//            return true;
+//        }
         //系统公用接口不拦截
         List<String> sysUrls = dictionaryConfig.systemUrlDomain().getUrls();
         int sysCount = (int) sysUrls.stream().filter(s -> {
@@ -153,7 +148,7 @@ public class AuthInterceptor implements HandlerInterceptor {
 
     @Override
     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object o,
-            ModelAndView modelAndView) throws Exception {
+                           ModelAndView modelAndView) throws Exception {
 
     }