前兩周,女朋友去了 開封旅游。
回來沒多久,她就在微信上跟我吐槽了一件糟心事:
她在 兩個(gè)平臺(tái)都買了景區(qū)聯(lián)票, 因?yàn)樾谐烫s,忘記退掉其中一個(gè)平臺(tái)的票。 現(xiàn)在兩個(gè)平臺(tái)的票 都顯示已使用,無法退款。
聽到這里,我第一反應(yīng)是:
這不就是買重復(fù)票了嗎?
比如很多景區(qū)(像廣州 白云山、陳家祠)都是:
買票要選具體日期
過期就作廢
所以我當(dāng)時(shí)猜測(cè):
她可能是在 抖音 + 美團(tuán) 買了同一天的票, 后來只用了一個(gè)平臺(tái)的票,另一個(gè)忘退。
這種情況其實(shí)很常見。
但很快我就發(fā)現(xiàn):
事情遠(yuǎn)遠(yuǎn)沒這么簡(jiǎn)單。
如果只是重復(fù)買票, 你們也就看不到這篇小破文了。
-****01-
原來開封景區(qū)的票是這樣賣的
隨著我繼續(xù)了解,才發(fā)現(xiàn) 開封景區(qū)的售票模式非常特殊。
主要有兩種:
1. 單景區(qū)購(gòu)票
你去哪個(gè)景點(diǎn)就買哪個(gè)票。
例如:
萬歲山武俠城
鐵塔公園
龍亭景區(qū)
這種模式適合:
只去一兩個(gè)景區(qū)。
但開封景區(qū)很多,如果這樣買 非常不劃算。
2. 景區(qū)聯(lián)票
所以當(dāng)?shù)鼐皡^(qū)會(huì)推出 聯(lián)票套餐。
例如:
2景區(qū)聯(lián)票
4景區(qū)聯(lián)票
6景區(qū)聯(lián)票
多個(gè)景區(qū)合作,價(jià)格更便宜。
問題就出在這里。
我女朋友當(dāng)時(shí):
先在 抖音 買了一個(gè) 4景區(qū)聯(lián)票
包含:
<pre data-start="876" data-end="905" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
萬歲山武俠城 翰園碑林 開封城墻 鐵塔公園
</pre>
后來她朋友又發(fā)現(xiàn):
美團(tuán)有一個(gè)更劃算的 6 景區(qū)聯(lián)票
包含:
<pre data-start="945" data-end="984" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
萬歲山武俠城 翰園碑林 開封城墻 鐵塔公園 龍亭景區(qū) 天波楊府
</pre>
于是就出現(xiàn)了一個(gè)經(jīng)典場(chǎng)景:
同一個(gè)人 在兩個(gè)平臺(tái) 買了兩個(gè)不同的 景區(qū)聯(lián)票
[圖片上傳失敗...(image-e54ed-1773741277498)]
-****02-
**但這里有兩個(gè)關(guān)鍵規(guī)則 **
事情開始變得有意思了。
因?yàn)槠脚_(tái)還有兩個(gè)規(guī)則:
規(guī)則一:支持隨時(shí)退
平臺(tái)承諾:
在截止日期之前可以隨時(shí)退款。
如果到期還沒使用:
系統(tǒng) 自動(dòng)退款。
規(guī)則二:兩個(gè)訂單都顯示已使用
但女朋友打開訂單發(fā)現(xiàn):
<pre data-start="1192" data-end="1217" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
抖音訂單:已使用 美團(tuán)訂單:已使用
</pre>
這就很離譜。
因?yàn)樗龑?shí)際上:
只玩了一次。
為什么 兩個(gè)訂單都被核銷了?
[圖片上傳失敗...(image-39cc73-1773741277496)]
-****03-
事情的關(guān)鍵
一開始我以為景區(qū)是:
<pre data-start="1304" data-end="1319" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
二維碼掃碼入園
</pre>
這樣的話:
平臺(tái)訂單 → 對(duì)應(yīng)二維碼 → 精準(zhǔn)核銷。
但我又猜錯(cuò)了。
開封景區(qū)使用的是:
人臉識(shí)別入園
流程是這樣的:
購(gòu)票時(shí):
<pre data-start="1399" data-end="1412" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
填寫身份證
</pre>
進(jìn)入景區(qū)時(shí):
<pre data-start="1422" data-end="1439" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
刷臉 → 自動(dòng)放行
</pre>
到這里我突然意識(shí)到:
票務(wù)系統(tǒng)的邏輯一定很復(fù)雜。
于是我忍不住從 程序員視角開始分析整個(gè)系統(tǒng)。
我大致推測(cè)系統(tǒng)流程是這樣:
第一步:識(shí)別用戶
游客刷臉:
<pre data-start="1566" data-end="1586" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
人臉識(shí)別 → 獲取身份證
</pre>
系統(tǒng)確認(rèn):
你是誰。
第二步:查詢訂單
系統(tǒng)查詢:
<pre data-start="1628" data-end="1650" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
這個(gè)身份證 在哪些平臺(tái)買過票
</pre>
例如:
<pre data-start="1657" data-end="1673" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
抖音 美團(tuán) 攜程
</pre>
然后匹配:
當(dāng)前景區(qū)是否包含在聯(lián)票中。
第三步:訂單核銷邏輯
這里才是最復(fù)雜的部分。
因?yàn)榭赡艹霈F(xiàn)很多情況。
情況1:一個(gè)平臺(tái)買一個(gè)景區(qū)
最簡(jiǎn)單。
<pre data-start="1775" data-end="1793" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
進(jìn)景區(qū) → 核銷訂單
</pre>
平臺(tái)結(jié)算給景區(qū)。
情況2:一個(gè)平臺(tái)買聯(lián)票
例如:
<pre data-start="1832" data-end="1850" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
萬歲山 + 鐵塔公園
</pre>
這時(shí)候系統(tǒng)很可能會(huì):
<pre data-start="1864" data-end="1875" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
先鎖單
</pre>
等到:
<pre data-start="1882" data-end="1898" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
最后一個(gè)景區(qū)完成
</pre>
才真正核銷。
原因很簡(jiǎn)單:
因?yàn)橛慰涂赡?同時(shí)在多個(gè)平臺(tái)買票。
情況3:多個(gè)平臺(tái)買同一個(gè)景區(qū)
例如:
<pre data-start="1969" data-end="1990" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
抖音:萬歲山 美團(tuán):萬歲山
</pre>
這時(shí)候系統(tǒng)必須決定:
核銷哪個(gè)平臺(tái)?
最可能的策略是:
時(shí)間優(yōu)先
誰先買,就先核銷誰。
情況4:多個(gè)平臺(tái)買聯(lián)票
這就是我女朋友的情況。
關(guān)鍵來了。
抖音聯(lián)票:
<pre data-start="2098" data-end="2124" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
萬歲山 翰園碑林 開封城墻 鐵塔公園
</pre>
美團(tuán)聯(lián)票:
<pre data-start="2133" data-end="2167" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
萬歲山 翰園碑林 開封城墻 鐵塔公園 龍亭 天波楊府
</pre>
注意:
龍亭 + 天波楊府
只有美團(tuán)有。
理論上:
只要去了其中一個(gè)景區(qū),
系統(tǒng)就能判斷:
應(yīng)該核銷美團(tuán)訂單。
[圖片上傳失敗...(image-fe9625-1773741277495)]
-****04-****最巧合的一件事發(fā)生了
她們當(dāng)天的游玩順序是:
<pre data-start="2272" data-end="2318" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
萬歲山 → 翰園碑林 → 開封城墻 → 鐵塔公園 → 天波楊府 → 龍亭景區(qū)
</pre>
也就是說:
先玩了四個(gè)重合景區(qū)。
這時(shí)候:
對(duì)于 抖音聯(lián)票 來說:
<pre data-start="2366" data-end="2384" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
4個(gè)景區(qū)已經(jīng)全部完成
</pre>
滿足核銷條件。
而系統(tǒng)又采用:
時(shí)間優(yōu)先核銷
抖音是先買的。
于是系統(tǒng):
<pre data-start="2434" data-end="2448" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
核銷抖音訂單
</pre>
當(dāng)她們繼續(xù)玩:
<pre data-start="2459" data-end="2474" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
天波楊府 龍亭
</pre>
系統(tǒng)又認(rèn)為:
美團(tuán)聯(lián)票開始被使用。
于是又 鎖定了美團(tuán)訂單。
但她們只玩了這兩個(gè)景區(qū)。
剩余景區(qū)沒去。
三天后:
<pre data-start="2545" data-end="2559" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
系統(tǒng)自動(dòng)核銷
</pre>
于是就出現(xiàn)了一個(gè)神奇的結(jié)果:
<pre data-start="2577" data-end="2602" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
抖音訂單:已使用 美團(tuán)訂單:已使用
</pre>
-****05-****總結(jié)
后來我打電話聯(lián)系 抖音客服。
說明情況后:
成功完成了 退款。
女朋友在旁邊跟我聊著旅游趣事。
但我腦子里一直在想:
這個(gè)票務(wù)系統(tǒng)其實(shí)有 Bug。
如果讓我來設(shè)計(jì)系統(tǒng)
我第一反應(yīng)是:
增加 二維碼核銷通道。
但這個(gè)方案很快被我自己否掉。
因?yàn)橛脩羧匀豢梢裕?/p>
<pre data-start="2787" data-end="2799" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
刷臉入園
</pre>
問題依然存在。
更合理的方案
當(dāng)系統(tǒng)檢測(cè)到:
<pre data-start="2835" data-end="2857" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
同一用戶 多個(gè)平臺(tái) 多個(gè)訂單
</pre>
應(yīng)該提示:
<pre data-start="2866" data-end="2881" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
請(qǐng)選擇核銷訂單
</pre>
例如:
<pre data-start="2888" data-end="2911" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
請(qǐng)選擇平臺(tái) [抖音] [美團(tuán)]
</pre>
這樣就可以:
徹底避免多平臺(tái)重復(fù)核銷的問題。
很多人旅行結(jié)束后會(huì)想:
<pre data-start="2975" data-end="2994" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
風(fēng)景好不好 美食怎么樣
</pre>
而我旅行后想的是:
這個(gè)系統(tǒng)怎么設(shè)計(jì)更合理。
這可能就是程序員的職業(yè)病吧。