亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

SpringBoot供應(yīng)鏈系統(tǒng)實(shí)戰(zhàn):從數(shù)據(jù)庫(kù)建模到庫(kù)存扣減

SpringBoot供應(yīng)鏈系統(tǒng)實(shí)戰(zhàn):從數(shù)據(jù)庫(kù)建模到庫(kù)存扣減 接手這個(gè)供應(yīng)鏈管理系統(tǒng)的時(shí)候我心里其實(shí)有點(diǎn)打鼓。供應(yīng)鏈三個(gè)字聽(tīng)起來(lái)就是一張巨大的業(yè)務(wù)網(wǎng)絡(luò)供應(yīng)商、采購(gòu)、庫(kù)存、物流、訂單、結(jié)算任何一個(gè)環(huán)節(jié)都能單獨(dú)拉出來(lái)做成一套專業(yè)軟件。而我要做的是用SpringBoot把這些環(huán)節(jié)全部貫通起來(lái)交付一個(gè)能真實(shí)跑通的單體系統(tǒng)同時(shí)還要補(bǔ)齊完整的源碼、文檔和部署說(shuō)明任何一個(gè)人拿到這套東西都能在兩天內(nèi)跑起來(lái)。這個(gè)項(xiàng)目的核心價(jià)值不在于把某個(gè)單點(diǎn)功能做得多么花哨而在于把整條數(shù)據(jù)鏈路打通。從供應(yīng)商建檔、采購(gòu)申請(qǐng)、訂單審核、到貨入庫(kù)、庫(kù)存變動(dòng)、銷售出庫(kù)、物流履約一直到財(cái)務(wù)對(duì)賬每一筆數(shù)據(jù)都要有跡可循。我選SpringBoot作為底座就是因?yàn)樗銐騽?wù)實(shí)配置簡(jiǎn)化、生態(tài)成熟、社區(qū)活躍可以讓我把精力集中在業(yè)務(wù)邏輯而不是框架細(xì)節(jié)上。適合誰(shuí)參考如果你正在做系統(tǒng)設(shè)計(jì)或者想了解一個(gè)完整的供應(yīng)鏈平臺(tái)如何從零落地又或者只是想看一套標(biāo)準(zhǔn)的SpringBoot項(xiàng)目該怎么分層、怎么寫(xiě)核心業(yè)務(wù)代碼這套東西對(duì)你都很有參考價(jià)值。1. 系統(tǒng)設(shè)計(jì)思路從業(yè)務(wù)痛點(diǎn)倒推技術(shù)選型1.1 供應(yīng)鏈系統(tǒng)到底在管什么很多人一提到供應(yīng)鏈下意識(shí)想到的是物流車、倉(cāng)庫(kù)和掃碼槍這是最直觀的物理畫(huà)面。但從系統(tǒng)的角度看供應(yīng)鏈管理核心管的是三樣?xùn)|西物資的流向、資金的流向、信息的流向。物資流向就是實(shí)物的生命周期從供應(yīng)商發(fā)貨到倉(cāng)庫(kù)收貨、上架、存儲(chǔ)再到銷售出庫(kù)最后送到客戶手里。資金流向則跟著物資走采購(gòu)要給供應(yīng)商付錢客戶要給公司付錢中間還有退貨、折扣、對(duì)賬這些動(dòng)作。信息流向最抽象但也最重要它要讓每一個(gè)角色在任何時(shí)間點(diǎn)都知道“這批貨在哪、狀態(tài)是什么、接下來(lái)該干什么”。我的系統(tǒng)設(shè)計(jì)以信息流為主線把物資流和資金流作為信息流的兩個(gè)落地結(jié)果。你可以理解為數(shù)據(jù)庫(kù)里存的每一條采購(gòu)單、出入庫(kù)單和結(jié)算單都不是一張靜態(tài)的記錄表而是一條動(dòng)態(tài)狀態(tài)鏈條上的節(jié)點(diǎn)。設(shè)計(jì)的第一原則就是任何一條數(shù)據(jù)都必須有明確的狀態(tài)字段任何一次操作都要驅(qū)動(dòng)狀態(tài)的流轉(zhuǎn)而不是直接修改歷史數(shù)據(jù)。1.2 技術(shù)選型SpringBoot為什么是塊壓艙石技術(shù)選型這件事最怕的不是選錯(cuò)而是選了一堆看似高級(jí)、實(shí)際拖累交付進(jìn)度的東西。最初我其實(shí)糾結(jié)過(guò)兩套方案一套是Spring Boot加MyBatis-Plus加MySQL加Redis另一套是Spring Cloud微服務(wù)全套。后來(lái)果斷放棄第二種理由很簡(jiǎn)單這個(gè)系統(tǒng)雖然業(yè)務(wù)鏈路長(zhǎng)但實(shí)際用戶量和數(shù)據(jù)規(guī)模在單體架構(gòu)下完全能扛住。微服務(wù)的注冊(cè)中心、配置中心、網(wǎng)關(guān)、鏈路追蹤一旦引進(jìn)來(lái)成本會(huì)迅速超過(guò)收益尤其對(duì)于一個(gè)需要快速交付、穩(wěn)定運(yùn)行的場(chǎng)景來(lái)說(shuō)完全沒(méi)必要為了“架構(gòu)先進(jìn)”自找麻煩。SpringBoot成為壓艙石的原因一是自動(dòng)裝配機(jī)制讓項(xiàng)目啟動(dòng)成本極低二是它和Spring MVC、MyBatis、Redis這些老搭檔的整合非常順暢三是有大量生產(chǎn)級(jí)實(shí)踐可以參考。更重要的是SpringBoot的約定優(yōu)于配置能顯著降低新成員的接手成本。后來(lái)代碼寫(xiě)多了你會(huì)發(fā)現(xiàn)真正影響系統(tǒng)質(zhì)量的不是框架本身而是你對(duì)業(yè)務(wù)的理解和對(duì)邊界情況的處理SpringBoot能做的就是把這些噪音降到最低讓你專心寫(xiě)業(yè)務(wù)。1.3 從單體到微服務(wù)邊界劃分的思考我最終堅(jiān)持單體的另一個(gè)原因是供應(yīng)鏈系統(tǒng)里的各個(gè)模塊比如采購(gòu)、庫(kù)存、銷售根本做不到完全獨(dú)立的服務(wù)邊界。一次采購(gòu)入庫(kù)操作既要更新采購(gòu)單狀態(tài)又要生成入庫(kù)單還要增加商品庫(kù)存甚至要觸發(fā)應(yīng)付賬款的記錄。如果把采購(gòu)服務(wù)、庫(kù)存服務(wù)、結(jié)算服務(wù)拆成三個(gè)微服務(wù)就需要分布式事務(wù)來(lái)保證一致性引入消息隊(duì)列做最終一致性復(fù)雜度會(huì)瞬間上升一個(gè)量級(jí)。這是一個(gè)很常見(jiàn)的設(shè)計(jì)誤區(qū)認(rèn)為用了微服務(wù)就代表系統(tǒng)先進(jìn)。實(shí)際上面向業(yè)務(wù)復(fù)雜、數(shù)據(jù)強(qiáng)一致要求高的系統(tǒng)單體加上合理的事務(wù)控制是最穩(wěn)的選擇。這個(gè)項(xiàng)目里我把邊界劃分在業(yè)務(wù)模塊上而不是物理服務(wù)上通過(guò)代碼分包、接口隔離、事務(wù)邊界三個(gè)維度來(lái)控制復(fù)雜度效果遠(yuǎn)好于強(qiáng)行做服務(wù)化拆分。2. 核心業(yè)務(wù)模塊設(shè)計(jì)與數(shù)據(jù)庫(kù)建模2.1 供應(yīng)商與采購(gòu)模塊數(shù)據(jù)的源頭整個(gè)系統(tǒng)有兩類源頭數(shù)據(jù)一類是靜態(tài)的基礎(chǔ)檔案一類是動(dòng)態(tài)的業(yè)務(wù)單據(jù)。供應(yīng)商檔案是靜態(tài)數(shù)據(jù)里最關(guān)鍵的部分它不僅僅是記錄一個(gè)公司名稱和聯(lián)系方式更承擔(dān)著后續(xù)所有采購(gòu)、財(cái)務(wù)、評(píng)價(jià)的基礎(chǔ)。我在這張表上設(shè)計(jì)了供應(yīng)商編碼、等級(jí)、默認(rèn)賬期、結(jié)算方式等字段這些字段會(huì)在后續(xù)的采購(gòu)訂單、應(yīng)付賬單中被頻繁引用。供應(yīng)商編碼我建議用字符型而不是自增數(shù)字比如GYS0001這樣外系統(tǒng)對(duì)接的時(shí)候不會(huì)有歧義同時(shí)編碼規(guī)則里可以隱含分類信息。賬期字段非常重要它決定了采購(gòu)訂單生成應(yīng)付記錄時(shí)的預(yù)計(jì)付款日期直接影響到財(cái)務(wù)模塊的資金計(jì)劃。供應(yīng)商等級(jí)則用來(lái)控制采購(gòu)詢價(jià)時(shí)的優(yōu)先順序這些業(yè)務(wù)規(guī)則如果不在基礎(chǔ)數(shù)據(jù)階段做好設(shè)計(jì)后期全靠業(yè)務(wù)代碼判斷會(huì)非常痛苦。采購(gòu)模塊的核心單據(jù)是采購(gòu)訂單它上面關(guān)聯(lián)供應(yīng)商、采購(gòu)員、期望到貨日期下面掛采購(gòu)明細(xì)。我在這塊特別強(qiáng)調(diào)了一個(gè)設(shè)計(jì)細(xì)節(jié)采購(gòu)訂單和采購(gòu)明細(xì)分表存儲(chǔ)而不是把多條商品塞在一行記錄里。原因很簡(jiǎn)單一次采購(gòu)?fù)鄠€(gè)品類每個(gè)品類的數(shù)量、單價(jià)、稅率可能各不相同如果主從不分后續(xù)的對(duì)賬、收貨、退貨都會(huì)變得難以追蹤。2.2 庫(kù)存、銷售與履約一條鏈路三個(gè)狀態(tài)機(jī)供應(yīng)鏈系統(tǒng)的樂(lè)趣在于業(yè)務(wù)狀態(tài)的變化。采購(gòu)單有狀態(tài)草稿、待審、已審、部分到貨、已完成、已關(guān)閉。入庫(kù)單有狀態(tài)待收、已收、已上架。銷售訂單同樣有狀態(tài)待支付、已支付、待發(fā)貨、部分發(fā)貨、已發(fā)貨、已完成、已取消。這些狀態(tài)不是隨意定義的每一條都對(duì)應(yīng)一個(gè)業(yè)務(wù)階段每一條都規(guī)定了當(dāng)前階段能夠執(zhí)行哪些操作。舉一個(gè)典型的跨模塊流程銷售部門創(chuàng)建銷售訂單系統(tǒng)檢查庫(kù)存可用量如果不足自動(dòng)生成采購(gòu)建議單。采購(gòu)部門拿到建議單后手動(dòng)創(chuàng)建采購(gòu)訂單供應(yīng)商發(fā)貨后倉(cāng)庫(kù)掃碼收貨生成入庫(kù)單庫(kù)存量增加。這時(shí)候銷售訂單再次被激活安排發(fā)貨生成出庫(kù)單和物流記錄。整個(gè)過(guò)程里庫(kù)存變化始終是核心錨點(diǎn)每一次入庫(kù)、出庫(kù)操作都會(huì)觸發(fā)庫(kù)存表的更新同時(shí)寫(xiě)入庫(kù)存流水表確保每一件商品的每一次變動(dòng)都有據(jù)可查。用狀態(tài)機(jī)思路來(lái)設(shè)計(jì)業(yè)務(wù)流最大的好處是代碼邏輯清晰每個(gè)狀態(tài)節(jié)點(diǎn)就是一組可執(zhí)行動(dòng)作的集合不會(huì)出現(xiàn)業(yè)務(wù)操作出現(xiàn)二義性。比如一個(gè)已關(guān)閉的采購(gòu)單就不可能再執(zhí)行到貨操作這是狀態(tài)機(jī)天然給的約束而不是靠程序員寫(xiě)if判斷硬撐。2.3 訂單主表和明細(xì)表一個(gè)容易忽視卻致命的建模很多初學(xué)者在設(shè)計(jì)銷售訂單表的時(shí)候會(huì)圖省事把商品名稱、數(shù)量、單價(jià)直接塞進(jìn)訂單表里這是后續(xù)所有麻煩的根源。正確的做法一定是訂單主表和訂單明細(xì)表分離。訂單主表存訂單編號(hào)、客戶信息、訂單總金額、支付狀態(tài)訂單明細(xì)表存具體商品、數(shù)量、成交單價(jià)、優(yōu)惠金額。兩張表通過(guò)訂單編號(hào)關(guān)聯(lián)。為什么這么做最直接的原因是業(yè)務(wù)數(shù)據(jù)的不可變性。訂單一旦確認(rèn)客戶買的商品名、單價(jià)、數(shù)量就成了交易憑證哪怕商品以后改了名、調(diào)了價(jià)歷史訂單也必須保留交易當(dāng)時(shí)的信息。如果把訂單內(nèi)容做成關(guān)聯(lián)實(shí)時(shí)商品表商品一改歷史訂單跟著變財(cái)務(wù)對(duì)賬就會(huì)對(duì)不上。我在這套系統(tǒng)里把商品名稱、規(guī)格、成交單價(jià)都冗余存儲(chǔ)在訂單明細(xì)表里而不是查詢時(shí)臨時(shí)關(guān)聯(lián)商品表。數(shù)據(jù)冗余看著不夠高級(jí)但在交易類系統(tǒng)里反而是最穩(wěn)妥的做法。2.4 數(shù)據(jù)庫(kù)建模的關(guān)鍵字段解析列表這張表實(shí)際來(lái)源于我做這套系統(tǒng)時(shí)最常被問(wèn)到的問(wèn)題供應(yīng)商表和客戶表能不能合并庫(kù)存表要不要冗余商品的分類名稱我的回答是基礎(chǔ)實(shí)體表盡量純凈業(yè)務(wù)單據(jù)表按需冗余。允許適度冗余但冗余字段必須有明確的業(yè)務(wù)消費(fèi)方否則就是臟數(shù)據(jù)。我舉幾個(gè)實(shí)際建表時(shí)的關(guān)鍵點(diǎn)。第一所有業(yè)務(wù)表都必須包含create_time、update_time、deleted字段MyBatis-Plus的邏輯刪除功能依賴它這也是后續(xù)恢復(fù)誤刪數(shù)據(jù)的一條退路。第二所有金額字段用decimal(12,2)而不是double學(xué)過(guò)浮點(diǎn)數(shù)存儲(chǔ)的人都明白為什么。第三單據(jù)編號(hào)字段設(shè)置唯一索引同時(shí)預(yù)留商戶維度這樣未來(lái)做多租戶改造時(shí)不會(huì)因?yàn)榫幪?hào)沖突推倒重來(lái)。第四每個(gè)表盡量有一個(gè)業(yè)務(wù)主鍵如訂單編號(hào)、入庫(kù)單號(hào)和數(shù)據(jù)庫(kù)自增主鍵分離這樣對(duì)接外部系統(tǒng)、做數(shù)據(jù)遷移、打印單據(jù)時(shí)都非常方便。字段設(shè)計(jì)要點(diǎn)說(shuō)明常見(jiàn)誤區(qū)金額字段decimal(12,2)避免浮點(diǎn)誤差用double或float存儲(chǔ)金額業(yè)務(wù)主鍵單據(jù)編號(hào)字符串唯一與自增主鍵分離直接用自增id對(duì)客展示冗余字段單據(jù)表冗余商品名、單價(jià)等快照信息全部關(guān)聯(lián)實(shí)時(shí)查詢時(shí)間字段統(tǒng)一datetime加更新時(shí)間自動(dòng)填充不同庫(kù)混用varchar存時(shí)間邏輯刪除統(tǒng)一deleted標(biāo)記保留數(shù)據(jù)痕跡物理刪除無(wú)法追溯3. 后端工程結(jié)構(gòu)與核心代碼實(shí)踐3.1 工程目錄與分層約定優(yōu)于配置SpringBoot項(xiàng)目最忌諱的就是把代碼寫(xiě)成一鍋粥。我建立一個(gè)清晰的包結(jié)構(gòu)按業(yè)務(wù)模塊劃分而不是按技術(shù)層劃分。也就是說(shuō)不是先建controller包、service包、mapper包這樣平鋪而是先有采購(gòu)、庫(kù)存、銷售、供應(yīng)商這些業(yè)務(wù)包的頂層每個(gè)業(yè)務(wù)包下面再放controller、service、mapper、entity等子包。這樣做的好處是當(dāng)后端代碼量達(dá)到幾十個(gè)文件時(shí)你能快速定位一個(gè)功能所在的位置而不是在茫茫controller大海里搜索。另外模塊化包結(jié)構(gòu)天然給了代碼邊界采購(gòu)包的service不會(huì)直接調(diào)用銷售包mapper如果確實(shí)需要跨模塊數(shù)據(jù)就通過(guò)各自的service接口交互。這種約束能杜絕大量為了省事而直接穿透dao層的行為。com.supplychain ├── common # 通用工具、常量、異常處理 ├── config # 配置類redis、mybatis、安全攔截 ├── security # 登錄認(rèn)證、權(quán)限校驗(yàn) ├── modules │ ├── supplier # 供應(yīng)商模塊 │ ├── purchase # 采購(gòu)模塊 │ ├── inventory # 庫(kù)存模塊 │ ├── sales # 銷售模塊 │ ├── order # 訂單模塊 │ ├── logistics # 物流履約模塊 │ └── finance # 財(cái)務(wù)結(jié)算模塊 └── framework # 基礎(chǔ)框架、切面日志3.2 從采購(gòu)審核到入庫(kù)Service層的核心代碼這套系統(tǒng)里最有代表性的一個(gè)場(chǎng)景是從采購(gòu)審核通過(guò)到入庫(kù)完成。我直接放一段核心代碼來(lái)說(shuō)明設(shè)計(jì)思路。采購(gòu)入庫(kù)這個(gè)方法涉及三步更新采購(gòu)單狀態(tài)、生成入庫(kù)單、增加庫(kù)存并寫(xiě)庫(kù)存流水。這三個(gè)操作必須在一個(gè)事務(wù)里否則一旦中途失敗庫(kù)存會(huì)增加但采購(gòu)單還沒(méi)更新數(shù)據(jù)就錯(cuò)亂了。Transactional(rollbackFor Exception.class) public void completePurchaseInbound(Long purchaseOrderId, ListInboundItem inboundItems) { // 1. 校驗(yàn)采購(gòu)單當(dāng)前狀態(tài)必須是待入庫(kù) PurchaseOrder order purchaseOrderMapper.selectById(purchaseOrderId); if (order null || !OrderStatus.PENDING_INBOUND.equals(order.getStatus())) { throw new BusinessException(采購(gòu)單狀態(tài)異常無(wú)法入庫(kù)); } // 2. 生成入庫(kù)單主表 InboundOrder inboundOrder new InboundOrder(); inboundOrder.setOrderNo(generateOrderNo(IN)); inboundOrder.setPurchaseOrderId(order.getId()); inboundOrder.setSupplierId(order.getSupplierId()); inboundOrder.setStatus(InboundStatus.CONFIRMED); inboundOrderMapper.insert(inboundOrder); // 3. 逐條校驗(yàn)并更新庫(kù)存 for (InboundItem item : inboundItems) { InventoryStock stock inventoryStockMapper.selectBySkuIdForUpdate(item.getSkuId()); if (stock null) { throw new BusinessException(商品SKU不存在: item.getSkuId()); } stock.setAvailableQty(stock.getAvailableQty() item.getInboundQty()); stock.setTotalQty(stock.getTotalQty() item.getInboundQty()); inventoryStockMapper.updateById(stock); // 寫(xiě)庫(kù)存流水 InventoryFlow flow new InventoryFlow(); flow.setSkuId(item.getSkuId()); flow.setChangeType(INBOUND); flow.setChangeQty(item.getInboundQty()); flow.setRefOrderNo(inboundOrder.getOrderNo()); inventoryFlowMapper.insert(flow); } // 4. 更新采購(gòu)單為已完成 order.setStatus(OrderStatus.COMPLETED); purchaseOrderMapper.updateById(order); }這里有幾個(gè)點(diǎn)需要重點(diǎn)說(shuō)明。第一selectBySkuIdForUpdate里的for update是行級(jí)鎖為了處理并發(fā)情況下多個(gè)倉(cāng)庫(kù)管理員同時(shí)入庫(kù)同一商品導(dǎo)致的數(shù)量不準(zhǔn)。第二先插入入庫(kù)單還是先更新庫(kù)存我選擇先插入入庫(kù)單這樣一旦后續(xù)失敗至少能通過(guò)入庫(kù)單追蹤操作痕跡。第三整個(gè)方法必須用Transactional否則任何一個(gè)異常退出數(shù)據(jù)庫(kù)的數(shù)據(jù)都會(huì)殘缺。3.3 并發(fā)場(chǎng)景下的庫(kù)存扣減Redis 數(shù)據(jù)庫(kù)鎖雙保險(xiǎn)庫(kù)存扣減是供應(yīng)鏈系統(tǒng)最容易出事的地方。用戶下單后扣庫(kù)存如果并發(fā)量上來(lái)直接用數(shù)據(jù)庫(kù)更新很容易造成超賣。我在系統(tǒng)里做了雙層防線。第一層是用Redis做庫(kù)存預(yù)熱和秒殺級(jí)別的扣減。庫(kù)存數(shù)據(jù)提前加載到Redis用戶下單時(shí)先扣Redis庫(kù)存扣成功后再異步落庫(kù)。但考慮到這套系統(tǒng)更多面對(duì)的是一般采購(gòu)和銷售場(chǎng)景峰值并發(fā)沒(méi)有那么夸張所以更關(guān)鍵的第二層是請(qǐng)數(shù)據(jù)庫(kù)的行鎖來(lái)兜底。核心邏輯很簡(jiǎn)單Transactional public boolean deductStock(Long skuId, Integer qty) { // 這里利用數(shù)據(jù)庫(kù)的行級(jí)鎖避免并發(fā)讀到相同的庫(kù)存值 InventoryStock stock inventoryStockMapper.selectBySkuIdForUpdate(skuId); if (stock.getAvailableQty() qty) { throw new BusinessException(庫(kù)存不足); } stock.setAvailableQty(stock.getAvailableQty() - qty); inventoryStockMapper.updateById(stock); // 記錄流水略 return true; }這個(gè)方案的邏輯是多個(gè)請(qǐng)求同時(shí)進(jìn)來(lái)時(shí)第一個(gè)請(qǐng)求拿到行鎖扣減庫(kù)存后提交事務(wù)第二個(gè)請(qǐng)求才拿到鎖此時(shí)讀到的是扣減后的值。如果庫(kù)存只剩10件兩個(gè)請(qǐng)求各要8件第二個(gè)請(qǐng)求就會(huì)讀到庫(kù)存不足從而拒絕下單。這套機(jī)制在多數(shù)內(nèi)部管理系統(tǒng)里已經(jīng)足夠。如果未來(lái)訪問(wèn)量漲到需要秒殺級(jí)別再引入Redis預(yù)扣減和異步對(duì)賬。但一開(kāi)始就上這套復(fù)雜度反而容易引入緩存和數(shù)據(jù)庫(kù)一致性的新問(wèn)題。項(xiàng)目里有完善的注釋和文檔接手的人可以在理解現(xiàn)狀之后再?zèng)Q定要不要升級(jí)。4. 常見(jiàn)問(wèn)題與部署運(yùn)維實(shí)錄4.1 高頻問(wèn)題速查表以下是整個(gè)開(kāi)發(fā)過(guò)程中我以及團(tuán)隊(duì)成員最容易踩的坑我按問(wèn)題現(xiàn)象、根本原因、解決方案三個(gè)維度整理了一份速查表。這個(gè)表基本涵蓋了一個(gè)SpringBoot供應(yīng)鏈系統(tǒng)從開(kāi)發(fā)到上線的高頻問(wèn)題。問(wèn)題現(xiàn)象根本原因解決方案列表頁(yè)數(shù)據(jù)加載非常慢N1查詢導(dǎo)致大量SQL使用MyBatis-Plus批量查詢關(guān)聯(lián)數(shù)據(jù)循環(huán)外提庫(kù)存扣成負(fù)數(shù)沒(méi)有使用行級(jí)鎖或樂(lè)觀鎖select...for update或版本號(hào)控制單據(jù)編號(hào)重復(fù)多線程下用時(shí)間戳生成編號(hào)用Redis incr生成自增序列修改供應(yīng)商后歷史訂單單價(jià)變了商品價(jià)格字段直接關(guān)聯(lián)實(shí)時(shí)數(shù)據(jù)訂單明細(xì)冗余商品名、單價(jià)快照部署后訪問(wèn)空白或404前端路由history模式未配置后端配置接口轉(zhuǎn)發(fā)靜態(tài)資源一次業(yè)務(wù)操作部分成功部分失敗缺少事務(wù)控制Service層加Transactional事務(wù)注解不同業(yè)務(wù)包之間的數(shù)據(jù)依賴混亂跨模塊直接操作mapper統(tǒng)一走各自service接口4.2 庫(kù)存對(duì)不上賬一次印象深刻的排查實(shí)錄項(xiàng)目測(cè)試階段我遇到過(guò)一個(gè)非常典型的問(wèn)題系統(tǒng)庫(kù)存數(shù)據(jù)準(zhǔn)時(shí)對(duì)但實(shí)物庫(kù)存總是對(duì)不上。后來(lái)發(fā)現(xiàn)是部分入庫(kù)操作在異常場(chǎng)景下沒(méi)有寫(xiě)庫(kù)存流水。原因在于有些入庫(kù)的歷史方法直接更新庫(kù)存表沒(méi)有插入流水表導(dǎo)致對(duì)賬時(shí)無(wú)法追蹤是誰(shuí)動(dòng)了庫(kù)存。排查完這個(gè)坑我給系統(tǒng)的所有庫(kù)存變更操作定了一個(gè)鐵規(guī)任何一條變更都必須同時(shí)記錄流水哪怕是一次庫(kù)存盤(pán)點(diǎn)調(diào)整。庫(kù)存流水表本質(zhì)上是一本只追加、不修改的賬本每次庫(kù)存變化上游單據(jù)號(hào)、變更類型、變更前后數(shù)量、操作人都要記錄完整。后續(xù)做審計(jì)、對(duì)賬、異常排查全依賴這本賬。4.3 并發(fā)扣減導(dǎo)致超賣為什么不能用先查后更這個(gè)坑是并發(fā)場(chǎng)景下的經(jīng)典問(wèn)題。在做銷售訂單創(chuàng)建的時(shí)候最初我用的是先查庫(kù)存是否足夠再用update語(yǔ)句扣減。單線程測(cè)試時(shí)一切正常壓測(cè)時(shí)發(fā)現(xiàn)庫(kù)存從100瞬間變成了負(fù)數(shù)。原因是兩個(gè)請(qǐng)求同時(shí)讀到庫(kù)存100都認(rèn)為足夠然后依次扣減最終庫(kù)存變成98但實(shí)際可能已經(jīng)賣出去了102件。解決方式就是我上文代碼里的selectBySkuIdForUpdate讓并發(fā)請(qǐng)求排隊(duì)讀取。這里要強(qiáng)調(diào)的是不僅僅要用行鎖還要把讀和扣減放在同一個(gè)事務(wù)里否則鎖釋放在事務(wù)提交之前依然會(huì)有問(wèn)題。4.4 部署階段的兩個(gè)小坑部署這套系統(tǒng)時(shí)最容易踩的坑并不在代碼里而在環(huán)境上。第一個(gè)是JDK版本問(wèn)題項(xiàng)目基于JDK8還是JDK11開(kāi)發(fā)部署環(huán)境的版本必須匹配否則會(huì)出現(xiàn)莫名其妙的依賴報(bào)錯(cuò)。第二個(gè)是MySQL連接配置里的時(shí)區(qū)問(wèn)題serverTimezoneAsia/Shanghai如果沒(méi)有設(shè)置數(shù)據(jù)庫(kù)的時(shí)間會(huì)和本地時(shí)間相差8小時(shí)所有的時(shí)間記錄看上去就像穿越了一樣。我傾向于把部署文檔寫(xiě)得盡量細(xì)因?yàn)橄到y(tǒng)本身的價(jià)值最終要靠能否順利跑起來(lái)來(lái)體現(xiàn)。從環(huán)境準(zhǔn)備、數(shù)據(jù)庫(kù)初始化、配置修改到打包、啟動(dòng)、訪問(wèn)每一步都附上驗(yàn)證方式。如果啟動(dòng)失敗日志中看什么關(guān)鍵詞這個(gè)排查指引非常關(guān)鍵。比如端口被占用、Redis連接失敗、MySQL字符集不匹配這些都是常見(jiàn)的初裝問(wèn)題文檔里直接寫(xiě)明白排查路徑比臨時(shí)翻博客高效得多。最后分享一個(gè)我個(gè)人的實(shí)操經(jīng)驗(yàn)這個(gè)項(xiàng)目做下來(lái)我最深刻的體會(huì)是一套系統(tǒng)最容易出問(wèn)題的往往不是技術(shù)難點(diǎn)而是業(yè)務(wù)狀態(tài)和數(shù)據(jù)一致性的管理。代碼本身是誠(chéng)實(shí)的你花在設(shè)計(jì)上的心思最后都會(huì)用穩(wěn)定性和可維護(hù)性回報(bào)回來(lái)。我強(qiáng)烈建議每一個(gè)做供應(yīng)鏈系統(tǒng)的人先在草稿紙上畫(huà)出完整的業(yè)務(wù)狀態(tài)流轉(zhuǎn)圖再開(kāi)始建表寫(xiě)代碼。狀態(tài)流轉(zhuǎn)圖是所有功能的骨骼而SpringBoot、MyBatis這些技術(shù)只是填充其間的血肉。最后再分享一個(gè)小技巧運(yùn)維階段給所有核心業(yè)務(wù)表都加一個(gè)操作日志表用切面記錄增刪改前后的數(shù)據(jù)快照。供應(yīng)鏈系統(tǒng)的每一次變更都需要有機(jī)會(huì)回溯、追責(zé)、審計(jì)這一點(diǎn)在正式環(huán)境里價(jià)值極高。我的這套系統(tǒng)已經(jīng)在多個(gè)模擬業(yè)務(wù)場(chǎng)景里跑得很穩(wěn)如果你在設(shè)計(jì)類似項(xiàng)目時(shí)遇到什么困擾按照我上面的思路重構(gòu)一遍你會(huì)少踩很多坑。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久综合资源一区二区| 超碰碰激情97+久| 97免费在线观看| 欧美性暴力猛交XXXX | 99色骚| 婷婷精品| 国产粉嫩出水在线播放| 欧美性生活男人的天堂| 精品少妇一区二区三区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 最新亚洲黄色免费电影| 天天操福利视频综合网站| 日韩一999精品| 五月天婷婷综合网| 啊…啊…操我用力操我| 国产成人精品日本亚洲语言| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 粉嫩久久久极品| 蜜桃臀 后入 一区 二区 三区 在线| 国产剧情AV不卡在线观看| 亚洲AV成人精品网站在AV| 欧美第五页| 热热热热日日漂亮永久永久国产日| 男人的天堂网免费| 能看的AV| 亚洲天堂,男人| 91在线精品| 午夜视频黄| 亚洲一级黄色毛片| 亚洲人妻久久| 欧美性xxxxx狂欢| 玖玖综合网| 中文字幕欧美精品亚洲日韩蜜臀| 台湾佬大香蕉| 亚洲欧美另类激情小说| 亚洲伊人成综合成人网| 84YTCOM性无码| 欧美碰碰综合色| 亚洲天堂一二| 欧美夜夜草视频| 青青青国产手线观看视频2| av网站在线看| 久草国产在线视频| 综合色图亚洲欧美| 91网站18+| 国产蜜臀在线| 欧美不卡五十路| 在线观看亚洲成人精品| 色色色色日本| 91碰碰碰| 97免费视频网| 欧美色91| 加勒比伊人| 波多野42部激情无码喷潮| A级国产欧美激情在线| 乱抡国产91| 琪琪精品免费一区二区三区| 亚洲天堂,男人| 东北黄色电影| 久久久久9999精品九九九| 很很很很操| 操老熟女AV| 天堂成人网| 熟妇xxxxx性春色| 国产免a费看黄片在线| 亚洲国产精品无码AV在线| 国产伦精品一区二区三区在线观| 亚码激情| 九一性生活免费视频| 91日产桃蜜| 黄片视频观看| 欧美视频边做饭边橾| 夜夜一区二区| 亚州色图片在线色| 九九九九热| 国岛片视频| 嗯啊不要啊在线 | 嗯啊抽插大香蕉网页| 性一交一乱一交A片久久四色| 99熟女| 超碰色中文| 久久久精品一区二区| 日日干日日摸| 婷婷五月在线视频| 日本黄色XXX| 大香蕉综合网| 欧美劲爆视频一区二区| 蜜桃久久久久久久| 久久97精品久久久久久久不卡| 亚洲国产精品成人综合| 五月丁香网站| 久啪视频| 日韩乱中文| 毛片17S| 欧美色道啊| 翔田千里爆乳巨臀无码| 日韩影片中文字幕一区二区三区| 大香蕉一人| 高清无码一区二区三区| 老熟女91av| 国产精品一区在线播放| 99操逼| 中文字幕超碰CAO| 日韩亚洲欧美中文字幕| 一本道综合色图| 91成人久久| 成人a级高清视频在线观看| 中文字幕五区| 97国产精品一区二区传媒公司| 不卡一区二区日本视频| 伊人丝袜美腿高跟在线观看高清 | 亚州操逼网| av一区二区三区四区五区久草臀| 少妇一级无码精品| 国产无遮挡| 日韩三级伊人| 四虎免费视频| 欧美网站免费| 欧美日韩国产精品久久色婷婷| 天天干天天燥| 狠狠躁天天躁日日躁| 人妻无一区二区三区| 日本一区二区三区精品| 精品成人动漫一区二区| 日韩视频小说在线观看| 2018天天干在线视频| 亚洲色图 图片| 成人免费不卡在线视频| 蜜臀一二三区| 99色综合| 亚洲乱色熟女一区| 欧美成人综合| 日韩av乱伦| 久久九九97| 无码免费一区二区三区啪啪| 亚洲av青草久久一区二区| 97超级久久强资源| 国产性爱在线视频一区二区| 九九九九九精品十六| 最新中文字幕精品在线| 97爱亚洲| 丝袜无码a片| 操高情无码| 性色高清..……| 国产亚州日韩欧美看片| 91少妇| 麻豆天美传媒在线视频天堂| 日韩不卡a级视频专区| 久久一区二区高清免费| 中文字幕视频一区视频二区| 亚洲制服欧美另类内射| 欧美情色亚洲| 黄总AV色图| 亚洲人妻中文高清| 亚洲 在线| 男人干美女| 国产精品视频白浆免费| 老子午夜伦不卡影院| 亚洲精品 欧美精品| 人人摸人人添人人操 | 欧美色偷偷| 91美乳| 一区二区三区精品久久| 婷婷丁香激情| 懂色av中文字幕一区二区三区天美| 99久久9| 内射老妇BBWX0C0CK| 久久9999| 亚洲自拍一区夜夜操| 黄色网址久久精品欧美喷水| A V视频日本| 综合夜夜| 天天射夜夜骑| 色九九久九九| 日韩欧美女求操每天更新| 欧美色天堂网在线视频| 天天摸天天插天天日| 在线观看精品国产免费| 一级性爱视频免费在线| 日日夜夜免费| 神马麻豆福利院| 无码人妻毛片丰满熟妇精品区 | 女性喷水高潮在线观看| 国语精品对白| 欧美综合 站| 亚洲国产精品乱码在线观看| 91狼人| 日本色色视频网站| 亚洲av噜噜噜噜噜噜| 激情在线青青操| 精品二区三四区五电影 | 免费超碰97久久| 国产美女激情| 综合大香蕉美。| 超碰538| 亚洲狼狼干综合1| 99热超碰| 久久久工口| 五月天婷婷成人网| 国产视频一区二区在线| 人妻久久久久久久久久久久久久久| 另类 日韩 熟女| 不卡一区二区日本视频| 天天操天天干一区二区 | 91色情黑丝搞鸡在线观看一区二区三区三州| 制度丝袜99| 亚洲AV秘无码一区..| 黄片免费日韩| 黄色成人网久久久久久| 欧美Ⅴ性爱| av网站免费看| 欧美日韩午夜精品一区二区三区| 国产成人亚洲精品无码最新在线| 澳门黄片一香蕉视频| av爱爱爱| 亚洲国产成人精品无码专区| 风流老熟女一区二区三区l| 岛国色情视频在线观看| 多乙久久久久久| 嫖老熟女A片一二三区| 国产精品久久久久中文字幕| 欧美人妻一区| 亚洲第一页色| 夜夜高潮夜夜爽| 96AV久久久| 伊人玖玖网| 欧美极品少妇| 欧美日韩久久精品爱爱| 日本一区二区三区午夜观看| 成人 日本A片无码8888| 五月天婷婷基地| 天天看片天天爽| 天天日日本| 97超碰免费生活| 少妇三p| 色欲av一区二区三区蜜芽| 香蕉久久AⅤ...| 人人插人人摸人人| 天天看综合网| 校园春色家庭伦理欧美激情| 欧中美三级一区二区三区| 天天综合网91| 成人亚欧免费视频| 中文字幕黑人大片| 欧美97se| 免费一级特黄特色大片在线观看看| 亚洲成A∨人影院在线欢看| 超碰免费人人| 亚洲人精品久久久| 中字幕人妻一区二区三区| 精品国产一级久久| 97色色色综合网站| 亚洲激情片| 亚洲国产麻豆一区二区三区| 青草青青久久久久久国产| 色大香蕉97N| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 韩国一级做A片免费的| 天天操天天射青青草| 91 亚洲情侣偷拍 久久| 超碰97人妻在线| 天天操天天干一区二区 | 天天舔天天| 男人天堂免费| 日韩av免费一级电影| 色婷五月| 啊啊啊啊好疼视频| 欧美日韩性爱电影在线| 日本不卡三级网在线播放| AV男人天堂网| 人人操人人大香蕉| 中文字幕十五区| 日韩无限资源| 亚洲情色电影网| 99精品无码| 99re公开精品免费视频| 激情露脸爱| 99re9| 999狠狠综合| 97伊人| 999岛国大片| 91欧美性| 激情综合二| 青青欧洲黑| 色五天伊人| 综合干干干av久久久综合网| 亚洲第一页第二页激情| 欧美日韩国产中文超碰| 成人怡红院| 欧美日韩99精品麻豆传媒| 一本大道青青| 丁香五月激情啪啪| 熟女91网站| 婷婷色婷婷| 欧美姓爱综合网| www狠狠| 俺也射| 九九性爱网| 色约约一区=区三区| 日本三级日本三级99| 色欧美色交综合| 日韩女模中文造逼| 久夜视频| 香一区二区三区| 亚洲中文字幕在线视频一区二区| 91 国产丝袜在线放观看| 日韩成人综合网| 骚妻少妇精品性色无码四色A V| 国产精品探花视频| 青青草原香蕉日本Ap| 亚洲成人综合在线| 久久精品熟女亚洲AV麻豆软件| 蜜臀久久99精品久久综合| 97超碰色| 国产精品乱码久久久、久久| 日本三级韩国三级99| 偷拍综合网| 欧亚成人在线视频| 日本三级日本三级99| 99re这里只有| 久久m| 91黑丝露脚| 欧美福利视频啊啊啊啊| 九九九九一级| 九色 人妻 大香蕉| 中文字幕国产| 91 综合网| 性生活久久久久久久久久| 国产91精品福利在线| 欧美在线大香999| 亚洲情色五月天 | 久热99999| 亚洲情色91| 黄视频免费| 亚洲色棕合| 国产白领连续中出在线观看| 新婚人妻扶着粗大强行坐下| 亚洲熟女av中文字幕| 极品少妇99| 色999亚洲人成色| 综合伊人网12色| 久久9999 | 人妻少妇久久久| 色色网91| 午夜精品久久一区二区| 日韩综合第八区国产精品| 91色艳| 黄色小视频日本txt| 97爱综合| 欧美性夜| 操死我了啊啊啊| 亚洲美欧999| 婷色五月天| 亚洲一级性爱视频免费看| 天堂男人网| 少妇高潮喷水无套久久久久久| 久久99国产综合精品女同| 亚欧韩av| 大香蕉黄色一区| 男人高清无码一区二区| a男人的天堂久久一级A毛片| 亚洲男人天堂2017| 国产黑白丝在线| 我爱搞逼综合网| 亚洲色欲一区二区三区| 伊人久久国产免费观看视频| 男人亚洲91首页在线| 日韩性爱电影一区| 强奸乱伦αv片| 艹精品| 在线综合 亚洲 欧美中文字幕| 91综合网站| 久久岛国| 污色区网站| 九九九九精| 男人的天堂免费| 亚洲男人天堂2017| 欧美日韩在线小说 | 精品78| 欧美情色亚洲| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 婷婷伊人綜合中文字幕小说| 激情综合婷婷| 超碰99在线观看| 91Chinese在线| 精品国产乱码久久久久久口爆网站| 久草视频观看视频在线| 立川理惠无码一区二区| 五月丁香六月婷| 日本福利二区视频| 日本一本一区二区三区四区五区欧美日韩中文字幕 | A一区片| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 中文精品少妇天堂| 国产蜜臀精品一区二区尤物| 欧美色综合网| 国产无码久久高清| 性开放中文AV高清无码免费看| 免费一级a毛片久久久久久鸭绿欲 国产精品亚洲天堂网址 | 中文字幕一区二区三区高清| 92午夜免费福利视频| 国内精品伊人久久久久影院会| 欧美成人一区二区三区在线播放| 成人午夜无码视频| 美国美女AV在线| 内射黑人| 曰本道人妻久久久在线不卡色视频| 伊人在线大香蕉视频久久| 亚洲精品蜜桃久久久| 夜夜爽夜夜高潮夜夜爽| 久久性生大片免费观看性| 岛国A V在线免费看| 黄色区免费观看中文字幕| 欧美刺激色黄片免费看| 亚洲欧美九九九| 亚洲综合一| 91n处女在线观看| 日本视频在线中文字幕| 乱伦av.com| 五月天激情网站| 九九热超碰97亚洲最新香蕉| 欧美日韩香蕉| 国产亚洲 中文欧美久久| 欧美在线啊啊啊| 亚洲另类色综合网站| 凹凸精品熟女在线观看| 国产 亚洲 丝袜 制服| 久久人妻精品| 亚洲影视第一页| 色欲天天综合久久久无码网中文| 午夜无码精品免费看性色| 香蕉在线一区二区三区| 999熟女精品| 51国产午夜精品视频| 蜜乳AV一区二区三区四| 超碰97资源大奶| 懂色AV网| 日本肉体xxxx裸交| 精品人妻一区二区乱码一区二区| 日韩97P| 在线精品福利免费播放| 久久综合中文国产| 久久久四区| 在线国产一区二区av| 吉田爱美AV在线| 欲香欲色综合天天伊人| 亚洲成人性爱在线观看| 91国精产品| 自拍偷拍亚洲熟女妇人精品| 日韩 人妻 精品| 人妻天天爽夜夜爽2| 久久性爱精品一区| 熟妇熟女一区二三区| 97碰碰色| 婷色五月| 怡红院成人视频| 5278欧美一区二区三区| 亚洲 中文 欧美 日韩 在线| 国产亚洲中文不卡二区| 欧美亚洲激情一二三| 国产丝袜欧美在线视频| 91天天| 99热久| 清纯唯美激情| 国内91熟女人妻丝袜天天精品视频在线| 97操综合| 啪啪91| 婷婷10月天青娱乐| 色婷婷av在线观看| 国产熟女无套内射| 嗯啊不要啊在线| 97在线视频网站| 亚洲一区深夜| 很很操在线| 欧美美女在线高潮999| 1769成人国产精品视频| 午夜呻吟欧美| av天堂精品久久| 91处女在线视频| 国产粉嫩出水在线播放| 日本黄色精品| 欧美色偷拍| 欧美精品久久96人妻无码| 动漫片子网站3黄| 国内毛片无遮挡国产| 91少妇香蕉久久精品| 亚洲精品天堂久久A∨51成人漫 | 狠狠色婷婷7777久| 试看日韩黄片| 试看60秒| 在线不卡视频| 在线观看亚洲成人精品| 嗯嗯啊啊好大好爽| 99精品网| 亚洲成人精品在线一区| 日韩欧美资源| 67914亚洲精品| 日韩激情毛片一级久久久| 内射卯月麻衣| 人妻啊啊人妻啊| 啪啪性爱免费视频| 久久精品人妻一区二区三区| 很很干很很操| 久久精品国产99精品亚洲蜜...| 日本黄色天堂| 91国产丝袜足交精品视频| 99热在线不卡| 色狠狠色| 人妻一区二区三区视频| 黄页网站成人免费| 国产五码丝袜屁眼| 色婷婷六月| 久久男人精品| 91国模| 久久久久国产| 91九色丨国产丨爆乳| 成人性爱全视频观看| 97亚洲精品| 另类专区加勒比| 69AV女优男人的天堂| 伊人久久大香大香线蕉中文| 桃花色综合影院| 欧美综合色图网| 精品人妻一区二区三区视频| 日韩另类色图| 精品国产肉丝袜在线拍国语| AV天堂国产| …亚洲黄色厕厕女女在线播…| 亚洲欧美日韩国产丝袜自拍中文| 91蜜臀在线久久久久| 国产亚洲禁久一区二区| 99亚洲国产精品色一区二区三区| 亚洲天堂加勒比| 男女性扦B| 三级网站超变态精品| 久久久一级| 竹菊影视国产一区二区| 淫荡少妇免费| 麻花豆传媒剧国产MV出差| 蜜臀久久99精品久久久电影| 香蕉99秘 一区精品蜜桃臀| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 北条麻妃性愛视频| 色女综合| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 夜夜夜爽www精品视频| 伊人伊人LD| 91亚州欧美| 一线黄色免费性爱片| 日韩情色视频| 亚洲乱色熟女一区| 少妇蹲下买菜露大唇0| www.91欧美| 欧美A√综合网| 日韩传媒在线| 亚州综合色图| 91伊人久久在线| 大香蕉综合在线| 欧美一区二区成人一卡| 国产亚洲色婷婷99精品91| 91天天综合网,天天综合网| 久久不卡一区二区| 歐美一級亂黃99在綫精品| 顶级少妇BT天堂| 亚洲视频,小说| 手机久操欧美综合色码| 中文字幕神马久久| 久久青娱乐| 91制服丝袜| 91天堂| 九久精品| 国产精品免费1区2区视频| 五码视频在线观看| 国产成人无码高清| 亚洲五月丁香花狠狠干一区二区三区 | 国产精品一区二区黄片| 激情五月婷| 成 人 影视 一区 二区 三区 四区| 欧美九九爱| 人人污日韩一区二区| 青青伊人久久| 欧美性爱一区二区三区| 日韩兔费看黄片| 亚洲性爱免费电影| 色噜噜婷婷| 狠肏骚人妻| 本道在线| 国产精品不卡av免费在线观看| 中字幕人妻一区二区三区| 欧美一区二区观看在线| 天天添天天干电影| 东京热不卡视频| 91天堂| 天天操天天干一区二区| 五月婷婷六月丁香| 欧美激情片一区二区| 99精品丰满人妻无码| 亚洲色图欧美| 强奸乱伦资源| 91亚洲不卡一区| 丝袜天堂网| 天天草天天日| 人人考人人摸人人干| 日韩影片中文字幕一区二区三区| 99热日| 婷婷丁香激情| av天堂手机版追回| 91撸色网 玖玖网 欧美| 91欧美www| 国产精品毛片?v一区二区三区 | 青青草无码视频| 亚洲欧美天堂| 欧美特大黄一级片片免费| 麻豆久久久久久久久丝袜 | 五月婷婷综合激情| 欧美亚洲国产日本在线,久久精品国产| 啊啊啊啊好多水| 91视频综合网| 日韩操逼HD| 亚洲欧洲美腿丝袜| 老熟女91视频| 日本Xx性爱| 欧美日日夜夜| 97AV在线观看| 久久激情网| 伊人嫩草| 欧亚乱色熟女一区二区| 国产免费久久精品99re韩国| 国产成人超碰在线| 麻豆黄色五月天| 蜜臀久久久99久久久久 | 国产 无码 一区二区| 日韩少妇丰满亚洲| 亚洲视频中文一区| 色香阁在线| 亚洲欧美在线丝袜| www99热| 大香蕉日韩| 免费观看啪视频| 青青草导航在线视频| 乱伦av国产| av线电影| 操比国产| 综合熟妇一区二区三区| 岛园激情| 91插B网站| 一区二区三区机械有限公司| 黑丝制服中文字幕| 久久xxxx| 无码天堂| 色五月69夫妻| 日本狂喷奶水在线播放212| 北京美女一区二区| 亚洲系列第一页| 日韩精品影视| 婷婷久久大香蕉| 水滴偷拍| 亚洲官网在线| 芊芊操逼视频无码| 九九免费影片| 99热综合| 成人国产视频在线观看| 五月天色电影| 亚洲av影音先锋| 东京男人天堂| 视频在线观看一二三区| 26uuu国产亚洲综合| 欧美91网站| 日韩去日本高清在| 久久啊啊啊| 综合激情97| 黄片无码在线制服| 好爽免费视频| 黄呦呦在线| 性爱av在线免费观看| 男人天堂新| 国产美脚女优尤物在线观看| 97日视频| 操逼日韩无码| 一级性爱视频免费在线| 精品成人女人久久| 志村玲子视频一区二区| 天天激情综合站| 亚洲风情综合网| 久久色激情一区二区三区| 亚洲天堂中文字| 天天干人人乐| 97色涩| 久久国产视频性吧 | 欧美综合站| AV网站高清无码在线观看| 最新制服中文第一页| 成人天天看站长推荐 | 青草成人免费视频一COm| 亚洲情色在线| 麻豆人妻精品一区二区| 欧美日韩不卡a片| 亚洲激情视频| 欧美日韩97在线| 国产精品制服丝袜中文字幕日韩一区二区三区 | 高清不卡一二三区视频......| 操逼视频亚洲| 人人看黄色视频| 精品久操| 亚洲男人的天堂网| 综合网~91综合网| 另类在线| 26uuu国产免费观看| 波多野结衣AV无码一区| 欧美情色亚洲| 少好三P| 日韩钢筋无码高清啾啾啾| 激情综合五月婷婷| 操逼网免费无码视频| 亚洲成aⅴ人片不卡无码| 欧美偷拍| 999久久久久久久久| 91丝袜在线视频| 天天碰操中国年青熟妇| 欧美日韩国产中文精品字幕自在自线,| 欧美日韩岛国大片在线观看| 亚洲熟女性高潮久久久| 秋霞一集毛片观看| 91狠狠综合| v91av| 人妻久久| 欧美日本不卡在线| 亚洲欧美国产精品久久久久久久| 自拍亚洲综合| 天天超级碰碰碰| 综合影院永久入口国产| 97综合国产| 久九色| 嗯嗯啊好爽| 久久免费9| 超碰色老头| 久久超碰网| 极品另类| 四虎国产精品永久在线囯在线| 人妻少妇精品久久久久久久| 96精品久久| 五月天亚洲色图| 97欧美超碰| 国产强奸乱伦欧美| 日韩黄片影院| www.99中文字幕| 看一级特黄a大一片| 秋霞无码av鲁丝片一区| 人人妻人人狠人人| 91啪啪视频| 青青草中文-久久青草精品一区二区三| 天天综合精品| 中文字幕一区 二 区 三 四 五 区日 日 骚| 亚洲最大91网| 中文字幕乱碼在线| 搞中出视频在线观看| 色婷婷淫色网| 亚洲天堂一二| 亚洲美女AV无码| 白丝被操91| 操操逼操操逼操操逼逼| 强奸a片网| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 久久久久日本视| 天美精品一区二区三区四区在线观看 | 性色A∨91| 欧美不卡在线一区二区| 午夜福利精品| 长长久久免费视频| 国产AV天美| 夜夜国自区| 欧美激情激情xxxx欧美专区| 亚欧免费| 色综合色色| 天天弄欧美| 丰满欧美放荡少妇在线| 99久久99久久免费精品蜜臀| 日本成人A片网站| 777奇米影视777四色| 91久精品| 蜜桃AV天堂| www久久国产精品| 日本精品一区二区中文字幕| 天天综合网国产| 97免费视频在线观看视频| 99av| 333kkkk·亚洲com久久| 超碰 97国产熟女| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 久久亚洲天堂| 日韩欧美亚洲自拍偷拍| 福利在线黄片| 日韩三级在线观看mp4| 中韩中文字幕在线观看| 欧美的性爱网站免费| 色婷五月天| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 人妻久久久久久久久久久久久久久 | 97鸡把在线视频| 欧美黄色大片在线观看| 大香交伊人网| 欧美亚洲高清晰| 韩国手机不卡无码三级视频| 亚州国产精品乱| 欧美高潮| 国产一级特黄大片处女| 玖玖97综合| 亚洲色图日韩丝袜制服一区二区五月在线| 久久透逼视频| 无码91| 欧美写真视频一区| 极品白嫩美女白浆成人福利在线看| 亚洲精品欧洲精品| 人妻丝袜美腿中文字幕| 婷婷久久五月天| 日韩综合色网| 99久久久er直播网址| 91欧美美女日韩国产婷婷| 亚洲欧美天堂| 欧美久久九九| 欧在线一二区| 激情99| 婷婷激情四射| 久久女人一区二区三区| 天美av在线| 亚洲欧美中文日韩视频中国语 | 偷窥自拍A片| 四虎在线免费视频| 污污汅18禁网站在线永久免费观看| 欧美日韩人人精品| 日韩无码一级黄色av片| 久久啊哟| 日韩性爱小视频| 久久久999网站| 青青操网| 亚洲限制级| 国产一在线观看| 亚州色图片在线色| 亚洲最大网站av| 熟妇女伦乱视频视频| 国产成人自拍视频在线| 蜜臀网址在线| 日本三级韩三级99久久| 91网站18| 啊啊好多水| 久久av一级av少妇av高潮 | 国产特级毛片AAAAAA高潮流水 | 大屁股人妻女教师撅着屁股| 熟妇人妻一区二区三区| 色欲久久久久综合网| 10000部十八禁看电影| 另类小说综合网| 精品无码一区二区人妻久久蜜桃| 日韩精品黄片免费观看| 久草电影网| 天美传媒国产原创中文字幕亚洲欧美另类| 国产综合久久久麻桃个| 青青草自拍视频在线播放| 小说区 图片区色 综合区| 最新中文字幕av| 欧美日韩性爱操大逼| 欧美色蜜桃97| 日本美女性生活久久久久久久| 一起草三级AV电影在线观看 | 伦理弟一页| 99性视频| 黄色成人网久久久久久| 久久久久久久久久久久久久久久9| 伦伦成年午夜免费视频| 91热热色| 色老汉色| 欧美精品久久久久久久久88| 久久中文字幕在线观看| 台湾大香蕉99热| 超碰人人超在线观看| 夫妻天天操岛国视频| 秋霞午夜视频一区二区| 久操精品网| 三级日本一区二区三区| 中文字幕欧美日本乱码一线二线| 久久一二三四五六七八九区区区| 黄视频免费| 亚洲欧美综合图片| 天天日天天舔东京热 | 校园春色欧美| 天天影视综合网欧美精品| 国产精品一区午夜福利| 青娱乐妇女性生活| 超碰久久网| 久久国产99精品72福利| 亚洲av淫乱| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 欧美黑人168页欧美黑人167| 91在线美女| www.色操逼| 免费自拍三级综合| 东京热男人天堂| 中文熟女五十乱码在线| 美女高潮视频91| 婷婷久久五月天| 国产黄色 A 片免费看| 欧美性爱第1 页| 骚鸭AV| 亚洲无限观看| 操香逼| 欧美午夜精品久久久久久超碰| 天堂中文日本在线观看| a片 xxxx受爽视频| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 欧美丝袜激情| 大香蕉97久久| 色色操| 日韩不卡a级视频专区| 日韩性爱视频在线免费观看 | 久热伊人99re| 成人情色一区二区| 中文字幕 国产 精品| 色情乱伦AV| 思思热久久成人| 97人人夜夜精品视频| 1769成人国产精品视频| 蜜臀AV午夜精品久| 欧美BT 亚洲色图| 婷婷五月天色网| 婷婷九月国产| Aa东京男人的天堂| 无码久| 狠色婷婷久久一区二区三区_| 在线 亚洲 网爆 自拍| 殴美性色a级欧美| 久久五月份| 蜜臀少妇一区二区| 亚洲性爱高潮影院| 东京热激情视频一二三区| 国产超碰在线| 色婷婷影视| 男人的天堂亚洲| 久久婷婷一区二| 亚洲色图激情小说| 女同亚洲欧美一二三区久久电影| 大胆91| 天色综合网| 中文字幕人妻色偷偷久久皮| 操人妻逼91| 欧美乱妇狂野欧美在线视频| 美女诱惑在线一区| 色综合20p| 精品二区三四区五电影 | 人妻一区二区三区四区视频| 国产成年女黄特黄| www.色吧5.com| 51久久夜色精品国产麻豆| 五月婷婷六月丁香网址| 大香网站| 婷婷激情五月综合| 台欧久久精品视频| 75大香蕉| 国产精品乱码久久久久久久| 四虎影视国产精品| 97超碰中文在线| 日韩有码 一区二区三区| 尹人免费观看视频在线| 国产福利在线视频网站| 蜜桃无码AV一区二区| www.色婷婷.com| 好爽,再快点啊哈嗯嗯嗯嗯| 欧美页片| 久久久久久免费电影| 91天天综合日韩欧美| 91久久九九精品国产综合| 美女午夜福利免费视频| 色婷婷久久| 天天爽夜夜欢视| 精吧天堂| 久久久久久久精| 又大又长又粗又爽又黄| 亚洲欧美国产日本一区二区三区| 中亚av| 9999九九九久久久| 亚洲欧美黄| 久久人人爽爽人人爽人人片αV| 国产农村一一级特黄毛片| julia在线观看久久| 日日骚精品视频| 好吊色综合| 日韩一级特黄av毛片| 丰满人妻一区二区三区| 欲射影视| 久夜视频| 久久一区二区三区入口| 人妻精品综合中文字幕在线| 91处女在线视频| 中文字幕一区二区视频在线观看| 日逼国产| 91偷拍欧美亚洲| 青草一区二区| 中文字幕123| 欧美熟妇乱码在线一区| 激情另类激情| 91在线视频免费播放| 天堂九九九九九九九九九| 91黑丝操| 操逼逼一区视频| 国产91美女高潮| 国产九九九九九九| 亚洲无码国产精品久久| 日韩久久三区| 91精品国产长腿丝袜美女| 欧美午夜视频免费观看| 美女露胸露尿口| 久久久日本电影| WWW黄片COM| 亚洲资源网| 国产乱伦性爱区| 日韩欧美成人大香蕉| 天天日天天看| 欧美日韩999| 午夜操操操| 中文字幕123| 夜夜嗨绯色| 国产精品嫩草影院午夜两性 | 日韩精品人妻一区二区| 懂色AV蜜臀无码精品APP| AV在线资源| 影音先锋每日最新资源在线观看| 天天综合色电影| 五月天婷婷社区| 91在线无码精品秘 软件| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 91超碰碰在线| 午夜精品久久久久久久久久蜜桃| 小草精彩毛片| 啊啊啊在线观看| 精品少妇一区二区三区免费观看| 亚洲资源吧| 久久婷婷影院| 啊啊啊水好多| 99无码视频| 欧美色97| 99热精品在线播放| 亚洲精品91| 丰满人妻-区二区三区免费| 大香蕉日韩| 男人的天堂2019AV| 亚洲无 码A片在线观看麻豆| 天天添天天干电影| 97碰| 天天干天天日天天射黄色大片 | 黄色小说亚洲| 黄色片一区二区三区四区五区| 九草在线大香蕉| 日欧亚洲二三区大片不卡| 人妻素股| 久久婷婷精品| 久久97超碰| 黄总AV色图| 日韩Va亚洲va欧美Ⅴa久久| 中文在线视频| 国产精品大香蕉| 超碰91在线| 欧美一二在线| 天天天天天天天天天天干美女| 久久九九精品一区二区| 色99色| а√天堂资源官网在线资源| 啊啊啊啊啊啊好湿好爽视频| 91社操逼| 老司机香蕉久久久久| 国产人伦精品一区二区三区| 性爱乱伦视频免费| 人人操人人精品影片| 男人天堂2019亚洲| 人人做天天爱| 欧美性五月| 91久久久久久久久久久| 国产日韩区| 欧美在线亚洲| 91亚洲影院综合| 成人av动漫在线观看| 无码天堂| 国产精品第一页国产大屁股视频免费区i| 任你草| 日韩乱伦AⅤ| 欧美精品激情| 欧美白嫩女HD| 五月丁香婷婷啪啪| AV天堂国产| 天天性射网| 97色欧州| 国产成人+综合亚洲+天堂| 91P0RNY大屁股人妻| 在线观看啊啊啊啊啊| 久久精品一区| 啪啪啪大香蕉| 乱伦1色页| 蜜臀久久99精品久久久久| 精国久久一区二区三区98| 超碰人人妻| 国内毛片国产专区二| 日本在线观看网址| 国产精品禁久久久精品| 91在线色| 熟妇熟女亚洲天堂网| 操逼逼福利视频| av三级电影在线播放| 91天天美女| 97爱b| 欧美激情视频一区二区三区不卡| 999国产精品999| 韩国一级婬片A片无码天美 | 五月天婷婷色| 亚洲一区二区中文字幕| 99久久精品无码一区二区毛片免费| 日韩大香蕉AV影片| AV色五月天| 九九九九日本| 欧美在线官网| 99热这里只有精品9| 一级久久久久久久久久久 | 91少妇人妻| 黄色AV免费| 99精品无码| 亚洲天堂日本| 亚洲 欧美 小说| 欧美日韩国第一区| 久久精精区一区二区一蜜桃一区二区| 偷窥自拍A片| 99精品久久久久久久婷婷| 人妻偷拍一区二区三区| 天天综合网日韩| 蜜臀AV午夜精品久| 亚91网| avav青青草久久夜| 亚洲图片在线| 日韩精品国模| 鸥美极品| 亚洲综合贴图91 | 中文字幕丰满子伦无码专区在线视频最新| 久久久女人| 香蕉精品二区二区 | 亚洲高潮少妇| 992这里有精品| 婷婷月色| www.狠狠干.coom| 超碰97欧美在线| 超碰亚洲97| 好爽,再快点啊哈嗯嗯嗯嗯| 岛国AV一区二区电影| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 高树玛利亚无码流出| 夜夜狼人妻| 久久中出在线| 日本九九久久99| 嫩草91| 欧美日综合| 久久久久久久唑| av黄图片在线观看| 国产又黄又爽又刺激久久久久久| 免费1级a做爰片观看| 温婉少妇玩3p|