第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何保證同一個(gè)用戶提交的訂單不重復(fù)?

如何保證同一個(gè)用戶提交的訂單不重復(fù)?

PHP
慕尼黑5688855 2019-03-10 13:09:25
最近一直都遇到一個(gè)很讓我郁悶的事情,自己開發(fā)的系統(tǒng)上線后一直都會(huì)存在個(gè)別一兩單支付了沒有修改訂單狀態(tài)的問(wèn)題,而且出現(xiàn)問(wèn)題的訂單是在同一秒里重復(fù)產(chǎn)生了好幾個(gè)訂單最后給了錢沒有修改到訂單狀態(tài)。 問(wèn)題圖: 這一張圖中是12號(hào)桌用戶產(chǎn)生的一個(gè)訂單,它最后成功的訂單是2017092918226這一單是支付成功的,卻沒有修改為支付成功,其他不成功的,看訂單的生成時(shí)間竟然都是在同一個(gè)時(shí)間點(diǎn)相差幾秒。不知道為什么都沒有去執(zhí)行修改訂單狀態(tài)。 讓我郁悶很久,也是奇怪很久的事情 為什么一晚上90多個(gè)訂單,就出現(xiàn)1到2單會(huì)出現(xiàn)這種情況。因?yàn)檫@家餐飲店是一家新開的店,店里網(wǎng)不是很好,這讓我一直懷疑是網(wǎng)出現(xiàn)卡頓所產(chǎn)生的重復(fù)提交訂單的原因。但是那邊一直認(rèn)為是我們系統(tǒng)的問(wèn)題,現(xiàn)在一直想用代碼解決這個(gè)問(wèn)題,加了好幾層邏輯限制都沒有辦法解決這個(gè)問(wèn)題。所以想求助大神幫忙分析下問(wèn)題怎么解決。 代碼流程: 特別說(shuō)明:自己和公司的人(100多號(hào)人)同時(shí)測(cè)試這個(gè)系統(tǒng)過(guò)(操作并沒有講清的情況下測(cè)試),都正常。另外也叫過(guò)25個(gè)人同時(shí)下單(操作并沒有講清的情況下測(cè)試),10分鐘內(nèi)測(cè)試下單300多單,沒有一單出錯(cuò)。但是不知道為什么當(dāng)在店里客戶消費(fèi)時(shí)卻出現(xiàn)這種問(wèn)題,因?yàn)椴恢烙脩羰侨绾尾僮鞯?,其次查看流量監(jiān)控,當(dāng)時(shí)并不是用餐高峰的請(qǐng)求點(diǎn),還有訂單生成時(shí)間段里,是幾分鐘有一單支付成功生成。所以推斷不是用餐高峰的同一時(shí)段并發(fā)導(dǎo)致的重復(fù)訂單生成,其他桌都可以支付成功,卻只是個(gè)別桌子出現(xiàn)訂單重復(fù)生成導(dǎo)致支付后沒有支付成功,真的讓我很郁悶。 希望大神可以給我診斷下這個(gè)問(wèn)題,小生第一次遇到這種事情,謝謝了。
查看完整描述

12 回答

?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

支付類的操作不應(yīng)只是在前端做攔截校驗(yàn),后臺(tái)也需要做攔截

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊

提交訂單就保存到系統(tǒng),然后查出訂單顯示詳情,下面顯示確認(rèn)按鈕,確認(rèn)后顯示去支付的頁(yè)面
這樣直接從設(shè)計(jì)角度防止重復(fù)提交,就算提交訂單那一步重復(fù)了,確認(rèn)的訂單絕對(duì)是存在的

PS: 不建議直接修改按鈕disable狀態(tài), 因?yàn)橛行r(shí)候莫名還是能點(diǎn)的。
最好直接顯示一個(gè)層,禁止事件冒泡, 層遮住整個(gè)頁(yè)面。 和禁用狀態(tài)一起用更保險(xiǎn)

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

我的訂單處理方式都是和驗(yàn)證碼一個(gè)道理,以jquery+ajax+php提交為例;

前端:發(fā)起請(qǐng)求,附上提交頁(yè)的一次性token, 點(diǎn)擊之前判斷特征比如data('id',1)的時(shí)候,存在則說(shuō)明正在請(qǐng)求中,禁止請(qǐng)求.
后端:收到新訂單的時(shí)候驗(yàn)證token并將訂單表鎖行,直到回調(diào)給前端時(shí)釋放.
這樣你無(wú)論在瞬間請(qǐng)求多少次,我后端只處理一次.

重要的一點(diǎn)是無(wú)論后端加強(qiáng)邏輯,而不是前端下功夫,如果不慎重復(fù)點(diǎn)擊就能造成提交重復(fù),肯定是后端邏輯有問(wèn)題.前端不過(guò)是用戶操作的一個(gè)展示.

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

我現(xiàn)在的平臺(tái)也有此類的問(wèn)題,一般都是用戶點(diǎn)擊的時(shí)候重復(fù),瞬間的事情,很難鑒定的,我現(xiàn)在用的最簡(jiǎn)單粗暴,只要提交了,就按鈕灰掉或者跳轉(zhuǎn),不等到服務(wù)器給出反饋。希望你有好的方案后能分享下。

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

1、前端去禁止重復(fù)點(diǎn)擊。2、后端對(duì)業(yè)務(wù)處理,發(fā)現(xiàn)重復(fù)的訂單,禁止入表

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

這個(gè)問(wèn)題不要通過(guò)純前端的方式去解決吧!看數(shù)據(jù)庫(kù)里面的記錄基本都是同時(shí)提交的,題主也說(shuō)公司N多人一次測(cè)試也未能重現(xiàn)。

解決方案:讓請(qǐng)求“冪等”。 簡(jiǎn)單來(lái)說(shuō)在付款的頁(yè)面提前獲得一個(gè)下單的token,每個(gè)token只能提交一次訂單,以同樣的token創(chuàng)建訂單不會(huì)成功。

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

有沒有測(cè)兼容性,

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

最后的解決辦法是,

  1. 前端限制

前端的按鈕需要一點(diǎn)就改變,我用的是替換為另一個(gè)沒有點(diǎn)擊事件的按鈕防止再點(diǎn)擊。

2.后端限制
匹配查詢上一張間隔是否相差15秒內(nèi),如果15秒內(nèi)禁止重復(fù)提交訂單。有效防止短時(shí)間內(nèi)多單提交。

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

前端:狀態(tài)設(shè)置,防止重復(fù)點(diǎn)擊
后端:redis setnx

查看完整回答
反對(duì) 回復(fù) 2019-03-18
  • 12 回答
  • 0 關(guān)注
  • 1674 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)