浏览代码

初始化场景floorplan.json字符编码错误

dsx 1 年之前
父节点
当前提交
9969fece3a

+ 84 - 104
src/main/java/com/fdkankan/scene/Interceptor/CheckViewBizAuthAspect.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
 import com.fdkankan.common.constant.CommonStatus;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.SceneStatus;
+import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.AesUtil;
 import com.fdkankan.common.util.Base64Converter;
@@ -102,135 +103,114 @@ public class CheckViewBizAuthAspect {
 		sysLog.setParams(JSON.toJSONString(params));
 
 		boolean interruptCheck = false;
-		Integer errorCode = null;
-		String errorMsg = null;
 		String userName = null, ip = null, timestamp = null;
-		boolean flag = true;
-		if(StrUtil.isNotEmpty(sign)){
-			interruptCheck = true;
-			sign = sign.replaceAll("%2B", "+").replaceAll(" ", "+");
-			String[] split = null;
-			try {
-				String decode = AesUtil.decryptECB(sign, ENCRYPT_KEY, "AES/ECB/PKCS5Padding");
-				split = decode.split("@");
-
-			}catch (Exception e){
-				log.error("签名解密失败", e);
-				flag = false;
-				errorCode = ErrorCode.AUTH_FAIL.code();
-				errorMsg = "签名解密失败";
-			}
+		try {
+			if(StrUtil.isNotEmpty(sign)){
+				interruptCheck = true;
+				sign = sign.replaceAll("%2B", "+").replaceAll(" ", "+");
+				String[] split = null;
+				try {
+					String decode = AesUtil.decryptECB(sign, ENCRYPT_KEY, "AES/ECB/PKCS5Padding");
+					split = decode.split("@");
+
+				}catch (Exception e){
+					log.error("签名解密失败", e);
+					throw new BusinessException(ErrorCode.AUTH_FAIL.code(), "签名解密失败");
+				}
 
-			if(Objects.isNull(split) || split.length == 1){
-				flag = false;
-				errorCode = ErrorCode.AUTH_FAIL.code();
-				errorMsg = "签名参数错误";
-			}else{
-				for (int i = 0; i < split.length; i++){
-					if(i == 0){
-						userName = split[i];
-					}
-					if(i == 1){
-						ip = split[i];
-					}
-					if(i == 2){
-						timestamp = split[i];
+				if(Objects.isNull(split) || split.length == 1){
+					throw new BusinessException(ErrorCode.AUTH_FAIL.code(), "签名参数错误");
+				}else{
+					for (int i = 0; i < split.length; i++){
+						if(i == 0){
+							userName = split[i];
+						}
+						if(i == 1){
+							ip = split[i];
+						}
+						if(i == 2){
+							timestamp = split[i];
+						}
 					}
-				}
 
-				if(StrUtil.isNotEmpty(ip) && !ip.equals(remoteIp)){
-					flag = false;
-					errorCode = ErrorCode.AUTH_FAIL.code();
-					errorMsg = "ip不匹配";
-				}
+					if(StrUtil.isNotEmpty(ip) && !ip.equals(remoteIp)){
+						throw new BusinessException(ErrorCode.AUTH_FAIL.code(), "ip不匹配");
+					}
 
-				if(StrUtil.isNotEmpty(timestamp) && Calendar.getInstance().getTime().after(new Date(Long.valueOf(timestamp) * 1000))){
-					flag = false;
-					errorCode = ErrorCode.AUTH_FAIL.code();
-					errorMsg = "超出访问截止时间";
+					if(StrUtil.isNotEmpty(timestamp) && Calendar.getInstance().getTime().after(new Date(Long.valueOf(timestamp) * 1000))){
+						throw new BusinessException(ErrorCode.AUTH_FAIL.code(), "超出访问截止时间");
+					}
 				}
 			}
-		}
 
-		//校验token
-		if(!interruptCheck){
-			log.info("num:{}", num);
-			log.info("token:{}", request.getHeader("token"));
-			String token = request.getHeader("token");
-			if(StrUtil.isNotEmpty(token)){
-				SSOUser user = jmgaSSOLoginHelper.getSsoUser(token);
-				JyUser jyUser = jyUserService.getBySysUserId(user.getId().intValue());
-				log.info("user:{}", JSON.toJSONString(user));
-				ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
-				if(Objects.isNull(scenePlus)){
-					flag = false;
-					errorCode = ErrorCode.FAILURE_CODE_5005.code();
-					errorMsg = ErrorCode.FAILURE_CODE_5005.message();
-				}
-				log.info("scenePlus:{}", scenePlus);
-				if(Objects.isNull(scenePlus.getUserId()) || Objects.isNull(jyUser) || jyUser.getUserId() != scenePlus.getUserId().intValue()){
-					flag = false;
-					errorCode = ErrorCode.AUTH_FAIL.code();
-					errorMsg = "无权访问";
-				}else{
-					interruptCheck = true;
-					userName = user.getUserName();
+			//校验token
+			if(!interruptCheck){
+				log.info("num:{}", num);
+				log.info("token:{}", request.getHeader("token"));
+				String token = request.getHeader("token");
+				if(StrUtil.isNotEmpty(token)){
+					SSOUser user = jmgaSSOLoginHelper.getSsoUser(token);
+					if(Objects.isNull(user)){
+						throw new BusinessException(ErrorCode.AUTH_FAIL.code(), ErrorCode.TOKEN_NOT_FOUND.message());
+					}
+					JyUser jyUser = jyUserService.getBySysUserId(user.getId().intValue());
+					log.info("user:{}", JSON.toJSONString(user));
+					ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+					if(Objects.isNull(scenePlus)){
+						throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+					}
+					log.info("scenePlus:{}", scenePlus);
+					if(Objects.isNull(scenePlus.getUserId()) || Objects.isNull(jyUser) || jyUser.getUserId() != scenePlus.getUserId().intValue()){
+						throw new BusinessException(ErrorCode.AUTH_FAIL.code(), "无权访问");
+					}else{
+						interruptCheck = true;
+						userName = user.getUserName();
+					}
 				}
-			}
 
-		}
+			}
 
-		if(!interruptCheck){
-			//查询场景是否业务授权
-			JySceneAuth jySceneAuth = jySceneAuthService.getByNum(num);
-			if(!Objects.isNull(jySceneAuth) && jySceneAuth.getAuthType() == 0){
-				//业务授权校验用户名密码
-				userName = (String) params.get("userName");
-				String password = (String) params.get("password");
-				if(StrUtil.isEmpty(userName) || StrUtil.isEmpty(password)){
-					flag = false;
-					errorCode = ErrorCode.USERNAME_PASSWORD_REQUIRE.code();
-					errorMsg = ErrorCode.USERNAME_PASSWORD_REQUIRE.message();
-				}else{
+			if(!interruptCheck){
+				//查询场景是否业务授权
+				JySceneAuth jySceneAuth = jySceneAuthService.getByNum(num);
+				if(!Objects.isNull(jySceneAuth) && jySceneAuth.getAuthType() == 0){
+					//业务授权校验用户名密码
+					userName = (String) params.get("userName");
+					String password = (String) params.get("password");
+					if(StrUtil.isEmpty(userName) || StrUtil.isEmpty(password)){
+						throw new BusinessException(ErrorCode.USERNAME_PASSWORD_REQUIRE);
+					}
 					//查询用户
 					JyUser jyUser = jyUserService.getByJyNo(userName);
 					JySceneUserAuth jySceneUserAuth = jySceneUserAuthService.getSceneViewAuth(num, jyUser.getId());
 					if(Objects.isNull(jySceneUserAuth)){
-						flag = false;
-						errorCode = ErrorCode.AUTH_FAIL.code();
-						errorMsg = "无权访问";
-					}else if (jySceneUserAuth.getLookAuth() == 2 && jySceneUserAuth.getLookEndTime().before(Calendar.getInstance().getTime())){
-						flag = false;
-						errorCode = ErrorCode.AUTH_FAIL.code();
-						errorMsg = "超出访问截止时间";
+						throw new BusinessException(ErrorCode.AUTH_FAIL.code(), "无权访问");
+					}
+					if (jySceneUserAuth.getLookAuth() == 2 && jySceneUserAuth.getLookEndTime().before(Calendar.getInstance().getTime())){
+						throw new BusinessException(ErrorCode.AUTH_FAIL.code(), "超出访问截止时间");
 					}
 
 					//如果授权校验通过,校验密码是否正确
-					if(flag){
-						User user = userService.findByUserName(userName);
-						//模拟前端密码加密规则生成前端密码
-						password = SecurityUtil.MD5(Base64Converter.decode(password));
-						//数据库密码比对
-						if(Objects.isNull(user) || !password.equals(user.getPassword())){
-							flag = false;
-							errorCode = ErrorCode.PASSWORD_ERROR.code();
-							errorMsg = ErrorCode.PASSWORD_ERROR.message();
-						}
+					User user = userService.findByUserName(userName);
+					//模拟前端密码加密规则生成前端密码
+					password = SecurityUtil.MD5(Base64Converter.decode(password));
+					//数据库密码比对
+					if(Objects.isNull(user) || !password.equals(user.getPassword())){
+						throw new BusinessException(ErrorCode.PASSWORD_ERROR);
 					}
-
 				}
 			}
+		}catch (BusinessException e){
+			//写入日志
+			sysLog.setUserName(userName);
+			sysLog.setResult(e.getMessage());
+			sysLogService.save(sysLog);
+			throw e;
 		}
-
 		//写入日志
 		sysLog.setUserName(userName);
-		sysLog.setResult(errorMsg);
+		sysLog.setResult(ServerCode.SUCCESS.message());
 		sysLogService.save(sysLog);
-
-		if(!flag){
-			throw new BusinessException(errorCode, errorMsg);
-		}
-
 	}
 
 }

+ 9 - 9
src/main/java/com/fdkankan/scene/util/JmgaSSOLoginHelper.java

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.util;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.web.user.SSOLoginHelper;
@@ -18,16 +19,15 @@ public class JmgaSSOLoginHelper{
     private RedisUtil redisUtil;
 
     public SSOUser getSsoUser(String token) {
-        if (token != null && token.trim().length() > 0) {
-            String tokenKey = String.format(TOKEN_KEY_FROMAT, token);
-            String objectValue = this.redisUtil.get(tokenKey);
-            SSOUser ssoUser = JSONObject.parseObject(objectValue, SSOUser.class);
-            if (ssoUser != null) {
-                return ssoUser;
-            }
+        if(StrUtil.isEmpty(token)){
+            return null;
         }
-
-        return null;
+        String tokenKey = String.format(TOKEN_KEY_FROMAT, token);
+        String objectValue = this.redisUtil.get(tokenKey);
+        if(StrUtil.isEmpty(objectValue)){
+            return null;
+        }
+        return JSONObject.parseObject(objectValue, SSOUser.class);
     }
 
 }