| | |
| | | |
| | | import com.java110.core.factory.Java110TransactionalFactory; |
| | | 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; |
| | |
| | | while (headerNames.hasMoreElements()) { |
| | | String key = (String) headerNames.nextElement(); |
| | | String value = request.getHeader(key); |
| | | if (OrderDto.APP_ID.equals(key.toUpperCase())) { |
| | | logger.debug("请求头信息 key= " + key+",value = "+value); |
| | | |
| | | key = key.toLowerCase(); |
| | | if (CommonConstant.APP_ID.equals(key) || CommonConstant.HTTP_APP_ID.equals(key)) { |
| | | orderDto.setAppId(value); |
| | | } |
| | | if (OrderDto.TRANSACTION_ID.equals(key.toUpperCase())) { |
| | | if (CommonConstant.TRANSACTION_ID.equals(key)|| CommonConstant.HTTP_TRANSACTION_ID.equals(key)) { |
| | | orderDto.setExtTransactionId(value); |
| | | } |
| | | if (OrderDto.REQUEST_TIME.equals(key.toUpperCase())) { |
| | | if (CommonConstant.REQUEST_TIME.equals(key)|| CommonConstant.HTTP_REQ_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)|| CommonConstant.HTTP_USER_ID.equals(key)) { |
| | | orderDto.setUserId(value); |
| | | } |
| | | } |
| | |
| | | |
| | | //环绕通知,环绕增强,相当于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; |
| | |
| | | logger.error("执行方法异常", e); |
| | | //回退事务 |
| | | Java110TransactionalFactory.fallbackOId(); |
| | | return new ResponseEntity("内部异常" + e.getLocalizedMessage(), HttpStatus.BAD_REQUEST); |
| | | //return new BusinessDto(BusinessDto.CODE_ERROR, "内部异常" + e.getLocalizedMessage()); |
| | | throw e; |
| | | }finally { |
| | | //清理事务信息 |
| | | Java110TransactionalFactory.clearOId(); |
| | | } |
| | | } |
| | | } |