JeeSite 4.x

Spring Boot 最好的快速开发平台

常用工具类 UserUtils、DictUtils、CacheUtils

常用工具类

1、获取当前用户:

  • UserUtils.getUser();
  • entity.getCurrentUser();
  • ${@UserUtils.getUser().getUserName()} 视图页面获取用户名
  • ${isNotBlank(@UserUtils.getUser().getId())} 视图页面判断登录状态

2、获取当前用户员工:

  • EmpUtils.getEmployee();
  • ${@EmpUtils.getEmployee().getEmpName()} 视图页面获取员工姓名

3、获取当前用户部门:

  • EmpUtils.getOffice();
  • ${@EmpUtils.getOffice().getOfficeName()} 视图页面获取所在部门

4、获取当前用户菜单:

  • UserUtils.getMenuList();
  • UserUtils.getMenuListByParentCode(parentCode);

5、获取当前用户的角色:

  • UserUtils.getUser().getRoleList();
  • RoleUtils.hasCurrentUserRole(roleCode); 判断当前用户是否包含某角色
  • RoleUtils.hasUserRole(userCode, roleCode); 判断某用户是否包含某角色

6、获取当前用户授权信息:

  • UserUtils.getAuthInfo();

7、获取或设置当前用户缓存:

  • UserUtils.getCache(key);
  • UserUtils.putCache(key);

UserUtils

/**
 * 用户工具类
 * @author ThinkGem
 */
public class UserUtils {
	
	/**
	 * 根据用户编码获取用户
	 * @param userCode
	 * @return 取不到返回null
	 */
	public static User get(String userCode);

	/**
	 * 根据登录账号获取用户(不区分大小写)
	 * @param loginCode
	 * @return 取不到返回null
	 */
	public static User getByLoginCode(String loginCode);

	/**
	 * 根据登录账号获取用户(不区分大小写)
	 * @param loginCode
	 * @return 取不到返回null
	 */
	public static User getByLoginCode(String loginCode, String corpCode);
	
	/**
	 * 根据用户类型和引用Code获取用户
	 * @param userType
	 * @param refCode
	 * @return
	 */
	public static User getByTypeAndRef(String userType, String refCode);
	
	/**
	 * 获取当前用户
	 * @return 取不到返回 new User()
	 */
	public static User getUser();
	
	/**
	 * 获取用户类型值(jeesite.yml中的user.userTypeMap配置)
	 * @param userType 用户类型
	 * @param key 配置参数key
	 * @return
	 */
	public static String getUserTypeValue(String userType, String key);
	
	/**
	 * 获取当前用户权限信息
	 * @return
	 */
	public static AuthorizationInfo getAuthInfo();
	
	/**
	 * 获取当前用户授权菜单
	 * @return
	 */
	public static List<Menu> getMenuList();
	
	/**
	 * 获取当前用户授权菜单
	 * @param parentCode 父级菜单编码,仅当前级别数据;如果使用“0,”开头,则按父级查询所有子节点数据
	 * @return
	 */
	public static List<Menu> getMenuListByParentCode(String parentCode);
	
	/**
	 * 获取当前用户授权菜单树([code,childList[code,childList[...]]]的形式)
	 * @return
	 */
	public static List<Menu> getMenuTree();
	
	/**
	 * 获取当前用户授权菜单树([code,childList[code,childList[...]]]的形式)
	 * @param parentCode 父级菜单编码,仅当前级别数据;如果使用“0,”开头,则按父级查询所有子节点数据
	 * @return
	 */
	public static List<Menu> getMenuTreeByParentCode(String parentCode);
	
	/**
	 * 根据用户名获取SSO的登录令牌(sso密钥+用户名+日期,进行md5加密)
	 * 生成举例: Md5Utils.md5(secretKey+username+20150101))
	 * @param username 用户登录名
	 * @return token
	 */
	public static String getSsoToken(String username);
	
	/**
	 * 获取当前登录者主体对象(未登录返回空)
	 */
	public static LoginInfo getLoginInfo();
	
	/**
	 * 获取当前会话对象
	 * @return
	 */
	public static Session getSession();
	
	/**
	 * 获取当前用户主题对象,可进行验证权限
	 */
	public static Subject getSubject();
	
	/**
	 * 获取用户缓存值
	 * @param key
	 * @return
	 */
	public static <V> V getCache(String key);
	
	/**
	 * 获取用户缓存值
	 * @param key
	 * @param defaultValue
	 * @return
	 */
	public static <V> V getCache(String key, V defaultValue);

	/**
	 * 设置用户缓存值
	 * @param key
	 * @param value
	 */
	public static <V> void putCache(String key, V value);

	/**
	 * 移除用户缓存值
	 * @param key
	 */
	public static void removeCache(String key);

	/**
	 * 移除用户缓存值
	 * @param key
	 */
	public static void removeCacheByKeyPrefix(String keyPrefix);

	/**
	 * 清除当前用户缓存
	 */
	public static void clearCache();
	
	/**
	 * 清除指定用户缓存,不包括改用的SESSION缓存
	 * @param user.userCode
	 */
	public static void clearCache(User user);
	
}

EmpUtils

/**
 * 员工部门工具类
 * @author ThinkGem
 */
public class EmpUtils {
	
	/**
	 * 根据员工编码获取员工
	 * @author ThinkGem
	 */
	public static Employee get(String empCode);
	
	/**
	 * 根据用户对象获取员工,不是员工返回null
	 * @author ThinkGem
	 */
	public static Employee get(User user);
	
	/**
	 * 根据用户编码获取员工,找不到或不是员工返回null
	 * @author ThinkGem
	 */
	public static Employee getByUserCode(String userCode);
	
	/**
	 * 根据登录账号获取员工,找不到或不是员工返回null
	 * @author ThinkGem
	 */
	public static Employee getByLoginCode(String loginCode);
	
	/**
	 * 获取当前登录的员工
	 * @author ThinkGem
	 */
	public static Employee getEmployee();

	/**
	 * 获取当前附属机构对象列表
	 * @author ThinkGem
	 */
	public static List<EmployeeOffice> getEmployeeOfficeList();
	
	/**
	 * 根据机构编码获取机构对象
	 * @param officeCode
	 * @author ThinkGem
	 */
	public static Office getOffice(String officeCode);
	
	/**
	 * 获取当前员工机构
	 * @author ThinkGem
	 */
	public static Office getOffice();

	/**
	 * 获取当前员工所有的机构
	 * @author ThinkGem
	 */
	public static List<Office> getOfficeAllList();

	/**
	 * 获取当前员工所有机构编码,包括附属机构(数据权限用)
	 * @author ThinkGem
	 */
	public static String[] getOfficeCodes();
	
	/**
	 * 获取当前员工所有机构编码,包括附属机构以及子机构(数据权限用)V4.2.0
	 * @author ThinkGem
	 */
	public static String[] getOfficeCodesAndChildren();

	/**
	 * 根据机构类型,获取当前员工所有机构编码,包括附属机构(数据权限用)
	 * @author ThinkGem
	 */
	public static String[] getOfficeCodesByType(String type);

	/**
	 * 获取当前员工所有上级机构编码,包括附属机构(数据权限用)
	 * @author ThinkGem
	 */
	public static String[] getOfficeParentCodess();
	
	/**
	 * 根据机构类型,获取当前员工所有机构编码,包括附属机构(数据权限用)
	 * @author ThinkGem
	 */
	public static String[] getOfficeParentCodessByType(String type);
	
	/**
	 * 根据公司编码获取公司对象
	 * @param companyCode
	 * @author ThinkGem
	 */
	public static Company getCompany(String companyCode);
	
	/**
	 * 获取当前员工公司对象
	 * @author ThinkGem
	 */
	public static Company getCompany();

	/**
	 * 获取当前员工所有的公司
	 * @author ThinkGem
	 */
	public static List<Company> getCompanyAllList();
	
	/**
	 * 获取当前员工所有公司编码,包括子公司(数据权限用)V4.2.0
	 * @author ThinkGem
	 */
	public static String[] getCompanyCodesAndChildren();
	
	/**
	 * 清除指定用户缓存,不包括改用的SESSION缓存
	 * @author ThinkGem
	 */
	public static void removeCache(String key);
}

DictUtils

/**
 * 字典工具类
 * @author ThinkGem
 */
public class DictUtils {
	
	/**
	 * 根据字典值获取字典标签
	 * @param dictType
	 * @param dictValue
	 * @param defaultValue
	 * @return
	 */
	public static String getDictLabel(String dictType, String dictValue, String defaultValue);
	
	/**
	 * 根据字典值获取字典标签(多个值用逗号隔开)
	 * @param dictType
	 * @param dictValues
	 * @param defaultValue
	 * @return
	 */
	public static String getDictLabels(String dictType, String dictValues, String defaultValue);

	/**
	 * 根据标签获取字典值
	 * @param dictType
	 * @param dictLabel
	 * @param defaultValue
	 * @return
	 */
	public static String getDictValue(String dictType, String dictLabel, String defaultValue);

	/**
	 * 根据标签获取字典值(多个值用逗号隔开)
	 * @param dictType
	 * @param dictLabels
	 * @param defaultValue
	 * @return
	 */
	public static String getDictValues(String dictType, String dictLabels, String defaultValue);

	/**
	 * 返回字典列表
	 * @param dictType 字典类型,加 __all(双下划线+all) 后缀,则返回停用的字典 v4.2.0
	 * @return
	 */
	public static List<DictData> getDictList(String dictType);
	
	/**
	 * 手动追加字典缓存
	 * @param dictType
	 * @param dictDatas
	 * @author ThinkGem
	 */
	public static void setDictList(String dictType, DictData... dictDatas);
	
	/**
	 * 返回字典列表(JSON)
	 * @param type
	 * @return
	 */
	public static String getDictListJson(String dictType);
	
	/**
	 * 清理缓存
	 */
	public static void clearDictCache();
	
}

CacheUtils

/**
 * 全局缓存工具类
 * @author ThinkGem
 */
public class CacheUtils {

	/**
	 * 获取缓存
	 * @param cacheName 缓存名称
	 * @param key 缓存键
	 */
	public static <V> V get(String cacheName, String key);
	
	/**
	 * 获取缓存
	 * @param cacheName 缓存名称
	 * @param key 缓存键
	 * @param defaultValue 默认值
	 * @return
	 */
	public static <V> V get(String cacheName, String key, V defaultValue);
	
	/**
	 * 写入缓存
	 * @param cacheName 缓存名称
	 * @param key 缓存键
	 * @param value 缓存值
	 */
	public static <V> void put(String cacheName, String key, V value);
	
	/**
	 * 写入缓存
	 * @param cacheName 缓存名称
	 * @param key 缓存键
	 * @param value 缓存值
	 * @param timeToLiveInSeconds 自最后更新多长时间超期
	 */
	public static <V> void put(String cacheName, String key, V value, long timeToLiveInSeconds);
	
	/**
	 * 从缓存中移除
	 * @param cacheName 缓存名称
	 * @param key 缓存键
	 */
	public static void remove(String cacheName, String key);
	
	/**
	 * 根据key前缀从缓存中移除
	 * @param cacheName 缓存名称
	 * @param keyPrefixes 缓存键前缀
	 */
	public static void removeByKeyPrefix(String cacheName, String... keyPrefixes);
	
	/**
	 * 获得一个Cache,没有则抛出异常。
	 */
	public static <K, V> org.apache.shiro.cache.Cache<K, V> getCache(String cacheName);
	
	/**
	 * 清空缓存数据(清理缓存中的数据)
	 */
	public static void clearCache(String cacheName);

	/**
	 * 移除缓存(删掉这个缓存名字)
	 */
	public static void removeCache(String cacheName);
	
	/**
	 * 获得一个Cache,没有则抛出异常。
	 */
	public static Set<String> getCacheNames();
	
	/**
	 * 清理 spring.cache.clearNames 指定的缓存(除会话缓存外的缓存)
	 */
	public static void clearCache();
	
}

SysCacheUtils

/**
 * 系统缓存工具类(v4.2开始从 CacheUtils 中分离出的 SysCache 缓存,防止无用,
 * 该类仅用于操作 cacheName 为 sysCache 的缓存数据,而 CacheUtils 是操作全局缓存工具)
 * @author ThinkGem
 */
public class SysUtils {

	/**
	 * 获取缓存名称为SYS_CACHE内的值
	 * @param key 缓存键
	 */
	public static <V> V get(String key);
	
	/**
	 * 获取缓存名称为SYS_CACHE内的值
	 * @param key 缓存键
	 * @param defaultValue 默认值
	 */
	public static <V> V get(String key, V defaultValue);
	
	/**
	 * 写入缓存名称为SYS_CACHE内的值
	 * @param key 缓存键
	 * @param value 缓存值
	 */
	public static void put(String key, Object value);
	
	/**
	 * 从缓存名称为SYS_CACHE中移除
	 * @param key 缓存键
	 */
	public static void remove(String key);

	/**
	 * 根据key前缀从缓存名称为SYS_CACHE中移除
	 * @param keyPrefixes 缓存键前缀
	 */
	public static void removeByKeyPrefix(String... keyPrefixes);
	
}

ModuleUtils

/**
 * 模块工具类
 * @author ThinkGem
 */
public class ModuleUtils {
	
	/**
	 * 根据编码获取模块
	 * @param moduleCode
	 * @return
	 */
	public static Module getModule(String moduleCode);

	/**
	 * 根据编码获取模块列表
	 * @return
	 */
	public static Map<String, Module> getModuleList();
	
	/**
	 * 获取开启的模块编号
	 */
	public static List<String> getEnableModuleCodes();
	
}

GlobalUtils

/**
 * 全局配置类
 * @author ThinkGem
 */
public class Global{
	
	/**
	 * 显示/隐藏
	 */
	public static final String SHOW = "1";
	public static final String HIDE = "0";

	/**
	 * 是/否
	 */
	public static final String YES = "1";
	public static final String NO = "0";

	/**
	 * 对/错
	 */
	public static final String TRUE = "true";
	public static final String FALSE = "false";

	/**
	 * 操作
	 */
	public static final String OP_ADD = "add";
	public static final String OP_EDIT = "edit";
	public static final String OP_AUTH = "auth";
		
	/**
	 * 视图页面中获取常量用: @see ${@Global.getConst('YES')}
	 * @param field 字段名,为 “Global.Fields”时返回所有字段的js对象。
	 */
	public static Object getConst(String field);
	
	/**
	 * 获取配置文件中的值,取不到从System.getProperty获取,
	 * 仍取不到,则获取sys_config表中的值,仍然获取不到,返回空字符串。
	 * @return 获取不到,返回空字符串
	 */
	public static String getConfig(String key);

	/**
	 * 获取配置文件中的值,取不到从System.getProperty获取,
	 * 仍取不到,则获取sys_config表中的值,仍然获取不到,返回默认值。
	 * @return 获取不到,返回defValue默认值
	 */
	public static String getConfig(String key, String defValue);

	/**
	 * 获取配置文件中的值,取不到从System.getProperty获取,
	 * 仍取不到,则获取sys_config表中的值,仍然获取不到,返回默认值。
	 * @return 获取不到,返回defValue默认值
	 */
	public static Boolean getConfigToBoolean(String key, String defValue);

	/**
	 * 获取配置文件中的值,取不到从System.getProperty获取,
	 * 仍取不到,则获取sys_config表中的值,仍然获取不到,返回默认值。
	 * @return 获取不到,返回defValue默认值
	 */
	public static Integer getConfigToInteger(String key, String defValue);
	
	/**
	 * 获取配置文件中的值,取不到从System.getProperty获取,取不到,返回空。
	 * @return 获取不到,返回空
	 */
	public static String getProperty(String key);
	
	/**
	 * 获取配置文件中的值,取不到从System.getProperty获取,取不到,返回空。
	 * @return 获取不到,返回空defValue默认值
	 */
	public static String getProperty(String key, String defValue);

	/**
	 * 获取配置文件中的值,取不到从System.getProperty获取,取不到,返回空。
	 * @return 获取不到,返回空defValue默认值
	 */
	public static Boolean getPropertyToBoolean(String key, String defValue);
	
	/**
	 * 获取配置文件中的值,取不到从System.getProperty获取,取不到,返回空。
	 * @return 获取不到,返回空defValue默认值
	 */
	public static Integer getPropertyToInteger(String key, String defValue);
	    
	/**
	 * 清理配置缓存(同时会重新加载properties文件)
	 */
	public static void clearCache();
	
	/**
	 * 获取国际化语言名
	 */
	public static String getLang();
	
	/**
	 * 设置国际化语言名
	 */
	public static void setLang(String lang, HttpServletRequest request, HttpServletResponse response);
	
	/**
	 * 获取国际化语言译文
	 */
	public static String getText(String code, String... params);
	
	/**
	 * 获取管理端根路径(返回 yml 里配置的 adminPath)
	 */
	public static String getAdminPath();
	
	/**
	 * 获取前端根路径(返回 yml 里配置的 frontPath)
	 */
	public static String getFrontPath();
	
	/**
	 * 获取当前数据库类型(返回 yml 里配置的数据库类型 jdbc.type)
	 * @return oracle(dameng、kingbase、highgo)、mysql(mariadb)、mssql(mssql2012)、postgresql
	 */
	public static String getJdbcType();
	
	/**
	 * 获取当前数据库名称(如果数据库类型为dameng,则返回oracle)
	 * @return oracle(dameng、kingbase、highgo)、mysql(mariadb)、mssql(mssql2012)、postgresql
	 */
	public static String getDbName();
	
	/**
	 * 获取当前数据库连接信息
	 * @param key 参数名(type、driver、url、username)
	 * @return 数据库连接信息
	 */
	public static String getJdbcInfo(String key);
	
	/**
	 * 获取表前缀(返回 yml 里配置的 jdbc.tablePrefix)
	 */
	public static String getTablePrefix();
	
	/**
	 * 获取上传文件的根目录
	 * @param path 相对的路径 
	 * @return
	 */
	public static String getUserfilesBaseDir(String path);
	
	/**
	 * 是否使用多租户模式
	 */
	public static Boolean isUseCorpModel();
	
}

关注 JeeSite 公众号,了解最新动态