当前上下文

获取当前登录者的上下文信息

  • 系统提供“当前上下文”组件,用于在前端页面上,获取当前登录者的上下文信息
  • 系统提供 com.justep.util.ContextUtil 类,用于在后端服务中,获取当前登录者的上下文信息

前端页面获取上下文

在页面上添加“当前上下文”组件

  • 在表达式编辑器中可以看到上下文组件提供的函数
  • 在 JS 中,获取上下文组件后,调用组件的 JS 方法,代码如下
    onJsBtnClick = async (event) => {
        let wxContext0 = this.comp("wxContext0");
        console.log(await wxContext0.getCurrentUserAllOrgs());
        console.log(await wxContext0.getTenantCode());
    }

下面介绍上下文组件提供的 JS 方法

用户信息

方法名 说明 参数 返回值
getCurrentUserInfo() 获取用户信息 JSON 对象
getUserInfoAttr(列标识) 获取用户属性(列标识) users 数据集的列标识 列值
getUserInfoExt(扩展表列属性标识) 获取用户扩展属性(扩展表列标识) usersx 数据集的列标识 列值

1718877311575

组织信息

当前岗位信息

方法名 说明 参数 返回值
getCurrentPersonMember() 获取当前人员成员 JSON 对象
getCurrentPersonMemberFID() 获取当前人员成员主键全路径
getCurrentPersonMemberFName() 获取当前人员成员名称全路径
getCurrentPersonMemberFCode() 获取当前人员成员编码全路径
getCurrentPersonMemberID() 获取当前人员成员主键
getCurrentPersonMemberOrgID() 获取当前人员成员的 orgID
getCurrentPersonMemberName() 获取当前人员成员名称
getCurrentPersonMemberCode() 获取当前人员成员编码
getCurrentOrg() 获取当前组织 JSON 对象
getCurrentOrgFID() 获取当前组织主键全路径
getCurrentOrgFName() 获取当前组织名称全路径
getCurrentOrgFCode() 获取当前组织编码全路径
getCurrentOrgID() 获取当前组织主键
getCurrentOrgName() 获取当前组织名称
getCurrentOrgCode() 获取当前组织编码
getCurrentOgn() 获取当前机构 JSON 对象
getCurrentOgnFID() 获取当前机构主键全路径,省略其它5个方法
getCurrentDept() 获取当前部门 JSON 对象
getCurrentDeptFID() 获取当前部门主键全路径,省略其它5个方法
getCurrentPos() 获取当前岗位 JSON 对象
getCurrentPosFID() 获取当前岗位主键全路径,省略其它5个方法
getCurrentOrgByKind(组织类型) 获取指定类型的组织节点( 组织类型 ) 组织类型,用于自定义组织类型后,
获取指定组织类型的组织节点
JSON 对象

主岗信息

方法名 说明 参数 返回值
getCurrentUserMainOrg() 获取主岗组织(异步) JSON 对象
getCurrentUserMainOrgSync() 获取主岗组织(同步) JSON 对象
getCurrentUserMainOrgIDSync() 获取当前主组织主键,省略其它5个方法
getCurrentUserMainOgnIDSync() 获取当前主机构主键,省略其它5个方法
getCurrentUserMainDptIDSync() 获取当前主部门主键,省略其它5个方法
getCurrentUserMainPosIDSync() 获取当前主岗位主键,省略其它5个方法

所有岗位信息

方法名 说明 参数 返回值
getCurrentUserAllOrgs() 获取所有的组织(异步),包括各级机构、部门、岗位,
一个组织一条记录
JSON 数组
getCurrentUserAllOrgsSync() 获取所有的组织(同步),同上 JSON 数组
getCurrentUserOrgs() 获取父组织(异步) JSON 数组
getCurrentUserOrgsSync() 获取父组织(同步) JSON 数组
getAllPersonMembers() 获取全部人员成员 JSON 数组
getPersonMembers() 获取拥有当前页面权限的人员成员 JSON 数组

使用案例:不同的人看不同的数据

普通员工看个人的数据,部门经理看部门的数据,总经理看机构的数据

  • 组织数据
人员全路径名称 人员全路径 ID 角色 组织路径函数 过滤条件中的组织路径
/阳光集团/北京公司/总经理/王刚 /1.ogn/2.ogn/6.pos/7.psm 总经理 getCurrentOrgFID() /1.ogn/2.ogn
/阳光集团/北京公司/开发部/部门经理/李云 /1.ogn/2.ogn/3.dpt/4.pos/8.psm 部门经理 getCurrentDeptFID() /1.ogn/2.ogn/3.dpt
/阳光集团/北京公司/开发部/开发人员/宋毅 /1.ogn/2.ogn/3.dpt/5.pos/9.psm 普通员工 getCurrentPersonMemberFID() /1.ogn/2.ogn/3.dpt/5.pos/9.psm
/阳光集团/北京公司/开发部/开发人员/赵芳 /1.ogn/2.ogn/3.dpt/5.pos/10.psm 普通员工 getCurrentPersonMemberFID() /1.ogn/2.ogn/3.dpt/5.pos/10.psm
  • 业务数据
业务数据主键 人员全路径 ID 人员姓名 说明 北京公司总经理 开发部部门经理
C123 /1.ogn/2.ogn/3.dpt/5.pos/9.psm 宋毅 开发部 可见 可见
C256 /1.ogn/2.ogn/3.dpt/5.pos/10.psm 赵芳 开发部 可见 可见
C355 /1.ogn/2.ogn/4.dpt/6.pos/11.psm 张媛 其它部门 可见 不可见
C866 /1.ogn/2.ogn/5.dpt/7.pos/12.psm 李锦 其它部门 可见 不可见
C945 /1.ogn/3.ogn/6.dpt/8.pos/13.psm 孙梅 其它机构 不可见 不可见

设置业务数据的过滤条件为:业务数据的人员全路径 ID 字符匹配 like 组织路径

权限信息

方法名 说明 参数 返回值
getAllRoles() 获取所有角色(同步) JSON 数组
getAllRolesPromise() 获取所有角色(异步) JSON 数组
hasRole(角色编码) 判断是否拥有某个角色(同步) 角色编码
hasRolePromise(角色编码) 判断是否拥有某个角色(异步) 角色编码
isAuthorizeTable(数据表全路径) 数据表是否需要授权( 数据表全路径 ) 数据组件 className 属性的值,例如:"/main/product"
hasSelectPerm(数据表全路径) 是否拥有数据表查询权限( 数据表全路径 ) 数据组件 className 属性的值
hasInsertPerm(数据表全路径) 是否拥有数据表插入权限( 数据表全路径 ) 数据组件 className 属性的值
hasUpdatePerm(数据表全路径) 是否拥有数据表更新权限( 数据表全路径 ) 数据组件 className 属性的值
hasDeletePerm(数据表全路径) 是否拥有数据表删除权限( 数据表全路径 ) 数据组件 className 属性的值
hasPermission(权限编码) 是否有权限( 权限编码 )(同步),不能用于判断功能权限,使用 appHistory.router.portalState.menus 判断功能权限 权限编码
hasPermissionPromise(权限编码) 是否有权限( 权限编码 )(异步),不能用于判断功能权限,使用 appHistory.router.portalState.menus 判断功能权限 权限编码
hasMenuPermission(功能菜单Url) 是否有功能菜单权限( 菜单数据中originUrl )(同步) 菜单数据中originUrl
hasUIPermission(界面权限编码) 是否有界面权限( 界面权限编码 )(同步) 界面权限编码
hasUIPermissionPromise(界面权限编码) 是否有界面权限( 界面权限编码 )(异步) 界面权限编码

委托代理信息

方法名 说明 参数 返回值
getDelegationId 获取代理主键id 代理主键id
getDelegator 获取代理人用户id 代理人用户id
getDelegatorInfo 获取代理人信息 代理人信息(JSON对象)
getDelegatorName 获取代理人用户名 代理人用户名

租户信息

方法名 说明 参数 返回值
getTenantCode 获取租户编码(异步) 租户编码

后端服务获取上下文

在 Java 中获取当前登录者的用户信息、人员成员和角色信息。

使用 com.justep.util.ContextUtil 类的 getRequestContext 方法获取当前登录者的上下文,方法定义如下

方法名
    public static RequestContext getRequestContext(final HttpServletRequest request)
参数
    request:HttpServletRequest,使用 SpringWebUtil.getRequest() 方法获取
返回值
    com.justep.context.RequestContext

RequestContext 类提供几个获取当前登录者组织信息的方法,说明如下

描述
    获取用户信息
方法名
    public UserInfo getUserInfo()
返回值
    com.justep.opm.UserInfo
描述
    获取当前登录者的所有人员成员
方法名
    public List<PersonMember> getAllPersonMembers()
返回值
    List<com.justep.opm.PersonMember>
描述
    获取主岗信息
方法名
    public PersonMember getMainPersonMember()
返回值
    com.justep.opm.PersonMember
描述
    获取当前岗位信息
方法名
    public PersonMember getCurrentPersonMember(HttpServletRequest request)
参数
    request:HttpServletRequest,使用 SpringWebUtil.getRequest() 方法获取
返回值
    com.justep.opm.PersonMember
描述
    获取当前登录者拥有的角色
方法名
    public List<Role> getRoles()
返回值
    List<com.justep.opm.Role>
描述
    判断当前登录者是否拥有某个角色
方法名
    public boolean hasRole(String roleCode)
参数
    roleCode:角色编码
返回值
    boolean

示例代码如下

HttpServletRequest request = SpringWebUtil.getRequest();
RequestContext rc = ContextUtil.getRequestContext(request);
// 获取当前用户信息
UserInfo userinfo = rc.getUserInfo();
// 获取当前人的所有人员成员
List<PersonMember> psList = rc.getAllPersonMembers();
// 获取主岗人员成员
PersonMember mainPsm = rc.getMainPersonMember();
// 获取当前人拥有的角色
List<Role> roles = rc.getRoles();
// 通过角色编码判断是否拥有某个角色
boolean hasAdminRole = rc.hasRole("admin");

for (PersonMember ps : psList) {
   // 获取部门
   OrgNode dptNode = ps.getDpt();
   // 获取机构 ps.getOgn()
   // 获取岗位 ps.getPos();

   // 获取部门名称
   String dptName = dptNode.getName();
   // 获取部门全路径id dptNode.getFid()
   // 获取部门全路径名称 dptNode.getFname()
   // 获取部门全路径编码 dptNode.getFcode()
   // 获取部门 id dptNode.getId()
   // 获取部门编码 dptNode.getCode()

   // 获取人员姓名
   String name = ps.getName();
   // 获取人员成员全路径名称
   String fname = ps.getFname();
   // 判断该人员成员是否是主岗
   boolean isMainOrg = ps.isMain();
}

for (Role role : roles) {
   // 获取角色名称
   String rolename = role.getName();
   // 获取角色编码
   String rolecode = role.getCode();
   // 获取角色 id
   String roleid = role.getId();
}

results matching ""

    No results matching ""