Răsfoiți Sursa

系统优化

woody 1 an în urmă
părinte
comite
f838d5a406

+ 51 - 99
framework-base/src/main/java/com/chelvc/framework/base/context/SessionContextHolder.java

@@ -104,6 +104,11 @@ public class SessionContextHolder implements ServletRequestListener {
      */
     public static final String HEADER_FINGERPRINT = "Fingerprint";
 
+    /**
+     * 实际终端编号请求头
+     */
+    public static final String HEADER_ACTUAL_TERMINAL = "Actual-Terminal";
+
     /**
      * 空会话对象实例
      */
@@ -227,25 +232,6 @@ public class SessionContextHolder implements ServletRequestListener {
         return ObjectUtils.ifNull(getSession(requireSession), Session::getDevice);
     }
 
-    /**
-     * 判断当前会话是否是首次请求
-     *
-     * @return true/false
-     */
-    public static boolean isInitial() {
-        return isInitial(true);
-    }
-
-    /**
-     * 判断当前会话是否是首次请求
-     *
-     * @param requireSession 会话是否是必须
-     * @return true/false
-     */
-    public static boolean isInitial(boolean requireSession) {
-        return Boolean.TRUE.equals(ObjectUtils.ifNull(getSession(requireSession), Session::getInitial));
-    }
-
     /**
      * 获取当前会话渠道来源
      *
@@ -380,60 +366,41 @@ public class SessionContextHolder implements ServletRequestListener {
     }
 
     /**
-     * 获取请求时间戳
-     *
-     * @return 时间戳
-     */
-    public static Long getTimestamp() {
-        return getTimestamp(true);
-    }
-
-    /**
-     * 获取请求时间戳
-     *
-     * @param requireSession 会话是否是必须
-     * @return 时间戳
-     */
-    public static Long getTimestamp(boolean requireSession) {
-        return ObjectUtils.ifNull(getSession(requireSession), Session::getTimestamp);
-    }
-
-    /**
-     * 获取当前会话签名信息
+     * 判断当前会话是否是首次请求
      *
-     * @return 签名信息
+     * @return true/false
      */
-    public static String getSignature() {
-        return getSignature(true);
+    public static boolean isInitial() {
+        return isInitial(true);
     }
 
     /**
-     * 获取当前会话签名信息
+     * 判断当前会话是否是首次请求
      *
      * @param requireSession 会话是否是必须
-     * @return 签名信息
+     * @return true/false
      */
-    public static String getSignature(boolean requireSession) {
-        return ObjectUtils.ifNull(getSession(requireSession), Session::getSignature);
+    public static boolean isInitial(boolean requireSession) {
+        return Boolean.TRUE.equals(ObjectUtils.ifNull(getSession(requireSession), Session::getInitial));
     }
 
     /**
-     * 获取当前会话设备指纹
+     * 获取请求时间戳
      *
-     * @return 设备指纹
+     * @return 时间戳
      */
-    public static String getFingerprint() {
-        return getFingerprint(true);
+    public static Long getTimestamp() {
+        return getTimestamp(true);
     }
 
     /**
-     * 获取当前会话设备指纹
+     * 获取请求时间戳
      *
      * @param requireSession 会话是否是必须
-     * @return 设备指纹
+     * @return 时间戳
      */
-    public static String getFingerprint(boolean requireSession) {
-        return ObjectUtils.ifNull(getSession(requireSession), Session::getFingerprint);
+    public static Long getTimestamp(boolean requireSession) {
+        return ObjectUtils.ifNull(getSession(requireSession), Session::getTimestamp);
     }
 
     /**
@@ -767,7 +734,7 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 身份标识
      */
-    protected Long getId(HttpServletRequest request) {
+    protected Long getId(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_ID), Long::parseLong);
     }
 
@@ -777,7 +744,7 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 主机地址
      */
-    protected String getHost(HttpServletRequest request) {
+    protected String getHost(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(HttpUtils.getRequestAddress(request), (String) null);
     }
 
@@ -787,7 +754,7 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 电话号码
      */
-    protected String getMobile(HttpServletRequest request) {
+    protected String getMobile(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_MOBILE), (String) null);
     }
 
@@ -797,27 +764,17 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 设备标识
      */
-    protected String getDevice(HttpServletRequest request) {
+    protected String getDevice(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_DEVICE), (String) null);
     }
 
-    /**
-     * 获取是否首次请求
-     *
-     * @param request Http请求对象
-     * @return true/false
-     */
-    protected Boolean getInitial(HttpServletRequest request) {
-        return StringUtils.ifEmpty(request.getHeader(HEADER_INITIAL), Boolean::parseBoolean);
-    }
-
     /**
      * 获取客户端渠道来源
      *
      * @param request Http请求对象
      * @return 渠道来源
      */
-    protected String getChannel(HttpServletRequest request) {
+    protected String getChannel(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_CHANNEL), (String) null);
     }
 
@@ -827,7 +784,7 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 平台标识
      */
-    protected Platform getPlatform(HttpServletRequest request) {
+    protected Platform getPlatform(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_PLATFORM), Platform::valueOf);
     }
 
@@ -837,7 +794,7 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 终端标识
      */
-    protected Terminal getTerminal(HttpServletRequest request) {
+    protected Terminal getTerminal(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_TERMINAL), Terminal::valueOf);
     }
 
@@ -847,7 +804,7 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 版本号
      */
-    protected String getVersion(HttpServletRequest request) {
+    protected String getVersion(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_VERSION), (String) null);
     }
 
@@ -857,7 +814,7 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 业务类型
      */
-    protected String getBusiness(HttpServletRequest request) {
+    protected String getBusiness(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_BUSINESS), (String) null);
     }
 
@@ -867,7 +824,7 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 客户端序号
      */
-    protected Integer getSequence(HttpServletRequest request) {
+    protected Integer getSequence(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_SEQUENCE), Integer::parseInt);
     }
 
@@ -877,38 +834,43 @@ public class SessionContextHolder implements ServletRequestListener {
      * @param request Http请求对象
      * @return 授权信息
      */
-    protected String getAuthority(HttpServletRequest request) {
+    protected String getAuthority(@NonNull HttpServletRequest request) {
         return StringUtils.ifEmpty(request.getHeader(HEADER_AUTHORITY), (String) null);
     }
 
     /**
-     * 获取请求时间戳
+     * 获取是否首次请求
      *
      * @param request Http请求对象
-     * @return 时间戳
+     * @return true/false
      */
-    protected Long getTimestamp(HttpServletRequest request) {
-        return StringUtils.ifEmpty(request.getHeader(HEADER_TIMESTAMP), Long::parseLong);
+    protected Boolean getInitial(@NonNull HttpServletRequest request) {
+        return StringUtils.ifEmpty(request.getHeader(HEADER_INITIAL), Boolean::parseBoolean);
     }
 
     /**
-     * 获取签名信息
+     * 获取请求时间戳
      *
      * @param request Http请求对象
-     * @return 签名信息
+     * @return 时间戳
      */
-    protected String getSignature(HttpServletRequest request) {
-        return StringUtils.ifEmpty(request.getHeader(HEADER_SIGNATURE), (String) null);
+    protected Long getTimestamp(@NonNull HttpServletRequest request) {
+        return StringUtils.ifEmpty(request.getHeader(HEADER_TIMESTAMP), Long::parseLong);
     }
 
     /**
-     * 获取设备指纹
+     * 初始化会话信息
      *
      * @param request Http请求对象
-     * @return 设备指纹
+     * @return 会话信息
      */
-    protected String getFingerprint(HttpServletRequest request) {
-        return StringUtils.ifEmpty(request.getHeader(HEADER_FINGERPRINT), (String) null);
+    protected Session initializeSession(@NonNull HttpServletRequest request) {
+        return Session.builder().id(this.getId(request)).host(this.getHost(request)).mobile(this.getMobile(request))
+                .device(this.getDevice(request)).channel(this.getChannel(request)).platform(this.getPlatform(request))
+                .terminal(this.getTerminal(request)).version(this.getVersion(request))
+                .business(this.getBusiness(request)).sequence(this.getSequence(request))
+                .authority(this.getAuthority(request)).initial(this.getInitial(request))
+                .timestamp(this.getTimestamp(request)).build();
     }
 
     /**
@@ -977,15 +939,13 @@ public class SessionContextHolder implements ServletRequestListener {
             session = Session.builder().id(id).business(business).mobile(mobile).authority(authority)
                     .host(ObjectUtils.ifNull(session, Session::getHost))
                     .device(ObjectUtils.ifNull(session, Session::getDevice))
-                    .initial(ObjectUtils.ifNull(session, Session::getInitial))
                     .channel(ObjectUtils.ifNull(session, Session::getChannel))
                     .platform(ObjectUtils.ifNull(session, Session::getPlatform))
                     .terminal(ObjectUtils.ifNull(session, Session::getTerminal))
                     .version(ObjectUtils.ifNull(session, Session::getVersion))
                     .sequence(ObjectUtils.ifNull(session, Session::getSequence))
                     .timestamp(ObjectUtils.ifNull(session, Session::getTimestamp))
-                    .signature(ObjectUtils.ifNull(session, Session::getSignature))
-                    .fingerprint(ObjectUtils.ifNull(session, Session::getFingerprint)).build();
+                    .initial(ObjectUtils.ifNull(session, Session::getInitial)).build();
             deque.poll();
             deque.push(session);
         }
@@ -994,15 +954,7 @@ public class SessionContextHolder implements ServletRequestListener {
 
     @Override
     public void requestInitialized(ServletRequestEvent event) {
-        HttpServletRequest request = (HttpServletRequest) event.getServletRequest();
-        Session session = Session.builder().id(this.getId(request)).host(this.getHost(request))
-                .mobile(this.getMobile(request)).device(this.getDevice(request)).initial(this.getInitial(request))
-                .channel(this.getChannel(request)).platform(this.getPlatform(request))
-                .terminal(this.getTerminal(request)).version(this.getVersion(request))
-                .business(this.getBusiness(request)).sequence(this.getSequence(request))
-                .authority(this.getAuthority(request)).timestamp(this.getTimestamp(request))
-                .signature(this.getSignature(request)).fingerprint(this.getFingerprint(request)).build();
-        setSession(session);
+        setSession(this.initializeSession((HttpServletRequest) event.getServletRequest()));
     }
 
     @Override

+ 10 - 1
framework-base/src/main/java/com/chelvc/framework/base/model/Enumerable.java

@@ -22,6 +22,15 @@ public interface Enumerable extends Serializable {
         return null;
     }
 
+    /**
+     * 获取枚举项顺序
+     *
+     * @return 枚举项顺序
+     */
+    default int ordinal() {
+        return 0;
+    }
+
     /**
      * 获取枚举编号
      *
@@ -37,7 +46,7 @@ public interface Enumerable extends Serializable {
      * @return 排序数字
      */
     default int getOrder() {
-        return 0;
+        return this.ordinal();
     }
 
     /**

+ 4 - 10
framework-base/src/main/java/com/chelvc/framework/base/model/Platform.java

@@ -13,30 +13,24 @@ public enum Platform implements Enumerable {
     /**
      * PC
      */
-    PC(1, "PC"),
+    PC("PC"),
 
     /**
      * 苹果
      */
-    IOS(2, "苹果"),
+    IOS("苹果"),
 
     /**
      * 安卓
      */
-    ANDROID(3, "安卓");
-
-    /**
-     * 排序数字
-     */
-    private final int order;
+    ANDROID("安卓");
 
     /**
      * 平台描述
      */
     private final String description;
 
-    Platform(int order, String description) {
-        this.order = order;
+    Platform(String description) {
         this.description = description;
     }
 }

+ 4 - 14
framework-base/src/main/java/com/chelvc/framework/base/model/Session.java

@@ -38,11 +38,6 @@ public class Session implements Serializable {
      */
     private String device;
 
-    /**
-     * 是否是首次请求
-     */
-    private Boolean initial;
-
     /**
      * 渠道来源
      */
@@ -79,17 +74,12 @@ public class Session implements Serializable {
     private String authority;
 
     /**
-     * 请求时间戳
-     */
-    private Long timestamp;
-
-    /**
-     * 签名信息
+     * 是否是首次请求
      */
-    private String signature;
+    private Boolean initial;
 
     /**
-     * 设备指纹
+     * 请求时间戳
      */
-    private String fingerprint;
+    private Long timestamp;
 }

+ 6 - 12
framework-base/src/main/java/com/chelvc/framework/base/model/Terminal.java

@@ -11,32 +11,26 @@ import lombok.Getter;
 @Getter
 public enum Terminal implements Enumerable {
     /**
-     * 后台管理
+     * Web
      */
-    ADMIN(1, "后台管理"),
+    WEB("Web"),
 
     /**
      * App
      */
-    APP(2, "App"),
+    APP("App"),
 
     /**
      * 小程序
      */
-    APPLET(3, "小程序");
+    APPLET("小程序");
 
     /**
-     * 排序数字
-     */
-    private final int order;
-
-    /**
-     * 平台描述
+     * 终端描述
      */
     private final String description;
 
-    Terminal(int order, String description) {
-        this.order = order;
+    Terminal(String description) {
         this.description = description;
     }
 }

+ 1 - 1
framework-base/src/main/java/com/chelvc/framework/base/util/HttpUtils.java

@@ -39,7 +39,7 @@ public final class HttpUtils {
     /**
      * 请求结果统一封装响应头
      */
-    public static final String UNIFIED_RESPONSE_HEADER = "unified-response-body";
+    public static final String UNIFIED_RESPONSE_HEADER = "Unified-Response-Body";
 
     /**
      * 资源分隔符匹配模式

+ 1 - 1
framework-boot/pom.xml

@@ -68,7 +68,7 @@
                 <artifactId>apidoc-maven-plugin</artifactId>
                 <version>${apidoc-maven-plugin.version}</version>
                 <configuration>
-                    <includeHeaders>{Long} Id 主体标识,{String} Mobile 手机号码,{String} Device 设备标识,{Boolean} Initial 是否首次请,{String} Channel 渠道来源,{String} Platform 平台标识: PC(PC)、IOS(苹果)、ANDROID(安卓),{String} Terminal 终端标识: ADMIN(后台管理)、APP(App)、APPLET(小程序),{String} Version 终端版本,{String} Business 业务类型,{Integer} Sequence 终端序号,{String} Authority 授权信息,{Long} Timestamp 请求时间戳,{String} Signature 签名信息,{String} Fingerprint 设备指纹,{String} Authorization 认证信息</includeHeaders>
+                    <includeHeaders>{Long} Id 主体标识,{String} Mobile 手机号码,{String} Device 设备标识,{String} Channel 渠道来源,{String} Platform 平台标识: PC(PC)、IOS(苹果)、ANDROID(安卓),{String} Terminal 终端标识: WEB(Web)、APP(App)、APPLET(小程序),{String} Actual-Terminal 实际终端标识: WEB(Web)、APP(App)、APPLET(小程序),{String} Version 终端版本,{String} Business 业务类型,{Integer} Sequence 终端序号,{String} Authority 授权信息,{Boolean} Initial 是否首次请,{Long} Timestamp 请求时间戳,{String} Signature 签名信息,{String} Fingerprint 设备指纹,{String} Authorization 认证信息</includeHeaders>
                     <excludeClasses>com.chelvc.framework.base.interceptor.GlobalExceptionInterceptor</excludeClasses>
                     <analyserFactoryClass>com.chelvc.framework.base.apidoc.MethodAnalyserFactory</analyserFactoryClass>
                 </configuration>

+ 8 - 16
framework-feign/src/main/java/com/chelvc/framework/feign/interceptor/FeignHeaderInterceptor.java

@@ -36,22 +36,14 @@ public class FeignHeaderInterceptor implements RequestInterceptor {
             }
         }
 
-        // 重置会话请求头
-        Session session = SessionContextHolder.getSession();
-        headers.put(SessionContextHolder.HEADER_ID, session.getId());
-        headers.put(SessionContextHolder.HEADER_MOBILE, session.getMobile());
-        headers.put(SessionContextHolder.HEADER_DEVICE, session.getDevice());
-        headers.put(SessionContextHolder.HEADER_INITIAL, session.getInitial());
-        headers.put(SessionContextHolder.HEADER_CHANNEL, session.getChannel());
-        headers.put(SessionContextHolder.HEADER_PLATFORM, session.getPlatform());
-        headers.put(SessionContextHolder.HEADER_TERMINAL, session.getTerminal());
-        headers.put(SessionContextHolder.HEADER_VERSION, session.getVersion());
-        headers.put(SessionContextHolder.HEADER_BUSINESS, session.getBusiness());
-        headers.put(SessionContextHolder.HEADER_SEQUENCE, session.getSequence());
-        headers.put(SessionContextHolder.HEADER_AUTHORITY, session.getAuthority());
-        headers.put(SessionContextHolder.HEADER_TIMESTAMP, session.getTimestamp());
-        headers.put(SessionContextHolder.HEADER_SIGNATURE, session.getSignature());
-        headers.put(SessionContextHolder.HEADER_FINGERPRINT, session.getFingerprint());
+        // 重置会话认证请求头
+        Session session = SessionContextHolder.getSession(false);
+        if (session != null) {
+            headers.put(SessionContextHolder.HEADER_ID, session.getId());
+            headers.put(SessionContextHolder.HEADER_MOBILE, session.getMobile());
+            headers.put(SessionContextHolder.HEADER_BUSINESS, session.getBusiness());
+            headers.put(SessionContextHolder.HEADER_AUTHORITY, session.getAuthority());
+        }
 
         // 初始化Feign请求头
         boolean debug = log.isDebugEnabled();