"큰 경기장"티켓 판매


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.