Skip to content

Commit

Permalink
永続化されたカートとセッションのカートが同一の場合は永続化されたカートをマージしない
Browse files Browse the repository at this point in the history
  • Loading branch information
okazy committed Dec 18, 2020
1 parent c2f106e commit ccfa0da
Showing 1 changed file with 7 additions and 16 deletions.
23 changes: 7 additions & 16 deletions src/Eccube/Service/CartService.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,6 @@ class CartService

/**
* CartService constructor.
*
* @param SessionInterface $session
* @param EntityManagerInterface $entityManager
* @param ProductClassRepository $productClassRepository
* @param CartItemComparator $cartItemComparator
* @param CartItemAllocator $cartItemAllocator
* @param TokenStorageInterface $tokenStorage
* @param AuthorizationCheckerInterface $authorizationChecker
*/
public function __construct(
SessionInterface $session,
Expand Down Expand Up @@ -196,15 +188,14 @@ public function mergeFromPersistedCart()
$persistedCarts = $this->getPersistedCarts();
$sessionCarts = $this->getSessionCarts();

$CartItems = [];

// 永続化されたカートとセッションのカートが同一の場合はマージしない #4574
$cartKeys = $this->session->get('cart_keys', []);
if (in_array($persistedCarts[0]->getCartKey(), $cartKeys)) {
return;
};

$CartItems = [];
foreach ($persistedCarts as $Cart) {
$CartItems = $this->mergeCartItems($Cart->getCartItems(), $CartItems);
if ((count($persistedCarts) > 0) && !in_array($persistedCarts[0]->getCartKey(), $cartKeys, true)) {
foreach ($persistedCarts as $Cart) {
$CartItems = $this->mergeCartItems($Cart->getCartItems(), $CartItems);
}
}

// セッションにある非会員カートとDBから取得した会員カートをマージする.
Expand Down Expand Up @@ -433,7 +424,7 @@ public function setPreOrderId($pre_order_id)
}

/**
* @return null|string
* @return string|null
*/
public function getPreOrderId()
{
Expand Down

0 comments on commit ccfa0da

Please sign in to comment.