107 lines
2.7 KiB
Java
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();
|
|
}
|
|
}
|