当前上下文
获取当前登录者的上下文信息
- 系统提供“当前上下文”组件,用于在前端页面上,获取当前登录者的上下文信息
- 系统提供 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 数据集的列标识 | 列值 |
组织信息
当前岗位信息
方法名 | 说明 | 参数 | 返回值 |
---|---|---|---|
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();
}