package com.yunhai.bschclassmanage.utils; import lombok.Value; public class UserContext { private static final ThreadLocal USER_ID = new ThreadLocal<>(); private static final ThreadLocal USER_NAME = new ThreadLocal<>(); private static final ThreadLocal ROLE_ID = new ThreadLocal<>(); private static final ThreadLocal SCH_ID = new ThreadLocal<>(); private static final ThreadLocal IP = new ThreadLocal<>(); private static final ThreadLocal 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(); } }