当用户以访客身份将商品添加到购物车并使用其有效凭据登录时,我需要了解更多有关后端流程的信息。为客人创建的 orderId 被迁移到注册用户的 id。有人可以解释一下这是如何处理的吗?命令和数据库表的详细信息会有所帮助。
我确实读过有关 MigrateUserEntries 命令的信息,但我不确定这是否正确。
提前致谢。
当用户以访客身份将商品添加到购物车并使用其有效凭据登录时,我需要了解更多有关后端流程的信息。为客人创建的 orderId 被迁移到注册用户的 id。有人可以解释一下这是如何处理的吗?命令和数据库表的详细信息会有所帮助。
我确实读过有关 MigrateUserEntries 命令的信息,但我不确定这是否正确。
提前致谢。
但这里的诀窍是:-
public class MigrateUserEntriesCmdImpl
extends TaskCommandImpl
implements MigrateUserEntriesCmd
此任务命令用于将一个用户拥有的资源迁移到另一个用户。迁移的强制资源是地址、当前订单、兴趣项目、订单项目、订单和订单模板。
默认情况下,此命令不会合并 2 个用户的购物车,但可以通过以下方式进行配置:
a) 将命令上下文中请求属性中的 mergeCart 标志设置为 true。
或者:
b) 将 wc-server.xml 中的 MemberSubSystem/MergeCartsAtAuthentication/enabled 设置为 true。request 属性中的 mergeCart 标志将具有更高的优先级。
在执行此任务命令之前,应执行以下设置:
setOldUser() -->getOldUser()
此方法检索其资源要迁移到新用户的旧用户。
setNewUser() -->getNewUser()
此方法从旧用户检索作为迁移资源接收者的新用户。
这些 OldUser 和 NewUser 都将能够从关注的 JSP 中检索 UserAccessBean。
migrateOrderItem(OrderItemAccessBean abOrderItem, UserAccessBean abNewUser, CommandContext newUserCmdCtx)
此方法将订单项目迁移到新用户。
首先,回顾一下 WCS 商务中的用户生命周期: 1- 用户以 USER ID = -1002 的通用用户身份访问该网站 2- 当用户将任何商品添加到他的购物车时,WCS 创建一个 OrderId 并将其分配给创建的新用户 ID并且在这种情况下称为“guest”的用户(#1和#2)具有userType = G 3-当用户使用登录表单登录时,默认情况下它在struts配置中附加到LogonCmd,如果您反编译该控制器命令,您将看到它正在调用 MigrateUserEntriesCmd 任务命令,该命令负责迁移地址、当前订单、兴趣项目、订单项目、订单和订单模板。使用的新 orderID 是 Registered OrderId 。
我建议您使用安装到您的 RAD 的反编译器,以便您可以反编译 IBM 类以更好地理解逻辑,然后将您的代码自定义为 IBM 最佳实践(扩展命令 .. 等) 我使用 JAD eclipse 插件进行反编译。
谢谢阿贝德
当用户 Guest 和 OrderItemMove 使用开箱即用命令时,在登录页面中添加此代码
<pre>
<c:if test="${userType == 'G'}">
<wcf:url var="orderMove" value="OrderItemMove" type="Ajax">
<wcf:param name="toOrderId" value="."/>
<wcf:param name="deleteIfEmpty" value="*"/>
<wcf:param name="fromOrderId" value="*"/>
<wcf:param name="continue" value="1"/>
<wcf:param name="createIfEmpty" value="1"/>
<wcf:param name="calculationUsageId" value="-1" />
<wcf:param name="calculationUsageId" value="-2" />
<wcf:param name="calculationUsageId" value="-7" />
<wcf:param name="updatePrices" value="0"/>
</wcf:url>
</c:if>
</pre>
按钮 javascript 代码用户点击:
LogonSubmit(document.Logon,'<c:out value='${orderMove}'/>','<c:out value='${afterOrderCalculateURL}'/>');void(0);">
验证后形成 URL
function LogonSubmit{
var completeOrderMoveURL = orderMoveURL;
completeOrderMoveURL = completeOrderMoveURL + "&URL=OrderCalculate?URL=" + afterOrderCalculateURL +"&calculationUsageId=-1&calculationUsageId=-2&calculationUsageId=-7";
document.getElementById('URL').value = completeOrderMoveURL;
}
//Then submit the form
form.submit();
我希望这个帮助在登录后合并项目