在IBM WCS中,当用户在将项目作为访客添加到购物车后登录时会发生什么。在这种情况下,orderId是如何处理的?

时间:2013-09-04 06:34:48

标签: websphere-6.1 websphere-commerce wcs

当用户将某个项目作为访客添加到购物车并使用其有效凭据登录时,我需要了解有关后端流程的更多信息。为guest虚拟机创建的orderId将迁移到注册用户的id。有人可以解释一下这是如何处理的?命令和数据库表的详细信息会很有用。

我读过有关MigrateUserEntries命令但我不确定这是否正确。

提前致谢。

4 个答案:

答案 0 :(得分:1)

当访客用户登录时,他的购物车将与注册用户帐户的购物车合并。

这会影响与订单和订单商品相关的表格。

您可以查看OrderCopy的文档以获取更多详细信息。

答案 1 :(得分:1)

但这里的诀窍是: -

public class MigrateUserEntriesCmdImpl
extends TaskCommandImpl
implements MigrateUserEntriesCmd

此任务命令用于将一个用户拥有的资源迁移到另一个用户。迁移的必需资源是地址,当前订单,兴趣商品,订单商品,订单和订单模板。

默认情况下,此命令不会合并2个用户的购物车,但可以通过以下方式配置它:

a)将命令上下文中request属性中的mergeCart标志设置为true。

OR:

b)将wc-server.xml中的MemberSubSystem / MergeCartsAtAuthentication / enabled设置为true。 请求属性中的mergeCart标志将具有更高的优先级。

在执行此任务命令之前,应执行以下设置:

setOldUser() - > getOldUser()

此方法检索要将资源迁移到新用户的旧用户。

setNewUser() - > getNewUser()

此方法从旧用户检索作为迁移资源的收件人的新用户。

这些OldUser和NewUser都能够从关注JSP的UserAccessBean中检索。

migrateOrderItem(OrderItemAccessBean abOrderItem, UserAccessBean abNewUser, CommandContext newUserCmdCtx)

此方法将订单商品迁移到新用户。

答案 2 :(得分:0)

首先,对WCS商务中用户生命周期的一些评论: 1-用户以USER ID = -1002的通用用户访问了站点 2-当用户将任何项目添加到他的购物车时,WCS创建一个OrderId并将其分配给新创建的USER ID,在这种情况下称为“guest”用户 (#1和#2都有)userType = G. 3-当用户使用登录表单登录时,它默认附加到struts配置中的LogonCmd,如果您反编译该控制器命令,您将看到它正在调用MigrateUserEntriesCmd任务命令,该命令负责迁移地址,当前订单,兴趣项目,订单物料,订单和订单模板。 使用的新orderID是Registered OrderId。

我建议您使用安装到RAD的反编译器,以便您可以反编译IBM类以更好地理解逻辑,然后将您的代码自定义为IBM最佳实践(扩展命令等) 我使用JAD eclipse插件进行反编译。

你可以进一步阅读(参考): http://pic.dhe.ibm.com/infocenter/wchelp/v7r0m0/index.jsp?topic=%2Fcom.ibm.commerce.admin.doc%2Fconcepts%2Fcmsmembers.htm&resultof%3D%2522%2555%2553%2545%2552%2553%2522%2520%2522%2575%2573%2565%2572%2522%2520

http://pic.dhe.ibm.com/infocenter/wchelp/v7r0m0/index.jsp?topic=%2Fcom.ibm.commerce.api.doc%2Fcom%2Fibm%2Fcommerce%2Fsecurity%2Fcommands%2FMigrateUserEntriesCmdImpl.html

由于 阿贝德

答案 3 :(得分:0)

在登录页面中,当用户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);">

验证后形成网址

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();

我希望此帮助可以在登录后合并项目