普元EOS中如何往Session的UserObject中设置自定义属性
至元数据起始
普元EOS中,如果需要往session中设置属性,该如何操作
这个运算逻辑为coframe登录的运算逻辑,uo.setAttributes(attributes);中的attributes可以是动态属性,比如下面例子中就是将用户的角色信息都放到userObject中
@Bizlet("登录系统,并返回用户对象")
public static UserObject initUserObject(DataObject acOperator) {
UserObject uo = new UserObject();
String userid = acOperator.getString("userid");
HashSet<String> roleSet = new HashSet<String>();
Connection conn = DBUtil.getConnection();
HashMap<String, Object> attributes = new HashMap<String, Object>();
ArrayList<DataObject> roleList = new ArrayList<DataObject>();
ArrayList<HashMap> sybList = new ArrayList<HashMap>();
ArrayList<HashMap> ywdyList = new ArrayList<HashMap>();
PreparedStatement ps = null;
PreparedStatement ps1 = null;
PreparedStatement ps2 = null;
PreparedStatement ps3 = null;
PreparedStatement ps4 = null;
ResultSet rs = null;
ResultSet rs1 = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
// 查询人员基本信息
ps = conn.prepareStatement(SQLBASEINFO);
ps.setString(1, userid);
rs = ps.executeQuery();
if (rs.next()) {
// 存在操作员
String empid = rs.getString(EMPID);
int operatorid = Integer.parseInt(rs.getString(OPERATORID));
uo.setUserId(rs.getString(USERID));
uo.setUserMail(rs.getString("OEMAIL"));
uo.setUserName(rs.getString(USERNAME));
uo.setUserRealName(rs.getString(EMPNAME));
uo.setUserOrgId(rs.getString(ORGID));
uo.setUserOrgName(rs.getString(ORGNAME));
String skin = rs.getString(MENUTYPE);
// 设置 layout和style的默认值
attributes.put(ABFConfigKey.SKIN_LAYOUTATTR.getConfigValue(), ABFConfigKey.SKIN_DEFAULT_LAYOUT.getConfigValue());
attributes.put(ABFConfigKey.SKIN_STYLEATTR.getConfigValue(), ABFConfigKey.SKIN_DEFAULT_STYLE.getConfigValue());
if (StringUtil.isNotNullAndBlank(skin)) {
String[] tmp = skin.split(",");
if (tmp.length > 0) {
attributes.put(ABFConfigKey.SKIN_LAYOUTATTR.getConfigValue(), tmp[0]);
}
if (tmp.length > 1) {
attributes.put(ABFConfigKey.SKIN_STYLEATTR.getConfigValue(), tmp[1]);
}
}
attributes.put("orgseq", rs.getString(ORGSEQ));
attributes.put("orgcode", rs.getString(ORGCODE));
attributes.put("orgtype", rs.getString(ORGTYPE));
attributes.put("orgdegree", rs.getString("ORGDEGREE"));
attributes.put("empid", empid);
attributes.put("operatorid", rs.getString(OPERATORID));
// 查询角色列表
// 查询操作员角色
ps1 = conn.prepareStatement(SQLROLE);
// 设置参数
ps1.setInt(1, operatorid);
rs1 = ps1.executeQuery();
while (rs1.next()) {
String id = rs1.getString("roleid");
if (!roleSet.contains(id)) {
DataObject role = DataObjectUtil.createDataObject("org.gocom.abframe.dataset.privilege.AcRole");
role.setString("roleid", id);
roleSet.add(id);
roleList.add(role);
}
}
if (StringUtil.isNotNullAndBlank(empid)) {
// 关联员工,查询员工关联机构的角色列表,查询所在事业部、所在业务单元
int iempid = Integer.parseInt(empid);
ps2 = conn.prepareStatement(SQLORGROLE);
// 设置参数
ps2.setInt(1, iempid);
ps2.setInt(2, iempid);
ps2.setInt(3, iempid);
rs2 = ps2.executeQuery();
while (rs2.next()) {
String id = rs2.getString("roleid");
if (!roleSet.contains(id)) {
DataObject role = DataObjectUtil.createDataObject("org.gocom.abframe.dataset.privilege.AcRole");
role.setString("roleid", rs2.getString("roleid"));
roleSet.add(id);
roleList.add(role);
}
}
ps3 = conn.prepareStatement(SQLGETSYB);
ps3.setString(1, userid);
rs3 = ps3.executeQuery();
while (rs3.next()) {
HashMap syb = new HashMap();
syb.put("orgid", rs3.getInt("ORGID"));
syb.put("orgseq", rs3.getString("ORGSEQ"));
syb.put("userid", rs3.getString("USERID"));
sybList.add(syb);
}
ps4 = conn.prepareStatement(SQLGETYWDY);
ps4.setString(1, userid);
ps4.setString(2, userid);
rs4 = ps4.executeQuery();
while (rs4.next()) {
HashMap syb = new HashMap();
syb.put("orgid", rs4.getInt("ORGID"));
syb.put("orgseq", rs4.getString("ORGSEQ"));
syb.put("userid", rs4.getString("USERID"));
ywdyList.add(syb);
}
}
// 设置角色到用户对象中
attributes.put("roles", roleList.toArray(new DataObject[roleList.size()]));
attributes.put("sybs", sybList);
attributes.put("ywdys", ywdyList);
uo.setAttributes(attributes);
} else {
// 无此操作员
uo = null;
}
} catch (Exception e) {
uo = null;
LogUtil.logError("登录出错!", e, (Object) null);
} finally {
DBUtil.closeAll(conn, new PreparedStatement[] { ps, ps1, ps2, ps3, ps4 }, new ResultSet[] { rs, rs1, rs2, rs3, rs4 });
}
return uo;
}
普元EOS中如何往Session的UserObject中设置自定义属性相关推荐
- 普元EOS/BPS为什么没有安装成功 ?
原文连接 在实际的Platform/BPS的产品安装使用中,经常会遇到安装不成功的场景,运行版不成功多于开发版,运行版中集群安装不成功又多于单机版.手工部署安装问题也会多于安装介质的安装.下面说明一下 ...
- 普元EOS开发积累第一篇(常见错误解决方法) 持续更新
普元EOS开发积累第一篇(常见错误解决方法) 持续更新 参考文章: (1)普元EOS开发积累第一篇(常见错误解决方法) 持续更新 (2)https://www.cnblogs.com/tangjing ...
- 普元 EOS Platform 7.6 集群部署在BES9.5.2.4692,重启集群节点偶发报错:java.util.ConcurrentModificationException
[问题描述] 普元EOS Platform 7.6 集群部署在BES9.5.2.4692,重启集群节点偶发报错: [com.primeton.runtime.resource.impl.Contrib ...
- 普元eos开发手册_名词解释--统一应用(开发)平台Unified Application Platform
国内有些企业项目开发当中,可能会遇到UAP的概念,UAP指的是Unified Application Platform,即统一应用平台. UAP,简单的理解,就是公司层面,统一的技术平台,涉及整个公司 ...
- 普元EOS RichWeb(富客户端)实践总结
最近公司未来一银行项目要使用到普元的EOS,客服是普元合作机构,没办法,必须将系统在EOS平台上部署开发,认真学习了2个星期,对EOS6.0的印象还是非常的好.丰富的页面开发组件,SOA我不是特别特别 ...
- 普元eos使用svn_普元DevOps介绍
普元DevOps是通过工具链与集成.发布.反馈与优化进行端到端整合,完成无缝的跨团队.跨系统协作.其目标是建立开发与运维之间的桥梁,履行开发运维协作.自动化.基础设施即代码.持续集成.持续测试.持续发 ...
- 普元 EOS Platform 7.6适配人大金仓v8
先说下普元7.6,普元7.6最大支持编译JDK1.7.然后在它默认的数据源里,最大支持人大金仓V7. 实际使用中,可以使用JDK1.8,也可以连接人大金仓V8. 人大金仓V8记得朝人大金仓要jar包( ...
- 普元 EOS定时任务实现原理
转至元数据起始 普元平台的定时任务能力是通过开源的作业调度框架Quartz实现的. 一.定时任务的基本概念: 调度器:负责管理Quartz应用运行时环境,用于调度定时任务. 定时任务:按照某种时间规则 ...
- 普元EOS之我要配置数据源或更换数据库
阅读原文 用户在使用普元产品的时候,有时候会根据业务需要,要配置数据源或更换数据库连接,分为开发版的更换和运行环境的更换. 1. 数据源概述 普元SOA产品中提到的数据源,分为两种, C3P0数据源和 ...
- 普元连接mysql_普元EOS 案例 - 还有一行代码的个人空间 - OSCHINA - 中文开源技术交流社区...
1 创建项目 1) 进入EOS Studio开发透视图: 单击主菜单项"文件"选择"新建"->"空EOS项目 2) 在弹出的"创 ...
最新文章
- 错误中积累经验,BUG中寻发展,总结中提升
- 偶得--Unity在asp.net mvc上的基本应用
- Java 全半角转换
- 基于MicroPython的家庭可燃气体泄露微信报警器
- linux内核配置打开声卡,配置树莓派/Linux默认声卡设备
- 电阻元件、电感元件、电容元件
- 用C语言打印一个菱形图案!
- 计算机研究生期末汇报,研究生学期总结ppt.doc
- 微信小程序----Grid(九宫格)(flex实现九宫格布局)
- 项目Beta冲刺(5/7)(追光的人)(2019.5.27)
- 推广的euclid_问题引导的代数学: Euclid 空间 III
- React学习笔记——redux里中间件Middleware的运行机理
- To the Greatness of Small
- SVM(下)—时间刺客带你做项目
- PythonStock(11):使用pandas计算股票波峰波谷猜想
- PVF(PGI Visual Fortran) 安装以及openacc在linux和window下调用
- 运用css设计简单3D魔方
- 腾讯安全被列为全球大型威胁情报厂商
- 选择国企背景的期货公司开户
- 装包seurat、singR