女孩去旅行,給男朋友帶回了一個(gè)難解的 Bug

前兩周,女朋友去了 開封旅游。

回來沒多久,她就在微信上跟我吐槽了一件糟心事:

她在 兩個(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è)病吧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容