/**
|
* 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;
|
}
|
}
|
}
|