Browse Source

合并添加yunding分支的异常处理

zhuth 7 years ago
parent
commit
1edefa5f4b

+ 4 - 1
src/main/java/com/uas/eis/controller/LoginController.java

@@ -4,6 +4,9 @@ import java.util.HashMap;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
+
+import com.uas.eis.entity.ErrorMsg;
+import com.uas.eis.exception.SystemException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -31,7 +34,7 @@ public class LoginController {
 			res.put("success", true);
 			res.put("token", token);
 		}else {
-			BaseUtil.showError("账户名或密码错误", "BAD_USERINFO");
+			throw new SystemException(ErrorMsg.BAD_USERINFO);
 		}
 		return res;
 	}

+ 8 - 12
src/main/java/com/uas/eis/core/support/LoginInterceptor.java

@@ -5,14 +5,13 @@ import java.util.Date;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.uas.eis.entity.ErrorMsg;
+import com.uas.eis.exception.SystemException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.uas.eis.service.QueryService;
-import com.uas.eis.dao.BaseDao;
-import com.uas.eis.utils.BaseUtil;
-
 import io.jsonwebtoken.Claims;
 
 public class LoginInterceptor implements HandlerInterceptor{
@@ -21,7 +20,7 @@ public class LoginInterceptor implements HandlerInterceptor{
 	private QueryService userService;
 	
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-		String token = (String) request.getSession().getAttribute("token");
+		String token = request.getParameter("token");
 		Claims claims = parseToken(token); // 验证并解析token
 		String username = (String) claims.get("username");
 		String password = (String) claims.get("password");
@@ -41,13 +40,11 @@ public class LoginInterceptor implements HandlerInterceptor{
 	
 	private Claims parseToken(String token) {
 		if(token == null || token.isEmpty()) {
-			BaseUtil.showError("缺失token", "NULL_TOKEN");
-			return null;
+			throw new SystemException(ErrorMsg.NULL_TOKEN);
 		}
 		Claims claims = TokenHandler.parseToken(token);
 		if(claims == null) {
-			BaseUtil.showError("无效的token", "INVALID_TOKEN");
-			return null;
+			throw new SystemException(ErrorMsg.INVALID_TOKEN);
 		}
 		Date now = new Date();
 		Date start = claims.getNotBefore();
@@ -56,8 +53,7 @@ public class LoginInterceptor implements HandlerInterceptor{
 		if (now.after(start) && now.before(end)) {
 			return claims;
 		}else {
-			BaseUtil.showError("已过期的token", "OVERDUE_TOKEN");
-			return null;
+			throw new SystemException(ErrorMsg.EXPIRED_TOKEN);
 		}
 	}
 	
@@ -67,7 +63,7 @@ public class LoginInterceptor implements HandlerInterceptor{
 			enable = userService.checkUser(username, password);
 		}
 		if(!enable) {
-			BaseUtil.showError("无效用户", "INVALID_USER");
+			throw new SystemException(ErrorMsg.INVALID_USER);
 		}
 		return enable;
 	}
@@ -75,7 +71,7 @@ public class LoginInterceptor implements HandlerInterceptor{
 	private boolean checkActionAccess(String username, String action) {
 		boolean enable = userService.checkAction(username, action);
 		if(!enable) {
-			BaseUtil.showError("受限的接口请求", "PERMISSION_DENIED_ACTION");
+			throw new SystemException(ErrorMsg.PERMISSION_DENIED_REQUEST);
 		}
 		return enable;
 	}

+ 54 - 0
src/main/java/com/uas/eis/entity/ErrorMsg.java

@@ -0,0 +1,54 @@
+package com.uas.eis.entity;
+
+/**
+ * Created by luhg on 2018/4/20.
+ * 异常处理返回信息
+ */
+public enum ErrorMsg {
+    NULL_TOKEN(10001,"token not found","缺失token,请把token做为参数传入"),
+    INVALID_TOKEN(10002,"invalid token","无效的token,请重新申请token"),
+    EXPIRED_TOKEN(10003,"expired token","token已过期,请重新申请token"),
+    INVALID_USER(10003,"invalid user","无效用户"),
+    PERMISSION_DENIED_REQUEST(10004,"request permission denied","受限的接口请求"),
+    BAD_USERINFO(10005,"bad userinfo","账户名或密码错误"),
+    NULL_QUERY_CODE(10006,"query code not found","查询方案编号不能为空"),
+    PARAM_AMOUNT_ERROR(10007,"param amount error","查询方案编号不能为空"),
+    PARAM_NAME_ERROR(10007,"param name error","查询方案编号不能为空"),
+    PARAM_FORMAT_ERROR(10008,"param format error","参数格式不正确");
+
+
+
+    private int errCode;
+    private String errMsg;
+    private String errDesc;
+
+    ErrorMsg(int  errCode,String errMsg,String errDesc){
+        this.errCode = errCode;
+        this.errMsg = errMsg;
+        this.errDesc = errDesc;
+    }
+
+    public int getErrCode() {
+        return errCode;
+    }
+
+    public void setErrCode(int errCode) {
+        this.errCode = errCode;
+    }
+
+    public String getErrMsg() {
+        return errMsg;
+    }
+
+    public void setErrMsg(String errMsg) {
+        this.errMsg = errMsg;
+    }
+
+    public String getErrDesc() {
+        return errDesc;
+    }
+
+    public void setErrDesc(String errDesc) {
+        this.errDesc = errDesc;
+    }
+}

+ 9 - 3
src/main/java/com/uas/eis/exception/ExceptionHandlerAdvice.java

@@ -2,6 +2,7 @@ package com.uas.eis.exception;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.uas.eis.entity.ErrorMsg;
 import org.apache.log4j.Logger;
 import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
@@ -32,7 +33,9 @@ public class ExceptionHandlerAdvice {
 		ModelMap map = new ModelMap();
 		//logger.error(ex);
 		ex.printStackTrace();
-		map.put("exceptionInfo", ex.getMessage());
+		map.put("errCode", -1);
+		map.put("errMsg", "server error");
+		map.put("errDesc",ex.getMessage());
 		return map;
 	}
 	
@@ -47,10 +50,13 @@ public class ExceptionHandlerAdvice {
 	@ResponseBody
 	public ModelMap handleSystemError(SystemException ex, HttpServletRequest request) {
 		ModelMap map = new ModelMap();
-		map.put("exceptionCode", ex.getErrorCode());
-		map.put("exceptionInfo", ex.getMessage());
+		ErrorMsg errorMsg = ex.getErrorMsg();
+		map.put("errCode", errorMsg.getErrCode());
+		map.put("errMsg", errorMsg.getErrMsg());
+		map.put("errDesc",errorMsg.getErrDesc());
 		return map;
 	}
 
+
 	
 }

+ 15 - 13
src/main/java/com/uas/eis/exception/SystemException.java

@@ -1,5 +1,7 @@
 package com.uas.eis.exception;
 
+import com.uas.eis.entity.ErrorMsg;
+
 /**
  * 系统程序执行异常
  * 
@@ -13,7 +15,7 @@ public class SystemException extends RuntimeException {
 	 */
 	private static final long serialVersionUID = 4218425517031998401L;
 	
-	private String errorCode;
+	private ErrorMsg errorMsg;
 
 	public SystemException() {
 	}
@@ -22,25 +24,25 @@ public class SystemException extends RuntimeException {
 		super(paramString);
 	}
 	
-	public SystemException(String paramString, String errorCode) {
-		super(paramString);
-		this.errorCode = errorCode;
+	public SystemException(ErrorMsg errorMsg) {
+		super(errorMsg.getErrDesc());
+		this.errorMsg = errorMsg;
 	}
 
-	public SystemException(String paramString, String errorCode, Throwable paramThrowable) {
-		super(paramString, paramThrowable);
-		this.errorCode = errorCode;
+	public SystemException(ErrorMsg errorMsg, Throwable paramThrowable) {
+		super(errorMsg.getErrDesc(), paramThrowable);
+		this.errorMsg = errorMsg;
 	}
 
 	public SystemException(Throwable paramThrowable) {
 		super(paramThrowable);
 	}
-	
-	public String getErrorCode() {
-		return this.errorCode;
+
+	public ErrorMsg getErrorMsg() {
+		return errorMsg;
 	}
-	
-	public void setErrorCode(String errorCode) {
-		this.errorCode = errorCode;
+
+	public void setErrorMsg(ErrorMsg errorMsg) {
+		this.errorMsg = errorMsg;
 	}
 }

+ 7 - 5
src/main/java/com/uas/eis/serviceImpl/QueryServiceImpl.java

@@ -9,6 +9,8 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import com.uas.eis.entity.ErrorMsg;
+import com.uas.eis.exception.SystemException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
@@ -223,24 +225,24 @@ public class QueryServiceImpl implements QueryService {
 	private void checkParam(String code, String param){
 		com.alibaba.fastjson.JSONObject json = JSON.parseObject(param);
 		if(StringUtils.isEmpty(code)){
-			BaseUtil.showError("查询方案编号不能为空", "NULL_QUERY_CODE");
+			throw new SystemException(ErrorMsg.NULL_QUERY_CODE);
 		}
 		if(json == null){
-			BaseUtil.showError("传入的参数个数不正确", "PARAM_AMOUNT_ERROR");
+			throw new SystemException(ErrorMsg.PARAM_AMOUNT_ERROR);
 		}
 		String getInParamsSql = "select * from queryArgs where qa_qccode = ? and qa_relation is null";
 		List<QueryArgs> inParamList = baseDao.query(getInParamsSql,  QueryArgs.class, code);
 		if(inParamList.size() != json.size()){
-			BaseUtil.showError("传入的参数个数不正确", "PARAM_AMOUNT_ERROR");
+			throw new SystemException(ErrorMsg.PARAM_AMOUNT_ERROR);
 		}else{
 			 for(QueryArgs queryArgs : inParamList){
 				 if(json.getString(queryArgs.getQa_param()) == null){
-					 BaseUtil.showError("传入的参数名不正确", "PARAM_NAME_ERROR");
+					 throw new SystemException(ErrorMsg.PARAM_NAME_ERROR);
 				 }else{
 					 if("array".equals(queryArgs.getQa_paramtype())){
 						 String stringArray = json.getString(queryArgs.getQa_param());
 						 if(!(stringArray.contains("[") && stringArray.contains("]"))){
-							 BaseUtil.showError("传入的参数:"+queryArgs.getQa_param()+"格式不正确", "PARAM_FORMAT_ERROR");
+							 throw new SystemException(ErrorMsg.PARAM_FORMAT_ERROR);
 						 }
 					 }
 				 }

+ 16 - 5
src/main/java/com/uas/eis/utils/BaseUtil.java

@@ -7,6 +7,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.uas.eis.entity.ErrorMsg;
 import net.sf.json.JSONArray;
 import net.sf.json.util.JSONUtils;
 
@@ -30,12 +31,22 @@ public class BaseUtil {
 		if (error != null && error.length() > 0)
 			throw new SystemException(error);
 	}
-	
-	public static void showError(String error, String errorCode) {
-		if (error != null && error.length() > 0)
-			throw new SystemException(error, errorCode);
+
+	public static void showError(ErrorMsg errorMsg) {
+		if(errorMsg!=null){
+			throw new SystemException(errorMsg);
+		}
 	}
-	
+
+	public static void showError(ErrorMsg errorMsg,String extraMsg) {
+		if(errorMsg!=null){
+			if (StringUtil.hasText(extraMsg)){
+				errorMsg.setErrMsg(extraMsg);
+			}
+			throw new SystemException(errorMsg);
+		}
+	}
+
 	/**
 	 * List集合转化成字符串, null和空字符自动去掉
 	 *