java110 лет назад: 4
Родитель
Сommit
8d62257c26

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/trace/TraceDto.java

@@ -12,6 +12,8 @@ public class TraceDto implements Serializable {
 
     private List<TraceAnnotationsDto> annotations;
 
+    private TraceParamDto param;
+
 
     public String getId() {
         return id;
@@ -60,4 +62,12 @@ public class TraceDto implements Serializable {
     public void setAnnotations(List<TraceAnnotationsDto> annotations) {
         this.annotations = annotations;
     }
+
+    public TraceParamDto getParam() {
+        return param;
+    }
+
+    public void setParam(TraceParamDto param) {
+        this.param = param;
+    }
 }

+ 0 - 7
java110-core/src/main/java/com/java110/core/trace/ApiLogAop.java

@@ -1,7 +0,0 @@
-package com.java110.core.trace;
-
-/**
- * api 服务抓日志
- */
-public class ApiLogAop {
-}

+ 18 - 0
java110-core/src/main/java/com/java110/core/trace/Java110TraceFactory.java

@@ -6,6 +6,7 @@ import com.java110.core.log.LoggerFactory;
 import com.java110.dto.trace.TraceAnnotationsDto;
 import com.java110.dto.trace.TraceDto;
 import com.java110.dto.trace.TraceEndpointDto;
+import com.java110.dto.trace.TraceParamDto;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.EnvironmentConstant;
 import com.java110.utils.factory.ApplicationContextFactory;
@@ -156,6 +157,23 @@ public class Java110TraceFactory {
         return traceDto.getId();
     }
 
+    /**
+     * 添加参数
+     *
+     * @param traceParamDto
+     */
+    public static void putParams(TraceParamDto traceParamDto) {
+        TraceDto traceDto = getTraceDto();
+
+        if (traceDto == null) {
+            return;
+        }
+
+        traceDto.setParam(traceParamDto);
+        put(getSpanId(SPAN_ID), traceDto);
+
+    }
+
     /**
      * 添加动作时间
      *

+ 12 - 0
java110-core/src/main/java/com/java110/core/trace/Java110TraceLog.java

@@ -0,0 +1,12 @@
+package com.java110.core.trace;
+
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Component
+public @interface Java110TraceLog {
+}

+ 46 - 0
java110-core/src/main/java/com/java110/core/trace/Java110TraceLogApiAop.java

@@ -0,0 +1,46 @@
+package com.java110.core.trace;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.trace.TraceParamDto;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Pointcut;
+
+/**
+ * trace log  api aop
+ */
+public class Java110TraceLogApiAop {
+    //@Pointcut("execution(public * com.java110.api.smo.impl..*.ApiServiceSMOImpl.service(..))")
+
+    @Pointcut("@annotation(com.java110.core.trace.Java110TraceLog)")
+    public void dataProcess() {
+    }
+
+    //环绕通知,环绕增强,相当于MethodInterceptor
+    @Around("dataProcess()")
+    public Object around(ProceedingJoinPoint pjp) throws Throwable {
+        Object out = null;
+        TraceParamDto traceParamDto = new TraceParamDto();
+        JSONObject paramIn = new JSONObject();
+        JSONObject paramOut = new JSONObject();
+        try {
+            Object[] args = pjp.getArgs();
+            for (int paramIndex = 0; paramIndex < args.length; paramIndex++) {
+                paramIn.put("param" + paramIndex, args[paramIndex]);
+            }
+            traceParamDto.setReqParam(paramIn.toJSONString());
+            out = pjp.proceed();
+            if (paramOut != null) {
+                paramOut.put("param", out);
+            } else {
+                paramOut.put("param", new JSONObject());
+            }
+            traceParamDto.setResParam(paramOut.toJSONString());
+            Java110TraceFactory.putParams(traceParamDto);
+        } catch (Throwable e) {
+            throw e;
+        } finally {
+            return out;
+        }
+    }
+}

+ 6 - 0
java110-service/src/main/java/com/java110/service/api/BusinessApi.java

@@ -2,6 +2,7 @@ package com.java110.service.api;
 
 import com.java110.core.base.controller.BaseController;
 import com.java110.core.factory.DataTransactionFactory;
+import com.java110.core.trace.Java110TraceLog;
 import com.java110.service.context.DataQuery;
 import com.java110.service.context.DataQueryFactory;
 import com.java110.service.smo.IQueryServiceSMO;
@@ -46,6 +47,7 @@ public class BusinessApi extends BaseController {
     @ApiOperation(value = "业务查询get请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "method", value = "用户编号", required = true, dataType = "String")
     @Deprecated
+    @Java110TraceLog
     public ResponseEntity<String> service(HttpServletRequest request) {
         try {
             Map<String, Object> headers = new HashMap<String, Object>();
@@ -87,6 +89,7 @@ public class BusinessApi extends BaseController {
     @ApiOperation(value = "业务查询post请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "method", value = "用户编号", required = true, dataType = "String")
     @Deprecated
+    @Java110TraceLog
     public ResponseEntity<String> queryPost(@RequestBody String businessInfo) {
         try {
             DataQuery dataQuery = DataQueryFactory.newInstance().builder(businessInfo);
@@ -103,6 +106,7 @@ public class BusinessApi extends BaseController {
 
     @Deprecated
     @RequestMapping(path = "/businessApi/do", method = RequestMethod.GET)
+    @Java110TraceLog
     public String doGet(HttpServletRequest request) {
         return DataTransactionFactory.createBusinessResponseJson(ResponseConstant.RESULT_CODE_ERROR, "不支持Get方法请求").toJSONString();
     }
@@ -126,6 +130,7 @@ public class BusinessApi extends BaseController {
      */
     @Deprecated
     @RequestMapping(path = "/businessApi/do", method = RequestMethod.POST)
+    @Java110TraceLog
     public String doPost(@RequestBody String businessInfo) {
         try {
             DataQuery dataQuery = DataQueryFactory.newInstance().builder(businessInfo);
@@ -168,6 +173,7 @@ public class BusinessApi extends BaseController {
 
 
     @RequestMapping(path = "/businessApi/fallBack", method = RequestMethod.POST)
+    @Java110TraceLog
     public ResponseEntity<String> fallBack(@RequestBody String fallBackInfo) {
         try {
             return queryServiceSMOImpl.fallBack(fallBackInfo);

+ 3 - 0
java110-service/src/main/java/com/java110/service/api/CmdApi.java

@@ -2,6 +2,7 @@ package com.java110.service.api;
 
 import com.java110.core.base.controller.BaseController;
 import com.java110.core.factory.DataTransactionFactory;
+import com.java110.core.trace.Java110TraceLog;
 import com.java110.service.context.DataQuery;
 import com.java110.service.context.DataQueryFactory;
 import com.java110.service.smo.ICmdServiceSMO;
@@ -43,6 +44,7 @@ public class CmdApi extends BaseController {
 
 
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.POST)
+    @Java110TraceLog
     public ResponseEntity<String> service(@PathVariable String service,
                                           @RequestBody String postInfo,
                                           HttpServletRequest request) {
@@ -74,6 +76,7 @@ public class CmdApi extends BaseController {
     @RequestMapping(path = "/{resource}/{action}", method = RequestMethod.POST)
     @ApiOperation(value = "资源post请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "subServicePost", value = "用户编号", required = true, dataType = "String")
+    @Java110TraceLog
     public ResponseEntity<String> subServicePost(
             @PathVariable String resource,
             @PathVariable String action,

+ 9 - 16
service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java

@@ -3,8 +3,6 @@ package com.java110.api.smo.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.api.smo.IApiServiceSMO;
-import com.java110.core.log.LoggerFactory;
-import com.java110.core.smo.ISaveTransactionLogSMO;
 import com.java110.core.client.RestTemplate;
 import com.java110.core.context.ApiDataFlow;
 import com.java110.core.context.DataFlow;
@@ -12,23 +10,17 @@ import com.java110.core.event.service.api.ServiceDataFlowEventPublishing;
 import com.java110.core.factory.AuthenticationFactory;
 import com.java110.core.factory.DataFlowFactory;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.log.LoggerFactory;
+import com.java110.core.smo.ISaveTransactionLogSMO;
+import com.java110.core.trace.Java110TraceLog;
 import com.java110.entity.center.AppRoute;
 import com.java110.entity.center.AppService;
 import com.java110.entity.center.DataFlowLinksCost;
 import com.java110.po.transactionLog.TransactionLogPo;
 import com.java110.utils.cache.AppRouteCache;
 import com.java110.utils.cache.MappingCache;
-import com.java110.utils.constant.CommonConstant;
-import com.java110.utils.constant.KafkaConstant;
-import com.java110.utils.constant.MappingConstant;
-import com.java110.utils.constant.ResponseConstant;
-import com.java110.utils.constant.ServiceCodeConstant;
-import com.java110.utils.exception.BusinessException;
-import com.java110.utils.exception.DecryptException;
-import com.java110.utils.exception.InitConfigDataException;
-import com.java110.utils.exception.ListenerExecuteException;
-import com.java110.utils.exception.NoAuthorityException;
-import com.java110.utils.exception.SMOException;
+import com.java110.utils.constant.*;
+import com.java110.utils.exception.*;
 import com.java110.utils.kafka.KafkaFactory;
 import com.java110.utils.log.LoggerEngine;
 import com.java110.utils.util.DateUtil;
@@ -75,6 +67,7 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
      * @throws SMOException
      */
     @Override
+    @Java110TraceLog
     public ResponseEntity<String> service(String reqJson, Map<String, String> headers) throws SMOException {
 
         ApiDataFlow dataFlow = null;
@@ -106,11 +99,11 @@ public class ApiServiceSMOImpl extends LoggerEngine implements IApiServiceSMO {
             responseEntity = dataFlow.getResponseEntity();
 
         } catch (DecryptException e) { //解密异常
-            responseEntity = ResultVo.error("解密异常:" + e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
+            responseEntity = ResultVo.error("解密异常:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
         } catch (BusinessException e) {
-            responseEntity = ResultVo.error(e.getMessage(),HttpStatus.BAD_REQUEST);
+            responseEntity = ResultVo.error(e.getMessage(), HttpStatus.BAD_REQUEST);
         } catch (NoAuthorityException e) {
-            responseEntity = ResultVo.error("鉴权失败:" + e.getMessage(),HttpStatus.UNAUTHORIZED);
+            responseEntity = ResultVo.error("鉴权失败:" + e.getMessage(), HttpStatus.UNAUTHORIZED);
         } catch (InitConfigDataException e) {
             responseEntity = ResultVo.error("初始化失败:" + e.getMessage(), HttpStatus.BAD_REQUEST);
         } catch (Exception e) {

+ 2 - 0
service-order/src/main/java/com/java110/order/api/OrderApi.java

@@ -1,6 +1,7 @@
 package com.java110.order.api;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.trace.Java110TraceLog;
 import com.java110.entity.order.Orders;
 import com.java110.order.smo.IOrderProcessServiceSMO;
 import com.java110.utils.constant.ResponseConstant;
@@ -51,6 +52,7 @@ public class OrderApi extends BaseController {
     @RequestMapping(path = "/service", method = RequestMethod.POST)
     @ApiOperation(value = "中心服务订单受理", notes = "test: 返回 200 表示服务受理成功,其他表示失败")
     @ApiImplicitParam(paramType = "query", name = "orderInfo", value = "订单受理信息", required = true, dataType = "String")
+    @Java110TraceLog
     public ResponseEntity<String> servicePost(@RequestBody String orderInfo, HttpServletRequest request) {
 
         ResponseEntity<String> responseEntity = null;