在准备一个外包,类似于大麦网,区别在于针对的是某个特定演唱会,而不是做一个通用的平台。
有相关经验的 V 友可能会比较熟悉这个流程,每一个场馆会分成若干区域,每个区域有若干座位,同时各区域的形状、座位分布和价格不尽相同。用户购票时先展示出区域,选择区域后显示区域内的座位供选择(后面有两张示意图,比较大,直接放在这里影响观感)
由于缺乏此类项目的经验,所以想请教几个问题,了解一下一般产品中的大体思路:
这里区域和座位应该如何表示?需要注意的是根据场馆的布局,各区域有一定的形状,为了给用户展示的页面更加形象,希望能实现和图中类似的交互。其中第一张图看上去是一个图片(还是 JPEG 的,汗),叠加若干矢量 path ,而第二张图展示的是某个特定区域内的座位布局和销售情况。
区域形状和座位信息,区域和座位的位置在数据库中如何存储?
我现在想的是把整个场馆建模成一个二维数组,然后建 area 和 seat 两个表,用外键关联起来, seat 中每个座位插一条记录,存储座位的 x y 坐标。这样最后需要做的就是设置每个元素的状态,不过由于形状问题,浪费的位置可能比较多。
如果要新增更多的场次的话,不同场馆的区域信息在后台应该如何配置?这个好像是一般用户很难 access 的,所以作为普通用户来讲貌似连可以借鉴的直接经验都没有。
选座过程其实相当于改变若干个 checkbox 的状态,那么配置场馆的页面是不是也要放一个巨大的 checkbox 阵列呢... 注意这里有座位和区域两层数据,座位配置好后还需要为座位分区(或者颠倒一下,先分区再配置座位)。
购买和支付应该走怎样一个流程和逻辑?我个人的想法:下单的时候在数据库里设一个 flag 锁住记录,然后设置一个几十分钟的 expire time ,过期未支付的话查询的时候就忽略掉。交易成功则标记一个永久性被占用的 flag 。为避免恶意购买,设置一个每个订单包含座位数的上限。
还请各位 V 友指教。
附图:
(这里用的是客户端 App 的图,不过这里网站的需求流程是类似的)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.