我一直致力于开发 am API,它基本上将愿望清单中的所有产品添加/更新到用户的购物车。
API的要求如下:
我实现的逻辑处理 2 个嵌套的 for 循环,一个循环愿望清单条目,另一个循环购物车条目(如果购物车不为空)。这种逻辑对于添加产品很有效,但我在更新产品时遇到了问题。
当我在空购物车上点击 API 时,我没有看到任何问题,所有产品都已完美添加,但是当我尝试再次点击 API 时,购物车中只有一项正在更新,而其他项保持不变,这种情况正在发生导致当愿望清单的索引递增以检查下一个产品时,之前更新的产品(已更新为两个数量的总和)现在被
addToCart()
方法覆盖。
就像愿望清单和购物车上有 2 个相同的产品,即两个 for 循环上的产品 A 和产品 B
会有四个条件
sl cart wishlist operation
1 A A update
2 A B add
3 B A add
4 B B update
对于情况 1,产品首先会更新,但在第二次迭代中会被 addToCart 方法覆盖。
我该如何解决这个问题?
也欢迎对其他类型的实现提出建议,但我无法更改大多数预先存在的方法,例如
AddToCart()
或UpdateCart()
。
实施
public void addAllToCart(String wishListId)
{
//code for finding the wishlist by ID saves the wishlist on wishlist of type WishListModel
//code for getting session cart saves on cart of type CartModel
if (CollectionUtils.isNotEmpty(wishlist.getEntries()))
{
for (WishListEntryModel wishListEntry : wishlist.getEntries())
{
checkInCartEntry(wishListEntry, cart.getEntries());
}
}
}
private void checkInCartEntry(WishListEntryModel wishListEntry, List<AbstractOrderEntryModel> cartEntries)
{
if (CollectionUtils.isEmpty(cartEntries))
{
addToCart(wishListEntry);
}
else
{
for (AbstractOrderEntryModel cartEntry : cartEntries)
{
if (wishListEntry.getProduct().getCode().equalsIgnoreCase(cartEntry.getProduct().getCode()))
{
updateCartEntry(cartEntry.getEntryNumber, wishlist.getQuantity+cartEntry.getQuantity);
}
else
{
addToCart(wishListEntry);
}
}
}
}
您的循环中有一个错误,因此嵌套循环永远不会中断。假设您的愿望清单中有一种产品,购物车中有四种产品。在此设置中,addToCart(wishListEntry)方法将被调用四次。此外,如果有可能在愿望列表中多次出现相同的产品,则更改实现是有意义的,因此有两个单独的循环将填充像