Files
UserclassService/src/main/java/com/yunhai/bschclassmanage/utils/UserContext.java
T
2026-08-13 16:53:39 +08:00

107 lines
2.7 KiB
Java

package com.yunhai.bschclassmanage.utils;
import lombok.Value;
public class UserContext {
private static final ThreadLocal<Integer> USER_ID = new ThreadLocal<>();
private static final ThreadLocal<String> USER_NAME = new ThreadLocal<>();
private static final ThreadLocal<Integer> ROLE_ID = new ThreadLocal<>();
private static final ThreadLocal<Integer> SCH_ID = new ThreadLocal<>();
private static final ThreadLocal<String> IP = new ThreadLocal<>();
private static final ThreadLocal<Integer> TYPE = new ThreadLocal<>();
public static void setUserId(Integer userId) {
USER_ID.set(userId);
}
public static Integer getUserId() {
return USER_ID.get();
}
public static void setUserName(String userName) {
USER_NAME.set(userName);
}
public static String getUserName() {
return USER_NAME.get();
}
public static void setRoleId(Integer roleId) {
ROLE_ID.set(roleId);
}
public static Integer getRoleId() {
return ROLE_ID.get();
}
public static void setSchId(Integer schId) {
SCH_ID.set(schId);
}
public static Integer getSchId() {
return SCH_ID.get();
}
public static void setIp(String ip) {
IP.set(ip);
}
public static String getIp() {
return IP.get();
}
public static void setType(Integer type) {
TYPE.set(type);
}
public static Integer getType() {
return TYPE.get();
}
@Value
public static class UserInfo {
Integer userId;
String userName;
Integer roleId;
Integer schId;
String ip;
Integer type;
}
public static UserInfo getCurrentUser() {
return new UserInfo(
USER_ID.get(),
USER_NAME.get(),
ROLE_ID.get(),
SCH_ID.get(),
IP.get(),
TYPE.get()
);
}
public static void setUserInfo(UserInfo info) {
if (info == null) return; // 或抛异常
USER_ID.set(info.getUserId());
USER_NAME.set(info.getUserName());
ROLE_ID.set(info.getRoleId());
SCH_ID.set(info.getSchId());
IP.set(info.getIp());
TYPE.set(info.getType());
}
public static Runnable wrap(Runnable task) {
UserInfo info = getCurrentUser();
return () -> {
try {
setUserInfo(info);
task.run();
} finally {
clear();
}
};
}
public static void clear() {
USER_ID.remove();
USER_NAME.remove();
ROLE_ID.remove();
SCH_ID.remove();
IP.remove();
TYPE.remove();
}
}