|
@@ -110,7 +110,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 会话信息
|
|
|
*/
|
|
|
public static Session getSession() {
|
|
|
- return getSession(false);
|
|
|
+ return getSession(true);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -125,58 +125,53 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
/**
|
|
|
* 获取会话信息
|
|
|
*
|
|
|
- * @param nullable 会话是否可以为空
|
|
|
+ * @param required 会话是否是必须
|
|
|
* @return 会话信息
|
|
|
*/
|
|
|
- public static Session getSession(boolean nullable) {
|
|
|
+ public static Session getSession(boolean required) {
|
|
|
Session session = SESSION_CONTEXT.get().peek();
|
|
|
if (session == EMPTY_SESSION) {
|
|
|
session = null;
|
|
|
}
|
|
|
- return nullable ? session : Objects.requireNonNull(session, "Session has not been initialized");
|
|
|
+ return required ? Objects.requireNonNull(session, "Session has not been initialized") : session;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取会话属性
|
|
|
+ * 获取当前用户ID
|
|
|
*
|
|
|
- * @param function 会话属性方法
|
|
|
- * @param <T> 会话对象属性类型
|
|
|
- * @return 会话属性值
|
|
|
+ * @return 用户ID
|
|
|
*/
|
|
|
- public static <T> T getSessionProperty(@NonNull Function<Session, T> function) {
|
|
|
- return getSessionProperty(function, null);
|
|
|
+ public static Long getId() {
|
|
|
+ return getId(true);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取会话属性
|
|
|
+ * 获取当前用户ID
|
|
|
*
|
|
|
- * @param function 会话属性方法
|
|
|
- * @param defaultValue 默认值
|
|
|
- * @param <T> 会话对象属性类型
|
|
|
- * @return 会话属性值
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 用户ID
|
|
|
*/
|
|
|
- public static <T> T getSessionProperty(@NonNull Function<Session, T> function, T defaultValue) {
|
|
|
- return ObjectUtils.ifNull(ObjectUtils.ifNull(getSession(true), function), defaultValue);
|
|
|
+ public static Long getId(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取当前用户ID
|
|
|
+ * 获取当前会话类型
|
|
|
*
|
|
|
- * @return 用户ID
|
|
|
+ * @return 会话类型
|
|
|
*/
|
|
|
- public static Long getId() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getId);
|
|
|
+ public static Session.Type getType() {
|
|
|
+ return getType(true);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取当前会话类型
|
|
|
*
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
* @return 会话类型
|
|
|
*/
|
|
|
- public static Session.Type getType() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getType);
|
|
|
+ public static Session.Type getType(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getType);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -185,8 +180,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 请求地址
|
|
|
*/
|
|
|
public static String getHost() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getHost);
|
|
|
+ return getHost(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前会话请求地址
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 请求地址
|
|
|
+ */
|
|
|
+ public static String getHost(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getHost);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -195,8 +199,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 设备标识
|
|
|
*/
|
|
|
public static String getDevice() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getDevice);
|
|
|
+ return getDevice(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前会话设备标识
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 设备标识
|
|
|
+ */
|
|
|
+ public static String getDevice(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getDevice);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -205,8 +218,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 租户编号
|
|
|
*/
|
|
|
public static Integer getTenant() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getTenant);
|
|
|
+ return getTenant(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前会话租户编号
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 租户编号
|
|
|
+ */
|
|
|
+ public static Integer getTenant(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getTenant);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -215,8 +237,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 渠道来源
|
|
|
*/
|
|
|
public static String getChannel() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getChannel);
|
|
|
+ return getChannel(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前会话渠道来源
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 渠道来源
|
|
|
+ */
|
|
|
+ public static String getChannel(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getChannel);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -225,8 +256,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return true/false
|
|
|
*/
|
|
|
public static boolean isInitial() {
|
|
|
- Session session = getSession(true);
|
|
|
- return Boolean.TRUE.equals(ObjectUtils.ifNull(session, Session::getInitial));
|
|
|
+ return isInitial(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断当前会话是否是首次请求
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return true/false
|
|
|
+ */
|
|
|
+ public static boolean isInitial(boolean requireSession) {
|
|
|
+ return Boolean.TRUE.equals(ObjectUtils.ifNull(getSession(requireSession), Session::getInitial));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -235,8 +275,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 平台信息
|
|
|
*/
|
|
|
public static Platform getPlatform() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getPlatform);
|
|
|
+ return getPlatform(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前会话平台信息
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 平台信息
|
|
|
+ */
|
|
|
+ public static Platform getPlatform(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getPlatform);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -245,8 +294,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 终端信息
|
|
|
*/
|
|
|
public static Terminal getTerminal() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getTerminal);
|
|
|
+ return getTerminal(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前会话终端信息
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 终端信息
|
|
|
+ */
|
|
|
+ public static Terminal getTerminal(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getTerminal);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -255,8 +313,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 版本信息
|
|
|
*/
|
|
|
public static String getVersion() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getVersion);
|
|
|
+ return getVersion(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前会话版本信息
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 版本信息
|
|
|
+ */
|
|
|
+ public static String getVersion(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getVersion);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -265,8 +332,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 签名信息
|
|
|
*/
|
|
|
public static String getSignature() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getSignature);
|
|
|
+ return getSignature(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前会话签名信息
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 签名信息
|
|
|
+ */
|
|
|
+ public static String getSignature(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getSignature);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -275,8 +351,17 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return 序列号
|
|
|
*/
|
|
|
public static Integer getSequence() {
|
|
|
- Session session = getSession(true);
|
|
|
- return ObjectUtils.ifNull(session, Session::getSequence);
|
|
|
+ return getSequence(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前终端序列号
|
|
|
+ *
|
|
|
+ * @param requireSession 会话是否是必须
|
|
|
+ * @return 序列号
|
|
|
+ */
|
|
|
+ public static Integer getSequence(boolean requireSession) {
|
|
|
+ return ObjectUtils.ifNull(getSession(requireSession), Session::getSequence);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -359,7 +444,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return true/false
|
|
|
*/
|
|
|
public static boolean isPlatform(Platform platform) {
|
|
|
- return platform != null && platform == getSessionProperty(Session::getPlatform);
|
|
|
+ return platform != null && platform == getPlatform(false);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -369,7 +454,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return true/false
|
|
|
*/
|
|
|
public static boolean isTerminal(Terminal terminal) {
|
|
|
- return terminal != null && terminal == getSessionProperty(Session::getTerminal);
|
|
|
+ return terminal != null && terminal == getTerminal(false);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -383,7 +468,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
if (terminal == null || StringUtils.isEmpty(version)) {
|
|
|
return false;
|
|
|
}
|
|
|
- Session session = getSession(true);
|
|
|
+ Session session = getSession(false);
|
|
|
return terminal == ObjectUtils.ifNull(session, Session::getTerminal)
|
|
|
&& version.equals(ObjectUtils.ifNull(session, Session::getVersion));
|
|
|
}
|
|
@@ -398,7 +483,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
if (version == null) {
|
|
|
return false;
|
|
|
}
|
|
|
- Session session = getSession(true);
|
|
|
+ Session session = getSession(false);
|
|
|
String channel = ObjectUtils.ifNull(session, Session::getChannel);
|
|
|
Platform platform = ObjectUtils.ifNull(session, Session::getPlatform);
|
|
|
Terminal terminal = ObjectUtils.ifNull(session, Session::getTerminal);
|
|
@@ -440,7 +525,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
if (terminal == null || StringUtils.isEmpty(version)) {
|
|
|
return false;
|
|
|
}
|
|
|
- Session session = getSession(true);
|
|
|
+ Session session = getSession(false);
|
|
|
return terminal == ObjectUtils.ifNull(session, Session::getTerminal)
|
|
|
&& Version.isBefore(ObjectUtils.ifNull(session, Session::getVersion), version, contains);
|
|
|
}
|
|
@@ -468,7 +553,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
if (terminal == null || StringUtils.isEmpty(version)) {
|
|
|
return false;
|
|
|
}
|
|
|
- Session session = getSession(true);
|
|
|
+ Session session = getSession(false);
|
|
|
return terminal == ObjectUtils.ifNull(session, Session::getTerminal)
|
|
|
&& Version.isAfter(ObjectUtils.ifNull(session, Session::getVersion), version, contains);
|
|
|
}
|
|
@@ -479,7 +564,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return true/false
|
|
|
*/
|
|
|
public static boolean isAdmin() {
|
|
|
- return ObjectUtils.ifNull(getSession(true), Session::getType) == Session.Type.ADMIN;
|
|
|
+ return ObjectUtils.ifNull(getSession(false), Session::getType) == Session.Type.ADMIN;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -488,7 +573,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return true/false
|
|
|
*/
|
|
|
public static boolean isNormal() {
|
|
|
- return ObjectUtils.ifNull(getSession(true), Session::getType) == Session.Type.NORMAL;
|
|
|
+ return ObjectUtils.ifNull(getSession(false), Session::getType) == Session.Type.NORMAL;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -497,7 +582,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return true/false
|
|
|
*/
|
|
|
public static boolean isClient() {
|
|
|
- return ObjectUtils.ifNull(getSession(true), Session::getType) == Session.Type.CLIENT;
|
|
|
+ return ObjectUtils.ifNull(getSession(false), Session::getType) == Session.Type.CLIENT;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -537,7 +622,7 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
* @return true/false
|
|
|
*/
|
|
|
public static boolean isTesting(Platform platform, Terminal terminal) {
|
|
|
- Session session = getSession(true);
|
|
|
+ Session session = getSession(false);
|
|
|
if (session == null) {
|
|
|
return false;
|
|
|
}
|