"큰 경기장"티켓 판매


10

경기장 티켓 판매를 구현해야합니다.
아이디어는 고객이 티켓 수를 선택하도록하는 것입니다 (캡핑이 필요할 수도 있지만 큰 문제는 아닙니다. 카트에서 허용되는 최대 수량을 통해이를 달성 할 수 있다고 생각합니다). 그런 다음 고객은 좌석 배치도에서 좌석을 선택해야합니다. 그 후 결제 과정은 평소대로 진행됩니다.
아무도 이것에 대한 확장을 알고 있습니까? 나는 하나를 검색했지만 내 요구에 맞는 것을 찾지 못했습니다. 또는 내 Google 기술을 개선해야 할 수도 있습니다.
확장이 없으면 확장 방법에 대한 몇 가지 조언이 좋습니다.
지금까지 내 생각은 몇 가지 사용자 정의 옵션 (섹터, 행, 좌석 번호 및 기타 옵션)이있는 '티켓'이라는 제품을 만드는 것입니다.
보기 페이지는 사용자 정의되므로 사용자 정의 옵션이 표시되지 않습니다. 티켓 선택은 팝업 또는 오버레이로 이루어지며 선택에 따라 카트에 추가 할 때 사용자 지정 옵션을 시뮬레이션합니다.
좌석표는 테이블에 보관되어 예약 된 좌석을 표시 할 수 있습니다. 경기장은 항상 동일하므로 하나의지도로 충분합니다.
그것은 지금까지의 문제입니다. 이음새가 누락되었습니다. 모든 포인터가 좋을 것입니다.
[편집]
3 가지 속성 (섹터, 행 및 좌석 번호, 수량이 1 인 각 조합이 1 개이므로 구매 한 후에는 사용할 수 없음)으로 구성 가능한 제품을 생성 할 수 있지만 이는 30k + 제품을 의미합니다 행사). 나는 reeeealy 가고 싶지 않아. 나는 이것을 마지막 절망적 인 리조트로 유지하고 있습니다.. (huuuuge 성능 문제가 발생하기 때문에 더 이상 옵션이 아닙니다)

답변:


10

나는 이와 같은 일을 해왔으며, 이것이 가능한 해결책이라고 생각할지 여부를 알기 위해 고안된 예이며 지나치게 단순화 되었습니다.

스도쿠 그리드를 정의하는 것과 비슷하지만 스도쿠 그리드의 열린 영역은 열린 좌석입니다.

$section1 = <<<SECTION

A,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,
B,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
C,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
D,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
E,-,-,-,-,-,-,-,-,-,-,-,-

SECTION;

해당 시트 차트 (스도쿠 그리드)는 제품별로 저장됩니다. 모든 이벤트는 신제품입니다. 누군가가 장바구니에 추가하거나 비즈니스 규칙에 따라 구매하면 그리드가 업데이트됩니다.

$section1 = <<<SECTION

A,-,-,x,-,-,-,-,-,x,-,-,x,x,x,x,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,
B,-,-,-,-,-,-,-,-,-,-,-,-,-,x,-,-,-,-,-,-,-,-,-,-,-,-,-
C,-,-,-,-,-,x,x,x,-,x,-,x,-,-,-,-,-,-,-,-,-
D,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
E,-,-,-,-,-,x,-,x,-,x,-,x

SECTION;

백엔드 모델에서 좌석 가용성을 분리하려면 간단합니다 explode.

$chart = array();

$section = trim(explode('\n', $product->getSeatingChart()));

foreach($section as $row){
    $seats = explode(',',$row);
    $rownum = array_shift($seats);
    $chart[$rownum] = $seats;
}

$chart부울로 바꿀 수 있습니다 :

array_walk($chart,function(&$s){
    $s = $s == "-" ? true : false;
});

A14가 사용 가능한지 확인하십시오 (0 색인 작성, 기억).

function checkAvailability($row,$seatnum){

    return $chart[$row][$seatnum-1] == true;

}

위:

구현은 매우 간단합니다. 좌석 가용성 속성이 백엔드 모델로 구문 분석됩니다. 기본적으로 사용자 정의 EAV 속성입니다. 섹션을 기반으로 가격을 설정할 수도 있습니다. 각 섹션은 새로운 가격의 새로운 SKU입니다. 다른 행사가 아닌 일부 행사에서 좌석을 차단할 수 있습니다. 또한 실제 재고를 보유 할 필요가 없으며 가격을 계산할 때 판매 오더 품목의 수량 만 설정하십시오.

계층도 작동하므로 대량 구매 할인이 무료로 제공됩니다. 사용자 정의 옵션과 관련이있을 수 있습니다.

단점 :

실제 재고를 가지고 있지 않기 때문에 좌석 예약은 가장 큰 두통이 될 것입니다. 그것이이 방법이 분리되는 곳입니다. 비즈니스 규칙에 따라 체크 아웃 중에 좌석을 잠 그거나 유지하는 방법이 결정됩니다.


1
+1 우와. "마 젠토 프로그래밍의 기술"을 쓴 사람이 있다면 예를 들어 보자.
kalenjordan

우선 나는 바보처럼 느껴지고 싶다. 물론 가격은 섹션에 있어야합니다. 가격은 모든 좌석에있었습니다. D' oh !. 당연한 한, 나는 아무것도 보지 못한다. 내가 열이 모든 이벤트에 대한 예약 / 구입 자리를 잡고 간단한 테이블을 가질 수 있습니다 event_id, sector, row, seat, status. 상태는 '예약', '구매', '사용할 수 없음'일 수 있습니다. 이렇게하면 2 초 전에 좌석을 예약 한 사람을 쉽게 확인할 수 있습니다. 또한 새로운 제품 유형 (이벤트 티켓)을 만들려고 생각하므로 제품 설정에 문제가없는 것입니다. 자세한 내용 감사합니다
Marius

당신의 대답은 내 마음에 퍼즐 조각을 모으기 위해 솔기입니다. 4-5 일 안에 30k 티켓을 판매하면 서버에 많은 스트레스를 줄 수 있기 때문에 여전히 성능 문제에 대해 걱정하고 있습니다. 그러나 이것은 다른 문제입니다. 이 확장이 완료되면 고객이 '친환경'을 얻었을 때이 확장을 커뮤니티에서 사용할 수 있도록 노력할 것입니다.
Marius

30k 티켓-이곳은 NASCAR 스타디움입니까? :) 이벤트 당 (섹션은 구성) 섹션 당 단일 티켓 제품을 사용하면 카탈로그 크기가 크게 줄어 듭니다. 더 작은 db 풋 프린트는 희망적으로 메모리에 완전히 들어 맞습니다 ...
philwinkle

1
@philwinkle 20 세기에 살고 트위터 계정이 없기 때문에 이메일을 보냈습니다.
Marius

2

나는 구성 가능한 제품이 좌석이 실제로 사용 가능하거나 판매되는 경우에 대한 포인터 일 뿐이며 Magento 제품으로 이것을 나타내는 것은 과잉 같은 소리라고 생각하지 않습니다.

각 이벤트에 대한 레코드 테이블을 포함하는 사용자 정의 모듈을 제안하고 티켓은이 이벤트에 대한 것이며 이벤트 생성시이를 상점에 표시하기 위해 간단한 제품이 작성됩니다. 제품 속성을 사용하여 구매 한 좌석을 저장하기 위해 언급 한 프론트 엔드보기 페이지에서 채워진 이벤트 및 사용자 정의 옵션에 대한 참조를 보유 할 수 있습니다.


감사. +1. 당신의 대답은 필라델피아의 답변과 함께 적어도 올바른 방향으로 시작해야합니다.
Marius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.