java110-bean/src/main/java/com/java110/dto/order/OrderDto.java
@@ -6,10 +6,7 @@ public class OrderDto extends PageDto implements Serializable { public static final String APP_ID = "APP-ID"; public static final String TRANSACTION_ID = "TRANSACTION-ID"; public static final String REQUEST_TIME = "REQUEST-TIME"; public static final String USER_ID = "USER-ID"; public static final String O_ID = "O-ID"; java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java
@@ -1,14 +1,14 @@ package com.java110.core.aop; import com.java110.core.factory.Java110TransactionalFactory; import com.java110.dto.BusinessDto; import com.java110.dto.order.OrderDto; import com.java110.utils.constant.CommonConstant; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -51,19 +51,19 @@ while (headerNames.hasMoreElements()) { String key = (String) headerNames.nextElement(); String value = request.getHeader(key); if (OrderDto.APP_ID.equals(key.toUpperCase())) { if (CommonConstant.APP_ID.equals(key)) { orderDto.setAppId(value); } if (OrderDto.TRANSACTION_ID.equals(key.toUpperCase())) { if (CommonConstant.TRANSACTION_ID.equals(key)) { orderDto.setExtTransactionId(value); } if (OrderDto.REQUEST_TIME.equals(key.toUpperCase())) { if (CommonConstant.REQUEST_TIME.equals(key)) { orderDto.setRequestTime(value); } if (OrderDto.O_ID.equals(key.toUpperCase())) { if (OrderDto.O_ID.equals(key)) { orderDto.setoId(value); } if (OrderDto.USER_ID.equals(key.toUpperCase())) { if (CommonConstant.USER_ID.equals(key)) { orderDto.setUserId(value); } } @@ -95,9 +95,10 @@ //环绕通知,环绕增强,相当于MethodInterceptor @Around("dataProcess()") public Object around(ProceedingJoinPoint pjp) { public Object around(ProceedingJoinPoint pjp) throws Throwable { Object o = null; try { Object o = pjp.proceed(); o = pjp.proceed(); //观察者不做处理 if (Java110TransactionalFactory.ROLE_OBSERVER.equals(Java110TransactionalFactory.getServiceRole())) { return o; @@ -109,7 +110,8 @@ logger.error("执行方法异常", e); //回退事务 Java110TransactionalFactory.fallbackOId(); return new ResponseEntity("内部异常" + e.getLocalizedMessage(), HttpStatus.BAD_REQUEST); //return new BusinessDto(BusinessDto.CODE_ERROR, "内部异常" + e.getLocalizedMessage()); throw e; } } } java110-core/src/main/java/com/java110/core/context/ApiDataFlow.java
@@ -1,6 +1,7 @@ package com.java110.core.context; import com.alibaba.fastjson.JSONObject; import com.java110.dto.order.OrderDto; import com.java110.utils.constant.CommonConstant; import com.java110.entity.center.AppRoute; import org.springframework.http.ResponseEntity; @@ -131,6 +132,19 @@ this.setRequestTime(headerAll.get(CommonConstant.HTTP_REQ_TIME)); this.setUserId(headerAll.get(CommonConstant.HTTP_USER_ID)); if (headerAll.containsKey(CommonConstant.APP_ID)) { this.setAppId(headerAll.get(CommonConstant.APP_ID)); } if (headerAll.containsKey(CommonConstant.TRANSACTION_ID)) { this.setTransactionId(headerAll.get(CommonConstant.TRANSACTION_ID)); } if (headerAll.containsKey(CommonConstant.REQUEST_TIME)) { this.setRequestTime(headerAll.get(CommonConstant.REQUEST_TIME)); } if (headerAll.containsKey(CommonConstant.USER_ID)) { this.setUserId(headerAll.get(CommonConstant.USER_ID)); } if (headerAll != null){ this.requestHeaders.putAll(headerAll); this.requestCurrentHeaders.putAll(headerAll); java110-core/src/main/java/com/java110/core/event/service/api/ServiceDataFlowEventPublishing.java
@@ -88,6 +88,11 @@ && ServiceCodeConstant.SERVICE_CODE_DO_SERVICE_TRANSFER.equals(serviceCode)) { dataFlowListeners.add(listener); } //特殊处理 透传类接口 if (ServiceCodeConstant.SERVICE_CODE_SYSTEM_TRANSFER.equals(listener.getServiceCode()) && ServiceCodeConstant.SERVICE_CODE_SYSTEM_TRANSFER.equals(serviceCode)) { dataFlowListeners.add(listener); } } //这里排序 java110-interface/src/main/java/com/java110/intf/community/repair/IAppraiseRepairService.java
@@ -6,6 +6,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; /** * 保存评价接口类 java110-utils/src/main/java/com/java110/utils/constant/CommonConstant.java
@@ -135,6 +135,10 @@ public final static String INSTANCE_N = "N"; public static final String APP_ID = "app-id"; public static final String TRANSACTION_ID = "transaction-id"; public static final String REQUEST_TIME = "request-time"; public static final String USER_ID = "user-id"; public final static String HTTP_SERVICE_API = "API"; public final static String HTTP_SERVICE = "SERVICE"; java110-utils/src/main/java/com/java110/utils/util/StringUtil.java
@@ -453,6 +453,21 @@ } /** * 校验是否为JSON * * @param msg * @return */ public static Boolean isJsonObject(String msg) { try { JSONObject.parseObject(msg); } catch (Exception e) { return false; } return true; } /** * 获取指定长度(按字节长度获取)的字符串,中文算2个字节长度,兼容oracle的 varchar2长度计算方式 * * @param src 源字符串 service-api/src/main/java/com/java110/api/listener/system/TransferListener.java
@@ -57,14 +57,23 @@ if (CommonConstant.HTTP_METHOD_GET.equals(service.getMethod())) { responseEntity = restTemplate.exchange(requestUrl, HttpMethod.GET, httpEntity, String.class); } else if (CommonConstant.HTTP_METHOD_PUT.equals(service.getMethod())) { responseEntity = restTemplate.exchange(service.getUrl(), HttpMethod.PUT, httpEntity, String.class); responseEntity = restTemplate.exchange(requestUrl, HttpMethod.PUT, httpEntity, String.class); } else if (CommonConstant.HTTP_METHOD_DELETE.equals(service.getMethod())) { responseEntity = restTemplate.exchange(requestUrl, HttpMethod.DELETE, httpEntity, String.class); } else { responseEntity = restTemplate.exchange(service.getUrl(), HttpMethod.POST, httpEntity, String.class); responseEntity = restTemplate.exchange(requestUrl, HttpMethod.POST, httpEntity, String.class); } } catch (HttpStatusCodeException e) { //这里spring 框架 在4XX 或 5XX 时抛出 HttpServerErrorException 异常,需要重新封装一下 responseEntity = new ResponseEntity<String>(e.getResponseBodyAsString(), e.getStatusCode()); logger.error("请求下游服务【" + requestUrl + "】异常,参数为" + httpEntity + e.getResponseBodyAsString(), e); String body = e.getResponseBodyAsString(); if(StringUtil.isJsonObject(body)){ JSONObject bodyObj = JSONObject.parseObject(body); if(bodyObj.containsKey("message") && !StringUtil.isEmpty(bodyObj.getString("message"))){ body = bodyObj.getString("message"); } } responseEntity = new ResponseEntity<String>(body, e.getStatusCode()); } logger.debug("API 服务调用下游服务请求:{},返回为:{}", httpEntity, responseEntity);