ofbiz登录和关联party机制

在party模块中让userLogin拥有的partyId的字段,这样一个用户登录了之后就能关联到他自己的party了。party模块下实体定义中UserLogin的扩展,代码如下:
--------------------------------------------------------------------------------
<extend-entity entity-name="UserLogin">
<field name="partyId" type="id"></field>
<relation type="one" fk-name="USER_PARTY" rel-entity-name="Party">
<key-map field-name="partyId"/>
</relation>
<relation type="one-nofk" rel-entity-name="Person">
<key-map field-name="partyId"/>
</relation>
<relation type="one-nofk" rel-entity-name="PartyGroup">
<key-map field-name="partyId"/>
</relation>
</extend-entity>

--------------------------------------------------------------------------------
这样给UserLogin表扩展了之后在任何其他有UserLogin的地方都能获得Party了。
具体扩展关联Party的表全在这个实体定义文件中。也就是那些扩展了partyId的扩展实体。
1.具体有登录历史记录UserLoginHistory中关联了参与者。在LoginServices.java中有如下代码记录了登录记录
--------------------------------------------------------------------------------
if (createHistory) {
Map<String, Object> ulhCreateMap = UtilMisc.toMap("userLoginId", username, "visitId", visitId, "fromDate", UtilDateTime.nowTimestamp(), "successfulLogin", successfulLogin);

ModelEntity modelUserLogin = userLogin.getModelEntity();
if (modelUserLogin.isField("partyId")) {
ulhCreateMap.put("partyId", userLogin.get("partyId"));
}
// ONLY save the password if it was incorrect
if ("N".equals(successfulLogin) && !"false".equals(UtilProperties.getPropertyValue("security.properties", "store.login.history.incorrect.password"))) {
ulhCreateMap.put("passwordUsed", password);
}

//Debug.logInfo(new Exception(), "=================== Creating new UserLoginHistory at " + UtilDateTime.nowTimestamp(), module);
delegator.create("UserLoginHistory", ulhCreateMap);
}
--------------------------------------------------------------------------------
这样一句ulhCreateMap.put("partyId", userLogin.get("partyId"));关联了Party。
2.类似的ServerHitBin.java 657行对服务调用记录ServerHit表进行了关联Party。
3.类似的VisitHandler.java 55和68行对网站访问记录Visit和Visitor表进行了关联Party。
4.另外还有个在登录的时候通过UserLogin获取Person(一种类型的Party)放在session中,代码在LoginWorker.java中。559行和771行。
感觉上Party是在后面加上去的,以前只有UserLogin的感觉,后来有了Party,把一些记录UserLogin的地方关联一下Party。比如登录记录什么的。
如我我们的Party的主键不止一个的时候我们可以有2中方法解决和ofbiz的兼容。
1.UserLogin中加上你的Party的所有主键。在所有出现modelUserLogin.isField("partyId")的地方,多put进去你在UserLogin中获取的主键。记得扩展上面我们1、2、3的表和修改上面这些应用的展示地方修改获取Party。
2.改Party的主键为一个类似工号的一个字段为partyId,保证唯一,原来主键的直接放在Party中。ofbiz中其他地方不变。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值