|
@@ -32,75 +32,92 @@ import java.util.stream.Collectors;
|
|
|
@ControllerAdvice
|
|
|
public class BaseController {
|
|
|
|
|
|
- private final static Logger logger = LoggerFactory.getLogger(BaseController.class);
|
|
|
-
|
|
|
- public static <T> HttpResponseResult<T> succeed(T object) {
|
|
|
- return getResponseData(true, HttpStatus.OK, object, "");
|
|
|
- }
|
|
|
-
|
|
|
- public static <T> HttpResponseResult<T> succeed() {
|
|
|
- return getResponseData(true, HttpStatus.OK, null, "");
|
|
|
- }
|
|
|
-
|
|
|
- public static <T> HttpResponseResult<T> succeedData(T obj) {
|
|
|
- return getResponseData(true, HttpStatus.OK, obj, "操作成功");
|
|
|
- }
|
|
|
-
|
|
|
- public static <T> HttpResponseResult<T> warned(String message) {
|
|
|
- return failed(HttpStatus.MULTI_STATUS, message);
|
|
|
- }
|
|
|
-
|
|
|
- public static <T> HttpResponseResult<T> failed() {
|
|
|
- return failed("");
|
|
|
- }
|
|
|
-
|
|
|
- public static <T> HttpResponseResult<T> failed(String msg) {
|
|
|
- return failed(HttpStatus.INTERNAL_SERVER_ERROR, msg);
|
|
|
- }
|
|
|
-
|
|
|
- public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, String msg) {
|
|
|
- return getResponseData(false, statusCode, null, msg);
|
|
|
- }
|
|
|
-
|
|
|
- public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, T data, String msg) {
|
|
|
- return getResponseData(false, statusCode, data, msg);
|
|
|
- }
|
|
|
-
|
|
|
- private static <T> HttpResponseResult<T> getResponseData(boolean status, HttpStatus statusCode, T data, String message) {
|
|
|
- HttpResponseResult<T> obj = new HttpResponseResult<T>();
|
|
|
- obj.setStatus(status);
|
|
|
- obj.setCode(statusCode.value());
|
|
|
- obj.setData(data);
|
|
|
- obj.setMsg(message);
|
|
|
- return obj;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 处理一般异常
|
|
|
- *
|
|
|
- * @param ex
|
|
|
- * @param request
|
|
|
- * @return
|
|
|
- */
|
|
|
- @ExceptionHandler(Exception.class)
|
|
|
- public HttpResponseResult<String> handleException(Exception ex, HttpServletRequest request) {
|
|
|
- Throwable e = ExceptionUtils.getRootCause(ex);
|
|
|
- if (e == null) {
|
|
|
- e = ex;
|
|
|
- }
|
|
|
- logger.error("System Error", e);
|
|
|
- // return failed(e.getMessage());
|
|
|
- if (e instanceof BizException || e instanceof ThirdpartyException) {
|
|
|
- if(e.getMessage().equals("205")){
|
|
|
- return failed(HttpStatus.RESET_CONTENT,e.getMessage());
|
|
|
- }
|
|
|
- return failed(e.getMessage());
|
|
|
- } else if (e instanceof AccessDeniedException) {
|
|
|
- return failed("禁止访问");
|
|
|
- }else if(e instanceof BindException){
|
|
|
- String errors = ((BindException) e).getFieldErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining("\n"));
|
|
|
- return failed(errors);
|
|
|
- } else if(e instanceof MethodArgumentNotValidException){
|
|
|
+ private final static Logger logger = LoggerFactory.getLogger(BaseController.class);
|
|
|
+
|
|
|
+ public static <T> HttpResponseResult<T> succeed(T object) {
|
|
|
+ return getResponseData(true, HttpStatus.OK, object, "");
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> HttpResponseResult<T> succeed() {
|
|
|
+ return getResponseData(true, HttpStatus.OK, null, "");
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> HttpResponseResult<T> succeedData(T obj) {
|
|
|
+ return getResponseData(true, HttpStatus.OK, obj, "操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> HttpResponseResult<T> warned(String message) {
|
|
|
+ return failed(HttpStatus.MULTI_STATUS, message);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> HttpResponseResult<T> failed() {
|
|
|
+ return failed("");
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> HttpResponseResult<T> failed(String msg) {
|
|
|
+ return failed(HttpStatus.INTERNAL_SERVER_ERROR, msg);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, String msg) {
|
|
|
+ return getResponseData(false, statusCode, null, msg);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, T data, String msg) {
|
|
|
+ return getResponseData(false, statusCode, data, msg);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static <T> HttpResponseResult<T> getResponseData(boolean status, HttpStatus statusCode, T data, String message) {
|
|
|
+ HttpResponseResult<T> obj = new HttpResponseResult<T>();
|
|
|
+ obj.setStatus(status);
|
|
|
+ obj.setCode(statusCode.value());
|
|
|
+ obj.setData(data);
|
|
|
+ obj.setMsg(message);
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static <T> HttpResponseResult<T> getResponseData(boolean status, int statusCode, T data, String message) {
|
|
|
+ HttpResponseResult<T> obj = new HttpResponseResult<T>();
|
|
|
+ obj.setStatus(status);
|
|
|
+ obj.setCode(statusCode);
|
|
|
+ obj.setData(data);
|
|
|
+ obj.setMsg(message);
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理一般异常
|
|
|
+ *
|
|
|
+ * @param ex
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @ExceptionHandler(Exception.class)
|
|
|
+ public HttpResponseResult<String> handleException(Exception ex, HttpServletRequest request) {
|
|
|
+ Throwable e = ExceptionUtils.getRootCause(ex);
|
|
|
+ if (e == null) {
|
|
|
+ e = ex;
|
|
|
+ }
|
|
|
+ logger.error("System Error", e);
|
|
|
+ // return failed(e.getMessage());
|
|
|
+ if (e instanceof BizException || e instanceof ThirdpartyException) {
|
|
|
+ if(e.getMessage().equals("205")){
|
|
|
+ return failed(HttpStatus.RESET_CONTENT,e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自定义错误码
|
|
|
+ if (e instanceof BizException) {
|
|
|
+ BizException bizException = (BizException) e;
|
|
|
+ return getResponseData(false, bizException.getCode(), null, bizException.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 默认返回错误码
|
|
|
+ return failed(e.getMessage());
|
|
|
+ } else if (e instanceof AccessDeniedException) {
|
|
|
+ return failed("禁止访问");
|
|
|
+ }else if(e instanceof BindException){
|
|
|
+ String errors = ((BindException) e).getFieldErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining("\n"));
|
|
|
+ return failed(errors);
|
|
|
+ } else if(e instanceof MethodArgumentNotValidException){
|
|
|
MethodArgumentNotValidException validException = (MethodArgumentNotValidException) ex;
|
|
|
String errorMsg = validException.getBindingResult()
|
|
|
.getFieldErrors()
|
|
@@ -109,34 +126,34 @@ public class BaseController {
|
|
|
.collect(Collectors.joining());
|
|
|
return failed(errorMsg);
|
|
|
}
|
|
|
- try {
|
|
|
- Map<String,Object> paramMap = new HashMap<>(2);
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("content","系统繁忙请及时处理: " + request.getRequestURL() + " " + e);
|
|
|
- paramMap.put("text",jsonObject.toJSONString());
|
|
|
- paramMap.put("msgtype","text");
|
|
|
- Map<String,String> headers = new HashMap<>(1);
|
|
|
- headers.put("Content-Type","application/json");
|
|
|
- HttpUtil.postForHttps(dingTalkRobotsSecurityParam(),JSON.toJSONString(paramMap),headers);
|
|
|
- }catch (Exception exception){
|
|
|
- logger.error("System Error", exception);
|
|
|
- }
|
|
|
+ try {
|
|
|
+ Map<String,Object> paramMap = new HashMap<>(2);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("content","系统繁忙请及时处理: " + request.getRequestURL() + " " + e);
|
|
|
+ paramMap.put("text",jsonObject.toJSONString());
|
|
|
+ paramMap.put("msgtype","text");
|
|
|
+ Map<String,String> headers = new HashMap<>(1);
|
|
|
+ headers.put("Content-Type","application/json");
|
|
|
+ HttpUtil.postForHttps(dingTalkRobotsSecurityParam(),JSON.toJSONString(paramMap),headers);
|
|
|
+ }catch (Exception exception){
|
|
|
+ logger.error("System Error", exception);
|
|
|
+ }
|
|
|
if (StringUtils.isNotBlank(e.getMessage())) {
|
|
|
return failed(e.getMessage());
|
|
|
}
|
|
|
- return failed("系统繁忙");
|
|
|
- }
|
|
|
-
|
|
|
- public String dingTalkRobotsSecurityParam() throws Exception{
|
|
|
- Long timestamp = System.currentTimeMillis();
|
|
|
- String secret = "SEC5e3b73acccb12fc2a2a7d36d416c1967c66adb99a75dce24ecc324b50e528a29";
|
|
|
- String stringToSign = timestamp + "\n" + secret;
|
|
|
- Mac mac = Mac.getInstance("HmacSHA256");
|
|
|
- mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
|
|
|
- byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
|
|
|
- String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
|
|
|
- StringBuffer sb = new StringBuffer("https://api.dingtalk.com/robot/send?access_token=22d7b3b54ea7f1633c640dfdf17083d0731c3757719a84bd333740a8b18eb035×tamp=");
|
|
|
- sb.append(timestamp).append("&sign=").append(sign);
|
|
|
- return sb.toString();
|
|
|
- }
|
|
|
+ return failed("系统繁忙");
|
|
|
+ }
|
|
|
+
|
|
|
+ public String dingTalkRobotsSecurityParam() throws Exception{
|
|
|
+ Long timestamp = System.currentTimeMillis();
|
|
|
+ String secret = "SEC5e3b73acccb12fc2a2a7d36d416c1967c66adb99a75dce24ecc324b50e528a29";
|
|
|
+ String stringToSign = timestamp + "\n" + secret;
|
|
|
+ Mac mac = Mac.getInstance("HmacSHA256");
|
|
|
+ mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
|
|
|
+ byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
|
|
|
+ String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
|
|
|
+ StringBuffer sb = new StringBuffer("https://api.dingtalk.com/robot/send?access_token=22d7b3b54ea7f1633c640dfdf17083d0731c3757719a84bd333740a8b18eb035×tamp=");
|
|
|
+ sb.append(timestamp).append("&sign=").append(sign);
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
}
|