久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

校園一卡通系統(tǒng)核心設(shè)計(jì):從數(shù)據(jù)庫(kù)建模到并發(fā)扣款與對(duì)賬

校園一卡通系統(tǒng)核心設(shè)計(jì):從數(shù)據(jù)庫(kù)建模到并發(fā)扣款與對(duì)賬 簡(jiǎn)介這份畢業(yè)設(shè)計(jì)資料圍繞校園一卡通信息管理系統(tǒng)的完整設(shè)計(jì)展開面向計(jì)算機(jī)科學(xué)與技術(shù)等專業(yè)的本科生、畢業(yè)設(shè)計(jì)選題者及對(duì)高校信息化管理感興趣的開發(fā)者。文檔從需求分析、E-R 圖規(guī)劃到 SQL Server 數(shù)據(jù)庫(kù)實(shí)現(xiàn)再到 ASP.NET 技術(shù)開發(fā)系統(tǒng)地闡述了信息集成、消費(fèi)跟蹤、實(shí)時(shí)監(jiān)督等核心模塊并涉及安全性、可擴(kuò)展性等設(shè)計(jì)考量可直接作為課程設(shè)計(jì)或論文寫作的參考藍(lán)本。資源包共包含 1 個(gè) docx 文件整體大小 1.39MB內(nèi)容為完整論文文檔涵蓋封面、任務(wù)書、進(jìn)度計(jì)劃、中英文摘要、正文及系統(tǒng)功能設(shè)計(jì)等結(jié)構(gòu)便于讀者查閱與修改格式。目前已有 670 人學(xué)習(xí)瀏覽適合需要快速了解一卡通系統(tǒng)設(shè)計(jì)框架、撰寫畢業(yè)設(shè)計(jì)論文或梳理 ASP.NET SQL Server 項(xiàng)目思路的用戶。通過(guò)該文檔可以清晰地掌握校園一卡通系統(tǒng)的功能劃分與數(shù)據(jù)庫(kù)設(shè)計(jì)方法包括用戶信息管理、消費(fèi)記錄、信息更新與實(shí)時(shí)監(jiān)督等模塊的實(shí)現(xiàn)要點(diǎn)同時(shí)能獲取論文寫作的章節(jié)組織方式和任務(wù)書填寫范例對(duì)提升畢業(yè)設(shè)計(jì)完成效率具有實(shí)用價(jià)值。1. 校園一卡通系統(tǒng)到底在管什么一張卡背后的賬務(wù)閉環(huán)校園一卡通信息管理系統(tǒng)的設(shè)計(jì)這個(gè)題目在課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)里出現(xiàn)頻率很高但它遠(yuǎn)不止「做一個(gè)能查余額、模擬消費(fèi)的界面」這么簡(jiǎn)單。一張校園卡背后連著賬戶、流水、商戶、掛失、補(bǔ)卡一整條業(yè)務(wù)鏈真正讓系統(tǒng)有含金量的部分不是頁(yè)面而是賬務(wù)閉環(huán)每一筆消費(fèi)都對(duì)得上賬、余額不會(huì)超扣、掛失確實(shí)能攔住舊卡。只做增刪改查項(xiàng)目做完很容易但把它當(dāng)作一個(gè)最小可用的真實(shí)賬務(wù)系統(tǒng)來(lái)設(shè)計(jì)就要處理數(shù)據(jù)一致性、并發(fā)扣款、對(duì)賬和日志審計(jì)這些才是一份設(shè)計(jì)文檔真正的核心。這個(gè)方向適合兩類人一類是正在做課程設(shè)計(jì)或畢設(shè)、需要交可運(yùn)行系統(tǒng)和設(shè)計(jì)文檔的同學(xué)另一類是剛接觸業(yè)務(wù)系統(tǒng)、想搞懂「余額、流水、賬戶」之間關(guān)系的初級(jí)開發(fā)者。按我經(jīng)手的這類課題來(lái)看設(shè)計(jì)得像樣的系統(tǒng)重點(diǎn)一般不是在管理界面上而是在底層幾個(gè)關(guān)鍵表能不能經(jīng)得起對(duì)賬。接下來(lái)我按「業(yè)務(wù)建模 → 建表 → 踩坑 → 接口落地 → 上線驗(yàn)證」的順序把完整做法過(guò)一遍。2. 一卡通的核心業(yè)務(wù)模型賬戶、流水、商戶與狀態(tài)機(jī)設(shè)計(jì)2.1 數(shù)據(jù)流向與業(yè)務(wù)閉環(huán)為什么流水表是系統(tǒng)的命根子一卡通的日常動(dòng)作可以收斂成四個(gè)環(huán)節(jié)開卡、充值、消費(fèi)、對(duì)賬。開卡時(shí)系統(tǒng)創(chuàng)建一個(gè)賬戶并綁定一張實(shí)體卡充值往賬戶余額里加錢消費(fèi)從賬戶余額里扣錢。幾乎所有系統(tǒng)設(shè)計(jì)文檔都會(huì)把這三步畫出來(lái)但決定系統(tǒng)質(zhì)量的是第四步對(duì)賬。我設(shè)計(jì)的這類系統(tǒng)里有一張交易流水表是絕對(duì)核心所有涉及余額變化的行為都必須寫流水。賬戶表只保存當(dāng)前余額的「快照」真正可信的歷史記錄在流水表里。這個(gè)思路一定得在文檔里說(shuō)透流水表只增不改不刪哪怕充值金額錯(cuò)了、消費(fèi)扣錯(cuò)了也不能去 UPDATE 那條流水只能再寫一條沖正或退款記錄。原因很簡(jiǎn)單賬務(wù)系統(tǒng)的審計(jì)要求每一分錢都能追溯到動(dòng)作改流水等于銷毀證據(jù)。數(shù)據(jù)流向可以概括為請(qǐng)求進(jìn)來(lái) → 系統(tǒng)鎖住賬戶 → 校驗(yàn)余額 → 寫流水 → 更新余額 → 返回結(jié)果。任何一步失敗整個(gè)事務(wù)回滾流水和余額必須同時(shí)成功同時(shí)失敗。文檔里的業(yè)務(wù)流程圖如果不體現(xiàn)這一層答辯時(shí)很容易被問住。2.2 實(shí)體關(guān)系梳理賬戶、卡片、商戶的動(dòng)作邊界校園一卡通里最重要的三個(gè)實(shí)體是賬戶、卡片、商戶。我一般用三張主表來(lái)表達(dá)賬戶表只管金額和賬戶狀態(tài)卡片表只管卡號(hào)和卡狀態(tài)商戶表只管消費(fèi)收款方的信息。賬戶和卡是一對(duì)多關(guān)系也就是說(shuō)一個(gè)人可以有一張主卡后來(lái)補(bǔ)辦一張新卡但新舊卡共享同一個(gè)賬戶余額。這里有個(gè)常見設(shè)計(jì)誤區(qū)把余額直接放在卡片表里。這樣做的隱患是補(bǔ)卡時(shí)余額遷移非常痛苦??ㄆ瑏G了補(bǔ)辦一張新卡要有舊卡余額就得把整條卡記錄復(fù)制或改綁一旦中間出了岔子余額就丟了。正確做法是卡片表只存 card_no 和 account_id余額歸屬賬戶卡只是賬戶的一個(gè)憑證。商戶在這個(gè)系統(tǒng)里是消費(fèi)流水的收款方。食堂窗口、超市、開水房都是商戶每筆消費(fèi)必須歸屬于某個(gè)商戶否則對(duì)賬時(shí)不知道錢流向哪里。商戶表相對(duì)簡(jiǎn)單主要是商戶編號(hào)、名稱、狀態(tài)但它承擔(dān)了后面流水表冗余字段的重要身份來(lái)源。2.3 狀態(tài)機(jī)與異常場(chǎng)景凍結(jié)、掛失、解凍的流程定義業(yè)務(wù)建模階段最容易偷懶的就是狀態(tài)設(shè)計(jì)。一個(gè)一卡通系統(tǒng)至少有三種狀態(tài)維度賬戶狀態(tài)、卡狀態(tài)、流水狀態(tài)。很多同學(xué)只設(shè)計(jì)一個(gè) status 字段結(jié)果后面做掛失、凍結(jié)、注銷時(shí)邏輯到處打補(bǔ)丁。賬戶狀態(tài)我習(xí)慣用 0 正常、1 凍結(jié)、2 注銷??顟B(tài)用 0 正常、1 掛失、2 凍結(jié)、3 注銷。為什么要分開因?yàn)閽焓ǔJ强▉G了用戶本人賬戶還是正常的只針對(duì)這一張卡停用凍結(jié)則可能是賬戶涉及糾紛或風(fēng)控連賬戶余額都不能動(dòng)。如果把兩者合在一個(gè)狀態(tài)里掛失之后想充值都做不了業(yè)務(wù)上說(shuō)不通。流水狀態(tài)一般有 0 處理中、1 成功、2 失敗、3 沖正。設(shè)計(jì)接口時(shí)先插入一條「處理中」的流水再在事務(wù)里完成余額變更最后把流水改成成功這種做法能方便地支撐超時(shí)重試和異常恢復(fù)。狀態(tài)機(jī)要給一張轉(zhuǎn)換表寫進(jìn)文檔比如「掛失卡不允許消費(fèi)允許充值」「凍結(jié)賬戶不允許消費(fèi)和取款」。狀態(tài)設(shè)計(jì)越早理清后面寫代碼時(shí)就越不需要到處 if 判斷。3. 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)從建表 SQL 到索引與分區(qū)策略3.1 基礎(chǔ)建表腳本賬戶表、卡片表、流水表表結(jié)構(gòu)設(shè)計(jì)是整個(gè)系統(tǒng)的地基我見過(guò)太多設(shè)計(jì)文檔里用 FLOAT 存錢這是絕對(duì)不能接受的。金額一律用 DECIMAL精度至少 DECIMAL(10,2)。余額字段用 DECIMAL(10,2) 的話最大支持 99999999.99對(duì)校園卡場(chǎng)景綽綽有余。賬戶表和流水表的核心建表語(yǔ)句我放在下面可以直接拿去改。-- 賬戶表余額的唯一歸屬方 CREATE TABLE t_account ( account_id BIGINT NOT NULL AUTO_INCREMENT COMMENT 賬戶ID, account_no VARCHAR(32) NOT NULL COMMENT 賬戶編號(hào)業(yè)務(wù)唯一, available_balance DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT 可用余額, total_recharge DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT 累計(jì)充值金額, total_consume DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT 累計(jì)消費(fèi)金額, status TINYINT NOT NULL DEFAULT 0 COMMENT 0正常 1凍結(jié) 2注銷, version INT NOT NULL DEFAULT 0 COMMENT 樂觀鎖版本號(hào), create_time DATETIME NOT NULL COMMENT 創(chuàng)建時(shí)間, update_time DATETIME NOT NULL COMMENT 更新時(shí)間, PRIMARY KEY (account_id), UNIQUE KEY uk_account_no (account_no) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT賬戶表; -- 卡片表卡歸屬于賬戶 CREATE TABLE t_card ( card_id BIGINT NOT NULL AUTO_INCREMENT COMMENT 卡片ID, card_no VARCHAR(32) NOT NULL COMMENT 物理卡號(hào)刷卡時(shí)讀到, account_id BIGINT NOT NULL COMMENT 關(guān)聯(lián)賬戶ID, status TINYINT NOT NULL DEFAULT 0 COMMENT 0正常 1掛失 2凍結(jié) 3注銷, issue_time DATETIME NOT NULL COMMENT 發(fā)卡時(shí)間, loss_time DATETIME DEFAULT NULL COMMENT 掛失時(shí)間, create_time DATETIME NOT NULL COMMENT 創(chuàng)建時(shí)間, PRIMARY KEY (card_id), UNIQUE KEY uk_card_no (card_no), KEY idx_account_id (account_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT卡片表; -- 交易流水表只增不改 CREATE TABLE t_trans_log ( trans_id BIGINT NOT NULL AUTO_INCREMENT COMMENT 流水ID, trans_no VARCHAR(64) NOT NULL COMMENT 交易流水號(hào)全局唯一, account_id BIGINT NOT NULL COMMENT 賬戶ID, card_no VARCHAR(32) NOT NULL COMMENT 卡號(hào)冗余方便定位, merchant_id BIGINT NOT NULL COMMENT 商戶ID, trans_type TINYINT NOT NULL COMMENT 1充值 2消費(fèi) 3退款 4沖正, amount DECIMAL(10,2) NOT NULL COMMENT 交易金額正數(shù), balance_before DECIMAL(10,2) NOT NULL COMMENT 交易前余額, balance_after DECIMAL(10,2) NOT NULL COMMENT 交易后余額, status TINYINT NOT NULL DEFAULT 0 COMMENT 0處理中 1成功 2失敗 3沖正, remark VARCHAR(255) DEFAULT NULL COMMENT 備注, create_time DATETIME NOT NULL COMMENT 交易時(shí)間, PRIMARY KEY (trans_id), UNIQUE KEY uk_trans_no (trans_no), KEY idx_account_time (account_id, create_time), KEY idx_card_no (card_no) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT交易流水表;這段建表 SQL 的邏輯需要解釋幾句。第一流水表里做了 card_no 和 balance_before、balance_after 的冗余這是刻意為之。對(duì)賬時(shí)經(jīng)常只需要拿著流水號(hào)定位一筆交易如果還要反查賬戶和卡才能知道當(dāng)時(shí)余額鏈路一長(zhǎng)查詢就慢。冗余字段犧牲了一點(diǎn)存儲(chǔ)換來(lái)的是查詢時(shí)不用高頻聯(lián)表在業(yè)務(wù)系統(tǒng)里這個(gè)取舍是值得的。第二流水號(hào) uk_trans_no 建了唯一索引。這個(gè)字段承擔(dān)冪等控制同一個(gè)流水號(hào)第二次插入直接報(bào)錯(cuò)程序就能以此攔住重復(fù)提交。流水號(hào)生成規(guī)則我一般用「時(shí)間戳 商戶號(hào)后四位 當(dāng)天自增序號(hào)」比如 20250612103015 0012 0001拼起來(lái) 18 位可讀性和唯一性兼顧。不要用 UUID 當(dāng)流水號(hào)雖然唯一但沒法排序、沒法肉眼排查問題。3.2 交易流水表的高頻查詢字段與索引設(shè)計(jì)流水表是增長(zhǎng)最快的表一個(gè)幾千人的學(xué)校跑一年輕松到百萬(wàn)級(jí)。常見的查詢有兩種一是查某個(gè)人某個(gè)時(shí)間段的消費(fèi)明細(xì)二是查某筆流水號(hào)對(duì)應(yīng)的交易詳情。上面建表時(shí)我加的兩個(gè)索引分別服務(wù)這兩種查詢idx_account_time 覆蓋「賬戶 時(shí)間范圍」檢索uk_trans_no 精確命中單筆流水。很多同學(xué)會(huì)給流水表的每個(gè)字段都加索引這是反面教材。索引不是越多越好每個(gè)索引都占用寫入開銷。流水表是寫多讀少的典型插入時(shí)每多一個(gè)索引就多一次 B 樹維護(hù)高并發(fā)下會(huì)明顯拖慢性能。我一般控制在三到四個(gè)索引覆蓋主查詢路徑就夠了。如果文檔里想體現(xiàn)「系統(tǒng)量大也能頂住」的設(shè)計(jì)可以加一句按月份分區(qū)。以 create_time 做 RANGE 分區(qū)每個(gè)月一個(gè)分區(qū)跨月查詢時(shí) MySQL 自動(dòng)裁剪分區(qū)。這個(gè)設(shè)計(jì)在答辯時(shí)說(shuō)清楚「為什么按月份而不是按賬戶哈希」因?yàn)槟悴樵兓径紟r(shí)間條件月份分區(qū)能直接跳過(guò)期數(shù)據(jù)。3.3 對(duì)賬需要的冗余字段與統(tǒng)計(jì)字段對(duì)賬是一卡通系統(tǒng)的隱藏需求設(shè)計(jì)文檔可以不提但真正上線后沒人敢不做。對(duì)賬的核心是拿流水表的累計(jì)金額和賬戶表的余額做核對(duì)但光靠流水表還不夠。流水表里每一筆都有 balance_before 和 balance_after理論上余額應(yīng)該等于賬戶表余額但一旦出現(xiàn)人為改庫(kù)、臟數(shù)據(jù)、并發(fā)丟更新兩邊就不一致。這時(shí)候靠什么定位靠每筆流水的前后余額。我在賬戶表里還加了 total_recharge 和 total_consume 兩個(gè)統(tǒng)計(jì)字段。每次寫流水時(shí)同步累加這兩個(gè)字段數(shù)據(jù)正確時(shí)可用余額等于累計(jì)充值減累計(jì)消費(fèi)對(duì)賬 SQL 掃一遍全表就能發(fā)現(xiàn)究竟是哪條賬戶記錄壞了。這筆「冗余統(tǒng)計(jì)」的代價(jià)很低但對(duì)賬效率提升非常明顯不用臨時(shí)去聚合幾百萬(wàn)行流水。還有一點(diǎn)必須寫進(jìn)文檔所有金額字段上了數(shù)據(jù)庫(kù)約束應(yīng)該加 CHECK 約束嗎MySQL 8.0 之前的版本 CHECK 是擺設(shè)不生效所以我一般不用而是放到應(yīng)用層校驗(yàn)。但如果用的是 PostgreSQLCHECK 約束是真的可以擋住余額為負(fù)的。選型時(shí)心里要清楚這一點(diǎn)免得文檔里寫了約束實(shí)際上沒效果。4. 一卡通系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的常見問題排查四大踩坑現(xiàn)場(chǎng)4.1 余額和流水對(duì)不上改了流水賬就永遠(yuǎn)平不了現(xiàn)象對(duì)賬程序跑出來(lái)一大批賬戶余額與流水明細(xì)不一致金額差距還不固定有的差幾塊有的差幾十塊。原因開發(fā)階段圖省事余額扣錯(cuò)了直接 UPDATE 流水表把金額改掉或者手工在數(shù)據(jù)庫(kù)里改余額。流水一旦被改動(dòng)前后余額鏈就斷了。所有賬戶都是通過(guò)流水累加推導(dǎo)出來(lái)的你在中間動(dòng)了任意一筆后面的每一筆余額全部錯(cuò)位。解決馬上停掉一切手工改庫(kù)行為對(duì)賬以流水表為準(zhǔn)。寫一個(gè)校正腳本按賬戶分組重放全部流水從首筆開始計(jì)算應(yīng)有余額和賬戶表現(xiàn)有余額比對(duì)不一致的生成調(diào)賬流水把所有差異掛到「待處理」?fàn)顟B(tài)。之后在代碼層面加上約束流水表只允許 INSERT 和 UPDATE status不允許 UPDATE amount 和 balance 字段。這個(gè)約束可以在 MyBatis 的更新語(yǔ)句里刻意不寫這些字段也可以靠數(shù)據(jù)庫(kù)觸發(fā)器攔截。血淚經(jīng)驗(yàn)賬務(wù)系統(tǒng)里手工改數(shù)據(jù)是最大的事故源與其相信自己不會(huì)手滑不如從機(jī)制上斷掉這條路。4.2 并發(fā)扣款導(dǎo)致余額超扣先查再扣就是競(jìng)態(tài)漏洞現(xiàn)象一個(gè)學(xué)生食堂高峰期在 1 號(hào)窗口和 2 號(hào)窗口幾乎同時(shí)刷卡消費(fèi)系統(tǒng)返回余額不足但實(shí)際上余額夠付其中一筆。更嚴(yán)重的場(chǎng)景是余額只夠一筆卻被扣了兩筆。原因代碼寫成了「先 SELECT 余額檢查再 UPDATE 余額」兩步之間沒有加鎖。兩個(gè)請(qǐng)求同時(shí)讀到同一個(gè)余額都判斷「夠扣」于是都執(zhí)行了扣減。這是經(jīng)典的丟失更新問題。解決讓余額扣減成為一個(gè)原子操作。第一種做法是用 SELECT ... FOR UPDATE 鎖住賬戶行事務(wù)結(jié)束才釋放第二種做法是直接用一條 UPDATE 語(yǔ)句做條件扣減例如「UPDATE t_account SET available_balance available_balance - #{amount}, version version 1 WHERE account_id #{accountId} AND available_balance #{amount}」受影響行數(shù)為 0 代表余額不足。我推薦第二種少一次交互還天然防超扣。如果用了版本號(hào)字段更新條件里還得帶上 version防止其他事務(wù)改了余額你卻基于舊值覆蓋。-- 條件扣減余額充足才扣款返回影響行數(shù)判斷是否成功 UPDATE t_account SET available_balance available_balance - #{amount}, total_consume total_consume #{amount}, version version 1 WHERE account_id #{accountId} AND status 0 AND available_balance #{amount}4.3 掛失卡在離線消費(fèi)終端上被刷黑名單不是實(shí)時(shí)的現(xiàn)象學(xué)生掛失校園卡之后在某個(gè)離線刷卡機(jī)上又成功消費(fèi)了一筆學(xué)生投訴說(shuō)掛失根本沒用。原因消費(fèi)終端有兩種工作模式。在線模式每次刷卡都請(qǐng)求服務(wù)端校驗(yàn)掛失立即生效離線模式為了高峰不排隊(duì)讓終端本地緩存余額和黑名單定期同步。掛失信息同步到終端之前離線終端的本地黑名單里沒有這張卡就會(huì)放行。解決明確離線終端的「掛失生效延遲窗口」。常見做法是設(shè)置黑名單同步周期不超過(guò) 5 分鐘同時(shí)給離線終端加單筆消費(fèi)上限和當(dāng)日累計(jì)上限減少損失面。真正嚴(yán)格的方案是離線終端不發(fā)交易成功憑證等聯(lián)網(wǎng)后補(bǔ)傳流水服務(wù)端發(fā)現(xiàn)黑名單卡時(shí)對(duì)這筆交易做沖正。這個(gè)點(diǎn)設(shè)計(jì)文檔里必須寫清楚「終端的在線/離線模式差異」不然答辯時(shí)大概率被追問。4.4 流水表越查越慢索引失效和全表掃描現(xiàn)象系統(tǒng)上線兩三個(gè)月后后臺(tái)查某人某月消費(fèi)明細(xì)要等好幾秒對(duì)賬腳本更是跑到超時(shí)。原因兩個(gè)典型問題疊加。一是查詢條件里寫了「WHERE account_id 某值 AND create_time BETWEEN 某范圍」但 create_time 用了函數(shù)包裹比如 DATE_FORMAT(create_time, %Y-%m)函數(shù)導(dǎo)致索引失效二是 SQL 里對(duì)流水狀態(tài)做統(tǒng)計(jì)時(shí)只用了 status 字段做條件而 status 沒有索引。解決第一日期查詢直接寫成 create_time 2025-06-01 00:00:00 AND create_time 2025-07-01 00:00:00絕不包函數(shù)第二如果確實(shí)經(jīng)常按 status 過(guò)濾加一個(gè) status 的普通索引第三給流水表啟用分區(qū)按月裁剪舊數(shù)據(jù)。排查索引失效的通用思路是先 EXPLAIN 看執(zhí)行計(jì)劃確認(rèn) type 是 ALL 就說(shuō)明全表掃描然后檢查條件字段是否被函數(shù)包裹、是否有隱式類型轉(zhuǎn)換。5. 后端接口設(shè)計(jì)與交易鏈路落地從接口定義到 SQL 防注入5.1 統(tǒng)一返回結(jié)構(gòu)與消費(fèi)接口設(shè)計(jì)后端接口的風(fēng)格直接影響系統(tǒng)好不好維護(hù)。我一般定義統(tǒng)一的返回體包含 code、message、data 三個(gè)字段。code 為 0 表示成功非 0 表示失敗比如 10001 余額不足、10002 卡已掛失、10003 賬戶凍結(jié)、10004 重復(fù)交易。這個(gè)設(shè)計(jì)在文檔里很好呈現(xiàn)也方便后續(xù)對(duì)接支付渠道時(shí)保持穩(wěn)定。消費(fèi)接口是最核心的交易接口參數(shù)一般包含 card_no、merchant_id、amount、request_id。request_id 是調(diào)用方生成的請(qǐng)求唯一標(biāo)識(shí)服務(wù)端拿它做冪等。為什么需要 request_id因?yàn)橄M(fèi)終端和服務(wù)器之間是弱網(wǎng)環(huán)境終端超時(shí)后會(huì)自動(dòng)重發(fā)同一筆請(qǐng)求如果沒有冪等機(jī)制同一筆消費(fèi)會(huì)被扣兩次。接口清單可以按下面的表格整理進(jìn)設(shè)計(jì)文檔答辯時(shí)一目了然接口名稱請(qǐng)求方式核心參數(shù)用途開卡POSTaccount_no, card_no創(chuàng)建賬戶并綁卡充值POSTaccount_id, amount, request_id發(fā)起充值交易消費(fèi)POSTcard_no, merchant_id, amount, request_id發(fā)起消費(fèi)交易掛失POSTcard_no卡掛失余額查詢GETaccount_id查賬戶余額流水查詢GETaccount_id, start_time, end_time查交易明細(xì)5.2 扣款交易的核心代碼事務(wù)邊界與行鎖扣款邏輯是所有業(yè)務(wù)里最容易出問題的部分。我給出一個(gè)簡(jiǎn)化但完整的扣款 Service 代碼事務(wù)邊界放在方法上內(nèi)部先做冪等檢查再扣余額再寫流水。這三步必須在一個(gè)事務(wù)里任何一個(gè)環(huán)節(jié)拋異常整體回滾。Transactional(rollbackFor Exception.class) public void consume(ConsumeRequest req) { // 1. 冪等檢查同一請(qǐng)求號(hào)不能處理兩次 IdempotentRecord record idempotentMapper.selectByReqId(req.getRequestId()); if (record ! null) { throw new BizException(10004, 重復(fù)交易請(qǐng)求); } // 2. 查卡校驗(yàn)卡狀態(tài) Card card cardMapper.selectByCardNo(req.getCardNo()); if (card null || card.getStatus() ! CardStatus.NORMAL) { throw new BizException(10002, 卡不可用); } // 3. 扣減余額條件里帶余額判斷防止超扣 int rows accountMapper.deductBalance( card.getAccountId(), req.getAmount(), AccountStatus.NORMAL); if (rows 0) { throw new BizException(10001, 余額不足或賬戶狀態(tài)異常); } // 4. 查扣減后的余額用于寫流水 Account account accountMapper.selectById(card.getAccountId()); // 5. 寫交易流水狀態(tài)先置為成功 TransLog log new TransLog(); log.setTransNo(genTransNo(req.getMerchantId())); log.setAccountId(account.getAccountId()); log.setCardNo(card.getCardNo()); log.setMerchantId(req.getMerchantId()); log.setTransType(TransType.CONSUME); log.setAmount(req.getAmount()); log.setBalanceBefore(account.getAvailableBalance().add(req.getAmount())); log.setBalanceAfter(account.getAvailableBalance()); log.setStatus(TransStatus.SUCCESS); transLogMapper.insert(log); // 6. 寫冪等記錄 idempotentMapper.insert(req.getRequestId(), log.getTransNo()); }這段代碼有四個(gè)參數(shù)和設(shè)計(jì)點(diǎn)需要理解。第一是事務(wù)注解 rollbackFor Exception.class默認(rèn)情況下 RuntimeException 才回滾但業(yè)務(wù)里拋的是 BizException如果 BizException 不是 RuntimeException事務(wù)就不會(huì)回滾余額扣了流水沒寫賬就崩了。如果你繼承了 RuntimeException 可以省略但寫全更穩(wěn)。第二是 deductBalance 的 rows 判斷影響行數(shù)為 0 就說(shuō)明余額不夠或者賬戶狀態(tài)不對(duì)不用再查一次余額。第三是冪等記錄放在事務(wù)最后如果前面失敗冪等記錄也不會(huì)寫入下次重試可以繼續(xù)。第四是 balance_before 由扣款后的余額加回金額推出避免多查一次之前余額但這個(gè)做法要保證扣款后立刻查余額不能有其他事務(wù)插隊(duì)。并發(fā)極高時(shí)這里有個(gè)灰色地帶我一般配合賬戶行鎖使用把這個(gè)「查余額」操作放在 FOR UPDATE 事務(wù)里。上面代碼用條件扣減省了鎖但寫流水前查余額那一步嚴(yán)謹(jǐn)起見要把 accountMapper.selectById 改成 FOR UPDATE 版本。更可靠的方案是扣款 UPDATE 語(yǔ)句里直接返回舊的余額但 MyBatis 原生不支持 UPDATE 返回舊值需要自定義 SQL 或存儲(chǔ)過(guò)程。課程設(shè)計(jì)階段條件扣減加事務(wù)已經(jīng)足夠文檔里可以寫明「此處采用條件更新防超扣如需更強(qiáng)一致性可升級(jí)為行鎖方案」。5.3 MyBatis 參數(shù)綁定與 SQL 注入防護(hù)一卡通系統(tǒng)里所有 SQL 都必須用參數(shù)綁定這是底線。MyBatis 里 #{} 會(huì)生成 PreparedStatement 占位符參數(shù)由驅(qū)動(dòng)轉(zhuǎn)義不會(huì)注入${} 是直接拼接字符串等于把你的參數(shù)原樣塞進(jìn) SQL。曾有一個(gè)翻車案例某系統(tǒng)用 ${} 拼接排序字段前端傳了個(gè)「account_id DESC; DROP TABLE t_account」數(shù)據(jù)庫(kù)直接崩了。我一般對(duì) MyBatis 的 Mapper 文件定三條規(guī)則第一WHERE 條件里的值一律用 #{}第二動(dòng)態(tài)排序的列名和方向必須走白名單校驗(yàn)代碼里先判斷傳進(jìn)來(lái)的列名是否在允許列表里不在列表就拒絕第三LIKE 查詢不能用「LIKE %${keyword}%」這種寫法要改成「LIKE CONCAT(%, #{keyword}, %)」既防注入又能走索引。防注入不是高級(jí)技巧但它就是這類系統(tǒng)的安全底線設(shè)計(jì)文檔里單列一節(jié)會(huì)顯得很專業(yè)。6. 上線前必須做的安全加固與驗(yàn)證從日志到壓測(cè)的收尾功夫6.1 敏感操作日志與審計(jì)交易流水保的是資金賬操作日志保的是管理賬。誰(shuí)在什么時(shí)候給哪個(gè)賬戶充了值、改了狀態(tài)都必須有記錄。我會(huì)在系統(tǒng)里單獨(dú)建一張操作日志表記錄操作人、操作類型、目標(biāo)賬戶、請(qǐng)求參數(shù)、IP 和結(jié)果。后臺(tái)管理員的任何修改操作都寫日志普通用戶只能自助充值不能直接改余額。這個(gè)設(shè)計(jì)成本極低但在真實(shí)場(chǎng)景里能救命。某次系統(tǒng)上線后余額被人為改過(guò)就是靠操作日志定位到哪個(gè)管理員做了什么操作不然這種臟數(shù)據(jù)要排查好幾天。日志表不要和流水表混在一起職責(zé)不同混在一起會(huì)干擾對(duì)賬邏輯。6.2 交易冪等與重放防護(hù)消費(fèi)終端超時(shí)重試是常態(tài)冪等表不能省。實(shí)現(xiàn)方式是接收請(qǐng)求后先查 request_id 是否處理過(guò)處理過(guò)就直接返回上次結(jié)果。表結(jié)構(gòu)很簡(jiǎn)單就三個(gè)字段request_id、trans_no、create_timerequest_id 建唯一索引。這套機(jī)制對(duì)充值、消費(fèi)、退款全部適用。還有一個(gè)容易被忽略的重放場(chǎng)景同一張卡在同一個(gè)終端上同一秒內(nèi)發(fā)來(lái)兩筆參數(shù)完全相同的請(qǐng)求這可能是終端 bug 也可能是攻擊。處理辦法是在冪等檢查之外再比對(duì)卡號(hào)、金額、商戶、時(shí)間窗口4 個(gè)維度都相同就判定為重復(fù)請(qǐng)求。6.3 一個(gè)壓測(cè)驗(yàn)收技巧交付前我會(huì)做一次簡(jiǎn)單的并發(fā)驗(yàn)收不追求壓測(cè)工具的華麗只要驗(yàn)證兩件事余額不超扣、流水不丟失。做法是起一個(gè)本地腳本開 50 個(gè)線程同時(shí)對(duì)一個(gè)賬戶發(fā)起 500 筆金額為 1 元的消費(fèi)請(qǐng)求跑完后檢查該賬戶余額是否等于初始余額減 500流水表里對(duì)應(yīng) trans_no 是否有 500 條成功記錄。這個(gè)驗(yàn)證做完系統(tǒng)的賬務(wù)正確性就有了基本保障。如果只有 499 條流水說(shuō)明并發(fā)丟更新了去檢查事務(wù)和鎖如果余額少了更多說(shuō)明有重復(fù)扣款去檢查冪等。這個(gè)壓測(cè)手法我?guī)н^(guò)幾個(gè)學(xué)生用過(guò)其中 A 同學(xué)用 100 個(gè)線程一跑立刻暴露了超扣問題他在答辯現(xiàn)場(chǎng)展示了修復(fù)前后對(duì)比老師的評(píng)價(jià)是「這個(gè)系統(tǒng)是真的被驗(yàn)證過(guò)」。給自己留一套這樣的驗(yàn)證腳本比在文檔里寫十頁(yè)「系統(tǒng)穩(wěn)定性」都有說(shuō)服力。我做這類系統(tǒng)時(shí)養(yǎng)成了一個(gè)習(xí)慣交付前一晚重放一遍全流程——開卡、充值、消費(fèi)、掛失、解掛、對(duì)賬每次都用同一個(gè)賬戶從頭跑到尾。開發(fā)階段每個(gè)接口單測(cè)都是通的但連起來(lái)跑就會(huì)出現(xiàn)各種意想不到的邊界比如掛失后的卡還能不能查余額凍結(jié)賬戶還能不能充值。這些邊界靠腦補(bǔ)不可靠跑一遍才靠譜。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
青春草A| www.大香| 男人的天堂2018| 欧美视频激情久久久久久| 强奸xx国产| 国产精品免费1区2区视频| 麻豆成人av| 99啪啪| 亚洲无吗在线视频| 日本在线观看网址| 天堂成人网| 99爱爱| www.操| 欧美精品999| 国产三级中文有码在线视频| 99久久综合| 国产精品无码AV网站| 欧美18 在线观看| av天堂电影网| 98久久超碰| 青青青草伊人精品| 十八禁电影伊人网| 国产久久日| 口爆欧美91| 无码9区| 99综合| 333kkkk·亚洲com久久| 奇米四色影视777久久久| 亚洲天堂男人天堂网| 亚洲国产97在线精品一区| 国产精品动态一区二区三区四四| 欧洲乱码视频| 日韩精品9999| 五月天婷婷社区| 亚洲日韩97| 九九九草| 少妇熟女视频一二三区| 中文字幕欧美精品亚洲日韩蜜臀| 国语少妇精| 九九热精品| 亚洲深夜福利| 激情小说在线视频| 国产一区二区三区免费视频在性观看 | 大香蕉97久久| 高潮内射在线| 97精选久久| 亚欧美综合网。| AV99热18这里只有精品| 亚洲少妇激情一区二区三区| 97久久国产精品女不卡| 国产精品人妻无码久久久老鸭窝 | 午夜欧美J进J出白浆流出久久久| 九草在线大香蕉| 欧美性爱一区二区三区四区| 91精品91久久久久77777俄罗斯老妇姓x| 成人小电影网站tex| 综合亚洲欧美| 欧美不卡在线一区二区| 国产精品免费日韩| 亚洲欧美成人在线| 91网站18在线| 成人精品水蜜桃久久久久久久| 欧美精品不卡一二三四在线91| 玖色av| 一区二区三区高清| 99亚洲精品| 免费观看国产小粉嫩喷水精品午| 国产色呦呦| 激情专区综合| 青青草大香蕉在线视频| 91大神精品长腿在线观看网站| 国产成人精品必看| 亚洲日韩AV视色| 久久夜嗨| 韩日欧亚a级| 欧美性爱日韩高清| 夜夜操天天肏| 中文字幕一二三av| 亚洲黄片免费在线播放| 亚洲第一综合| 夜夜精品视频一区二区| 亚洲无码电影久久久| 国产剧情AV不卡在线观看| av中文在线| 熟女天天干| 清纯唯美激情| ..日韩av毛片精品久久久| 久久老子无码午夜伦不卡| 天天综合网久久ww| 2020中文字幕在线观看| 性做久久久久久久| 日本裸体久久色噜噜| 久草成人影片| 日韩人妻一二三区视频| 色超碰综合| 伊人影院日本| 中文字幕一区av| 中亚黄色三级大片| 亚洲一级性爱视频免费看| 志村玲子视频一区二区| 欧美综合色图片| A 在线网址| 日本一区二区三区精品| www.91视频网| 婷婷五月天AV| 天天操妹子| 黄片无码在线制服| 久草老司机| 巨爆乳一区二区爆乳区| 欧美亚洲AN| 沈阳熟女高潮对白视频| 狠狠躁AV| 婷婷色综合欧美日韩| 婷婷五月天色色| 少妇熟女视频一区二区三区| 久久精品国产72国产精品福利| 久久久专区| 色翁荡息又大又硬又粗又爽| 91老熟女91老女人| 国内精品久久久久影院亚洲| 亚洲色欧| 69精品在线| 91性色| 天美av在线观看| 我要色综合网| 久久9久9久99久9久9| 91亚洲欧洲| 97超碰jingpin| 香蕉综合网| 久热伊人99re| 欧美午夜视频免费观看| 日本好吊色视频| 婷婷午夜成人色中色| 白丝在线一区| 婷婷五月色| 日韩欧视频| 五月丁香久久| 无码高清少妇久久| 99国内熟女露脸视频| 国产亲戚伦亲在线| 精品在线78| 99热自拍| 一区二区三区美女超清| 老熟女中文字幕高清| 午夜理论片在线观看免费| 蜜臀中文无码午夜| 美女露胸露奶头| 91AV入口| 999色欧美中文字幕| 激情丁香五月婷婷| 国产精品高清2021在线| 加勒比av网| 一本道综合色图| 国产女s强制榨精视频| 亚洲综合射| 国产成人网站在线观看| 激情婷婷综合久久| 日韩无码一区二区三区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 99老司机精品视频在线观看 | 国产精品亚洲一区二区三区四区| 超碰在线一区| 国内成人圈中文字幕无码视频| 99免费在线视频| 日韩欧美操逼xxx| 久久久96精品| 97综合国产精品高潮久久| 中文字幕一区二区三区高清| 三上悠亚在线毛片91| 黑人精品久久97| 噜噜在线| 久久人妻精品| 岛国黄色短视频| 丰满人妻一区二区三区免费 | 亚洲色婷婷久久91| 中文乱码字幕观看视频| 日韩综合97P| AV中文在线可看| 超碰成人公开| 91在线视频国产网站| 91精品国久久久久久无码| 天天干天天做| 五月天激情小说| 你想操日本小逼吗| 麻豆国产视频精品观看| 超碰免费97| 蜜桃臀久久| 天天看高清麻豆| 亚州操操穴网| www.丁香五月| 综合激情婷婷| 欧亚在线视频| 三级网色| 欧美少妇性爱网站| 在线播放免费av福利片| 久操操AV电影| 欧差乱伦二三| 中文久久| 五月天亚洲色图| 风间由美日韩欧美久久| 97色欧洲| 91无码精品| 老熟妇一区二区三区| 中文字幕88av在线| 欧美天天综| 色婷婷aV一区二区三区麻豆综合| 精品女人999| 99视频在线| 欧美日韩中文亚洲v在线综合| 免费一级a毛片久久久久久鸭绿欲| 黄片www视频免费| 神马午夜久久| 日本乱人伦片中文三区| 三级日韩一区二区三区| 又大又长又粗又爽又黄| 91在线视频免费播放| 九九综合久久中文字幕| 无套内射人妻在线播放| 亚洲成?V人片在线观看福利| 一区在线观看中文字幕| 91色碰| 丝袜美腿欧美| 日本一二三高清| 青青草视频在线观看一区二区| 天天干天天日天天射黄色| 色蜜AV| 国产精品情侣啪啪| 久色99999| 亚洲91网站| 亚洲亚洲亚洲天堂天堂| 高清无码人妻久久久一区二区三区aⅴ| 青草地一本线一区二区三区| 人人爱人人乐人人操| 另类TS人妖一区二区三区| 日韩性爱1级片视频| 国内毛片婷婷六月色| 欧美午夜一区二区三区| 婷婷五月天网| 一区,二区,三区视频| 色臀aV| 久久久免费高清中文视频| 久久婷婷成人综合色怡春院| 蜜臀一区二区三区在线| 婷婷视频在线免费观看| 日韩人体偷拍| 亚洲综合贴图91 | 精品超碰国产| 亚洲欧美日韩有码| 99久久久| 综合五月婷婷亚洲一区| 99re视频在线观看这里只有精品| 另类av综合久久| 另类欧美综合| 韩国成人精品久久久免费看| 日韩久久三区| 久久少妇人妻| 亚洲一二三四区| 人妻日日干| 天天看少妇| 欧美综合自拍亚洲综合图| 深夜福利黄片| 床上啊啊啊一区二区三区| 91久久午夜无码鲁丝片久久人妻| 久久大香蕉97| 日韩美女操b| 国产视频一区二区在线| 91丝袜视频在线观看| 日本高清视频xxxx| 超碰午夜在线| 国产偷人伦激情在线观看| 91呆哥人妻| 1区2区3区中文字幕日韩| 少妇无码999| 欧美顶级黄色大片免费| 色综合20p| 国内偷拍精品一区二区| 99精品在线观看| 国产91丝袜在线播放蜜月| 免费观看网黄| 黄色小说亚洲| 亚洲高清视频在线免费观看| 9/A片| 日韩精品午夜操呦呦不卡影院| 可以在线观看的黄色网址| 狠狠躁AV| 熟妇乱伦一区二区| 和协无码影院| 少妇厨房愉情理伦片bd在线观看| 伊色综合天堂色97| 国产精品视频内谢女人| 区日韩亚洲乱码av电影| 超碰久超碰久| 久久香蕉国产传媒一区剧情天美| 国产蜜臀精品一区二区尤物| 啪啪91| 97se亚洲综合自| 婷婷五月天av| 少妇天堂| 91丝袜美腿网站| 日本操逼视频免费| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 99这里有精品| 26UUU欧美日本| 九九玖玖精品| 国产Av超碰| 九九热超碰97亚洲最新香蕉| 高清国产精品无码| 日本顶级天天操狠狠操夜夜操中文字幕| 日韩在线欧美精品一区二区| 大香网站| 中文字幕天天天天天| 7777奇米影视久久| 超碰在线香蕉| 欧美一二三级精品在线| 亚州AV无码国产精品| 综合91网| 婷婷在线视频| 日本视频在线中文字幕| 亚洲自拍另类丝袜综合| 99久久久久久久久| 亚洲图片欧美偷拍| 中文字幕一二三区| 91精品无码人妻系列| 欧美另类天堂| www.狠狠干.coom| 五码视频在线观看| 欧美综合传媒| 亚洲精品男人的天堂| 尤物网站91| 欧美久久久15P| 国产二区三区免费视频| 91精品免费| 操一区| 丁香七月婷婷| 中文字幕人乱码中文字的预防方法 | 精品国产72| 人人射人人操人人摸| 色九久| 亚洲精品欧美专业| 91精品黄在线观看| 国产精品久久久久久高清无码免费看| 激情久久日韩精品中文字幕麻豆| 亚洲另类色图片| 激情五月天社区| 东北少妇高潮zzzz| 搡老女人老熟女91老熟女综合网| 久久久久9999妇女| 欧州色图区| 激情网色| 中文字幕一二三av| 亚码激情| 色综合尤物| www.yeyecao| 亚洲黄色电影| 亚洲天天精品| 欧美 日韩 另类 亚洲| 超碰免费在线| 国产精品熟女乱伦| 一级久久久久久久久久久| 欧美色图综合| 欧美熟妇色| 日本久久999| 成人老鸭窝人人在线视频| 综合激情五月丁香| 太久视频| 色成人Www精品永久观看| 欧美少妇色图| 外国91| 日本二区不卡| 青青草AV色| 狠狠躁天天躁日日躁97| 先锋音影AV| 精品成人av一区二区三区在线| 亚洲天天在线| yiqicaoav| 精品久久97| 国产久久久久影院老熟女| 午夜精品久久久99| 曰本精品久久久| 蜜臀在线免费观看在线免费观看| 天天欧美色| 日韩熟妇二区| 97色色视频| 亚洲一区二区性爱电影| **一级毛片国产| 国产成人www免费人成看片| 欧美精品三级黄片| 亚州色图片在线色| 亚洲国产亚洲天堂| 97欧美色综合| 96国产精品| 啪啪啪男女亚洲中文字幕99| 欧美92| 男人天堂2019| 精品国产一区探花在线观看| 国产亚洲精品一区二区三区| 精品国产av一区二区三区四区入口| 大香蕉中文在线| 黑人娇小av在线播放| 清纯唯美亚洲综合| 一级性爱视频免费观看 | 88在线一区二区三区| 少妇人妻在线| 九九九九九九九九九国产精品| 清纯唯美第一页| 国产97亚洲| 韩国一级做a久久久久| 女欧美一区二三区| 高清无码一区二区三区| 3p国产色噜噜一区| 国产日本熟女顶级一区二区三区视频 | 日本精品88888888| 亚拍在线| 亚洲91色| 极品尤物女神在线观看| 青青草视频这里只有精品| 91九九九馒头| 国产偷人妻精品一区二区在线| 大香蕉伊然在亚洲91| 九九九九一区| 伊人五月天婷婷| 曰韩成人免费视频| 婷婷色一区| 精品国产久热在线观看| 好湿好紧好爽 视频| 精品久久大胆人体| 天天摸天天操视频| 中文字幕精品一区欧美| 精品久久久亚洲AV成人网站| 成人老鸭窝人人在线视频| 亚洲天堂久| 永久电影三级在线观看| 色五月综合网| 韩日巨乳美女免费视频在线观看| 九九九九精品精| 影视综合无码少妇| 伊人色综合网| 日韩中文9| 人妻少妇久久中文字幕一区二区 麻豆| 免费精品人妻一区二区三| 亚洲激情网| 欧美91网站| 精品久| 国产一级αv免费看片| 91丨国产丨白浆| 97在线视频观看免费| 三男一女不戴套的A片| 玖玖婷婷五月天| 日韩不卡网操逼中文字幕日韩| 91高清欧美| 色婷婷激一区二区三区 | 精品亚洲天堂| 国产激情在线| 欧美青青草视频| 欧美十八禁视频| 亚洲天堂色图| 国产精品午夜AV完会免费| 一区二区娱乐网站| 激情视频图片| 欧美v亚洲v日韩v最新在线二区| 亚洲欧美日韩有码| 日韩有码 一区二区三区| 神马精品视频| 加勒比综合| 激情五月丁香五月| 蜜臀va69| 婷婷成人五月天| 久久精品99| 探花一区在线| 国产久9| 日本精品第一视频在'| 亚洲男人的天堂网| 岛国黄色短视频| 人妻丝袜肏逼| 国产精品自在自拍视频| 99re在线视频这里只有精品| 看日韩操逼| 久久原创中文| 青娱乐日韩无码| 国产精品另类一区大香蕉| 亚洲av影音先锋| 青青操视频在线| 国产精品亚洲一区二区三区四区| 无码二级三级| 色色色色色色色色色色色色色色综合| 国内外内射高清视频| 国产高清1234区| 91视频精品| laoshunv91| 欧美日韩操操操| 超碰 欧美| 日韩熟妇二区| 囯戸精品高潮呻吟旡码| 蜜臀在线看片| 六六久久日韩不卡| 国产欧美日本亚洲精品| 日韩一级二级三级免费看完整版国语版| 777AV电影| 另类图片五月天| 婷婷月色| 999亚洲国产视频| 99re99在线视频| 天天透伊人| 天天色天天干天天射| 久久成人精品| 国产精品肉丝自拍| 日韩一区二区三区四区五区| 日韩人妻无码不卡网站| 综合网~91综合网| 91九色精品熟女内射| 国产偷人伦激情在线观看| 久操在97| 男人的天堂2010| 十八禁av无码免费网站APP| KK色在线影院| 九九九久久久久| 久久婷色| 久久毛卡| 亚洲av国产av综合av卡| 青青草在线视频播放器| 日韩ab网| 好吊色在线观看| 久久久精品无码亚免费| 天天干人人看综合| 97ai亚洲| 青青草久久| 午夜性| 色婷婷五月天| 搡老熟女老女人老熟妇免费视频| 亚洲 小说 欧美 激情 另类| 天天看片青娱乐| 91熟女.com| 禁十八久久| 超碰三级秋霞| 激情开心五月天| 美国aaaaa一级黄片| 大学生美女口爆| 精品人妻高清麻豆av| 精品9区| 97免费在线视频在线观看| 大香蕉乱伦视频网| 插日本熟女视频| 操逼免费视频无码国产| 伊人一级免费黄片| 一区二区三区免费视频入口 | 麻豆啪啪啪视频| 午夜视频好爽啊| 台湾一区国产高清在线| 性猛交| 91色插| 久操国产在线| 日本男人天堂| 亚洲欧洲日韩中文字幕一区| 国内外毛片在线观看| 性爱欧美五月| 欧洲自拍色图gif在线| 久久男人网| 美腿色图| 91热情品| 久久99草| 国偷自 一区| 91青青在线视频| 999熟女精品| 人妻少妇久久| 久久99干一本高清| rion磁力链接| 亚洲毛片基地专区| 蜜臀一区二区三区在线 | 丁香五月天婷婷姐| 国产无遮挡| 色老汉色| 大香蕉色欲AV| 老鸭窝在线视频播放| 精品人妻一区二区蜜桃视频| 久久久久久人体| 91亚洲情色| 日韩欧美亚洲自拍偷拍| 国产精品久久久久久亚洲色欲| 在线毛片片免费观看| 极品综合| 亚洲成熟国产精品美女| 在线播放成人网站| 99热精品青草在线| 九七毛片九九毛片| 美女黄站| 国产高清精品一区二区三区毛片| 国产精品无套内谢| 久久婷婷视频| 欧美欲色| 亚洲天堂少妇| 国产精品com| 在线一道啪| 色婷婷丁香五月| 欧美色图天堂网m| 亚洲综合一| 亚洲精品97久久| 天天懆天天日| 思思热在线| 日韩无码服务区| 大香网伊人久久综合| 中日无幕一二三四区| 97操在线| 夜色91| 国产精品视频麻豆入口| 婷婷五月天成人| 日日黄色三级网站| 国产精品久久泡妞网站| 2017人人操,人人摸| 99热在线观看| 熟女高潮合集-永久久久-成人AV| 成人国产二区三区在线,男女精品。| 色欲Av人妻精品一区二| 五月天综合在线| 六月婷婷一区二区三区| 亚洲学生妹高清av| 亚洲中文字幕av| 97碰碰日本乱偷人妻中文的| 国内伊人久久久久久网站视频| 天天日天天搞天天干| AV 少妇 人妻 偷拍| a片亚洲一本通视频| 大象AV在线| 香蕉久久国产AV一区二区| 九九国产热| 蜜臀无码视频在线观看| 97人人干| 一级免费精品| 3d成人精品一区二区| 97干色天堂| 清纯唯美亚洲综合| 色婷婷视频| 久久久三区二区一区| 最新中文字幕精品在线| 99黄页网站| 91色人妻| 欧美狠狠弄| 中文字幕后石码三区四区| 激情丁香五月婷婷| 深爱伊人影院| 欧美一级A片在线看视频性色| 精品亚州18| 第四色奇米影视777| 91九色丨国产丨爆乳| 欧美色网| 国产亚洲 中文欧美久久| 色97欧美| 五月激情天| 夜夜躁狠狠躁日日躁av| 欧美视频一| 大鸡吧尹人在线| 超碰免费人妻在线| 久久综合18p| 四虎国产精品永久入口| 区一二区日韩亚洲乱码av电影| 欧美激情激情xxxx欧美专区| 久久人妻97久久久久久久| 中国人高清www色视频免费| 野狼激情网| 日韩一级欧美一级国产一级台湾| 国产性刺激| 亚洲av综合伊人久久| 99操| 91精品人妻电影| 亚洲做性| 亚洲另类综合欧美| 一级黄色性爱裸体视频| 操亚州| 亚洲美女自拍偷拍视频| 香港久久久| 九九热免费国产视频婷婷伊人五月 | 欧美激色| 婷婷五月天社区| 麻豆美女丝袜人妻中文| 国产精品网站免费| 韩国三级理论在线| 天天射日日干| 亚av顶级裸体一区二区三区四区五区| 播播亚洲小说亚洲| 96久久久久| 春色校园综合网| 欧亚性爱啪啪| 精品亚洲天堂| 日本男人插女人的逼黄色| 日本日皮视频逼| 91人妻少妇| 69久久久久久久久久久久久| 99操碰| 国产传媒午夜理伦精品| 亚州精品人妻一二三区| 色综合中文字幕不卡| 亚洲系列第一页| 91少妇人妻| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 久久人妻无码毛片A片麻豆| 九九夜精品九九在线| 亚洲青青草| 91精品国产综合久久久蜜臀| 熟女精品va中文字幕| 天天影视亚洲| 色九九综合AV| 久久色一区| 91九色精品熟女内射| 国产精品成人无码a v毛片| 欧中美三级一区二区三区| 91国产大片| 天天射影院| 日韩成人大片一区二区| 日韩精品一区二区高清| 超碰97伊人| 美女91av| 国产美女口爆吞精| 97天天摸天天碰| 亚洲精品乱码久久久久久蜜桃麻豆| 成年人黄色视频免费| 亚洲人妻日日日| 97资源站久久| 色香在线| 伊人国产视频| 欧美激情视频一区二区三区不卡| 在线国产探花| 欧美亚洲日本视频久久久| 午夜无遮挡男女啪啪视频| 91亚洲电影| 日韩精品 欧美激情| 亚洲人人夜夜澡人人爽| 日韩欧美偷拍美女视频| 女人一区| 久久综合女优| 国产嫩草精品A88AV在线| 中文字幕高清20页视频| 99这里有精品视频| 色播五月婷婷| 五月天激情四射| 日本福利二区视频| 丰满的三级少妇欧美久久久| 操逼操网| 中文字幕狠狠玩| 啪一啪免费视频| 久久久久久久国产a∨| av网页一区二区三区| 亚欧成人综合影院| 18禁美女裸体无遮挡啪啪| 国产一级137片内射麻豆| 久热影视| 欧美黄片免费在线观看视频| 欧美 日韩 亚洲 春色| AV一区观看| 日本三级一区二区 在线| 91午夜无码| 岛国AB视频| 欧美网站免费| 992这里有精品| 九九天堂| 国产成人主播| 午夜AV污污污| 色噜噜人妻av中文字幕| 丰满人妻一区二区三区免费| 在线综合网| 激情小说日韩无码| 青椒国产97在线熟女| 亚洲av无线观看| 日韩无码成人电影| 韩国一区二区精品亚洲| 大香蕉99热| 超碰偷拍| 成人线上超碰| 免费一级特黄特色大片在线观看看| 日韩AV无码中文一区二区| 成人三级片无码| 黄色AV影视| 中文字幕-区二区三区四区视频中国| 婷婷15月天青娱乐| 亚洲男人在线观看天堂| 日本人妻丰满熟妇久久久久久| 密乳AV免费观看| 新版天堂中文资源8在线| 色五月婷婷麻豆在| 九九九九九九成人| 亚洲色婷婷综合久久一区二区三区| 日韩15p| 岛国色情视频在线观看| 色噜噜综合网| 欧美日韩精品国产91| 97日韩欧美亚洲| 国产强奸AV在线| 99久久精品国产高潮| 国产欧美美女免费观看视频| 日韩无码AB| 91亚洲电影| 国产精品久久久久久 百度| 猛交交| 九九av| 国产中出内射一区二区| 亚洲精品日日夜夜52| 欧美黄色图片| 欧美日韩久久精品爱爱| 中文字幕一区电影在线观看| 97人肏| 97射欧美| 久久黄色视频一区二区三区| 欧美熟妇视频| 日韩无码第3页| 亚洲精品xxx| 99国产精品在线观看| 蜜臀99久久精品久久久久久| 久久综合国产精品国产| 淫淫总合网| 日韩成人小视频| 色婷婷视频| 少妇500双飞99| 在线视频97| 人妻少妇色综合| 日本天堂在线播放| 天天操夜夜嗨| 天天α片| 久久久精品91八戒| 日韩欧美麻豆大片| 玖玖久久久| 色色色欧美| 久久久性少妇| 丝袜熟女一区二区三区| 久久99精品九九久久久婷婷| 一级人妻性爱视频| 97精品一二区| 性猛交| 日韩乱码av| 人妻AV在线| 精品国产人成在线| 日韩熟女三十乱伦| 亚洲成人久久一区二区| 五月婷婷丁香六月| 日韩不卡网操逼中文字幕日韩| 国产无码精品无码| 九月丁香婷婷| 日韩无码一区二区三区| 国产11页| 精品福利| 久草精品热视| 天天日天天干天天操| 国产黄a三级三级三级av在线看| 天天操天天舔| 性欧美另类高清| 国产真实子伦对白| 打av高清| 精品国产91av一区二区三区| 青青伊人久久| 欧美午夜视频精品久久| 青青草中出视频 | 激情综合久久| 久久久久久久9| 日韩亚洲美女一区久久| 久久精品国产精品一区| 久久视网78| 日本日逼高清| 热久久无毒不卡| 久久五月综合| 3PAV乱伦视频| 色九九九综合| 日韩精品中文字幕二区| 人妻丝袜一区二区三区在线| 999久久久九| 岛国大片国产| 少好三P| 人妻嗯啊啊在线播放| 2024黄色视频| 鸥美极品| 婷婷五月丁香五月| 人妻二区| 九九九只有精品| 国产视频三区四区| 视频国产精品未满十八禁止在线观看| 91男人综合| 日韩久久超碰色| 免费作爱一级视频| 日韩无限资源| 九九九九免费视频| 欧美另类色图片| 国产精品毛片?v一区二区三区 | 日韩性爱1级片视频| 台湾佬中文娱乐网久久久久久久久久com | 欧美黑人猛交春色影视大全| 18禁中文字幕| 狠狠爱夜夜| 精品九九九九九九九| 色五月首页| 北约熟女超碰| 欧美少妇色图| 国产女主播视频在线观看| 91人人爽人人爽| 99精品久久久久久久婷婷| 神马九九| 色69大色97香蕉| 日韩钢筋无码高清啾啾啾| 极品尤物在线观看| 性色生活片久久毛片婬片免费放女人一级毛片| 欧美综合综合| 亚洲drav色图| 国产美女91视频| 伊人成人中文字幕久久网| 国产 日韩 欧美高清| 午夜精品久久久| 欧美少妇高潮| AV色五月天| 国产精品色哟哟| 中文高清一区二区的| 亚洲国产高清福利视频| 日本韩国国产精品一区| 91殴美| 亚洲成人帖图| 激情婷婷丁香| 精品乱码久久久久| 精品无吗久久| 好淫网一二三视区| 成功精品影院| 人人扣人人操| 在线可观看的黄色网址| 国产精品美女久久久久AⅤ国产馆| 性色A∨91| 欧美性色欧美| 久久婷婷苹果| 亚洲色图 91| 欧美亚洲清纯| 蜜臀一二三区| 国产成人啪一区二区| 久啪| 亚洲欧美在线综合| 美女诱惑在线一区| 99抽插| 加勒比AV网| 97久久精品国产| 久久蜜桃综合网| 熟妇人妻一区二区 | 最新av网站在线观看| 欧美精品69性爱| 国产在线视频午夜精华在| 久草成人| 午夜舔阴达高潮视频免费看| 丰满人妻一区二区三区色-百度| 亚洲黄色| 狠狠爱大香蕉| 少妇综合| 久久精品 六十路 熟女 欧美| 天天干人人看综合| 久久精品一区二区一8| 婷婷丁香激情| 五月天我淫我色av| 欧美午夜视频免费观看| 乱伦图av| 牛黄色久午久| 能看的av| 青娱乐av在线| 加勒比日本在线| A男人的天堂| 91在线国产后入风骚翘臀美女素人| 亚洲成人在线资源| 狠狠爱夜夜| 日韩性爱长视频免费| 午夜视频黄| 国产AV激情无码久久无码| 人人操人人摸人| 99热这里只有精品8| 欧美不卡在线美女| 另类av天堂| 风月影院男女十八禁| av2014 日韩在线中文字幕| 香蕉视频精品亚洲一区二区三区在线播| 少妇久久久久久| 国产精品亚洲无码| 人妻激情偷乱视三区频一区二区| 激情五月综合网| 色诱中文字幕| 久久九九精品一区二区 | 嗯啊不要啊在线 | 曰韩操B| 这里都是精品在线观看| 国产黄a三级三级三级av在线看| 欧美色997| 91男女| 17c嫩草51久久91嫩草| 无码天天操| 中文字幕老熟妇黄色视频| 蜜臀99999| 久久97视频| 日韩免费在线观看不卡| 欧美亚洲日本视频久久久| 欧美另类色图片| 欧美大色交| 久久午夜色播影院免费高清| 先锋色眉乱伦资源| 啊啊啊啊嗯嗯嗯用力好爽| 激情欧美日韩女同久久| 精品国产乱子伦一区二区三区,精品一| av网站国产主播在线| 亚洲精品aa久久伊人| 91美腿丝袜在线观看| 97超碰色中文字幕| 国产午夜精品理论片a大结局| 亚洲成人性爱在线观看| 夜夜高潮夜夜爽| 欧美综合天堂| 免费在线黄片视频| 韩日男人的天堂| 精品丰满熟妇人妻一区| 国产精品点击进入在线影院| www.夜夜操| 久久久久久久综合,国产| 岛国黄片网站| 欧美一区91大爱| 深爱伊人影院| 国产精品极品美女视频| 91九色丨国产丨爆乳| 欧美人妻制服| 国产小u女在线观看| 中 文字幕一区二区三四 五 区日 日 骚 | 隔壁邻居波多野结衣中文字幕 | 翔田千里AⅤHD无码| 伊人97超碰| 欧美一区二区| 强免费黄色网址| 伊人久久蜜月| 国产乱伦性爱区| 天天日日日射| 18禁看网站一区| 夜夜嗨一区二区| 国产精品伦理| 日韩啪啪视频| 大色网久久| 欧美极度丰满熟妇hd| 国产精品午夜福利视频| 曰韩精品视频一区二区| 天天α片| 日韩免费看在线黄色片| 性色高清在线| 国产福利电影| 97 国产一区| 国产精品蜜臀久久久久无码AV| 精品射1999| 亚欧免费观看视频| 国产13区| 国内毛片热久久思思热| 成人综合视频久久| 人人操我人人干| 欧美另类自拍| av天堂天堂av日韩| 亚洲综合情色| 午夜理论片在线观看免费| 热久久无毒不卡| 在线国产探花| 日韩欧美传媒一区国产| 亚洲五月丁香花狠狠干一区二区三区| 欧美熟妇精品黑人巨大91| 五月综合色| 水多多映视AV| 中日韩久久人妻一区二区| 亚洲男人久久综合天堂| 裸体美女久久久| 爱av免费| 南澳成人一级片在线播放| 黑操B| 黄色AV免费| 国产 大胆 对白| 日韩国产成人自拍视频| 91青青在线| 欧美日韩夜夜| 久久精品中文字幕观看| 国产AV天美传媒一区二区三区 | 日本一二三免费久久| 9九九九九视频在线观看| 99久久精品国产系列| 目产99999久久999| 无码国产精品久久久久| 国产精品夜夜| 台湾肥佬网一区二区三区| 少妇3P性爱自拍| 大色网久久| 精品久久99| 中文字幕交换人妻| 美女诱惑久久| 日韩精品9999| 99久久9| 超碰日韩人妻| 亚洲日韩狠狠撸视频| 无码欧美有限公司| 国产性爱乱伦AV| 夜夜嗨视频| 亚洲图片在线| 1区2区3区在线视频| 日韩一性一交一A片俄罗斯| 天堂性色| 熟妇高潮精品一区二区三区下载| 五月丁香啪啪网| 黄色人人| 999精品久久久久久久| 嗯嗯啊啊好大好爽| 夜夜中出国产| 亚洲超碰AV| 91P0RNY大屁股人妻| 久久精品综合| 91草草草| 中文字幕一区 二区三四五 区日 日骚| 精品毛片av一区二区| 伊人骚琪琪亚洲天堂网站| 99热日| 欧美爆操91| 狠狠操狠狠| 日韩精品黄片免费观看| 国产强奸乱伦无码视频| 欧成人在线| 亚洲色图 综合| AV一二区| 亚洲天堂男人在线| WWW黄片COM| 人妻少妇被猛烈进入中| 男女无套 免费网站| 天天干人妻视频| 男人的天堂在线| 操逼内射干逼白丝91| 九色97| 亚洲精品视频在线播放| 18禁的网站在线| 欧美一区二区三区互相| 精品国产Av无码久久久伦古装| 九九九偷拍| 国产99999久久精品| 熟女AV一区| 99xav| 中文久久一区| 亚洲AV资源| 国产女上位好爽在线| 丁香五月激情综合| 影音先锋国产精品| 午夜精品探花| 中国国国产一级特黄毛片| 91深夜夜| 啪啪视频亚洲第一 | 一级黄碟| 青青伊人久久| 操死我了嗯嗯嗯| 亚洲色香| 天美一区在线| 亚洲图片 激情小说| 亚洲91网站| 国产第二页| 欧美青青草视频| 亚洲 欧美 综合 91| 综合网97| 春色综合免费| 亚洲性综合11| 好湿好紧视频| 97伊人| 精品免费一区| 中文字幕在线免费观看2| 成人一二| 26uuu国产亚洲综合| 福利社区午夜一区二区| 在线国产福利网址导航| 岛国艾薇凹凸视频天堂| 免费精品福利在线观看| 天天干天天插| 淫淫总合网|