国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

業(yè)務(wù)上鎖的應(yīng)用

stormzhang / 3470人閱讀

摘要:鎖業(yè)務(wù)場(chǎng)景針對(duì)一個(gè)賠付工單由底下小二發(fā)起當(dāng)金額數(shù)量大于一定值以后針對(duì)這筆工單就會(huì)有層層審批風(fēng)控先一個(gè)審批流審批主管審批財(cái)務(wù)審批這里就會(huì)存在種權(quán)限一審權(quán)限二審權(quán)限終審權(quán)限當(dāng)這筆工單被小二提交以后就會(huì)給小二對(duì)應(yīng)的創(chuàng)建一個(gè)審批任務(wù)在主

業(yè)務(wù)場(chǎng)景

針對(duì)一個(gè)賠付工單(由底下小二發(fā)起),當(dāng)金額數(shù)量大于一定值以后,針對(duì)這筆工單就會(huì)有層層審批(風(fēng)控),先YY一個(gè)審批流「TL審批」--->「主管審批」--->「財(cái)務(wù)審批」.這里就會(huì)存在3種權(quán)限「一審權(quán)限」「二審權(quán)限」「終審權(quán)限」,當(dāng)這筆工單被小二提交以后就會(huì)給小二對(duì)應(yīng)的TL創(chuàng)建一個(gè)審批任務(wù),在主管的界面就可以看到相應(yīng)的審批任務(wù),主管可以點(diǎn)擊通過(guò)或者拒絕

實(shí)現(xiàn)
    1.查詢?nèi)蝿?wù),判斷當(dāng)前角色是否有權(quán)限操作該筆任務(wù),任務(wù)沒(méi)有完結(jié)等一系列校驗(yàn)
    2.驅(qū)動(dòng)狀態(tài)機(jī)更新工單狀態(tài)
    3.完結(jié)任務(wù)
    
異常場(chǎng)景
場(chǎng)景一

操作:主管瘋狂點(diǎn)擊通過(guò)按鈕3次(前提是按鈕點(diǎn)擊一次不會(huì)灰顯,就算灰顯也可以通過(guò)模擬請(qǐng)求來(lái)實(shí)現(xiàn))

異常情況:三個(gè)點(diǎn)擊線程都運(yùn)行完1,然后線程1驅(qū)動(dòng)狀態(tài)機(jī)(通過(guò) + 當(dāng)前狀態(tài):待TL審批)得到的結(jié)果是待主管審批,緊接著線程2驅(qū)動(dòng)狀態(tài)機(jī)(通過(guò) + 當(dāng)前狀態(tài):待主管審批)得到的結(jié)果是待財(cái)務(wù)審批,然后線程3再運(yùn)行驅(qū)動(dòng)狀態(tài)機(jī)(通過(guò) + 當(dāng)前狀態(tài):待財(cái)務(wù)審批)得到的結(jié)果是出賬成功(不考慮多次完結(jié)任務(wù)會(huì)出現(xiàn)異常)

異常分析:在該場(chǎng)景中,只要角色擁有「一審權(quán)限」就可以通過(guò)漏洞直接把該訂單審核出賬

解決方案:

細(xì)化狀態(tài)機(jī)中的每個(gè)審核操作
1.查詢?nèi)蝿?wù),查詢?cè)摴P任務(wù)對(duì)應(yīng)當(dāng)前操作類型(TL審批OR主管審批OR財(cái)務(wù)審批)
---這里不僅僅是「通過(guò)」操作,判斷當(dāng)前角色是否有對(duì)應(yīng)操作權(quán)限
2.根據(jù)當(dāng)前操作類型+當(dāng)前狀態(tài)驅(qū)動(dòng)狀態(tài)機(jī)
3.完結(jié)任務(wù)

在查詢?nèi)蝿?wù)之前加一個(gè)全局鎖,針對(duì)這筆工單進(jìn)行全局鎖定(更加優(yōu)雅)

場(chǎng)景二

操作:一個(gè)角色同時(shí)擁有一審權(quán)限和二審權(quán)限,當(dāng)他打開(kāi)一個(gè)工單要進(jìn)行一審,但是其它主管已經(jīng)執(zhí)行了一審的動(dòng)作,并且更新了一些信息.因?yàn)樵摻巧?yè)面沒(méi)有刷新獲取不到更新的信息,然后點(diǎn)擊了通過(guò)按鈕

異常情況:點(diǎn)擊通過(guò)按鈕就相當(dāng)于進(jìn)行了二審,會(huì)造成該角色獲取不到最新信息而產(chǎn)生誤判

解決方案:在場(chǎng)景一增加一個(gè)全局鎖的前提下,可以給頁(yè)面?zhèn)鬟f一個(gè)工單modifyTime,在全局鎖里面判斷modifyTime是否一致,如果不一致說(shuō)明該筆工單已經(jīng)被更新了,可以給用戶相應(yīng)的提醒

其它

在業(yè)務(wù)中整個(gè)狀態(tài)機(jī)的流轉(zhuǎn)都是確定的,所以為了保證狀態(tài)流轉(zhuǎn)正確,所以在更新數(shù)據(jù)庫(kù)狀態(tài)的時(shí)候,需要帶上關(guān)于狀態(tài)的樂(lè)觀鎖UPDATE XXX SET status = XXX WHERE id = XXX AND from_status = XXX

如果使用的是全局鎖,那么每個(gè)操作工單的地方都需要加上相應(yīng)的全局鎖

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70868.html

相關(guān)文章

  • 業(yè)務(wù)上鎖應(yīng)用

    摘要:鎖業(yè)務(wù)場(chǎng)景針對(duì)一個(gè)賠付工單由底下小二發(fā)起當(dāng)金額數(shù)量大于一定值以后針對(duì)這筆工單就會(huì)有層層審批風(fēng)控先一個(gè)審批流審批主管審批財(cái)務(wù)審批這里就會(huì)存在種權(quán)限一審權(quán)限二審權(quán)限終審權(quán)限當(dāng)這筆工單被小二提交以后就會(huì)給小二對(duì)應(yīng)的創(chuàng)建一個(gè)審批任務(wù)在主 鎖 業(yè)務(wù)場(chǎng)景 針對(duì)一個(gè)賠付工單(由底下小二發(fā)起),當(dāng)金額數(shù)量大于一定值以后,針對(duì)這筆工單就會(huì)有層層審批(風(fēng)控),先YY一個(gè)審批流「TL審批」--->「主管審批...

    Scliang 評(píng)論0 收藏0
  • 聊聊 Redis 分布式鎖正確實(shí)現(xiàn)

    摘要:在昨天隊(duì)友代碼的過(guò)程中,發(fā)現(xiàn)了我們組分布式鎖的寫(xiě)法似乎有點(diǎn)問(wèn)題,實(shí)現(xiàn)代碼如下加鎖部分解鎖部分主要原理是使用了的去插入一組,其中要上鎖的標(biāo)識(shí)在項(xiàng)目中是鎖死用戶,如果上鎖失敗則返回。 最近在參加學(xué)校安排的實(shí)訓(xùn)任務(wù),我們小組需完成一套分布式&微服務(wù)跨境電商,雖然這題目看起來(lái)有點(diǎn)老套,并且隊(duì)友多是 Java 技術(shù)棧,所以我光榮(被迫) 的成為了一名前端,并順路使用 PHP 的 Swoole 幫...

    imingyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<