/** * Copyright (c) 2018 人人开源 All rights reserved. * * https://www.renren.io * * 版权所有,侵权必究! */ package com.zt.core.context; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; /** * 用户 * * @author hehz */ public class UserContext { // public static String FACTORY_ID="factoryId"; // public static String SHIP_ID="shipId"; // public static String REGION_FLAG="regionFlag"; public static Subject getSubject() { try { return SecurityUtils.getSubject(); }catch (Exception e){ return null; } } /** * 获取用户信息 */ public static User getUser() { Subject subject = getSubject(); if(subject == null){ return new User(); } User user = (User)subject.getPrincipal(); if(user == null){ return new User(); } return user; } /** * 获取用户ID */ public static Long getUserId() { return getUser().getId(); } /** * 获取部门ID */ public static Long getDeptId() { return getUser().getDeptId(); } /** * 用戶login成功后,執行此方法。 * regionFlag可以是all,qd,sy三个值之一,分别表示当前用户所属于的区域。 * 依据User的deptId去查询sysDept,对sysDept的pids进行挨个查询,判断sysDept.name是否等于‘三亚’,如果是设置regionFlag为sy, * 如果sysDept.name=='青岛',设置regionFlag='qd',否则都不存在就设置regionFlag='yjs' * 如果sysDept.name=='厂家',设置factoryId=user.companyId,否则设置其值为空。 * 如果sysDept.name=='T',设置shipId=User.companyId,否则设置其值为空。 * factoryId可以是一个sysDept.id或者空,空表示当前用户不属于厂家,有值表示用户属于此厂家。 * shipId可以是一个sysDept.id或者是空,空表示当前用户不属于某T,否则表示用户属于某T。 * * String regionFlag=""; * session.setAttribute(REGION_FLAG,regionFlag); * String factoryId=""; * session.setAttribute(FACTORY_ID,factoryId); * String shipId=""; * session.setAttribute(SHIP_ID,shipId); * * 后面在字典数据过滤的时候,业务数据查询的时候都需要从session中拿这几个值,从而进行相关的逻辑处理。 */ public static void setSessionValue(String key,String value){ try { Subject subject = getSubject(); Session session=subject.getSession(); session.setAttribute(key,value); }catch(Exception e){ e.printStackTrace(); } } /** * 获取session的key值 * @param key * @return */ public static String getSessionValue(String key){ try { Subject subject = getSubject(); Session session=subject.getSession(); return (String)session.getAttribute(key); }catch(Exception e){ e.printStackTrace(); return null; } } }