org.springframework
spring-web
diff --git a/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/monitor/PointUtil.java b/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/monitor/PointUtil.java
index 804a10c1aa861b6acf64ec2e2a4f60fdb39898fb..d7a38fa66e3afd577d2793cee6c0961e14c42df4 100644
--- a/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/monitor/PointUtil.java
+++ b/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/monitor/PointUtil.java
@@ -1,18 +1,41 @@
package com.central.log.monitor;
+import cn.hutool.core.util.ReflectUtil;
+import lombok.Getter;
+import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.ObjectUtils;
+
+import java.lang.reflect.Field;
+import java.util.Iterator;
+import java.util.Map;
/**
* 日志埋点工具类
*
* @author zlt
+ *
+ * Blog: https://zlt2000.gitee.io
+ * Github: https://github.com/zlt2000
*/
@Slf4j
public class PointUtil {
private static final String MSG_PATTERN = "{}|{}|{}";
+ private static final String PROPERTIES_SPLIT = "&";
+ private static final String PROPERTIES_VALUE_SPLIT = "=";
+
+ private final PointEntry pointEntry;
private PointUtil() {
- throw new IllegalStateException("Utility class");
+ pointEntry = new PointEntry();
+ }
+
+ @Setter
+ @Getter
+ private class PointEntry {
+ String id;
+ String type;
+ Object properties;
}
/**
@@ -31,4 +54,66 @@ public class PointUtil {
public static void debug(String id, String type, String message) {
log.debug(MSG_PATTERN, id, type, message);
}
+
+ public static PointUtil builder() {
+ return new PointUtil();
+ }
+
+ /**
+ * @param businessId 业务id/对象id
+ */
+ public PointUtil id(Object businessId) {
+ this.pointEntry.setId(String.valueOf(businessId));
+ return this;
+ }
+
+ /**
+ * @param type 类型
+ */
+ public PointUtil type(String type) {
+ this.pointEntry.setType(type);
+ return this;
+ }
+
+ /**
+ * @param properties 对象属性
+ */
+ public PointUtil properties(Object properties) {
+ this.pointEntry.setProperties(properties);
+ return this;
+ }
+
+ private String getPropertiesStr() {
+ Object properties = this.pointEntry.getProperties();
+ StringBuilder result = new StringBuilder();
+ if (!ObjectUtils.isEmpty(properties)) {
+ //解析map
+ if (properties instanceof Map) {
+ Map proMap = (Map)properties;
+ Iterator ite = proMap.entrySet().iterator();
+ while (ite.hasNext()) {
+ Map.Entry entry = ite.next();
+ if (result.length() > 0) {
+ result.append(PROPERTIES_SPLIT);
+ }
+ result.append(entry.getKey()).append(PROPERTIES_VALUE_SPLIT).append(entry.getValue());
+ }
+ } else {//解析对象
+ Field[] allFields = ReflectUtil.getFields(properties.getClass());
+ for (Field field : allFields) {
+ String fieldName = field.getName();
+ Object fieldValue = ReflectUtil.getFieldValue(properties, field);
+ if (result.length() > 0) {
+ result.append(PROPERTIES_SPLIT);
+ }
+ result.append(fieldName).append(PROPERTIES_VALUE_SPLIT).append(fieldValue);
+ }
+ }
+ }
+ return result.toString();
+ }
+
+ public void build() {
+ PointUtil.debug(this.pointEntry.getId(), this.pointEntry.getType(), this.getPropertiesStr());
+ }
}
diff --git a/zlt-gateway/zuul-gateway/src/main/java/com/central/gateway/filter/pre/UserInfoHeaderFilter.java b/zlt-gateway/zuul-gateway/src/main/java/com/central/gateway/filter/pre/UserInfoHeaderFilter.java
index 731a907df0b25fc403ca803206afd59357b3cfd8..ae832a0d6b129f35f2da6a525780f0e620406122 100644
--- a/zlt-gateway/zuul-gateway/src/main/java/com/central/gateway/filter/pre/UserInfoHeaderFilter.java
+++ b/zlt-gateway/zuul-gateway/src/main/java/com/central/gateway/filter/pre/UserInfoHeaderFilter.java
@@ -45,7 +45,7 @@ public class UserInfoHeaderFilter extends ZuulFilter {
RequestContext ctx = RequestContext.getCurrentContext();
//客户端模式只返回一个clientId
if (principal instanceof SysUser) {
- SysUser user = (SysUser)authentication.getPrincipal();
+ SysUser user = (SysUser)principal;
ctx.addZuulRequestHeader(SecurityConstants.USER_ID_HEADER, String.valueOf(user.getId()));
ctx.addZuulRequestHeader(SecurityConstants.USER_HEADER, user.getUsername());
}