В IBM WCS, что происходит, когда пользователь входит в систему после добавления товара в корзину в качестве гостя. Как обрабатывается orderId в этом сценарии?
Мне нужно больше знать о внутреннем потоке, когда пользователь добавляет товар в корзину в качестве гостя и входит в систему, используя свои действительные учетные данные. OrderId, созданный для гостя, переносится на идентификатор зарегистрированного пользователя. Может кто-нибудь объяснить, как это обрабатывается? Детали команд и таблиц БД будут полезны.
Я читал о команде MigrateUserEntries, но я не уверен, что это правильно.
Заранее спасибо.
4 ответа
Когда гостевой пользователь входит в систему, его корзина объединяется с корзиной зарегистрированной учетной записи пользователя.
Это влияет на таблицы, связанные с заказом и элементами заказа.
Вы можете посмотреть документацию OrderCopy для более подробной информации.
Но вот хитрость:
public class MigrateUserEntriesCmdImpl
extends TaskCommandImpl
implements MigrateUserEntriesCmd
Эта команда задачи используется для переноса ресурсов, принадлежащих одному пользователю, другому. Мигрируемые обязательные ресурсы - это адреса, текущие заказы, позиции интереса, позиции заказа, заказы и шаблоны заказов.
По умолчанию эта команда не объединяет корзину покупок для двух пользователей, но ее можно настроить следующим образом:
a) Установка флага mergeCart в свойстве запроса в контексте команды в значение true.
ИЛИ ЖЕ:
b) Установите для MemberSubSystem/MergeCartsAtAuthentication/enabled в wc-server.xml значение true. Флаг mergeCart в свойстве запроса будет иметь более высокий приоритет.
Перед выполнением этой команды задачи должны быть выполнены следующие наборы:
setOldUser () ->getOldUser()
Этот метод извлекает старого пользователя, чьи ресурсы должны быть перенесены на нового пользователя.
setNewUser () ->getNewUser()
Этот метод извлекает нового пользователя, который является получателем перенесенных ресурсов от старого пользователя.
Эти и OldUser, и NewUser смогут извлечь из UserAccessBean концерна JSP.
migrateOrderItem(OrderItemAccessBean abOrderItem, UserAccessBean abNewUser, CommandContext newUserCmdCtx)
Этот метод переносит позицию заказа новому пользователю.
На странице входа добавьте этот код, когда пользователь 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();
Я надеюсь, что эта справка для объединения элементов после входа в систему
Сначала рассмотрим жизненный цикл пользователя в торговле WCS: 1- пользователь посетил сайт как универсальный пользователь с идентификатором USER = -1002 2- когда пользователь добавляет какой-либо элемент в свою корзину, WCS создает OrderId и назначает его новому созданному идентификатору USER. и пользователь с именем "guest" в этом случае (и #1, и #2) имеет userType=G 3- когда пользователь входит в систему с помощью формы входа в систему, он по умолчанию подключается к LogonCmd в конфигурации Struts, и если вы декомпилируете эту команду контроллера, вы будете убедитесь, что он вызывает команду задачи MigrateUserEntriesCmd, которая отвечает за миграцию адресов, текущих заказов, процентных позиций, позиций заказов, заказов и шаблонов заказов. новый идентификатор заказа, который используется, является зарегистрированным идентификатором заказа.
Я предлагаю вам использовать декомпилятор, установленный на вашем 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
Спасибо Абед