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

ARTICLE DETAIL

資訊詳情

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

SpringBoot+Vue3汽車租賃管理系統(tǒng):時(shí)間沖突檢測(cè)與狀態(tài)機(jī)設(shè)計(jì)實(shí)戰(zhàn)

SpringBoot+Vue3汽車租賃管理系統(tǒng):時(shí)間沖突檢測(cè)與狀態(tài)機(jī)設(shè)計(jì)實(shí)戰(zhàn) 我去年完整做了一套汽車租賃管理系統(tǒng)技術(shù)棧就是標(biāo)題里那套SpringBoot Vue3 MyBatis MySQL前后端分離。做之前以為就是一個(gè)普通的業(yè)務(wù)管理系統(tǒng)做順了才發(fā)現(xiàn)租賃類業(yè)務(wù)和常規(guī)CRUD完全是兩碼事——它有一個(gè)繞不開(kāi)的核心約束同一輛車在同一時(shí)間段只能被一個(gè)訂單占用。這個(gè)時(shí)間窗口的沖突檢測(cè)加上訂單從下單到還車的全生命周期狀態(tài)流轉(zhuǎn)才是這套系統(tǒng)真正有含金量的地方。這篇文章把我從頭到尾的設(shè)計(jì)思路、表結(jié)構(gòu)設(shè)計(jì)、核心接口邏輯、前端交互方案以及實(shí)測(cè)中踩過(guò)的坑完整復(fù)盤一遍。不管你是正在準(zhǔn)備Java全棧項(xiàng)目、想充實(shí)簡(jiǎn)歷的應(yīng)屆生還是公司要快速落地一套租賃類業(yè)務(wù)后臺(tái)這套設(shè)計(jì)都能直接參考。1. 技術(shù)棧選型為什么是SpringBootVue3MyBatis而不是別家組合1.1 四個(gè)組件各自解決什么問(wèn)題這套技術(shù)棧放到今天已經(jīng)不算新潮但它依舊是Java企業(yè)級(jí)項(xiàng)目里最穩(wěn)的組合。SpringBoot負(fù)責(zé)把后端的集成工作簡(jiǎn)化到極致嵌入式Tomcat、自動(dòng)配置、starter機(jī)制省去大量XML配置MyBatis負(fù)責(zé)SQL的可控性租賃系統(tǒng)里查詢條件特別多車型、價(jià)格區(qū)間、狀態(tài)、租期組合查詢一多動(dòng)態(tài)SQL的價(jià)值就體現(xiàn)出來(lái)了Vue3配合Vite和Element Plus做后臺(tái)管理界面和用戶端頁(yè)面都很順手MySQL負(fù)責(zé)數(shù)據(jù)持久化輕量、穩(wěn)定、資料多作為中小型業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)完全夠用。有人會(huì)問(wèn)現(xiàn)在MyBatis-Plus這么流行為什么不用兩個(gè)原因。第一這個(gè)項(xiàng)目體量不大原生MyBatis完全能把SQL控制住不會(huì)出現(xiàn)幾百行動(dòng)態(tài)SQL的極端場(chǎng)景第二MyBatis的動(dòng)態(tài)SQL和XML映射是Java面試??键c(diǎn)用原生方式把這塊吃透對(duì)面試幫助更大。實(shí)際開(kāi)發(fā)中團(tuán)隊(duì)用MP還是原生那是團(tuán)隊(duì)習(xí)慣問(wèn)題但對(duì)于個(gè)人項(xiàng)目我建議至少要能獨(dú)立寫出XML里的動(dòng)態(tài)SQL。1.2 項(xiàng)目邊界這個(gè)系統(tǒng)到底做什么做一個(gè)系統(tǒng)之前先把邊界劃清楚否則容易越做越失控。我的設(shè)計(jì)是兩類角色、兩條主線。普通用戶能做的事注冊(cè)登錄、瀏覽車輛、選擇租期下單、在線支付押金和租金、查看個(gè)人訂單、還車結(jié)算。管理員能做的事車輛增刪改查、車輛上架下架、訂單審核、確認(rèn)取車、確認(rèn)還車、訂單結(jié)算。這個(gè)邊界劃好后前后端的功能范圍就定了接口數(shù)量也能數(shù)得出來(lái)。全系統(tǒng)核心接口大概二十來(lái)個(gè)后端分用戶模塊、車輛模塊、訂單模塊前端分用戶端和管理端兩個(gè)獨(dú)立視圖。邊界清晰的好處是開(kāi)發(fā)過(guò)程中不會(huì)出現(xiàn)“要不要加個(gè)站內(nèi)信”、“要不要做積分系統(tǒng)”這種沒(méi)完沒(méi)了的需求蔓延。1.3 前后端分離的關(guān)鍵收益前后端分離不是趕時(shí)髦對(duì)這個(gè)項(xiàng)目來(lái)說(shuō)有幾個(gè)實(shí)際收益。第一開(kāi)發(fā)過(guò)程中后端不需要關(guān)心頁(yè)面長(zhǎng)什么樣只返回JSON前端也不需要關(guān)心SQL怎么查只負(fù)責(zé)渲染和交互我可以并行推進(jìn)第二部署上后端是一個(gè)jar包前端是一堆靜態(tài)文件可以單獨(dú)發(fā)布前端改樣式不用重新打包后端第三將來(lái)如果要做小程序端或者App端后端接口可以直接復(fù)用不用重寫。代價(jià)也有就是聯(lián)調(diào)成本變高了。前端需要知道后端接口返回的數(shù)據(jù)結(jié)構(gòu)后端需要知道前端需要什么字段。我的辦法是后端統(tǒng)一返回結(jié)構(gòu)所有數(shù)據(jù)都包在Result對(duì)象里前端拿到后按約定解析。這個(gè)統(tǒng)一約定后面專門有一節(jié)說(shuō)。2. 數(shù)據(jù)庫(kù)模型車輛、訂單、用戶三張核心表的設(shè)計(jì)邏輯2.1 核心表結(jié)構(gòu)與建表SQL數(shù)據(jù)庫(kù)設(shè)計(jì)是這套系統(tǒng)的地基。我用的核心表就三張用戶表、車輛表、訂單表。不要加太多冗余表更不要用物理外鍵業(yè)務(wù)關(guān)系靠代碼邏輯維護(hù)索引來(lái)保證查詢性能。用戶表id、用戶名、密碼、手機(jī)號(hào)、身份證號(hào)、角色、狀態(tài)、創(chuàng)建時(shí)間。密碼我用了BCrypt加密存儲(chǔ)明文存密碼在真實(shí)項(xiàng)目里是絕對(duì)紅線。數(shù)據(jù)庫(kù)字段類型金額用decimal時(shí)間用datetime狀態(tài)用tinyint。車輛表這里信息量比較大我貼一下實(shí)際的建表SQLCREATE TABLE car ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 車輛ID, brand VARCHAR(50) NOT NULL COMMENT 品牌, model VARCHAR(50) NOT NULL COMMENT 車型, plate_number VARCHAR(20) NOT NULL UNIQUE COMMENT 車牌號(hào), category TINYINT NOT NULL DEFAULT 0 COMMENT 車型分類 0-經(jīng)濟(jì)型 1-SUV 2-商務(wù)型 3-豪華型, daily_price DECIMAL(10,2) NOT NULL COMMENT 日租金, deposit DECIMAL(10,2) NOT NULL COMMENT 押金, status TINYINT NOT NULL DEFAULT 0 COMMENT 狀態(tài) 0-可租 1-已租出 2-維修中 3-已下架, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 創(chuàng)建時(shí)間 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT車輛表; CREATE TABLE orders ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 訂單ID, order_no VARCHAR(32) NOT NULL UNIQUE COMMENT 訂單編號(hào), user_id BIGINT NOT NULL COMMENT 用戶ID, car_id BIGINT NOT NULL COMMENT 車輛ID, start_time DATETIME NOT NULL COMMENT 取車時(shí)間, end_time DATETIME NOT NULL COMMENT 還車時(shí)間, daily_price DECIMAL(10,2) NOT NULL COMMENT 下單時(shí)日租金快照, total_days INT NOT NULL COMMENT 租期天數(shù), amount DECIMAL(10,2) NOT NULL COMMENT 租金金額, deposit DECIMAL(10,2) NOT NULL COMMENT 押金金額, status TINYINT NOT NULL DEFAULT 0 COMMENT 狀態(tài) 0-待支付 1-已支付待取車 2-租賃中 3-已完成 4-已取消, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 下單時(shí)間, pay_time DATETIME NULL COMMENT 支付時(shí)間, finish_time DATETIME NULL COMMENT 完成時(shí)間, INDEX idx_user_id (user_id), INDEX idx_car_id (car_id), INDEX idx_start_time (start_time) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT訂單表;有幾個(gè)字段容易被忽略我單獨(dú)說(shuō)。orders表里的daily_price字段是“下單時(shí)日租金快照”這個(gè)很重要。車輛日常價(jià)格會(huì)變比如節(jié)假日調(diào)價(jià)訂單一旦創(chuàng)建租金就得按下單那一刻的價(jià)格算不能在結(jié)算時(shí)又去讀車輛表的最新價(jià)格否則用戶會(huì)投訴。這是一個(gè)很典型的訂單設(shè)計(jì)原則金額類信息必須做快照不做實(shí)時(shí)關(guān)聯(lián)。訂單編號(hào)我用的是當(dāng)前時(shí)間加隨機(jī)數(shù)生成格式類似yyyyMMddHHmmss 4位隨機(jī)數(shù)保證同一秒內(nèi)并發(fā)也不會(huì)重復(fù)。生產(chǎn)環(huán)境可以用雪花ID或者Redis自增個(gè)人項(xiàng)目這個(gè)簡(jiǎn)化方案完全夠。2.2 車輛和訂單的狀態(tài)機(jī)設(shè)計(jì)狀態(tài)字段我全部用tinyint從0開(kāi)始遞增。為什么不用字符串三個(gè)原因省空間、查詢快、代碼里定義常量類后可讀性也不差。真正要注意的是別把魔法數(shù)字寫死在代碼里我在后端建了一個(gè)枚舉類把所有狀態(tài)做成枚舉前端再用映射字典把數(shù)字翻譯成中文標(biāo)簽。訂單狀態(tài)流轉(zhuǎn)是最核心的業(yè)務(wù)規(guī)則。從用戶角度看是這個(gè)鏈路待支付 - 已支付待取車 - 租賃中 - 已完成任意狀態(tài)下取消則進(jìn)入已取消。從管理員角度看這里面有兩次人工確認(rèn)動(dòng)作確認(rèn)取車和確認(rèn)還車。為什么要人工確認(rèn)因?yàn)榫€下要驗(yàn)車車況沒(méi)問(wèn)題才交接這個(gè)動(dòng)作必須由管理員觸發(fā)不能全自動(dòng)。狀態(tài)流轉(zhuǎn)用表格表示當(dāng)前狀態(tài)觸發(fā)動(dòng)作下一狀態(tài)誰(shuí)觸發(fā)0 待支付支付成功1 已支付待取車用戶0 待支付取消訂單4 已取消用戶1 已支付待取車管理員確認(rèn)取車2 租賃中管理員2 租賃中管理員確認(rèn)還車3 已完成管理員1 已支付待取車超時(shí)未取車4 已取消系統(tǒng)/管理員這套狀態(tài)機(jī)定義清晰后代碼里每個(gè)狀態(tài)下的按鈕、接口邏輯、車輛狀態(tài)配合都變得非常明確不需要在每個(gè)接口里臨時(shí)判斷一堆if。2.3 時(shí)間沖突檢測(cè)租賃系統(tǒng)最核心的業(yè)務(wù)校驗(yàn)這是整套系統(tǒng)最有含金量的地方。車輛表里有status字段標(biāo)記是否在租但只有這個(gè)還不夠——一個(gè)訂單還沒(méi)創(chuàng)建時(shí)車是“可租”的可一旦有人在某個(gè)時(shí)間段已經(jīng)預(yù)定了又沒(méi)到取車時(shí)間車已經(jīng)處于被占用的窗口期。這個(gè)時(shí)候需要靠訂單表來(lái)判斷。判斷邏輯可以歸結(jié)為一句話新訂單的租期 [newStart, newEnd] 與某個(gè)已占用訂單的租期 [oldStart, oldEnd] 是否存在重疊區(qū)間。SQL寫法是這樣的SELECT COUNT(*) FROM orders WHERE car_id #{carId} AND status IN (1, 2) AND start_time #{newEndTime} AND end_time #{newStartTime}這里status IN (1, 2)排除了已取消和已完成的訂單。這個(gè)區(qū)間重疊判斷覆蓋了四種情況新訂單完全包含舊訂單、新訂單被舊訂單包含、新訂單左端與舊訂單右端重疊、新訂單右端與舊訂單左端重疊。凡是這四種情況里任意一種count都大于0就不能下單。邊界情況要注意處理有人會(huì)問(wèn)前一個(gè)訂單還車時(shí)間是9:00新訂單取車時(shí)間也是9:00算不算沖突嚴(yán)格說(shuō)這取決于業(yè)務(wù)規(guī)則。我的規(guī)則是不允許邊界緊貼所以SQL里用的是和不是和。如果業(yè)務(wù)上允許9點(diǎn)整還車9點(diǎn)整租出那要用和處理。這個(gè)細(xì)節(jié)最好和業(yè)務(wù)方確認(rèn)清楚再定。3. 后端實(shí)現(xiàn)里容易翻車的三個(gè)點(diǎn)金額、狀態(tài)、動(dòng)態(tài)SQL3.1 金額計(jì)算與BigDecimal的精度陷阱租金計(jì)算看起來(lái)簡(jiǎn)單日租金 × 天數(shù) 押金但實(shí)操里有兩個(gè)坑。第一個(gè)坑是數(shù)據(jù)類型金額一律用BigDecimal計(jì)算數(shù)據(jù)庫(kù)里用decimal(10,2)絕不能用float或double。0.1 0.2 在double里的結(jié)果是0.30000000000000004這個(gè)精度錯(cuò)誤在金額上會(huì)造成分賬差錯(cuò)測(cè)試時(shí)還不容易發(fā)現(xiàn)。第二個(gè)坑是租期天數(shù)的計(jì)算邏輯兩個(gè)datetime之間做差得到毫秒數(shù)再除以一天的毫秒數(shù)這里牽扯時(shí)區(qū)問(wèn)題取整規(guī)則也要定好。我這里的使用者是按整天租賃的所以天數(shù)計(jì)算采用向上取整當(dāng)天取當(dāng)晚還也算一天。代碼很簡(jiǎn)單long diffMs endTime.getTime() - startTime.getTime(); int totalDays (int) Math.ceil(diffMs / (1000.0 * 3600 * 24)); BigDecimal amount dailyPrice.multiply(BigDecimal.valueOf(totalDays));這個(gè)計(jì)算邏輯后端寫好后前端也必須要寫一模一樣的預(yù)估價(jià)邏輯。我的做法是在前端展示預(yù)估費(fèi)用但最終費(fèi)用以后端訂單詳情里的金額為準(zhǔn)。如果兩邊口徑不一致用戶看到預(yù)估100元下單后變成120元體驗(yàn)非常差。3.2 防止“搶車”條件更新比先查再改可靠租賃系統(tǒng)并發(fā)場(chǎng)景下容易出現(xiàn)一個(gè)bug兩個(gè)用戶同時(shí)看中同一輛車同時(shí)提交訂單結(jié)果兩個(gè)訂單都創(chuàng)建成功。解決辦法是兩層防護(hù)。第一層創(chuàng)建訂單前執(zhí)行上面那個(gè)沖突檢測(cè)SQLcount為0才允許創(chuàng)建第二層創(chuàng)建訂單時(shí)會(huì)同步把車輛狀態(tài)改為已租出這個(gè)更新操作必須加條件UPDATE car SET status 1 WHERE id #{carId} AND status 0注意這里的關(guān)鍵點(diǎn)update語(yǔ)句里帶了AND status 0這個(gè)條件。如果車輛已經(jīng)被其他訂單改成了已租出這條update受影響的行數(shù)就是0通過(guò)Java代碼判斷affectedRows如果為0就拋出異常讓當(dāng)前事務(wù)回滾這樣即使兩個(gè)用戶同時(shí)提交也只有一個(gè)能成功。這個(gè)設(shè)計(jì)比“先SELECT再UPDATE”的常規(guī)寫法更可靠因?yàn)樵诟卟l(fā)環(huán)境下select之后、update之前的那段時(shí)間里車輛狀態(tài)可能已經(jīng)被別人改了。條件更新本質(zhì)上是一種樂(lè)觀鎖思路用狀態(tài)本身做版本校驗(yàn)。3.3 MyBatis動(dòng)態(tài)SQL和事務(wù)邊界MyBatis的動(dòng)態(tài)SQL是查詢條件不確定時(shí)的核心武器。比如車輛列表頁(yè)用戶可以按品牌模糊查、按車型分類查、按價(jià)格區(qū)段查、按狀態(tài)查這些條件任意組合。用XML的 標(biāo)簽加 標(biāo)簽就能輕松搞定select idlistCars resultTypecom.example.entity.Car SELECT * FROM car where if testbrand ! null and brand ! AND brand LIKE CONCAT(%, #{brand}, %) /if if testcategory ! null AND category #{category} /if if teststatus ! null AND status #{status} /if /where ORDER BY create_time DESC /select標(biāo)簽的好處是如果所有條件都不滿足它不會(huì)生成WHERE關(guān)鍵字如果第一個(gè)條件成立它會(huì)自動(dòng)去掉多出來(lái)的AND。這里要注意 里的判空不僅要判null還要判空字符串尤其前端傳空字符串的時(shí)候brand ! null攔不住。事務(wù)邊界是另一個(gè)容易翻車的地方。創(chuàng)建訂單這個(gè)操作涉及三件事插入訂單記錄、更新車輛狀態(tài)為已租出、記錄支付流水。這三個(gè)操作必須在一個(gè)事務(wù)里任何一個(gè)失敗都要全部回滾否則會(huì)出現(xiàn)訂單存在但車輛狀態(tài)沒(méi)改的臟數(shù)據(jù)。實(shí)現(xiàn)方式就是在service方法上添加Transactional注解。但要注意一個(gè)Spring事務(wù)自調(diào)用失效的問(wèn)題同一個(gè)類里方法A調(diào)用方法BB上面有Transactional是無(wú)效的事務(wù)不會(huì)開(kāi)啟。事務(wù)方法是代理對(duì)象調(diào)用才生效所以事務(wù)邏輯要設(shè)計(jì)在獨(dú)立的service類里別在controller里寫業(yè)務(wù)事務(wù)也別在一個(gè)類內(nèi)部調(diào)來(lái)調(diào)去。4. Vue3前端用戶端和管理端分開(kāi)設(shè)計(jì)4.1 前端工程結(jié)構(gòu)和路由設(shè)計(jì)前端我用Vite初始化Vue3項(xiàng)目用TypeScript還是JavaScript這個(gè)項(xiàng)目我用的是JavaScript團(tuán)隊(duì)項(xiàng)目用TS另說(shuō)個(gè)人項(xiàng)目里JS改起來(lái)更快。UI庫(kù)用Element Plus狀態(tài)管理用PiniaHTTP請(qǐng)求用Axios。目錄結(jié)構(gòu)比較常規(guī)src/ api/ 接口請(qǐng)求定義 store/ Pinia狀態(tài)管理存token和用戶信息 router/ 路由配置 views/user/ 用戶端頁(yè)面 views/admin/ 管理端頁(yè)面 utils/ axios實(shí)例和工具函數(shù)路由這塊用前端路由守衛(wèi)配合后端鑒權(quán)雙層控制。前端路由分為用戶端和管理端兩組管理員登錄后才顯示管理端菜單普通用戶訪問(wèn)管理端路由直接跳首頁(yè)。后端的攔截器還要再校驗(yàn)一次兩層的權(quán)限攔截不能互相替代。4.2 用戶端選車、下單、支付的交互鏈路用戶端的核心交互是四個(gè)步驟瀏覽車輛 - 查看詳情 - 選時(shí)間下單 - 支付。車輛列表頁(yè)用卡片展示每輛車顯示名稱、分類標(biāo)簽、日租金、押金、當(dāng)前狀態(tài)。狀態(tài)為“可租”的車輛才可以點(diǎn)擊查看詳情其他狀態(tài)置灰。這個(gè)細(xì)節(jié)很重要用戶看到一輛在租的車點(diǎn)進(jìn)去發(fā)現(xiàn)下不了單體驗(yàn)很差。車輛詳情頁(yè)是交互最關(guān)鍵的地方。頁(yè)面里放了兩個(gè)日期選擇器分別是取車時(shí)間和還車時(shí)間默認(rèn)取車時(shí)間是明天還車時(shí)間是后天。用戶一選完時(shí)間前端立刻計(jì)算預(yù)估費(fèi)用并展示出來(lái)。計(jì)算公式和后端完全一致const diffMs new Date(endTime).getTime() - new Date(startTime).getTime() const days Math.ceil(diffMs / (1000 * 3600 * 24)) const estimate dailyPrice * days deposit用戶點(diǎn)擊下單前端把carId、startTime、endTime提交到后端。后端返回訂單ID和應(yīng)付金額前端彈一個(gè)支付確認(rèn)框上面顯示明細(xì)租金多少、押金多少、合計(jì)多少。本項(xiàng)目用模擬支付點(diǎn)確認(rèn)就調(diào)用支付接口把訂單狀態(tài)從待支付改成已支付待取車。真實(shí)項(xiàng)目中這一步要對(duì)接微信或支付寶邏輯上只是把模擬支付的接口換成真正的支付回調(diào)。4.3 管理端用狀態(tài)驅(qū)動(dòng)按鈕顯隱管理端訂單管理頁(yè)是最能體現(xiàn)狀態(tài)機(jī)設(shè)計(jì)價(jià)值的地方。頁(yè)面用表格展示所有訂單每一行根據(jù)訂單狀態(tài)顯示不同的操作按鈕訂單狀態(tài)顯示的操作按鈕0 待支付查看詳情、取消1 已支付待取車確認(rèn)取車2 租賃中確認(rèn)還車3 已完成查看詳情4 已取消查看詳情Element Plus的el-table里可以通過(guò)條件渲染動(dòng)態(tài)控制按鈕是否顯示操作列根據(jù)狀態(tài)對(duì)象里的屬性來(lái)判斷。這樣做的好處是代碼邏輯非常簡(jiǎn)單不會(huì)出現(xiàn)一堆亂七八糟的v-if每個(gè)狀態(tài)對(duì)應(yīng)什么操作是固定的數(shù)據(jù)驅(qū)動(dòng)的思路。車輛管理頁(yè)相對(duì)簡(jiǎn)單表格展示車輛列表新增和編輯用彈窗表單。這里容易被忽略的是車輛分類和日租金的表單校驗(yàn)分類用一個(gè)下拉框取值范圍要和后端枚舉對(duì)齊。還有“上架/下架”操作下架的車不允許再下單這個(gè)操作本質(zhì)就是更新車輛status字段為3。4.4 前端狀態(tài)管理和權(quán)限控制用戶登錄后的token、用戶基本信息、角色信息我都放在Pinia里。Axios的請(qǐng)求攔截器統(tǒng)一從store里取token加到Authorization請(qǐng)求頭響應(yīng)攔截器判斷后端返回code如果不是200就彈出錯(cuò)誤提示如果是401表示token過(guò)期清除本地登錄狀態(tài)跳轉(zhuǎn)登錄頁(yè)。這個(gè)模式幾乎是Vue3前后端分離項(xiàng)目里固定套路但值得注意的一點(diǎn)是響應(yīng)攔截器的錯(cuò)誤提示不能太生硬要區(qū)分是網(wǎng)絡(luò)錯(cuò)誤還是業(yè)務(wù)錯(cuò)誤業(yè)務(wù)錯(cuò)誤比如庫(kù)存不足要用后端的message內(nèi)容提示網(wǎng)絡(luò)錯(cuò)誤則統(tǒng)一提示“網(wǎng)絡(luò)異常請(qǐng)稍后重試”。5. 前后端聯(lián)調(diào)的關(guān)鍵細(xì)節(jié)統(tǒng)一返回結(jié)構(gòu)、JWT鑒權(quán)、跨域5.1 統(tǒng)一接口返回結(jié)構(gòu)前后端分離的項(xiàng)目最忌諱各寫各的后端返回原生對(duì)象字段名一個(gè)叫createTime前端需要的卻是createdAt聯(lián)調(diào)時(shí)改來(lái)改去。我從一開(kāi)始就定了統(tǒng)一的返回結(jié)構(gòu){ code: 200, message: success, data: {} }code為200表示成功非200表示業(yè)務(wù)異常message里放給用戶看的提示信息data里放業(yè)務(wù)數(shù)據(jù)。后端所有接口都返回這個(gè)Result對(duì)象泛型保證data的類型安全。這么做的好處是前端的響應(yīng)攔截器可以全局統(tǒng)一處理code為200時(shí)直接返回data非200時(shí)統(tǒng)一彈message。前端每個(gè)請(qǐng)求都不用重復(fù)寫錯(cuò)誤處理代碼。5.2 JWT登錄態(tài)設(shè)計(jì)前后端分離后服務(wù)端不再維護(hù)Session登錄態(tài)用什么方案我用的是JWT。流程是登錄接口校驗(yàn)用戶名密碼成功后后端生成一個(gè)token返回給前端前端存到localStorage里之后每次請(qǐng)求都在Authorization頭帶上這個(gè)token后端攔截器解析token獲取用戶信息。生成token我用的是jjwt庫(kù)token里可以放userId和role過(guò)期時(shí)間設(shè)24小時(shí)。后端寫一個(gè)攔截器在HandlerInterceptor的preHandle里解析token解析成功就放行失敗就返回401。要注意的是攔截器放行的白名單要放好登錄、注冊(cè)、車輛列表查詢這些接口是不需要登錄就能訪問(wèn)的不能攔截但下單、支付、管理端所有接口必須登錄后才能訪問(wèn)。管理員的接口校驗(yàn)要加角色判斷普通用戶拿自己的token調(diào)管理員接口也必須拒絕。5.3 開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境的跨域處理開(kāi)發(fā)階段前后端分離前端跑在5173端口后端跑在8080端口跨域問(wèn)題避免不了。我的方案是開(kāi)發(fā)環(huán)境用Vite的proxy代理把前端的/api請(qǐng)求轉(zhuǎn)發(fā)到后端// vite.config.js server: { proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } }生產(chǎn)環(huán)境則用Nginx反向代理讓前端靜態(tài)頁(yè)面和后端接口在同一個(gè)域名下徹底避免跨域問(wèn)題。Nginx配置里把/api路徑轉(zhuǎn)發(fā)到后端服務(wù)其他路徑返回前端dist目錄的靜態(tài)文件。我在部署時(shí)會(huì)加上try_files配置后面踩坑記錄里會(huì)詳細(xì)說(shuō)。6. 打包部署與實(shí)測(cè)踩坑記錄6.1 前后端打包流程后端打包用Maven命令很簡(jiǎn)單mvn clean package -DskipTests生成的jar在target目錄直接java -jar跑起來(lái)。前端打包用Vitenpm run build生成dist目錄。生產(chǎn)部署我是把后端jar和前端dist都放到同一臺(tái)服務(wù)器上后端跑SpringBoot服務(wù)監(jiān)聽(tīng)8080端口前端dist目錄由Nginx托管。6.2 我在實(shí)測(cè)中遇到的真坑第一個(gè)坑是MySQL時(shí)區(qū)導(dǎo)致的日期錯(cuò)亂。系統(tǒng)上線后發(fā)現(xiàn)訂單的創(chuàng)建時(shí)間比本地時(shí)間晚了8個(gè)小時(shí)原因是JDBC連接串里沒(méi)配時(shí)區(qū)。解決方法是連接串加上參數(shù)jdbc:mysql://localhost:3306/car_rental?serverTimezoneAsia/ShanghaicharacterEncodingutf8useSSLfalse這個(gè)坑在本地開(kāi)發(fā)時(shí)可能不出現(xiàn)因?yàn)楸镜豈ySQL時(shí)區(qū)恰好和系統(tǒng)一致部署到云服務(wù)器或者用Docker跑MySQL時(shí)就會(huì)暴露。遇到時(shí)間相關(guān)的問(wèn)題第一反應(yīng)就是查時(shí)區(qū)配置。第二個(gè)坑是Linux下MySQL表名大小寫敏感。本地Windows開(kāi)發(fā)時(shí)一切正常部署到Linux服務(wù)器后程序報(bào)“Table car_rental.CAR doesnt exist”因?yàn)槲业腟QL里寫的是大寫表名Windows下MySQL默認(rèn)不區(qū)分大小寫Linux下區(qū)分。解決方法兩種要么所有SQL統(tǒng)一小寫表名要么在MySQL配置里加lower_case_table_names1。個(gè)人項(xiàng)目改SQL統(tǒng)一比較穩(wěn)妥。第三個(gè)坑是Vue打包部署后刷新頁(yè)面出現(xiàn)404。原因很簡(jiǎn)單前端路由用的是history模式Nginx默認(rèn)配置下刷新 /orders/123 這樣的路徑時(shí)Nginx去磁盤上找這個(gè)路徑對(duì)應(yīng)的文件找不到就404。要在Nginx配置里加上location / { try_files $uri $uri/ /index.html; }這個(gè)配置的意思是如果請(qǐng)求的路徑不存在就回退到index.html讓前端路由自己解析。第四個(gè)坑是業(yè)務(wù)層面的訂單取消或還車后車輛狀態(tài)要記得恢復(fù)。這個(gè)看起來(lái)理所當(dāng)然但我在開(kāi)發(fā)時(shí)漏過(guò)用戶下單后取消訂單訂單狀態(tài)改成已取消但車輛狀態(tài)還是已租出這輛車就永遠(yuǎn)租不出去了。后來(lái)在service方法里嚴(yán)格按狀態(tài)機(jī)流轉(zhuǎn)訂單取消的同時(shí)把車輛狀態(tài)改回可租并且放在同一個(gè)事務(wù)里才算徹底解決。6.3 這個(gè)項(xiàng)目的后續(xù)擴(kuò)展空間系統(tǒng)做完了功能上是完整的但還有幾個(gè)方向可以繼續(xù)擴(kuò)展。第一個(gè)是把前端預(yù)估費(fèi)用的邏輯抽出來(lái)獨(dú)立成一個(gè)費(fèi)用計(jì)算工具后續(xù)如果支持半天租、按時(shí)租前后端只改這個(gè)工具就行。第二個(gè)是給車輛加價(jià)格日歷節(jié)假日和旺季可以動(dòng)態(tài)調(diào)整日租金這個(gè)功能在真正的租車公司里幾乎必備。第三個(gè)是增加一些統(tǒng)計(jì)報(bào)表比如車輛出租率、訂單收入趨勢(shì)、熱門車型排行管理端用ECharts畫幾個(gè)圖表項(xiàng)目看起來(lái)也更完整。第四個(gè)是把管理端的角色再細(xì)分比如操作員和超級(jí)管理員操作員只能處理訂單超級(jí)管理員才能改車輛配置。說(shuō)回到這套系統(tǒng)本身我個(gè)人實(shí)測(cè)下來(lái)最大的體會(huì)是租賃類業(yè)務(wù)系統(tǒng)的難度不在增刪改查而在業(yè)務(wù)約束的完整性。一輛車的狀態(tài)從可租到被租再到還車背后牽扯的是時(shí)間段沖突檢測(cè)、事務(wù)邊界、狀態(tài)流轉(zhuǎn)的異?;謴?fù)這些邏輯捋清楚了代碼寫起來(lái)會(huì)非常順。這套設(shè)計(jì)不止適用于汽車租賃共享單車、酒店房間預(yù)約、機(jī)械設(shè)備租借核心模型都可以直接平移過(guò)去。如果你正在找項(xiàng)目練手我建議在跑通基礎(chǔ)功能后真實(shí)地給自己設(shè)計(jì)幾個(gè)并發(fā)場(chǎng)景去壓一壓比如同時(shí)搶同一輛車、訂單取消的瞬間又有新用戶下單把這些場(chǎng)景都處理干凈這個(gè)項(xiàng)目就算真正吃透了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
在线观看A啊啊啊| 久久午夜鲁丝片| 啪啪91| 日韩精品中文字幕一| 97在线视频免费看| 亚洲精品蜜桃久久久久久久| 嗯嗯啊啊操死我| 综合欧美日本三级| 成人a大片在线观看| 立川理惠无码一区二区| jizz啪啪| 啊啊啊操死我| 黑人免费福利视频| 亚洲AV麻豆Aⅴ无码电影一| 91亚洲丝袜熟女| 我中文字幕6区| 久久日韩毛| 日本日皮视频逼| 爱妃国产亚洲视频中文字幕| 久久91| 91制服丝袜中文字幕| 在线中文AV| 玖玖蜜臀资源网| 91啪9色| 婷婷综合| 人妻碰碰碰碰碰碰| 国产丝袜美女诱惑| 亚洲中文制服诱惑| 欧洲大香蕉| 土豪酒店各种姿势玩弄极品幼稚| 亚洲美女 晚间男人天堂| 啊啊啊好湿国产一二| 亚洲图片偷拍视频区| 操逼视频亚洲| 成人三级片无码| 色色香蕉| 色婷婷五月综合激情中文字幕| 无码日韩网站| 韩国女主播青草福利视频| 国产97/欧美| 欧美日韩人妻婷婷一区| 啊啊啊好疼| 欧洲精品欧洲精品| 日韩久射综合| 亚洲麻豆av一区二区| 91亚洲综合| 欧美岛国精品在线观看| 久久透逼视频| 亚洲综合色婷婷| 日韩性爱播放| 91xingse| 欧美第一页| 久久久精品视频欧州站| 综合亚洲网| 久久啊啊| 97在线精品观看视频| 26uuu偷拍亚洲欧洲综合| 国产一区二区三区视频在线看| 在线可观看的黄色网址| 日本福利社| 天天干一区二区| 96爱综合| 狠久久| 国产高清午夜成人在线观看| 欧美一级三级| 国产精品网站www| 亚洲熟女一区| 欧美黑人熟妇精品91| 九色黄站| 久久久久久精品免费看A级| 亚洲国产成人精品无码专区| 香一区二区三区| 欧美日韩亚洲天堂网| 亚洲偷拍欧美激情| 自拍偷拍草一草| 日韩美女操b| 色99视频| 久久久∴| 亚洲?V无码专区在线电影| 黄色小视频日本txt| 好湿好紧好爽 视频| 亚洲自拍欧美国产首页网曝| 国产99热| 超碰九色| daxiangjiao你懂的| 亚洲久久久久| 97资源欧美| 91天堂丝袜美腿| 国产精品久久久啊| 去干网最新版| 蘋果手機免費看成人Av| 超碰97人妻免费在线| 精品国产久热在线观看| 天美精品一区二区三区四区在线观看| 不卡二三区人妻少妇| av天堂精品久久| 综合网,亚洲,欧美| 久久精品国产亚洲5555| 热九九精品| 亚洲青青草| 蜜乳Av成人片网站| 九九九九日本| 久久精品国产Aⅴ| 欧美疯狂做爰xxxx| 综合另类| 91精品国产91熟女| 波多野结衣之双飞调教在线播放| 午夜精品探花| 国桃视频产巨乳精品一区二区在线| 91精品国产91久久青草 | 极品美女福利在线观看| 欧美激情亚洲情色| 亚洲一欧洲中文字幕在线| 久久一区,青青青青草视频在线播放| 久久久久女教师免费一区| 成人性爱电影一区二区| 丝袜美腿91| 国产一区二区啪啪视频| 台湾佬中文娱乐网久久久久久久久久com | 日韩精品一区的| 啊啊啊久久久视频| 国产精品国产拍高清AV| 精品午夜福利| 黑人中出21连凳花野真衣| 欧美色女人| 清清一区二区三区四区不卡视频| 99婷婷一区二区| 久久伊人网视频一区二区三区| 爱逼综合| 亚洲日韩少妇一道本视频| WWW啪啪的com| 呻吟 欧美 日本 中出| 不卡一区二区日本视频| 欧美伊人电影| 天天享受天天看| 日韩黄片视频试看| 男人天堂2030| 粉嫩AV输入| 91成人在线免费视频| 色综合 加勒比| Julia在线播放亚洲久久| 草草草草视频| 欧美亚洲se91| 91大学精品激情戏| 波多野42部激情无码喷潮| 四虎免费看黄| 情色AV电影| 夜夜操美女| 少妇久久久免费| 9 9精品一区二区三区| 91精品丝袜在线观看| 欧美姓爱综合网| 国产超碰在线一区| 五月激情影院| 国模精品娜娜一二三区| 少妇久久久| 日韩亚洲97| 日日夜夜狠狠| 日韩乱伦影音先锋| 探花视频免费观看国产专区| 日韩三级av片| av 模特一区了| 久久婷婷五月天| .精品人妻一区二区三| 97久久国产亚洲精品超碰热| 江都AV在线| 国产精品香蕉热久久新品| JuliaAnn丝袜熟女系列| 日韩图区| 日本精品国产视频| 亚洲精品男人的天堂| 亚洲图片日本AⅤ欧美在线| 玖玖无码超碰| 亚州色阁| 国内操逼视频二区| 插入综合网| 亚洲美女自拍偷拍视频| 国产在线视频二区| 国产精品亚洲天堂网址| 国产精品九九九| 一摸二插三插| 亚洲综合69| 超碰97资源大奶| 亚洲欧美国产其他二区| 色综合av男人天堂| 欧美成人性爱视频免费观看| 亚洲欧美自拍偷拍| 国产乱伦亚洲| 老熟女乱子伦中文字幕一区二区| 乱操乱伦AV| 久99视频| 熟女突然公开看18禁影片| 国产精品探花色| 日韩一级二级三级免费看完整版| 熟妇熟女一区二区三区| 伊人麻豆传媒| 亚洲高潮影院| 清纯唯美综合亚洲| 97视频在线观看网站| 国产妇女精品视频青青草| 午夜福利久久久噜久噜久久综合 | 操逼无毒无码免费视频| 日本最新1区2区3区| 中出789在线视频| 超碰久久中文| 中文字幕丝袜美腿| 自拍丝袜美腿人妻| 国产肏屁眼视频| 欧美久久婷婷| 五月开心久久AV官网| 欧美后入视频| 蜜臀久久99精品久久久久久成人小说 | 最新中文字幕精品在线| 色欲日韩欧美在线一区| 在线看免费无码AV天堂的| 人人爱人人操人人性| 亚洲日韩美女中文字幕乱| 日美免费黄片| 九九这里只有精品| 青青欧洲黑| 色拍偷亚洲| 亚洲文学偷乱拍啪啪啪啪| 亚洲 国产 精品一区| 极品美女福利在线观看| www.狠狠| 精品美女在线视频| 热热色色综合| 日韩兔费看黄片| 国产 亚洲 一二三四| 国模不卡| 五月色网| 亚洲欧洲日产国产综合网| 亚洲熟久久| 酒色综合网| 色屁屁影院www国产| 国产成人免费观看在线视频| 色色色热| 韩日巨乳美女免费视频在线观看| 色婷婷A V一二三四区麻豆综合| 97操碰| 看日韩黄片| 免费簧片在线观看| 精品妇女一区二区三区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 2024年最新色情网站在线观看| 青娱乐淫乱1314| 日本日逼高清| AV天堂电影网| 99re黄 | 91嫩草欧美| 精品人妻伦一区二区三区久久| 男同专区一区二区三区在线| 一级aaaaa欧美中文字幕录像片| 亚洲一区日韩| Aa东京男人的天堂| 国模无码人体一区二区三| 多乙久久久久久| 中文啪啪视频| 97中文字幕一区| 日韩精品在线放| 欧美v亚洲v日韩v最新在线二区| 天无日色综合| www.久久超碰| 日韩欧美午夜视频在线| 日本97久久久精品| 亚洲全色网| 精品久久人妻成人网| 中文字幕亚洲欧美在线不卡| 999精品乱码| 国产亚洲色婷婷久久99精品91葵花宝典| 久久久工口| 97中文综合| 欧美日产国产在线成人第一区| 国产后入精品| 色香欲影| 蜜臀av在线播放一区二区三区| 91/欧美| 欧美福利视频啊啊啊啊| 成人资源中文字幕在线观看天天| AV中文字幕三四五| 久久综合激情| 中文字幕AV中出| 精品一二三区久久AAA片| 亚洲欧美日产国产91毛片| 国产精品久久久久久久久久久久| 97色婷| 少妇九九九九| 九九RE视频在线精品| 男人的亚洲天堂| 偷拍亚洲熟女视频播放| 10000部十八禁看电影| 婷婷久月| 精品久久99| 欧美色女人| 亚洲色图超碰在线| 亚洲日韩在线a不卡99精品| 国产四虎在线| 日本人妻中文字幕 | 秋霞 色色| 私色综合网| 啊啊啊久久| 天天日日舔舔| 日韩无码黄色片| 日产123区精品免费观看| 色色色色日本| 夜夜精品视频一区二区| 97人人草| 翔田千里爆乳巨臀无码| 涩涩久久精品| 亚洲经典啪啪| 欧美亚洲自拍另类人妻| 国产精品3| 日本三级黄页| 五月婷婷丁香六月丁香| 综合激情一一91| 99激情视频| 亚洲伊人久久综合97| 三上制服丝AV| 人人爱人人操人人性| 欧美日韩狠狠爱| 毛片中心9视频99| 91啦人妻| 日韩欧美~中文字| www超碰| yw尤物av无码点击进入麻豆| 欧美少妇高潮久久91| 欧美日韩性爱视屏免费看了| 亚洲天天综合| 一本色道久久综合狠狠操| 久久午夜伦| 波多野结衣被操50分钟免费视频 | 日韩综合无码色欲vv| 色97国产69香蕉| 国语人妻精彩刺激| 国产激情av女片自拍| 久久久夜夜夜| 青青草中出视频| 精品女人999| 国产理论视频在线播放| 97视频免费在线观看| 9精品久久| 九九碰九九爱97超碰| 影视综合无码少妇| 午夜男女爽爽大片免费观看| 国产青青综合伊人| 最新精品久久蜜桃 | 六十路日本| 影音先锋日本乱伦| 中文字幕在线免费观看| 九九九九97| 麻豆久久久久久久久丝袜| 在线视频日韩欧美国产| 啪啪视频亚洲第一| 人妻精品视频一区二区三区| 亚洲精品欧洲色| 亚精品无码毛片一区二区三区| 女色视频社区| 这里有精品| 亚洲精品成人激情在线| 大香网站| 99久久久无码国产精品性男| 小视频国产| 最新亚洲黄色免费电影| 国产在线播放成人免费| 精品九九九九九九| 国产精品天堂| 久久久蜜桃臀无码视频| 欧美色九九| 天天操熟妇| 99热国产| 秘书高跟黑色丝袜国产91在线| 中文字幕女同在线| 嗯嗯啊啊好疼| 麻豆一区在线| 欧美熟女丝袜| 啊啊啊久久久视频| 加勒比色综合| 超碰天天去日穴| 丰满欧美放荡少妇在线| 亚洲精品蜜桃久久久| 亚洲se电影| 日韩欧美麻豆 | 天天插夜夜操| 强奸乱伦日韩AV| 操高情无码| 激情小说成人日本无码一| av在线不卡一区二区三区| 久久亚洲欧美中文字幕国语| 草草影院最新网址| 亚洲欧美中文日韩视频中国语| 国产情侣自拍在线播放| 96AV精品| 日han少妇无码| 欧日韩在线观看| 日韩不卡一二三四| 97欧美日韩精品| 欧美天天干| 久久永久无码人妻视频| 国产亚洲精品无码三区| 乱伦av国产| 熟女人妻一区二区三区| 口爆综合网| 欧美美女在线高潮999| 精品乱码久久久久| 欧美三四五区| 日韩性爱一级片| 成 人片 黄色大片| 欧美性爱五月天| 操狠狠| 99色日| 不卡六六在线91| 啊啊啊啊啊啊好多水| 浓厚中出中文字幕在线| 国产精品免费视频人成| 欧美三级一级| 日韩特一级久久| 东京热天堂网| 无码WWW免费视频网站| www.久久99| 人人摸人人干| 蜜臀久久99精品久久久久久成人小说| 精品久久久久久AV无码| 91chinese在线| 蜜臀99999| 美女黄色91| 日韩欧洲操屄视频| 一区二区激情国产熟女| 成人黄页| 精品亚洲成人免费在线| 色婷婷小说| 亚洲精品一卡二卡三卡福利视频网站| 精品欧美乱码久| 丁香五月综合| 亚洲一本色码中文字幕| 国产毛片毛片4p懂色| 强免费黄色网址| 青青草五月天| 国产精品精品系列在线观看| 99性爱| 亚洲中文字幕一区| 日本午夜操逼| 亚洲一二三| 国产午夜精品理论片一二三区区| 婷婷五月天在线观看| 性交一区二区在线播放| 九九九精品成人免费视频小说| 婷婷五月综合在线| 呻吟 欧美 日本 中出| 国产色综合亚洲色综合吹潮| 天天摸天天插天天日| 97亚洲综合在线| 日韩精品永久在线观看| 色臀aV| 精品日韩中文在线| 青女在线| 日韩精品人妻一| 2017大香蕉国产精品久久| 91搡老女人老妇女老熟女歌词翻译| 青娱乐日韩无码| 99热99re6国产在线播放| 热久久国产| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 日本色婷婷| 中日韩久久久免费看| 333kkkk·亚洲com久久| 免费97视频| 青娱乐国产盛宴视频| 亚州日韩97| 日本精品无码三级网站| 久久精品电影| 日本女人操逼| 国内伊人久久久久久网站视频| 久久久久久久人妻| 国产成人在线观看网址| 亚洲少妇诱惑| 国产一区自拍欧美日韩| 操淫穴亚洲五月丁香| 91天堂色男人的天堂| 久久9精品网站| 亚洲综合中文字幕有码| 变态综合色| 好淫网一二三视区| 91影库| 91国产丝袜美女| 97人人干| 国产一级舔足在线观看| 人妻少妇精品久久久| 老司机射| 欧美日韩1234| 女人的天堂大香蕉网| 欧美激情中文字幕另类小说| 男女国产精品| 久久鲁夜| 人人扣人人操| 亚洲自拍偷拍视频在线| 校园春色宗合网| 欧美日韩91| 日本东京热久久久电影| 欧美综合狠| 亚洲美乱| 人妻一区二区三区四区视频| 超碰9 7女人| 人妻熟妇久草在线| 大香蕉中文在线| 在线观看无码三级少妇| 思思热国产高清| 夜夜操二区| 嗯~啊~快点 死我视频| 亚洲欧洲综合视频在线| 黄片免费久久久久久久| 亚洲视频中文一区| 国产丝袜一区二区三区| 日韩性爱视频免费在线| 中文字幕丰满人妻日本| 欧美日韩97在线| 96精品在线| 欧美aaaaaaa| 啊啊啊啊啊啊在线| 色男人色天堂东京热| 337p大胆噜噜噜噜噜91Av| 日韩av在线精品观看| 四虎免费视频| 中文字幕精品乱码| 精品免费一区二区三区在线亚洲人成| 人人透人人操| 精品人妻一区| 性饥渴少妇av无码毛片| 夜夜爽夜夜操| 欧美亚洲清纯| 鸥美极品| 亚洲日韩熟女人妻高清在线| 97精品国产97久久久久久户外免费| 91天堂色男人的天堂| 日韩免费三级黄片电影| 国产97亚洲| 九九99精品视频在线观看| 99草精| 黄色性爱网网| 最新三级网址| 1级午夜影院费免区| 青草综合| 天天综合官网| 综合亚洲欧美| 97这里有精品| 精品美女少妇一区二区| 欧美一品道| www.AV有限公司一区| 国产农村妇女精品一| 97国产精品国| 久草久热| 久久久久久久久久久久久久久乱码| 丝袜大香蕉| 国产又爽又黄| 色婷婷五月天| 长长久久免费视频| 综合网欧美在线| 免费观看的av| 91N欧美| 97超碰国产亚洲精品资源| 日日夜夜天天| 国产激情久久| 人妻熟女字幕一区二区| 韩国久久97| 久久一区无码| 色老牛| 日日日大屁股骚女人精品| 夜夜 中文视频rt| 亚洲综合骚逼| 一本大道青青| 亚洲一区二区AV| 亚洲天堂精品日韩电影| 粉嫩av平台| 都市久久精品激情亚洲| 盗摄女人妻在线| 欧美成人一区二区三区在线播放| 欧美日韩91| 久热伊人99re| 国产性爱欧美性爱在线| 美女上床网站| 又大又大又大又粗爽高潮观看| 四虎国产精品永久在线囯在线| 69av一区二区三区| 久久久久久久久久久97| 日本一片一区| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 综合激情一一91| 97鸡把在线视频| 亚洲伊人成综合成人网| 日韩欧美aⅴ综合网站发布| 强奸乱伦αv片| 久久女人一区二区三区| 久久国99999| 黄久久| 国产精品高潮久久久无码| 无码人妻精品一区二区中文| 色人久久| 欧美999999| 99999国产精品| 操逼片国产| 九九这里只有精品| 亚洲精品蜜桃久久久久久久| 欧美九九九| 亚洲 欧美 偷拍 唯美| 天天干,夜夜爽| 裸体1区| 97精品久久| 日本性爱少妇| 久久成年精品| 少妇久久久久久久久| 国产亚洲精品美女久久久m| 日韩精品一区二区三区四虎影视| 不卡一区视频| 一区二区三区免费视频入口| 五月天婷婷色| 91国产丝袜美女| 欧美性天天| 国产尹人在线视频免费| 人妻 制服 日韩 中文 在线| 久草在线| 久热99| 尤物视频偷拍免费| 性爱免费视频成人| 校园春色欧美色图| 九热中文字幕| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 超碰超碰超碰超碰的大鸡吧操黑丝袜| 厕所偷拍在线| 亚洲小说视频| 精品国产精品一区二区| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | AV一区观看| 亚洲AV免费在线观看| 男人天堂新| 激情色色| 深爱伊人影院| 成人av免费观看| 另类欧美| 插欧洲美女欧美精品| 搡老熟女老女人老熟妇免费视频| 成人五月天丁香激情综合| 日本操逼aaaaa| 91neishe| 久久狠狠色噜噜狠狠狠狠97| 久久久蜜桃一区二区三区| 亚洲欧洲日韩中文字幕一区| 亚洲最大网站av| wuyechaopeng| 91人妻Pr| 久久精品综合| 亚洲综合在线视频| 青娱乐妇女性生活| www四虎| 国产福利一区二| 国产福利夜| 中文字幕一区二区免费在线| a人片中文字幕一区二区| 国产免a费看黄片在线| 久草男人天堂| 欧美一区二区观看在线| 91超碰在线观看| 色色色热| 天天视频黄| 天堂在线一区二区| 天天天天天天天天天天干美女| 亚洲男人天堂视频| 久热超碰| 日韩免费高清大片在线| 加勒比AV天堂| 亚洲精品日日夜夜52| 91爱啪| 人妻在线中出视频| 性色av蜜臀av色欲aV| 26UUU欧美激情一区二区| 日本最新免费韩国1区2区视频播放| 亚洲人妻在线一区| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 中日无幕一二三四区| 91视频伊人| 黑人粗大V S日韩女优视频| 色婷婷成人| 襙一襙| 欧美综合色综合| 综合日本女人伊人| 久草网站免费在线观看| 久久中文字幕在线观看| 国产偷仑| 99色热| 影音先锋视频在线| 日本女人久久久| 国产亚洲精品美女| 6080yy午夜理论三级一区二区三区无码| 香伊人在线| 美女91网| 九九九九精品一区| 中文一区二区婷婷视频| 日本性爱网址| 欧美大香蕉久| 午夜男人的天堂| 精品成人女人久久| 夜夜操夜夜爽夜夜高潮| 久久露脸国产老熟女| 91人精品妻入口| 清纯唯美综合| 男人的天堂日韩| 色老汉色| 96AV精品| 色色五月婷婷| 日韩AC| 亚洲国产尤物yw在线观看| 久久青青草在线视频| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 丁香六月激情综合| 免费一级特黄特色大片在线观看看| 天天肏天天干| 欧美色97| 208天天久久九九九| 国厂麻豆77q4| 天天弄欧美| 人妻夜夜爽天天爽麻豆三区网站 | 天天操天天看| 伊人久久亚洲中文字幕不卡| 熟女色图在线| 嗯嗯啊啊视频在线看| 91在线观看,天天综合| 欧美中文综合| 日韩人妻无码不卡网站| 久久久久96| 另类专区加勒比| jiujiujiujingpin| 91处女视频在线观看| 啊好爽受不了无码| 国产视频三区四区| 女同亚洲欧美一二三区久久电影| 99久视频| 日日夜夜天天| 亚洲.欧美.丝袜.中文.综合| 国产亚洲综合欧美一区| 成人性爱电影一区二区| 亚洲最大网站av| 欧美日韩性爱操大逼| 久艹视频在线| 影音先锋每日最新资源在线观看 | 中文字幕第23区| 大香蕉日韩欧美| 久久性爱城| 亚洲免费在线探花| 国产高清免费不卡av| 亚洲密乳AV| 亚洲精品性爱片| 亚洲欧美综合区自拍另类| 亚洲日韩视频二区| 2019久久久久久久久福利| 日韩无码a片| 成人乱码一区二区三少妇| 亚欧Av| 色噜噜综合网| 嗯嗯嗯嗯啊啊啊好紧好大| 伊人国产av| 韩日精品福利视频一区不卡在线免 | 9久久美女首页| 鸥美极品| 加勒比中文av| .精品人妻一区二区三| 天天干人人干天天日97| 欧亚在线视频| 九久9热| 小骚逼被操的爽不爽| 国模久久在线| 欧美天天射| 成全在线观看免费观看| 毛片电影一区二区三区| 中文字幕国产精品1区| 日韩三级在线观看mp4| 亚洲欧洲激情| 色欧美综合| 伊人久久综合精品欧美| 天天干天天干天天| 中文字幕人妻色偷偷久久皮 | 激情专区综合| 国产白领连续中出在线观看| 男人精品天堂一区| 99re99| 欧美十八禁导航成人| 色婷婷电影网| 国产熟女二区| 97国产人人| 午夜欧美女人操逼| 亚洲不卡av在线| 亚洲第一男人天堂| 精品国产乱码| 成人婷婷丁香| 风骚少妇视频中文字幕| 97爱爱| 丁香九月激情啪| 亚洲激情色片| 东北女人操逼| 操人91| 97视频在线视频| 91AV入口| 99国产人成精品| 日韩精品系列| 蜜乳Av成人片网站| 九九玖玖精品| 在线视频资源| 亚洲超碰AV| 东京热av男人的天堂| 久久啊啊| 婷婷五月天激情四射| 在线情色电影 91大| 韩国三级一线观看久| 9 9精品一区二区三区| 天堂精品| japan日本高清乱xxxx| 裸模AV女优| 综合另类| 久热色情精品| 操东北女人| 97电影院超碰| 欧美97网| 久热超碰| 91综合网在线| 最新欧洲欧美日本激情网站| 亚洲激情深爱文学小说网站| 人干人人人操人人摸| 四虎免费看黄| 久久久久久久伊人精品| 学生妹天天看| 少妇高潮特黄A片| 天天摸夜夜操视频| 国产成人午夜视频网址| 日韩欧美被操黄免费观看| 四虎国产精品永久在线囯在线| 插入综合网| 亚洲国产综合图区中文字幕| 亚洲精品 大香蕉| 91美女小视频| 国产熟女少妇一区| 2017大香蕉| 一区二区三区国产精产| 青娱乐福利99| 欧美在线55555| 国产99精品一区二区三区免费| 啊啊啊不要啊啊受不了了视频在线| 91精品亚洲内射孕妇| 久久国模av| 国产91精品福利在线| 国产风韵犹存熟妇三区| 蜜乳av首页| 天天日天天看| 亚洲91av| 日韩中文字幕精品一区在线| 亚洲色情在线影视| 亚洲欧美激情在线视频| 中文字幕一区二区无码成人| 骚货人妻偷情自拍在线视频| 人人么人人操| 久草草一二三四区久久| 国产AV高清AV无码| 欧美亚洲91| 久久精9| 国产女生在线| 亚洲加勒比久久日本道| 欧美在线大香蕉| 国产视频不卡在线观看| 97免费在线观看| 亚洲吊色| 色婷婷亚洲婷婷| 国产精品一区二区手机看片| 曰本91情色| 九九RE视频在线精品| 97欧美| 欧美韩国你懂得在线 | 日本午夜福利影院| 日韩性爱长视频免费| 狠狠亚洲| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 五月丁香啪啪啪| 日本高清视频xxxx| 99热在线只有精品| 国产农村妇女精品一二区| 免费黄色A片| 国产又粗又大硬免费色网视频| 4虎在线视频| 精品91摸| 激情五月天丁香社区| 青娱乐淫乱1314| 91无码人妻精品一区二区三区蜜桃| 欧美亚综合色图| 国产精品视频精品一二| 好色综合| 欧美超碰人妻97| 九九99精品视频在线观看| 日韩免费簧片| 91欧| 搡老女人老91妇女熟女| 超碰在线974| 激情久久久| 日本色色色色色视频| 亚洲āv网址在线观看| 亚州欧美在线| 91无码人妻| 天美一二三在线观看Av| 丝袜 亚洲 偷拍| 自慰白浆在线观看| 天天操夜夜操狠很操| 精品99999| 超碰久超碰久| 另类欧美| 色哟哟av网址| 欧美中文狠| 图色综合网| 大香蕉碰| 久久午夜伦| 久久99久久99久久99人受| 亚洲av无线观看| 国产一进一出视频网站| 亚洲欧美一区二区网址| 欧美人妻少妇| 久久岛国| 麻豆亚洲AV成人无码久久精品| 青青草中出视频| www.av不卡中文字幕| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 十八禁视频网站| 日本欧美亚洲高清在线看| 亚洲h片在线免费观看| 国产精品不卡高清在线观看| 欧美精品黑人猛交高潮| 亚洲男人天堂网站| 欧美综合天堂| 熟妇一区二区| 丰满人妻一区二区三区免费| 亚洲深夜福利| 伊人麻豆传媒| 国产97色在线 | 亚洲| 人妻美腿丝袜日韩| 色综91| 96AV精品| 亚洲一二三精品久久网 | 一个人在线看的黄色电影网站| 情侣开房子拍 日韩无码 女的很漂亮| 五月天综合| 殴美牲| 欧美日韩免费专区在线| 中美日韩毛片| 情色五月天久久久| 免费人人搞97| 粉嫩小泬久久久一区二区| 丝袜狂射91| 亚洲亚洲亚洲天堂天堂| 色噜噜人妻av中文字幕| 国产一区二区在线看| 友优传媒精品在线一区二区| 国产97在线视频| 成全动漫视频观看免费下载| 国产一区二区三区白丝| 亚洲αv一区二区三区| 在线观看黄色电话| 天天日夜夜爽| 看黑人AV不卡| 都市激情人妻一区二区青青操视频| 操91| 福利视频网站| 国产一区二区在线播放量| 欧美,日韩综合久久| 91free福利| 亚洲精品丝袜| 久久精品高清无码一区| 亚洲小说视频| 韩三级a视频在线观看| 欧美性爱一级操| 亚洲国产精品久久久久久久久久| 一区二区三区国产精产| 97jingpin| 国产女人视频三四五区| 国产熟女精品一区二区| A片大香蕉在线| 欧美综合亚洲| 亚洲精品电影| 69少妇一区二区| 思思热免费视频观看| 私色综合网| 欧美激情久久久久| 欧亚日韩中文在线| 91久久免费视频互動交流| 亚洲啪AⅤ永久无码| 在线视频97| 国产传媒操逼视频| 熟妇人妻精品一区二区视频色欲| 天天α片| 蜜汁欧美| 国产一区二区三区视频在线看| 六月婷婷激情| 亚洲999综合| 国产在线观看一区二区三区| 国产精品亚洲一区二区三区四区| 91九色丨国产丨爆乳| 91欧美少妇| 国产精品美女在线一区| 亚洲18禁| 青女偷拍网| 亚洲高清无码在线桃色| 嗯嗯啊啊操死我| 天天夜夜rb| 久久精品国产亚洲AV无码电影| 91 国产丝袜在线放观看| 超碰导航97| 日人妻视频91| 国产欧美日韩臀| 91丝袜美女国产| 91男同| 免费看黄片现成| 国产精品青青草| 九九热精品视频六| 久久‘黄片视频| 另类视频在线| 99久久精品无码一区二区毛片免费 | 色官网色综合| 欧美亚洲一区二区久久久婷精品大包诱| 欧美激情内射| 91GD.COM| 久久成人东京热人妻| 最新三级网址| www.AV有限公司一区| 五月天我淫我色av| 暖暖精品二区三区观看| 天天爽天天操啊啊啊| 超碰在线人妻| 午夜啊啊| 99操碰| 东北女人高潮视频| 日韩人妻无码专区| 亚洲狠狠入| 国产精品成人无码av| 少好三P| 亚洲欧洲国产综合av| 伊人aaa| 99精品视频在线观看免费| 爱爱久久| 国产操偷| 色香网| 丰满人妻一区二区三区| 97超碰欧美精品| 红杏大香蕉| 91亚洲网| 色999偷自拍拍| 岛国大片国产| 91n免费处女| 激情久久久| 91美女在线| 操九九九九九九| 日本韩国国产精品一区| 免费久久9999| 亚洲AV操| 欧美日韩不卡传媒| 啊啊啊啊嗯嗯嗯用力好爽| 97亚洲精品| 神马久久久久久久久久久久| 国产亚洲女v在线观看| 91九色丰满高潮| 日本在线一二| 精品欧美不卡在线播放| 亚洲限制级| 热99这里只有精品| 国产AV中文| 欧美黄色图片| aaaa少妇高潮大片| 啊啊啊慢点| 色婷婷成人综合| 日本一区二区成人在线| 欧洲综合色| 欧洲精品在线播放| 伊人色综合网电影| 五月天亚洲色图| 国产精品天干天干综合网麻豆| 欧美黄片视频在线观看免费| 丰满人妻一区二区三区| 在线黄色污污网站| 久综合网| 亚洲欧洲日本精品中文a∨| 亚洲欧美日韩中文久久自慰| 丁香五月av| 园内精品自拍视频在线播放| 东北女人性交| 欧美精品双插| 色色色五月婷婷| 日韩熟女操逼| 久久线上视频免费看| 久操操| 青青草日韩无码| 亚洲精品一二区| 天天噜| 九九热午夜欧亚国产视频| 精品无码一区二区| 天天干夜夜操网| 青娱乐老司机视频| 婷婷人妻激情| 欧美韩日精品资源| 91久久精品国产| 国产美女高潮叫床视频| 色逼综合| 国人欧美精品一区二区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 艳尻美人妻| 亚洲黄色网址视频| 夜草欧美| 白丝被操91| www.夜夜操| 97欧美色资源| 性爱视频无打码在线观看| 韩国轻伦国内自拍一区| 偷拍自拍在线视频观看| 欧美激情综合| 国产中午字一暮区| 大香蕉伊在线久草麻豆天堂故事| 日韩成人综合网| 亚洲综合另类小说色区亚洲成av人片在www | 日韩在线视频1234| 色色色色电影网| 黄片免费看的| 久久性爱视频99| 欧美美女视频| 插插综合网天天影视网| 九九国产热| 亚洲欧洲无码97久久精品| 亚洲国产精品久久久久婷婷青年| 99热婷婷| 岛国成人av在线播放网址| 天堂中文日本在线观看| 亚洲国产奇米影视久久| 欧美精品23| 影音先锋每日最新资源在线观看 | 日韩中文字幕视频在线观看| 人妻中文字幕精品无码| 国产精品ⅴ无码大片在线看.| 高清有码一区二区| 极品国产内射| 国产女大学生AV| 久久久少妇| 精品九九九| 国产女大学生AV| 91社区伊人| 亚洲av性爱电影| 国产精品久久久吖| 人妻三级在线中文字幕| 夜夜爽夜夜| 中文字幕欧美丝袜07资源| 少妇无码999| 亚州男人天堂| 男人天堂网站| 欧美性爱精品七区| 日韩av电影成人在线| 自拍偷拍亚洲熟女妇人精品| 五月开心久久AV官网| 欧美色图片色哟哟| 亚洲大色鬼| 五月天九九日国产精品一区二区三区| 精吧天堂| 传媒在线观看一区二区三区| 国产999精品久久久|