1

当用户以访客身份将商品添加到购物车并使用其有效凭据登录时,我需要了解更多有关后端流程的信息。为客人创建的 orderId 被迁移到注册用户的 id。有人可以解释一下这是如何处理的吗?命令和数据库表的详细信息会有所帮助。

我确实读过有关 MigrateUserEntries 命令的信息,但我不确定这是否正确。

提前致谢。

4

4 回答 4

1

但这里的诀窍是:-

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)

此方法将订单项目迁移到新用户。

于 2014-05-29T04:38:23.547 回答
1

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

这会影响与订单和订单项目相关的表格。

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

于 2013-09-04T19:23:31.490 回答
0

首先,回顾一下 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 插件进行反编译。

您可以进一步阅读(参考): 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

谢谢阿贝德

于 2013-09-07T19:15:26.373 回答
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);">

验证后形成 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();

我希望这个帮助在登录后合并项目

于 2014-01-24T14:42:44.117 回答