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