99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

SpringBoot+Vue文物征集管理系統(tǒng):從需求到部署的完整實(shí)踐

SpringBoot+Vue文物征集管理系統(tǒng):從需求到部署的完整實(shí)踐 一個(gè)“文物征集管理系統(tǒng)”聽(tīng)起來(lái)好像很小眾但放在畢設(shè)和課設(shè)的背景下這其實(shí)是一個(gè)非常經(jīng)典、非常聰明的選題。它表面上是一個(gè)面向“紅色革命文物”的業(yè)務(wù)管理系統(tǒng)實(shí)際上內(nèi)核是一個(gè)標(biāo)準(zhǔn)的信息管理平臺(tái)有用戶權(quán)限、有業(yè)務(wù)流程流轉(zhuǎn)、有文件上傳、有數(shù)據(jù)統(tǒng)計(jì)難度適中業(yè)務(wù)故事也好講。很多同學(xué)拿到類似的源碼要么只會(huì)對(duì)著教程跑起來(lái)要么不知道怎么在答辯時(shí)講清楚更別說(shuō)萬(wàn)一遇到問(wèn)題如何排查。這篇文章我就以這套 SpringBoot Vue 的 MVC 模式管理系統(tǒng)為例從頭到尾拆一遍它解決什么問(wèn)題、技術(shù)架構(gòu)怎么選、核心代碼怎么寫、數(shù)據(jù)庫(kù)怎么建、怎么從零跑起來(lái)以及我在實(shí)際調(diào)試中踩過(guò)的一些坑。先說(shuō)結(jié)論這套東西你把它吃透了不只是完成一個(gè)畢設(shè)而是真正理解了企業(yè)級(jí)前后端分離開(kāi)發(fā)的基本套路。1. 需求先想清楚再動(dòng)手這個(gè)系統(tǒng)到底要管什么很多同學(xué)拿到項(xiàng)目第一件事就是打開(kāi) IDEA 開(kāi)始跑代碼其實(shí)這是比較低效的做法。先搞清楚業(yè)務(wù)再看代碼事半功倍。1.1 別被“文物征集”四個(gè)字勸退拆解核心業(yè)務(wù)紅色革命文物征集系統(tǒng)的核心業(yè)務(wù)說(shuō)白了就是一件事把散落在民間的文物線索和實(shí)物征集信息系統(tǒng)化地管起來(lái)。傳統(tǒng)的線下流程是發(fā)布征集公告 - 群眾來(lái)電來(lái)信提供線索 - 工作人員登記紙質(zhì)信息 - 專家鑒定審核 - 入庫(kù)登記 - 建立臺(tái)賬。這個(gè)過(guò)程里問(wèn)題很多紙質(zhì)表格容易丟、想查一條記錄翻半天檔案柜、審核進(jìn)度誰(shuí)也不知道、統(tǒng)計(jì)本月征集了多少文物全靠人工數(shù)。而管理系統(tǒng)要做的就是把這條鏈路搬到線上。我建議你把整個(gè)系統(tǒng)抽象成一條“征集業(yè)務(wù)線”所有功能都圍繞這條線展開(kāi)線索登記群眾或者征集員錄入文物基本信息名稱、年代、類別、來(lái)源、保存現(xiàn)狀、征集方式等。材料附件上傳文物照片、相關(guān)證明文件。審核流轉(zhuǎn)管理員或者專家對(duì)征集信息進(jìn)行審核可能通過(guò)、可能退回補(bǔ)充材料。入庫(kù)登記審核通過(guò)后文物正式進(jìn)入館藏臺(tái)賬生成唯一編號(hào)。統(tǒng)計(jì)展示按年代、類別、征集狀態(tài)等維度做統(tǒng)計(jì)讓管理者掌握征集進(jìn)度。理解了這條線你再看代碼里的實(shí)體類、數(shù)據(jù)庫(kù)表、接口設(shè)計(jì)就會(huì)覺(jué)得“原來(lái)如此”而不是“這是什么鬼”。1.2 功能模塊劃分與權(quán)限設(shè)計(jì)系統(tǒng)里不是所有人都能干所有事的這就是權(quán)限設(shè)計(jì)的由來(lái)。一個(gè)完整的征集管理系統(tǒng)至少要考慮三類角色系統(tǒng)管理員擁有全部權(quán)限包括用戶管理、數(shù)據(jù)字典維護(hù)、審核管理、統(tǒng)計(jì)查看。征集員/錄入員可以新增征集信息、錄入文物資料、維護(hù)自己創(chuàng)建的記錄。專家/審核員主要負(fù)責(zé)審核征集線索和文物信息給出審核意見(jiàn)。有些系統(tǒng)里還會(huì)把“普通社會(huì)公眾”角色放進(jìn)來(lái)用于在線提交征集線索這就是另一個(gè)典型的業(yè)務(wù)場(chǎng)景了。模塊和權(quán)限的合理劃分是你答辯時(shí)可以重點(diǎn)講的一個(gè)亮點(diǎn)。比如“為什么同一個(gè)登錄接口要返回不同的菜單權(quán)限”“為什么征集的文物信息要用狀態(tài)字段而不是直接刪除”這些都是體現(xiàn)你對(duì)系統(tǒng)思考深度的點(diǎn)。權(quán)限設(shè)計(jì)做得好這個(gè)系統(tǒng)的框架感就出來(lái)了后面加功能也只是在模塊里堆接口而已。2. 技術(shù)選型解析SpringBoot Vue MVC 這個(gè)組合為什么“穩(wěn)”選技術(shù)棧不要追求新奇要追求“能跑、好講、有問(wèn)題能搜到答案”。SpringBoot Vue 這個(gè)組合可以說(shuō)是當(dāng)下Java Web前后端分離項(xiàng)目的“標(biāo)準(zhǔn)答案”。2.1 后端SpringBoot 到底幫我們省了哪些事SpringBoot 是一個(gè)建立在 Spring 框架之上的快速開(kāi)發(fā)腳手架。沒(méi)有它的時(shí)候你要配置 SpringMVC、配置 Tomcat、配置 MyBatis 的 SqlSessionFactory、寫一大堆 XML。有了 SpringBoot 之后很多配置都變成了“約定大于配置”你只需要引入依賴寫上application.yml就能快速啟動(dòng)一個(gè) Web 服務(wù)。在這套系統(tǒng)里SpringBoot 的核心作用有幾個(gè)內(nèi)嵌 Tomcat打包成 jar直接java -jar就能啟動(dòng)不用單獨(dú)裝 Tomcat 服務(wù)器。Starter 機(jī)制引入spring-boot-starter-web就完成了 Web 環(huán)境搭建引入mybatis-plus-boot-starter就有了數(shù)據(jù)庫(kù)操作能力。統(tǒng)一配置數(shù)據(jù)庫(kù)連接、文件上傳大小、端口號(hào)等都在application.yml里管理改配置不用重編譯。還有一個(gè)很實(shí)用的點(diǎn)是SpringBoot 項(xiàng)目現(xiàn)在幾乎都配套 MyBatis-Plus 使用。它幫你封裝了單表的增刪改查不需要寫基礎(chǔ)的 SQL。比如你要按 ID 查一條文物信息只需要CulturalRelic relic culturalRelicMapper.selectById(id);連 SQL 都不用寫。對(duì)于這類業(yè)務(wù)相對(duì)標(biāo)準(zhǔn)化的管理系統(tǒng)來(lái)說(shuō)MyBatis-Plus 能減少大量低級(jí)重復(fù)勞動(dòng)你只需要把心思放在業(yè)務(wù)流程上。2.2 MVC 三層架構(gòu)在前后端分離項(xiàng)目里怎么落地項(xiàng)目標(biāo)題里有一個(gè)詞“MVC模式”這個(gè)是答辯的時(shí)候老師幾乎必問(wèn)的。MVC 不是前后端分離時(shí)代的專用概念但它依然適用于這種架構(gòu)。我們來(lái)說(shuō)清楚它在前后端分離里分別對(duì)應(yīng)什么。后端里的嚴(yán)格分層是這樣的Controller 層表現(xiàn)層只負(fù)責(zé)接收前端請(qǐng)求、解析參數(shù)、調(diào)用 Service、封裝返回結(jié)果。它不寫業(yè)務(wù)邏輯也不直接操作數(shù)據(jù)庫(kù)。一個(gè)干凈的 Controller 方法大概長(zhǎng)這樣RestController RequestMapping(/api/relic) public class CulturalRelicController { Resource private CulturalRelicService relicService; PostMapping(/add) public Result add(RequestBody CulturalRelicDTO dto) { return Result.success(relicService.addRelic(dto)); } }Service 層業(yè)務(wù)邏輯層這是整個(gè)系統(tǒng)的核心負(fù)責(zé)處理業(yè)務(wù)流程、做事務(wù)控制、調(diào)用數(shù)據(jù)層接口。判斷狀態(tài)、校驗(yàn)參數(shù)、組織數(shù)據(jù)都在這一層完成。Mapper/DAO 層數(shù)據(jù)訪問(wèn)層跟數(shù)據(jù)庫(kù)打交道。MyBatis-Plus 的 Mapper 接口繼承BaseMapperT后就自動(dòng)擁有單表的 CRUD 能力你需要關(guān)注的就是那些自定義的復(fù)雜 SQL 和分頁(yè)查詢。至于前端 Vue它本身是一個(gè) MVVM 框架Model-View-ViewModel但這里的“View”只負(fù)責(zé)渲染和交互并沒(méi)有承擔(dān)業(yè)務(wù)處理和數(shù)據(jù)庫(kù)操作的職責(zé)。所以整套系統(tǒng)的業(yè)務(wù)歸屬是清晰的Vue 管界面SpringBoot 的 Controller 管接口Service 管業(yè)務(wù)Mapper 管數(shù)據(jù)。這就是 MVC 思想在后端落地的方式。2.3 數(shù)據(jù)庫(kù)與中間件選型數(shù)據(jù)庫(kù)用的 MySQL 8.0這是目前最主流的選擇。跟這套系統(tǒng)配合你需要注意兩點(diǎn)驅(qū)動(dòng)選擇連接 URL 里建議寫成com.mysql.cj.jdbc.Driver這是 MySQL 8.x 的驅(qū)動(dòng)類老的com.mysql.jdbc.Driver在新版本下會(huì)報(bào)警告甚至報(bào)錯(cuò)。時(shí)區(qū)問(wèn)題URL 后面一定要加serverTimezoneAsia/Shanghai否則數(shù)據(jù)庫(kù)連接很容易報(bào)時(shí)區(qū)錯(cuò)誤。這套系統(tǒng)里基本不需要 Redis、消息隊(duì)列這類中間件除非你想給它加分比如用 Redis 存登錄 token、用 RabbitMQ 做提交征集信息后的異步通知?;A(chǔ)版本MySQL 足夠。3. 數(shù)據(jù)庫(kù)設(shè)計(jì)核心表結(jié)構(gòu)這樣建才合理數(shù)據(jù)庫(kù)設(shè)計(jì)決定了整個(gè)系統(tǒng)代碼好不好寫。很多同學(xué)在建表的時(shí)候喜歡一股腦把所有字段堆在一張表里后面做狀態(tài)流轉(zhuǎn)就各種別扭。這里我直接把核心表拆給你看。3.1 文物征集表業(yè)務(wù)主表怎么設(shè)計(jì)這張表是整個(gè)系統(tǒng)的核心建議叫cultural_relic字段設(shè)計(jì)要有業(yè)務(wù)導(dǎo)向思維。注意名稱、類別、年代這種是很多查詢條件的來(lái)源必須單獨(dú)設(shè)計(jì)字段。字段名類型注釋idbigint主鍵IDrelic_namevarchar(100)文物名稱relic_categoryvarchar(50)文物類別文件/實(shí)物/照片/其他relic_eravarchar(50)所屬年代source_typevarchar(20)征集方式捐贈(zèng)/移交/購(gòu)買/借展current_ownervarchar(50)當(dāng)前持有人contact_phonevarchar(20)聯(lián)系電話descriptiontext文物描述/歷史背景說(shuō)明statustinyint狀態(tài)0草稿/1待審核/2審核通過(guò)/3已入庫(kù)/4已退回submitter_idbigint提交人IDcreate_timedatetime創(chuàng)建時(shí)間update_timedatetime更新時(shí)間這里有幾個(gè)很容易踩的坑一種是“所有字段都用 varchar ”比如描述文本也用 varchar(255)后面存超過(guò) 255 字就報(bào)錯(cuò)了。描述類字段用text日期用datetime金額用decimal該用什么類型就用什么答辯的時(shí)候被問(wèn)到字段類型選擇這也是一個(gè)加分點(diǎn)。另一種是遺漏status狀態(tài)字段。沒(méi)有狀態(tài)字段你就無(wú)法區(qū)分一條記錄是“剛登記”還是“已經(jīng)入庫(kù)”審核流程的代碼根本寫不出來(lái)。狀態(tài)字段一定要預(yù)留而且建議用tinyint0 到 255 的取值空間足夠用十年。3.2 輔助表與狀態(tài)流轉(zhuǎn)除了主表至少還需要這幾張輔助表文物圖片表relic_image一張文物對(duì)應(yīng)多張圖片。字段就是id、relic_id、image_url、is_primary是否主圖。這就是一對(duì)多關(guān)系的標(biāo)準(zhǔn)建模方式前端展示圖片列表時(shí)直接WHERE relic_id ?查詢即可。審核記錄表audit_record記錄誰(shuí)在什么時(shí)間審核了哪條文物意見(jiàn)是什么。字段包含id、relic_id、auditor_id、audit_status、audit_comment、audit_time。用戶表sys_user賬戶、密碼、姓名、角色、手機(jī)號(hào)、創(chuàng)建時(shí)間。這是數(shù)據(jù)庫(kù)層面必須有的“家底”。建好這幾張表整個(gè)系統(tǒng)的數(shù)據(jù)流轉(zhuǎn)就順理成章了。文物征集的狀態(tài)流轉(zhuǎn)建議用狀態(tài)機(jī)思想來(lái)控制而不是隨隨便便在代碼里賦值草稿(0) - 待審核(1) - 審核通過(guò)(2) - 已入庫(kù)(3) \- 已退回(4) - 修改后重新提交 - 待審核(1)這個(gè)流轉(zhuǎn)關(guān)系畫(huà)成圖貼在論文里也是很有說(shuō)服力的。4. 后端核心功能實(shí)現(xiàn)細(xì)節(jié)4.1 文物征集登記接口DTO VO 分層不能省后端代碼的復(fù)雜度往往不是功能有多難而是代碼組織得好不好。比如一個(gè)“新增征集信息”的接口很多初學(xué)者會(huì)直接把實(shí)體類CulturalRelic作為接收參數(shù)PostMapping(/add) public Result add(RequestBody CulturalRelic relic) { ... }這在簡(jiǎn)單場(chǎng)景下沒(méi)什么問(wèn)題但在實(shí)際項(xiàng)目中前端傳來(lái)的字段和后端實(shí)體類的字段往往不是完全一致的。比如前端要傳一個(gè)“擬征集方式”而實(shí)體類里根本沒(méi)有這個(gè)字段或者前端會(huì)把“圖片列表”也一起傳過(guò)來(lái)你總不能指望實(shí)體類里包含一個(gè) List。更好的做法是給前端單獨(dú)定義一個(gè)接收對(duì)象 DTOData Transfer Object比如CulturalRelicDTOData public class CulturalRelicDTO { private String relicName; private String relicCategory; private String relicEra; private String sourceType; private String currentOwner; private String contactPhone; private String description; private ListString imageUrls; // 圖片地址列表 }然后在 Service 層把 DTO 轉(zhuǎn)換成實(shí)體類再保存到數(shù)據(jù)庫(kù)。同理接口返回給前端的數(shù)據(jù)最好也用 VOView Object包裝不要直接把數(shù)據(jù)庫(kù)實(shí)體暴露出去。這樣做的好處很明顯接口字段可控?cái)?shù)據(jù)庫(kù)表結(jié)構(gòu)調(diào)整不會(huì)影響前端聯(lián)調(diào)代碼也更規(guī)范。答辯時(shí)你可以說(shuō)“這是為了接口層與持久層解耦”這個(gè)話一出來(lái)檔次就上去了。4.2 審核流程事務(wù)控制是關(guān)鍵“審核”是征集系統(tǒng)里最核心的業(yè)務(wù)操作。審核通過(guò)一條文物記錄意味著兩件事同時(shí)發(fā)生修改cultural_relic表的status為“審核通過(guò)”。往audit_record表插入一條審核記錄。這兩個(gè)操作必須同時(shí)成功或者同時(shí)失敗。如果你只改了主表狀態(tài)插入審核記錄時(shí)數(shù)據(jù)庫(kù)報(bào)錯(cuò)了那么就會(huì)出現(xiàn)“狀態(tài)已經(jīng)變了但沒(méi)有任何審核記錄”的數(shù)據(jù)不一致問(wèn)題。解決辦法就是加事務(wù)Transactional(rollbackFor Exception.class) public Result audit(AuditDTO auditDTO) { // 1. 修改文物狀態(tài) CulturalRelic relic culturalRelicMapper.selectById(auditDTO.getRelicId()); relic.setStatus(auditDTO.getAuditStatus()); culturalRelicMapper.updateById(relic); // 2. 插入審核記錄 AuditRecord record new AuditRecord(); record.setRelicId(relic.getId()); record.setAuditorId(...); record.setAuditStatus(auditDTO.getAuditStatus()); record.setAuditComment(auditDTO.getAuditComment()); auditRecordMapper.insert(record); return Result.success(); }Transactional就是告訴 Spring這個(gè)方法里的所有數(shù)據(jù)庫(kù)操作要么都提交要么都回滾。這是 Java 后端開(kāi)發(fā)者必須掌握的基礎(chǔ)知識(shí)點(diǎn)也是所有業(yè)務(wù)系統(tǒng)里保護(hù)數(shù)據(jù)一致性的常規(guī)手段。4.3 文件圖片上傳別把文件存進(jìn)數(shù)據(jù)庫(kù)文物征集系統(tǒng)里圖片上傳是必不可少的功能。這里有一個(gè)最常見(jiàn)的新手誤區(qū)想都不想就把圖片轉(zhuǎn)成 Base64 字符串存進(jìn)數(shù)據(jù)庫(kù)或者干脆把圖片的二進(jìn)制數(shù)據(jù)用blob類型存進(jìn)去。這個(gè)方案在畢設(shè)項(xiàng)目里能跑但一旦圖片多了數(shù)據(jù)庫(kù)體積會(huì)膨脹得非??鞌?shù)據(jù)庫(kù)備份和查詢性能都會(huì)受拖累。正確的常規(guī)做法是文件存磁盤數(shù)據(jù)庫(kù)只存文件路徑。在 SpringBoot 中上傳文件的 Controller 方法可以這樣寫PostMapping(/upload) public Result upload(RequestParam(file) MultipartFile file) { // 1. 生成唯一文件名防止重名覆蓋 String originalFilename file.getOriginalFilename(); // 例如 xxx.jpg String fileSuffix originalFilename.substring(originalFilename.lastIndexOf(.)); String newFileName UUID.randomUUID().toString().replace(-, ) fileSuffix; // 2. 指定存儲(chǔ)目錄注意目錄要先創(chuàng)建 String dirPath D:/upload/relic/; File dir new File(dirPath); if (!dir.exists()) { dir.mkdirs(); } // 3. 保存文件 file.transferTo(new File(dirPath newFileName)); // 4. 返回可訪問(wèn)的 URL 地址 return Result.success(/files/relic/ newFileName); }這里要注意的是第 3 步的transferTo如果報(bào)錯(cuò)大概率是目錄沒(méi)有創(chuàng)建權(quán)限Linux 下尤為常見(jiàn)。文件存好之后還差一步讓 URL 能訪問(wèn)到它。在 SpringBoot 里你需要配置一個(gè)靜態(tài)資源映射把/files/**路徑映射到磁盤目錄Configuration public class WebMvcConfig implements WebMvcConfigurer { Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/files/**) .addResourceLocations(file:D:/upload/); } }這樣前端拿到/files/relic/xxx.jpg瀏覽器直接就能打開(kāi)圖片。4.4 統(tǒng)計(jì)報(bào)表的 SQL 寫法統(tǒng)計(jì)分析模塊在畢設(shè)里很受老師青睞因?yàn)樗苤苯芋w現(xiàn)“數(shù)據(jù)是有價(jià)值的”。常用的統(tǒng)計(jì)有兩個(gè)維度一是按文物類別統(tǒng)計(jì)看看征集到的文物里文件類、實(shí)物類、照片類各占多少。SQL 其實(shí)非常簡(jiǎn)單SELECT relic_category AS category, COUNT(*) AS count FROM cultural_relic WHERE status 3 GROUP BY relic_category;二是按年代統(tǒng)計(jì)比如解放戰(zhàn)爭(zhēng)時(shí)期、土地革命時(shí)期等同樣用 GROUP BY 就能完成。這種統(tǒng)計(jì)結(jié)果傳給前端之后配合 ECharts 畫(huà)餅圖、柱狀圖視覺(jué)效果非常好答辯的時(shí)候把圖一展示比空口說(shuō)“系統(tǒng)很完善”有用得多。5. 前端 Vue 實(shí)現(xiàn)要點(diǎn)5.1 項(xiàng)目初始化與路由設(shè)計(jì)前端的工程化開(kāi)發(fā)一定要從“創(chuàng)建一個(gè)標(biāo)準(zhǔn)項(xiàng)目”開(kāi)始。Vue 官方推薦的腳手架是 Vite但很多老教程用的是 Vue CLI也就是 webpack 方案。這里我的建議是如果你選 Vue 2用 Vue CLInpm install -g vue/cli然后vue create 項(xiàng)目名。如果你選 Vue 3直接用 Vitenpm create vitelatest 項(xiàng)目名 -- --template vue。無(wú)論哪種生成的項(xiàng)目骨架都是標(biāo)準(zhǔn)的 src 結(jié)構(gòu)。路由設(shè)計(jì)上一個(gè)典型的管理系統(tǒng)包含這些頁(yè)面/login 登錄頁(yè) /layout 主布局包含側(cè)邊欄和頂欄 ├── /dashboard 數(shù)據(jù)統(tǒng)計(jì)首頁(yè) ├── /relic/list 文物征集列表 ├── /relic/add 新增征集信息 ├── /relic/detail/:id 文物詳情 ├── /audit/list 審核管理 └── /user/list 用戶管理管理員可見(jiàn)路由配置要配合權(quán)限來(lái)做。最簡(jiǎn)單的做法是登錄時(shí)后端返回當(dāng)前用戶的角色前端根據(jù)角色動(dòng)態(tài)決定渲染哪些菜單和路由。比如“專家”角色就不顯示“用戶管理”菜單而“管理員”則全部可見(jiàn)。這個(gè)功能實(shí)現(xiàn)起來(lái)不難但非常能體現(xiàn)“系統(tǒng)的完整性”。5.2 列表頁(yè)與表單頁(yè)的實(shí)操要點(diǎn)列表展示是整個(gè)前端最常用的功能。我們可以用 Element UI 的el-table加上el-pagination來(lái)做分頁(yè)。關(guān)鍵點(diǎn)在于前端不要把后端返回的全量數(shù)據(jù)在內(nèi)存里做分頁(yè)應(yīng)該把當(dāng)前頁(yè)碼和第頁(yè)條數(shù)傳給后端由后端 SQL 分頁(yè)返回。頁(yè)面第一次加載時(shí)調(diào)用后端接口查詢第一頁(yè)數(shù)據(jù)this.loadData();async loadData() { const res await this.$http.get(/api/relic/list, { params: { pageNum: this.pageNum, pageSize: this.pageSize, relicName: this.searchForm.relicName, status: this.searchForm.status } }); this.tableData res.data.records; this.total res.data.total; }然后每次切換頁(yè)碼、修改搜索條件重新調(diào)用loadData()就行。這里有一個(gè)“經(jīng)典坑”很多同學(xué)在搜索時(shí)把搜索條件里的空字符串也傳給后端導(dǎo)致 SQL 里出現(xiàn)WHERE relic_name 的情況。穩(wěn)妥的做法是在后端接口里對(duì)空字符串做一次判斷或者用 MyBatis-Plus 的StringUtils.isNotBlank()配合 QueryWrapper 動(dòng)態(tài)拼接條件QueryWrapperCulturalRelic wrapper new QueryWrapper(); if (StringUtils.isNotBlank(relicName)) { wrapper.like(relic_name, relicName); }這樣搜索條件為空時(shí)就不會(huì)拼接 SQL避免了很多隱性問(wèn)題。5.3 axios 封裝與攔截器前端拿不到數(shù)據(jù)、接口報(bào)錯(cuò)很多時(shí)候不是后端問(wèn)題而是 axios 沒(méi)有封裝好。我建議項(xiàng)目一開(kāi)始就封裝一個(gè)統(tǒng)一的請(qǐng)求模塊給所有接口設(shè)置一個(gè) baseURL同時(shí)配置請(qǐng)求攔截器和響應(yīng)攔截器import axios from axios; import { Message } from element-ui; import router from ../router; const request axios.create({ baseURL: /api, timeout: 10000 }); // 請(qǐng)求攔截器附加 token request.interceptors.request.use(config { const token localStorage.getItem(token); if (token) { config.headers[Authorization] token; } return config; }); // 響應(yīng)攔截器統(tǒng)一處理錯(cuò)誤 request.interceptors.response.use( response { const res response.data; if (res.code ! 200) { Message.error(res.message || 請(qǐng)求失敗); return Promise.reject(new Error(res.message)); } return res; }, error { Message.error(網(wǎng)絡(luò)異常請(qǐng)稍后重試); return Promise.reject(error); } ); export default request;有了這個(gè)封裝前端每個(gè)頁(yè)面調(diào)用接口時(shí)只需要關(guān)心業(yè)務(wù)數(shù)據(jù)不需要每個(gè)地方都寫錯(cuò)誤處理。尤其是登錄功能里“token 過(guò)期自動(dòng)跳轉(zhuǎn)登錄頁(yè)”的邏輯在響應(yīng)攔截器里統(tǒng)一寫一次就夠了。這個(gè)模塊如果寫好了整個(gè)前端工程質(zhì)量立刻提升一個(gè)檔次。6. 從源碼到跑起來(lái)環(huán)境準(zhǔn)備與部署啟動(dòng)拿到源碼之后很多同學(xué)卡在最開(kāi)始的環(huán)境搭配上。這里給出一份經(jīng)過(guò)實(shí)測(cè)的版本組合能少走很多彎路。6.1 后端環(huán)境搭配與啟動(dòng)流程推薦這套組合JDK 1.8或者 JDK 11SpringBoot 2.x 都支持Maven 3.6MySQL 8.0SpringBoot 2.7.x不是 3.x3.x 基于 JDK17學(xué)生項(xiàng)目沒(méi)必要追新2.7 的資料最多遇到問(wèn)題最好搜啟動(dòng)前要做的三件事第一在 MySQL 里創(chuàng)建數(shù)據(jù)庫(kù)并導(dǎo)入 SQL 文件。一般源碼包里會(huì)有一個(gè).sql文件用 Navicat 或者命令行執(zhí)行mysql -u root -p relic_system.sql執(zhí)行前看一眼 SQL 文件里的建庫(kù)語(yǔ)句如果沒(méi)有CREATE DATABASE那就要自己先在 Navicat 里新建一個(gè)數(shù)據(jù)庫(kù)再導(dǎo)入。第二修改application.yml里的數(shù)據(jù)庫(kù)連接配置。把你的數(shù)據(jù)庫(kù)名、用戶名、密碼改對(duì)spring: datasource: url: jdbc:mysql://localhost:3306/relic_system?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8 username: root password: 你自己的密碼 driver-class-name: com.mysql.cj.jdbc.Driver這里特別強(qiáng)調(diào)useSSLfalse和serverTimezoneAsia/Shanghai。MySQL 8 默認(rèn)開(kāi)啟了 SSL本地開(kāi)發(fā)不需要不加這個(gè)參數(shù)可能報(bào)SSL connection error時(shí)區(qū)不配的話數(shù)據(jù)庫(kù)連接池初始化就可能直接報(bào)錯(cuò)。第三啟動(dòng)項(xiàng)目。在 IDEA 里打開(kāi)項(xiàng)目等待 Maven 依賴下載完成找到主啟動(dòng)類右鍵 Run。如果看到類似Tomcat started on port(s): 8080的日志說(shuō)明后端已經(jīng)起來(lái)了。6.2 前端環(huán)境配置與啟動(dòng)流程前端需要安裝 Node.js建議版本 14 或者 16。啟動(dòng)步驟npm install npm run servenpm install第一次執(zhí)行時(shí)可能很慢尤其是安裝 electron 那類跨平臺(tái)依賴。常規(guī)做法是改 registry 鏡像源npm config set registry https://registry.npmmirror.com然后再跑npm install速度會(huì)快很多。前端默認(rèn)端口是 8080后端的端口也是 8080就會(huì)沖突。處理方法有兩個(gè)推薦改前端的 devServer 端口比如改成 8081然后配置代理轉(zhuǎn)發(fā)到 8080。Vue CLI 項(xiàng)目在vue.config.js里配置代理module.exports { devServer: { port: 8081, proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } } };或者直接改后端端口為 8080 之外的端口如 9090。就算只用一套系統(tǒng)前端 8081 代理到后端 9090 也是可以的。順帶一提前端發(fā)請(qǐng)求時(shí)用/api/relic/list這種以/api開(kāi)頭的相對(duì)路徑代理會(huì)幫它轉(zhuǎn)發(fā)到后端就不會(huì)有跨域問(wèn)題了。如果你的前端直接寫http://localhost:8080/api/relic/list全路徑請(qǐng)求那必須讓后端開(kāi)啟跨域CrossOrigin否則瀏覽器會(huì)攔截響應(yīng)。7. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄這部分內(nèi)容真的是你在實(shí)際開(kāi)發(fā)和學(xué)習(xí)過(guò)程中大概率會(huì)遇到的比看一百遍教程都有用。我把這套系統(tǒng)里高頻故障整理成速查表。癥狀常見(jiàn)原因解決辦法后端啟動(dòng)時(shí)數(shù)據(jù)庫(kù)報(bào) SSL 連接錯(cuò)誤連接 URL 缺少useSSLfalse在application.yml的 url 里加上useSSLfalse時(shí)區(qū)報(bào)錯(cuò)The server time zone value連接 URL 缺少serverTimezone加上serverTimezoneAsia/Shanghai前端請(qǐng)求后端接口 404代理沒(méi)配好或請(qǐng)求路徑不對(duì)檢查vue.config.js的 proxy 配置路徑是否以/api開(kāi)頭接口 405 錯(cuò)誤請(qǐng)求方式不匹配檢查是 POST 還是 GET前后端保持一致請(qǐng)求 401/無(wú)權(quán)限沒(méi)帶 token或 token 過(guò)期看前端請(qǐng)求攔截器有沒(méi)有附加 token后端是否校驗(yàn)圖片上傳后訪問(wèn) 404靜態(tài)資源映射沒(méi)配置在 WebMvcConfig 里配置/files/**映射到磁盤目錄前端頁(yè)面白屏控制臺(tái)報(bào)錯(cuò)路由或組件引入路徑不對(duì)檢查路由配置和 import 路徑有些源碼里的路徑直接用絕對(duì)路徑需要改成相對(duì)路徑npm install非常慢默認(rèn)源在國(guó)外用registry.npmmirror.com鏡像MyBatis-Plus 分頁(yè)查詢返回 total 是 0少了分頁(yè)插件配置檢查是否配置了MybatisPlusInterceptor且添加了PaginationInnerInterceptor數(shù)據(jù)庫(kù)導(dǎo)入 SQL 報(bào)錯(cuò)SQL 文件編碼不是 UTF-8用 Navicat 導(dǎo)入時(shí)選擇 UTF-8 編碼或在命令行執(zhí)行時(shí)指定--default-character-setutf87.1 排查問(wèn)題的通用方法論光有速查表還不夠我給你一個(gè)通用的排查思路這個(gè)方法比任何具體答案都管用。很多同學(xué)遇到報(bào)錯(cuò)的第一反應(yīng)就是把報(bào)錯(cuò)信息復(fù)制粘貼到百度這本身沒(méi)錯(cuò)但效率太低了。正確順序是第一步看控制臺(tái)最底部的 Caused by 信息。Java 的報(bào)錯(cuò)信息往往很長(zhǎng)真正的原因藏在最下面。比如你在 IDEA 的紅色報(bào)錯(cuò)信息里往上翻幾頁(yè)找到Caused by: java.sql.SQLException: Access denied for user rootlocalhost (using password: YES)這時(shí)候就直接知道是數(shù)據(jù)庫(kù)賬號(hào)密碼不對(duì)而不是被上面的什么 NullPointerException 帶偏。第二步確認(rèn)錯(cuò)誤屬于哪個(gè)層級(jí)。是數(shù)據(jù)庫(kù)連接失敗還是 SQL 拼寫錯(cuò)誤還是業(yè)務(wù)代碼空指針還是前端網(wǎng)絡(luò)請(qǐng)求失敗層級(jí)判斷準(zhǔn)確查找范圍縮小一半。第三步斷點(diǎn)調(diào)試。不要覺(jué)得斷點(diǎn)調(diào)試很難。在 IDEA 里打個(gè)斷點(diǎn)用調(diào)試模式啟動(dòng)一步步看代碼執(zhí)行到哪一步出錯(cuò)、某個(gè)變量的值是什么十次里有八次能直接揪出問(wèn)題。這比盲猜變量值高效得多。第四步保留原始日志。排查問(wèn)題之前先復(fù)制完整的日志片段再去查。很多問(wèn)題單看報(bào)錯(cuò)標(biāo)題判斷不出來(lái)但結(jié)合完整的異常堆棧很容易定位。問(wèn)別人問(wèn)題的時(shí)候也一定要把完整日志貼出來(lái)而不是只說(shuō)“報(bào)錯(cuò)了”。7.2 跨域問(wèn)題關(guān)鍵是不重蹈覆轍我單獨(dú)把跨域拎出來(lái)說(shuō)因?yàn)檫@個(gè)是前后端分離項(xiàng)目里最容易困擾新人的問(wèn)題。瀏覽器有一個(gè)同源策略A 網(wǎng)站的 JavaScript 代碼默認(rèn)無(wú)法直接訪問(wèn) B 網(wǎng)站的接口。如果前端跑在http://localhost:8081后端跑在http://localhost:8080端口不同就算域名相同也算跨域。最省事的方案就是上面說(shuō)的代理轉(zhuǎn)發(fā)。前端的所有請(qǐng)求路徑都寫成相對(duì)路徑以/api開(kāi)頭由 Vite 或 webpack-dev-server 代理轉(zhuǎn)發(fā)到后端。這樣瀏覽器看到的請(qǐng)求就是同源的都在 8081跨域問(wèn)題不存在。如果確實(shí)不走代理要后端開(kāi)跨域你可以在 SpringBoot 里寫一個(gè)全局的跨域配置比在每個(gè) Controller 上加CrossOrigin注解更干凈Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(http://localhost:8081) .allowedMethods(GET, POST, PUT, DELETE, OPTIONS) .allowedHeaders(*) .allowCredentials(true); } }需要提醒的是allowedOrigins寫死前端地址如果是線上部署用 nginx 反代這句通常卻是不需要的有些情況下反而會(huì)導(dǎo)致登錄的 cookie 帶不上。8. 二開(kāi)擴(kuò)展讓這個(gè)系統(tǒng)從“能交”變成“出彩”基礎(chǔ)功能跑通只是第一步如果想在答辯時(shí)拿高分或者自己在技術(shù)上真的有收獲一定要嘗試做一兩個(gè)擴(kuò)展功能。我給你幾個(gè)方向難度從低到高。第一個(gè)方向是接入 JWT 做無(wú)狀態(tài)登錄?,F(xiàn)在很多管理系統(tǒng)的登錄方案還是基于 Session 的但前后端分離環(huán)境下更通用的是 JWT。原理是用戶登錄成功后后端生成一個(gè)帶簽名的 token 返回給前端前端把 token 存在 localStorage 里之后每次請(qǐng)求在請(qǐng)求頭帶上這個(gè) token。后端用攔截器校驗(yàn) token 是否有效、是否是當(dāng)前用戶。這個(gè)機(jī)制不復(fù)雜但做完之后你對(duì)“登錄態(tài)”的理解會(huì)通透很多。第二個(gè)方向是引入對(duì)象存儲(chǔ)服務(wù)。我上面文章里寫的圖片上傳是存本地磁盤這在教學(xué)項(xiàng)目里足夠。但如果你想讓項(xiàng)目更接近生產(chǎn)環(huán)境可以考慮把文件上傳到云端的對(duì)象存儲(chǔ)服務(wù)比如 MinIO。MinIO 是開(kāi)源的對(duì)象存儲(chǔ)方案可以部署在你自己的服務(wù)器上文檔也比較友好。SpringBoot 整合 MinIO 有對(duì)應(yīng)的 SDK接口兩三行代碼就能實(shí)現(xiàn)上傳。這個(gè)改造既解決了“文件存在服務(wù)器本地”的擴(kuò)容難題也讓你提前接觸了企業(yè)里常用的文件存儲(chǔ)方案。熱搜詞里還提到了“minio加入到springboot”這正好是一個(gè)加分項(xiàng)。第三個(gè)方向是引入工作流引擎。比如 Flowable 或者 Activiti把審核流程做成可配置的動(dòng)態(tài)流程。這個(gè)難度高但對(duì)于“征集審核”“入庫(kù)審批”這種多環(huán)節(jié)業(yè)務(wù)來(lái)說(shuō)確實(shí)更貼切。如果你時(shí)間充??梢越ㄗh團(tuán)隊(duì)里一兩個(gè)人專門研究這個(gè)方向作為進(jìn)階功能展示。這幾個(gè)擴(kuò)展方向里我個(gè)人最推薦第二個(gè)方案。理由很簡(jiǎn)單在你們整個(gè)前后端分離的架構(gòu)里文件存儲(chǔ)是不可或缺的一個(gè)環(huán)節(jié)MinIO 的引入不會(huì)打斷現(xiàn)有代碼邏輯又能在答辯時(shí)展示你對(duì)“生產(chǎn)級(jí)文件存儲(chǔ)”的認(rèn)知性價(jià)比最高。9. 寫在后面做項(xiàng)目最忌諱“跑起來(lái)就完事”最后分享一點(diǎn)我自己做這些項(xiàng)目時(shí)的心得。很多人把一個(gè)項(xiàng)目拉下來(lái)之后跑起來(lái)截幾張圖論文一貼就覺(jué)得自己完成任務(wù)了。實(shí)際上等到答辯的時(shí)候老師隨便問(wèn)一個(gè)“審核狀態(tài)是怎么流轉(zhuǎn)的”立刻就露餡了。我的建議是你拿到任何系統(tǒng)源碼不要急著跑而是先干兩件事第一件事用筆在紙上畫(huà)一遍數(shù)據(jù)庫(kù)關(guān)系圖。不用畫(huà)得多華麗就畫(huà)出用戶表、文物征集表、審核記錄表、圖片表之間誰(shuí)關(guān)聯(lián)誰(shuí)就能明確這個(gè)系統(tǒng)的業(yè)務(wù)主鏈路。畫(huà)完你就能發(fā)現(xiàn)原來(lái)從這個(gè)系統(tǒng)里隨便找一個(gè)功能點(diǎn)都離不開(kāi)這幾張表的聯(lián)動(dòng)。第二件事把其中一個(gè)核心功能從頭到尾寫一遍。不需要完整重寫整個(gè)系統(tǒng)但你可以試著自己寫一個(gè)“文物征集信息新增”功能從建表、寫實(shí)體、寫 Mapper、寫 Service、寫 Controller到前端寫一個(gè)表單頁(yè)、調(diào)接口、刷新列表。親手寫完這一個(gè)閉環(huán)你就掌握了前后端分離項(xiàng)目里 80% 的套路。剩下的功能無(wú)非是列表查詢、狀態(tài)修改、刪除、統(tǒng)計(jì)套路都是同一個(gè)。這套項(xiàng)目值不值得學(xué)關(guān)鍵不在于它的功能有多炫而在于它把 Java Web 后端開(kāi)發(fā)最常用的一整套知識(shí)串了起來(lái)MVC 分層、ORM 框架、事務(wù)管理、文件上傳、權(quán)限控制、前后端聯(lián)調(diào)、部署啟動(dòng)。你把這個(gè)項(xiàng)目吃透自己做畢業(yè)設(shè)計(jì)的時(shí)候完全不需要再到處找模板只需要在這個(gè)基礎(chǔ)上改業(yè)務(wù)字段、加模塊就行——因?yàn)楣羌芤呀?jīng)在你腦子里。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香熟女乱| 色五月婷婷自拍| 青青操成人福利| 久久久久久欧美精品se一二三四| 99婷婷色| 国产欧美婷婷五月| 天天色视频| 99re免费视频| 亚洲九区| 色婷婷成人| 亚洲热视频在线| 五月天婷婷激情| 亚洲激情视频在线观看| AV在线中文| 久久大香蕉伊人| 亚洲综合婷婷六月丁香五月| 亚洲黄网在线| 精品久久66| 国产又爽又猛又粗的视频A片| 九九碰九九爱97超| 色九月婷婷| 六月色激情| WWW.99视频| 绿色小导航AV| 五月婷婷丁香六月| 婷婷五月综合色拍| 五月婷在线观看| 久久久妻人人人| 九九久久综合| 色婷婷色婷婷五月| 精品一区二区三区三区| 婷婷狠狠操| 丁香五月激情月| 少妇被躁爽到高潮无码文| 欧美精品99久久久| 97超碰99热99| 色婷婷五月色| 亚洲国产色婷婷| 五月天久久色| 色导航色婷婷五月天在线观看| 色播激情婷婷| 亚洲性爱电影| 狠狠色婷婷六月激情网| 五月天停停日日| 日本狠狠色| 超碰碰碰碰| 欧美25p| 99日韩| 99ri精品| 色婷婷五月婷婷五月婷婷五月| 无码激情AAAAA片-区区| 大香蕉伊人爱在线| 五月天激情小说婷婷| 精品欧美一区二区三区久久久| 五月天色婷婷基地| 婷婷丁香视频在线观看免费| 五月丁香花激情综合网| ZpRSw| 色综合久久天天综合网| 激情五月天小说| 色色色婷婷| 久久色9| www.99热视频| 99年操人人爽| 五月丁香六月成人| 丁香桃色综合网| 操逼电影免费看| 亚洲啪啪啪啪| 婷婷情色激情| 丁香五月综合婷婷| 婷婷五月18永久免费网站| 婷婷月综合| 青青草婷婷综合五月| 天天肏视频| 狠狠色综合无线观看| 综合网啪| 五月婷在线视频免费看| 亚洲色爽| 九月av| 国产成人网站在线观看| 91色综合网| 天天日天天日天天搞| 五月丁香婷婷成人版| 亚洲六月综合激情久久下卡| 色婷婷丁香| 五月丁香亭亭成人电影| 婷婷色五月激情强奸四射| 538在线精品| 俺去也综合| 久久久精品人妻| 激情综合区| YW无码| 日本精品人妻无码77777| www.婷婷亚洲基地| 骚。com| 天天综合天天玩夜夜玩天天玩夜夜玩| 成人在线日韩| 婷色五月| 丁香五月天激情网址| 久操乱| 久草五月婷婷| 99在线热| 五月天综合色| 久久色情| 天天看A片| 99热精品99| 色天天久婷婷| 久久五月丁香综合17C| 婷婷五月18永久免费网站| 综合AV网| 久久这里只有精品视频15 | 色五月天.con| 色原狠狠综合| 99免费青青蜜臀| 不卡成人免费| 亚洲国产网站| 人妻久久婷婷| 99色免费| 亚洲免费观看高清完整版AV线| 九九九九操逼| 97涩婷婷| 色婷婷狠狠18yy| 久久久婷婷五月天| 性色做爰片在线观看WW| 婷婷五月激情欧美大胆视频| 国产九月婷婷| 人碰91| 五月婷婷九| 丁香久久九九99| 999久久久国产精品| 天天草女人| 久久久久9| 久久狠狠干| 免费播放片大片| 免费啪啪亚州视频| 五月丁香五月综合欧美| 亚洲电影在线观看| 日日夜夜亚洲一区| 激情综合色图| 大香蕉五月| 大天天伊人| WWW99热| 色播色丁香五月| 996黄色片| 亚洲人妻电影| 丁香五月婷婷啪啪| 能看的av片| 色五月婷婷久久大| 久热这里只有精品66| 婷婷,五月天,丁香,第一| 久久久A级视频| 婷婷五月激情小说| 日韩精品一区二区亚洲AV观看| 久久刺激网| 九九伊人网| 婷婷大美在线| 日本成人噜噜噜| 六月丁香VA| 五月婷婷六月激情| 五月丁香婷婷综合| 五月网站| 91九色中文字幕女在线观看| 欧美日韩大黄| 婷婷五月天伊人| 伊人色综合网| 亚洲婷婷五月天| 日本91在线播放| 超级碰碰97在线| 久久99精品久| 色久婷婷五月| 六月婷婷色| 人人爱摸视频| 国产av天堂| 国外亚洲成AV人片在线观看| 9久久久| 无码se| 亚洲九九在线| 91操碰| http:色情日本com| 丁香色成人| 久久色五月| 丁香五月天激情婷婷丁香六月| www激情网| 伊人激情影院| 亚洲午夜在线视频| 色色五月婷| 成 久久| 久超超碰| 9l视频自拍九色9l黑人| 丁香六月婷婷缴情欧美| 丁香美女五月天婷婷| www九九热| 六月激情网| 婷婷色五月综合丁香| 五月天久久综合婷婷丁香| 久/久精品99看9| 久99在线| 99re在线观看视频| 天天爱天天做天天操| 综合久久99| 伊人大香久久| 天天爽曰日爽| 色婷婷a v| 久久久久久久11111111111| 九九婷婷综合| 天天日本夜夜谢| 99精品成人无码A片观看金桔| 五月丁了香蕉综合| 丁香五月综合在线播放 | 婷婷五月花| 99热久久这里只有精品2010| 777精品久无码人妻蜜桃| 91丨九色熟女丨首页| 夜夜天天久久婷婷| 99这里热| 9 1 A v久久久| 伊人久久激情图区五月| 99九九久久| 欧美人人草草| 天天成人综合视频| 97色吧| 久草五月婷婷| 精品三区影院| 中日韩美欧成人一区二区精品在线| 色五月婷婷综合| 嫩草乱码一区三区四区| 精品热青草| 丁香色成人| 狠色色狠网| 天天插天天干| 丁香五月亭亭六月综合激情网| 无码人妻激情| 九九综合色综合| 久久偷拍综合五月天| 少妇性BBB搡BBB爽爽爽视頻| 五月婷婷狠天天色综合| 狠狠色色| 99热欧美偷拍| www.99热| 丁香五月777| Www.激情| 九九久久污| 亚州AV超碰人人操| 亚洲AV成人在线观看| 色综合播放| 综合五月婷婷| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 色爱综合网| 99视频在线观看视频| 色婷婷视频综合| 国产 亚洲 在线| 色五月婷婷五月天激情综合| 激情丁香五月婷婷| 97久人人| 五月丁香啪啪综合| 91在线视频综合| 婷婷综合激情| 久久伦乱| 120分钟婬片免费看| 欧美色九| 五月丁香啪啪啪| 欧洲亚洲免费视频9| 久久婷婷五月丁香网| 九九狠狠干| 殴美激情综合网| 国产激情在线| 婷婷99狠狠躁天天躁| 91爱啪啪| 激情五月婷| 婷婷综合色网| 色婷婷影院| 五月天婷婷基地| 夜夜骑夜夜撸| 五月综合777| 丰满少妇猛烈A片免费看观看| 伊人国产婷婷五月天| 天堂伊人干| 六月丁香激情婷婷| 蜜乳av一级av| 五月婷婷69| 在线99色| 久久99网| 婷婷六月激情丁香| 色五月婷婷五月天激情综合| 性爱视频99| 久久这有这里精品| 91精品刘玥| 思思热久热| 婷婷99视频在线| 五月丁香花开综合网| 超碰自拍天堂| 久久婷婷啪啪视频| 婷婷六月网| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 天天爱天天操| 99 热| 中文成人在线| 色综合五月婷婷狠狠干| 秋霞少妇毛片| 亚洲精品视频在线播放| 四色AVwww| 9精品视频在线| 91人妻PORNY九色大屁股| 九九成人精品| 99热在线资源| 丁香五月花| 开心五月网| 亚洲超碰在线| 色色色五月婷婷| 开心五月婷| 日本黄色在线观看| 嫩BBB搡BBBB榛BBBB| 99热官网精品在线| 丁香五月六月久久综合 | 91九色精品女同系列| 日韩啪啪网| A网在线欧洲| 99狠狠操一| 亚洲激情四射| 狠色狠色狠色狠色狠色网| 韩国中文字幕91| 成功精品影院| 五月婷婷免费视频| 久久9久| 激婷网| 九热...av| 丁香五月婷婷色五月| 色婷婷综合在线| 天天激情站| 99国产小视频| 色色99色色| 中文字幕成人| 99热免费| 婷婷五月天成人基地| 天天久久狠狠色综合| 色色欧美色色| 激情五月天视频| 五月天婷婷在线播放免费| 色五月琪琪| 99热人人艹| 五月天婷婷在线播放| 99热这里只有精品最新| 香蕉婷婷色五月| 日韩无码人妻一区二区| 国产99久| 五月花婷婷| 久热亚洲| 无码任你操| 五月天六月天| 成人色五月天婷婷| 中文字幕人妻一区二区| www.狠狠| 日日.c| 五月丁香六月婷婷色情| 欧美综合激情五月天| 九九九精品视频免费观看| 久久99久久久| 影音先锋AV资源男人站| 国产精品久久久爽爽爽麻豆色哟哟 | 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 大香蕉婷婷| 97狠狠碰| 亚洲成人av在线观看| 婷婷五月天社区| 欧美久久婷婷| 久99久在线观看| 99这里只有精品99| www.五月丁香av| 天天日夜夜高潮| 丁香五月影视| 99A级片| jiuse91在线| aV直接看| 久久久天堂国产精品女人| 俺去也五月| 欧美久久网| 五月天天天色| 99这里只有| 在线A色| 亚洲 激情 中文| 少妇激情基地| 婷婷五月大| www.五月婷婷久久.com| 九九久久99精品免费观看www| 9在线9在线婷婷在线国产| 婷婷五月激情黄色| 青青草原亚洲久| 亚洲春色奇米影视| 影音先锋秋秋五月婷婷| 久久性都花花世界成人免费视频| 欧美一级a | 日韩啊啊啊| 99综合激情久久精品久久| 涩涩婷婷五月| 五月婷婷伊人在线| 精品五月天| 成人五月天视频播放| 天天操夜夜肏| 久久机热/这里只有精品| 久久99性爱| 五月色丁香视频精品| 色综合久久久久久久久五月| 久热精品视频| 九九热最新| 久久伦乱| 激情伊人五月天| 亚洲色99| 被男人添B超爽视频| 久久婷婷五月综合色丁香| 亚洲五月婷婷| 色99网站| 三人荫蒂添的好舒服A片| 丁香六月婷婷久久综合| 日本三级成人秘书精品片| 天天日中文| 先锋影音男人的天堂AV| 午夜婷婷久久| 99热综合| 五月丁香婷婷综合激情基地| 手机免费福利视频| 五月丁香好婷婷A片网| 成人婷99最新| 禁欲电影完整版在线播放| 国自产拍偷拍精品啪啪一区二区| 91人人爱| 九九视屏| 2015好吊操| 婷婷久久五月天亚洲欧美国产日韩在线观看 | www.99热视频| 婷婷五月俺要去| 久久久久久丁香五月| 婷婷丁香色五月| 欧美色97| 成人精品视频99在线观看免费| 日本欧美成人片AAAA| 射婷婷中文字幕| 自拍视频在线观看9| 色偷偷色婷婷| 亚洲婷婷丁香五月天激情小说| 五月婷婷婷婷婷婷艺术| 六月丁香婷婷综合狠狠爱夜夜爱| 免费黄色视频网址| 97超级免费无码| 久久人人九| 婷婷六月丁香在线| 停停五月丁香| 色香欲综合| 一级AV片| 亚洲AV综合在线观看| 99视频精品视频| 天天色域综合网| 婷婷五月天激情小说| 激情五月婷婷| 在线观看av网站| 99热在线99| 99久久综合| 亚洲永久四色| 97人人操人人拍| 综合网色| www激情com| 九九热99热| 99日热在线视频| 色色免费网站| 五月丁香中文字幕| 婷婷综合五月天| 大胆伊人久久| 国产又黄又爽又激情不遮挡视频在线观看| 色五月播五月| 亚洲网在线观看| 色婷婷综合亚洲| 夜夜爽日日躁| 97人人草| 婷婷综合av| 亚洲久久视频| 六月婷婷久久| 亚洲精品第一国产综合亚AV| site:xiongshengzz.com| 色婷婷精品| 婷婷午夜| 婷婷丁香激情综合色情| 这里只有精品网站| 亚洲精品字幕| 久久婷婷伊人| 五月婷婷五月天| 超pen个人视频97| 操操国产| 久色婷婷200| 亚洲乱码精品久久久久..| 人妻激情视频| 婷婷色欧美激情| 成人在线日韩| 97中文在线| 99热这里只有精品2| 青草视频在线观看视频| site:hcxsz888.com| 人人色性网| 色婷婷五月在线| 激情电影五月婷婷| 五月天激情图| 无码日本精品XXXXXXXXX| 人人澡玖玖一| 91九色在线视频| 香港九九六区八区99| 激情综合网之激情五月| 天天噜日日噜综合无码| 激情伊人网| 99色 色| 国产全是老熟女太爽了| 国产99美少妇| 色婷婷www| 五月婷啪| 丁香激情四射| 一级二级色大片| 丰满熟女人妻一区二区三| 色吧婷婷五月亚洲| 五月天婷婷色小说| 9久热精品在线视频| 99视频超级精品| www.五月婷婷久久.com| 亚洲成人av在线| 可以直接看的av| av五月天婷婷丁香| 99亚洲色色| 九热网站| 色婷婷丁香五月综合| 99riav 亚洲| 美女100%露全身无挡网站| 欧美色五月| 婷婷五月丁香综合亚洲| 婷婷狠狠干| 亚洲思思热久| 精品久久人妻| 五月丁香综合激情在线观看| 天天插天天干| 色五月婷婷丁香婷婷| 国产精品18久久久| 美女主播野战视步页| 国产小精品| 五月天开心婷婷久久| 人妻丰满精品一区二区A片| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 丁香五月97视频| 九九激情视频| 五月天AV大香蕉| 激情综合激情综合| 久久98热re| 色99自拍| 五月天激情综合首页| 激情深爱五月天| 99热日韩这里只有精品| 狠狠精品干练久久久无码中文字幕| 极品 少妇 内射| 日韩丁香涩| 亚洲欧美另类在线23p| 91丨九色丨老熟女激情| 伊人五月天| 六月婷婷激情图片| 国产精品一区在线观看你懂的| 六月丁香五月亭亭| 9色操| 五月天婷婷综合| 国产成人高清| 伊人色综合网| 五月婷婷激情综合视频| 97色天堂| 91久久婷婷| 西瓜美女a片| 欲求不满的人妻| 欧美激情综合色综合啪啪五月| 9191avse| 性无码专区无码| 人人看人人摸人人| 欧美图片丁香五月天| 色色色色色网| 日本激情五月天‘| 丁香六月婷婷久久高清| 中字幕视频在线永久在线观看免费 | 色五月婷婷啪啪五月| 国产亚洲成人综合| www色婷婷| 停停色综合伊人| 日韩无码亚欧无码| 亚洲不卡| 三十路磁力链接| 欧美婷婷综合网| 91色久| 26uu| 丁香五月最新地址| 国产黄大片在线观看画质优化 | WWW.桔色成人.COM| 成人版视频在线观看| 色色婷婷丁香| 夜夜骑夜夜撸| 色色色视频免费无码 | 深爱激情丁香| 五月丁香激情婷婷| a色色色色色| 日韩三级高清无码| 26uuu精品国产| 26uuu亚洲欧美| www.99婷婷| 久久性爱99国产| 综合久久高清| 天天干天天 亚洲| 五月婷啪啪| 99视频| 播五月,色五月,开心五月播放器| 五月丁香综合啪啪啪啪啪| 玖玖九九9999在线观看视频精品| 久久久久久人妻| 色亚洲激情| 婷婷五月天天天日日夜夜| 一本狠婷婷综合| 另类激情综合| 婷婷色导航| 五月丁香 久久久| 99热在线观看精品| 超级碰碰一区| 亚洲妇女熟BBW| 久久WW| 婷婷五月天第四色| 欧美丁香婷婷天天操| 久热伊人9| 午夜精品人妻无码一区二区三区| 99热主页日本| 另类小说激情五月天| 狠狠草天天草| 91超碰在线播放| 香蕉五月婷婷| caop视频| 久热91| 五月天激情四射网站| 五月丁香六月婷婷久久久综合| 日本欧美在线| 丁香五月婷婷欧美激情-中文天堂最新版在线观看 | 九月激情网| 操比激情五月| 久久全意婷婷| 精品一二三区久久AAA片| 伊人五月婷婷| 五月亭亭性| 婷婷五月中文字幕国产| 久久与婷婷| 91狠狠综合久久久久久| 五月天久久综合| 综合九九久久| 九九久久玖玖爱| 人妻体体内射精一区二区| AV中文在线| 丁香五月激情啪| 99热这里只有精品8| www.丁香五月| 九九精品在线网| 色综合五月婷婷狠狠干| 都市激情五月婷婷综合| 色之综合网| 色婷操逼| A片一曲| 五月婷婷色综图片| 99狠狠| 五月激情综合性爱| 97爱综合| 婷婷五月无码| 欧美日韩国产日本精品四虎网网站物| 丁香久久激情俄| 99热有精品在线观看| 无码少妇高潮喷水A片免费| 六月丁香五月婷婷| 嫩BBB搡BBBB榛BBBB| 久久思思热| 狠狠操天天干| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 欧美槡BBBB槡BBB少妇| 99视频在线| 综合五月天| 激情av| 欧美日韩成人| 牛色色碰| 99在线资源视频| www.99精品日操伊人乱碰在线| 久久婷婷九月国产精品| 久草婷妨| 色色色色区| 啪啪操超碰| 久99久精品视频| 99人人干| 夜夜骑日日操| 色情久久久| 噜噜噜久久亚洲精品国产品91| 日韩99色99| 天天骑天天操| 琪琪色五月天| 天天干电影| 久久思思热| 五月婷婷 婷婷五月 一区二区 久久久 | 成人网站免费sxj| 亚洲综合婷婷六月丁香五月| 久久婷婷综合五月天| 天天舔天天爽| 五月天婷婷在线播放| 天天天天操| 一级操逼大片| 婷婷丁香综合| 五月婷色| 国产又黄又爽又激情不遮挡视频在线观看| 99九九精品视频| 饮料下药迷倒漂亮女同事强干| 日韩精品一品二区三区的使用体验| 久久多色| 99国产精品久久久久久久久久久| 九九精品9| 99热色婷婷| 丁香五月激情综合| 蜜臀av在线成人电影| 国产精品色婷婷AV综合色色| 99精品久久久久| 婷婷午夜天| 国产真实乱对白精彩| 婷婷五月激情综合啪啪| 丁香六月婷婷综合| 成人网站免费sxj| 婷婷五月天伊人| 日本欧美成人片AAAA| 婷婷丁香成人色综合| 99热碰碰| 中文人妻主播久久| 五月天婷婷爱| 99久久网站| 日本波多野结衣视频| 婷婷色啪| 99在线看片| 激情五月天开心| 99爱精品| 天堂爱啪啪| 婷婷久久国产视频| 丁香五月天社区| 九九在线精品| 久久久五月天网站| 丁香五月aV| 人妻久久久| 超碰v| 人人干女人| 综合色天天| 亚洲熟妇无码乱子AV电影| 婷婷五月天av| 97色婷婷在线观看| 色 五月婷婷基地| 99热免费精品| 久9热视频在线| www.久久久.com| 色色色.COM| 九九久久99| 亚洲婷婷激情综合激情999精品| 99爱这里只有精品| 欧美99视频| 婷婷五月花| 五月丁香婷中文| 亚洲欧美另类在线23p| 啊v视频在线观看| 婷婷九月丁香天堂丁香天堂| 五月丁香少妇网| 99久在线精品99re8热| 欧美五月婷婷综合| 【乱子伦】黄色| 五月丁香综合影院| 久久丁香综合香蕉| 美女丁香五月天| 超碰色综合| 热久久这里只有三级视频| 色色色视频免费无码| 久操福利| 九九综合88| 五月丁香网中文字幕| 久久激情视频| 婷婷五月丁香色综合| av在线色五月丁香婷区久| 丁香色色网| 91狠狠色色丁香婷婷综合久久| 久久精品亚洲热| 婷婷五月天小说| 久久伊人婷婷| 激情五月天婷婷在线网址发给我| 日本操B视频在线观看| 久久婷婷五月国产色综合激情| 99这里只有精品| 色婷婷人人| 亚洲另类婷婷五月综合| 丁香六月激情综合| 亚洲成人网站在线观看| 欧美日韩成人在线网| 92久久久| 亚洲国产色色| 九九热视频精品999| mmm1717.6dbm人人爱人人操| 久久九九免费视频| 色碰碰| 蜘蛛女侠2003满天星免费观看| 激情五月四色| 超碰renrenai| 国产乱子轮XXX农村| 第二色AⅤ| 天天日天天插| 五月婷成人| 99热亚洲精品| 中文激情网| 91se在线视频| AV在线免费网站| 色九月婷婷综合| 激情图片婷婷| 婷婷在线综合| 婷婷五月天综合网| 丁香五月香蕉| 538任你爽| 色爱综合网| 狠狠色综合网| 五月丁香综合激情网| 97久久久| 欧美激情五月天| peg 2区三区四区的| 亚洲人妻av伦理| 99热精品10| 99精品国产在热久久| 色婷婷丁香五月高清在线| a久久| 激情黄色五月天| 丁香五月婷婷综合啪啪| 俺去也在线视频| 婷婷日韩| 五月天婷婷乱论小说| 四季AV综合网| 激情爱爱网站| 超碰精品在线| 日本三级大片| 天天干-天天日| 色啪久| 这里精品| 五月香蕉婷婷| 91蜜桃婷婷狠狠久久综合9色| 天天人人综合| 国产欧美精品AAAAAA片| 小视频一区 | 99久久www| 99色色爰| 久久一级AV| 五月婷婷在线综合| 六月丁香停| 99综合免费视频| 玖玖伦理电影| 8050一级网| 日本婷婷| www久| 屁股翘好撅高迎合跪趴| 五月激情久久综合网| 成人色图情色成人网 www.5b5b5bcom 五月天 | 操一操干一干| 成人av播放| 综合久久99| 视色综合| 99热在线资源| 久久婷综合| 天天热夜夜操| 99热天堂| 97碰在线视频| 婷婷丁香激情五月天色色| 91久久色| 欧美成人精品A片免费一区99| 九九爱看亚洲| 99九九中文字幕视频| 五月色丁香| 激情美女五月天激情在线| 亚洲AVDVD| 九九热这里只有精品6| 色婷婷丁香五月天激情综合网| 九九人人看| 99热成人| 欧美成人A片AAA片在线播放| 日韩不卡DvD| 风流少妇A片一区二区蜜桃| 91成人性爱视频| 丁香五月激情啪啪| 久9精品视频在线| 97色久| 亚洲综合视频一下| 亚洲超级碰| 欧美成人精品三区综合A片| 99精品亚洲| 婷婷五月天伊人在线| 天堂网色婷婷| 中文字幕无码人妻少妇免费视频 | 襙逼网| 久久久婷婷五月亚洲97号色| 噼里啪啦在线观看免费完整版视频| 99爱在线精品视频免费观看| 五月噜噜噜色综合| 五月天丁香看婷婷| 99色综合| 丁婷婷五月天在线播放| 99热 在线观看| 超碰网站在线观看| 少妇性按摩无码中文A片| 五月婷视频| 成人网站免费sxj| yellow视频在线观看91| 九九色网专区| 99久久极情精品一区| 99乱视频| 干婷婷五月天| 久久精品9| 九九综合九色欧美狠狠| 亚洲久久激情| 99爱爱网| 激情网婷婷婷| 五月花综合网| 精品亚洲国产成AV人片传媒 | 五月婷婷丁香深深爱| 91性人人| 亚洲综合网在线| 激情影院丁香五月| 色五月丁香婷婷久草| 国产美女最新VA在线免费观看| 五月激情啪啪啪| 日韩操啪| 俺也去五月婷婷丁| 泰州成人视频| 婷婷婷久久久| 狠狠干五月丁香综合网| tingting五月天亚洲| 亚洲美女高潮久久久久久69| 96色婷婷| 日韩AV在线影片| 五月天狠狠| 五月婷婷激情性爱| 婷婷五月激情视频在线| 丁香五月丁香伊人| 99这里只有精品8| 操久久网| 9月色婷婷| 肏日网在线看| 九月丁香八月婷婷加勒比| 亚洲午夜av| 婷婷丁香五月综合| 久久人人九| 狠狠干五月天| 操日挥操日日| 色情一区二区播放| 加勒比色色| 激情深爱婷婷网| 日本一道久久| 亚洲情色一区| 91久久久久久久91| 99热精品超碰| 久久亭亭电影| 亚洲殴洲精品Av在线| 婷婷丁香六月天| 久久A极片| 开心五月激情网| 色色婷婷五月天| 99热这里有精品| 操一区| 玖玖综合色| 超碰色综合| 久久综合影院| 欧美性爱一区| 超碰人人91| 狠狠爱婷婷丁香| 天天日夜夜爽| 五月天婷婷久久视频| 停停五月丁香| 五月天婷婷激情在线色图| 五月婷婷久| 激情五月天小说| 国产无套精品一区二区| 九九亚洲视频| 综合一本道| 色色网站免费| 五月婷婷在线免费观看 | 丁香六月婷婷| 丁香五月偷拍| 国产人妻人伦精品一区二区| 亚洲乱码日产精品BD| 办公室少妇激情呻吟A片在线观看| 五月丁香成人网| 国产肥白大熟妇BBBB视频| 六月成人网| 一级视频网址| 免费超碰在线| 色九九九九| 九九热10| 六月丁香花婷婷| 国产日批视频免费播放| 天堂婷婷五月色| 蜜乳国产网站| 婷婷色五月色| 狠狠爱五月婷婷| 五月丁香av中文| 婷婷五月丁香五月| .精品久久久麻豆国产精品| 激情网 久久| 综合日本婷婷| 亚洲AV网址| 天天综合激情| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 久久资源网五月婷| 人妻狠狠操| 人色五月天婷婷| 五月天深爱激情网| 激情五月婷| a网站免费观看| 乱精品一区字幕二区| 97伦乱| 91精品人妻少妇无码影院| 大香蕉伊人久久| 丁香五月激情六月| www激情婷婷com| 99久在线精品| 性做爰1一7伦| 色五月开心久久网| 成人五月丁香社区| 婷婷五月俺要去| 精品成人a v无码内射| 欧美 日韩 成人在线| 性爱视频久久| 中文字幕av网站| 五月丁香 啪啪| 久草五月天电影网| 九九视频这里只有精品| 超碰免费成人| 成人精品视频99在线观看免费| 激情婷婷五月综合| 精品欧美性爱超级爽| 99九九精品视频| 激情婷婷五月久久| 激情五月亚洲| 人妻久热| 思思久久99热只有频精品66| 六月婷婷AV| 久久er这里只有精品| 五月丁香色婷婷综合| 99在线视频播放| 欧美性生交XXXXX无码小说| 亚洲成片在线观看| ss五月天激情| 狠狠xx| 五月婷婷综合在线| 99超级超级超级碰| 五月婷婷另类| 桔色成人在线| 在线99热| 99啊精典免费视频| ...婷婷国产成人亚洲日韩| 婷婷在线激情| 白人荫道BBWBBB大荫道| 視频福利乱色| 五月丁香六月色情网欧美| 婷婷色片| 中国操逼99| 六月婷婷综合| 夜丁香五月婷婷| 色色色色热| 亚洲另类毛片| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 91干婷婷| 一级片sese片.COM| 色视频五月天| 国产毛片欧美毛片久久久| 丁香五月婷婷大香蕉| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 玖玖婷婷五月| 婷婷丁香无码专区| 九色PORNY9l原创自拍| 五月婷婷啪啪啪啪| 777精品久无码人妻蜜桃| 99熟女啪啪视频| 丁香五月六月欧美| 五月丁香婷婷综合网| 1024操逼视频| 99视频网| 最近韩国日本免费高清观看| 六月丁香综合| 五月丁香六月婷婷综合网站| 三男玩一女三A片| 国产在线中文字幕| 色久天| 国产亚洲成AV人片在线观黄桃| 色月九九| 青青草成人网| 久久桃花网色婷婷| 五月天国产成人| 婷婷五月丁香综合激情| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 久久久久这里只有精品| 久婷婷五月综合欧美| 五月婷婷狠狠干| 婷婷五月丁香五月| 五月婷婷色色色| 天天爱天天做天天| 久婷狼色诱惑在线| 三区激情四射av| 亚洲高清在线| 日韩综合久| 天天久综合| 99久热视频在线| 色综合色欲综合天天免费| 久色视频在线| 五月婷婷性爱| www.婷婷.com| 欧美狠狠色| 六月丁香天堂| 婷婷六月五月天综合| 9久久狠狠的| 天天爱天天做天天舔| 五月丁香综合激情网| 九九热自拍| 色久综合| 97香蕉人人在线观看| 狠狠色噜噜| 97色精品视频| 欧美日本一区二区三区| 青青草视频免费观看| 99热这里只有精品98| 久久曰曰| 美女丁香五月天| 狠狠干综合| 开心久久xxx色| 久操热线| 亚洲综合网区| 亚州操人在线视频| 热99这里只是精品| 丁香五月婷婷啪啪| 五月丁香综合啪啪| www.99色| 六月丁香婷| 色婷婷小说网| 狠狠色狠狠干| 日日日日日| 六月伊人婷婷| 七七婷婷综合| 噜噜噜精品欧美成人在线观看| 99热在线观看| 色99综合视频| 激情涩播| 日本激情综合| 激情丁香五月| 五月丁香综合在线| 色玖玖综合| 色色五月天丁香| 久久99视频| 成人在线99| 丁香五月亭亭六月综合激情网| 亚洲精品白浆高清久久久久久| 亚洲九九九九| 丁香五月天日韩无码| 91日本在线观看| 色涩视频久久| 99A片| 五月综合丁| 久久综合影院| 99热99色| 香蕉AV福利精品导航| 色人五月婷婷| 1024欧美看片| 久久爱婷婷| 超碰在线观看9| 久久草大香蕉| 26uuu国产色| 江苏少妇性BBB搡BBB爽爽爽 | www.婷婷网| 这里只有精品96| 婷婷综合精品视频97| 玖玖五月丁香| 91精品久久久久| 丁香五月 综合| 久久五月婷综合| 五月天天久久香| 五月天激情四射| 偷偷与邻居做爰完整视频| 狠狠五月天激情| 97日在线视频| 五月天婷婷丁香| 婷婷丁香激情五月| avv在线| 激情五月天色色| 热99视频| 九九99在线| 婷婷五月影院| AAA亚洲AV| 亚洲综合无码| 欧美成人精品A片免费一区99| 思思热久久爱| 色综合中文| 日产精品一线二线三线芒果| 天天高潮夜夜爽| 97久久久久| 激情婷婷丁香五月| 丁XX 成人| 日本美女天天日天天爽| 久久丁香婷婷色情综合| 五月婷婷欧美| 先锋男人99资源| 欧美 日韩 成人| 成人短视频在线观看| 很很干夜夜干| 99久久婷婷国产综合精品草原| 91久久精品国产91性色TV| 五月丁香婷婷综合视频| 色A网| 欧美WW在线网| 深爱五月天| 这里只有精品视频| 精品婷婷五月视| 色婷婷精品视频| 久久99视频| 色婷婷五月天久久| WWW·天天操·视频?| 在线亚洲综合| 久久性爱视频| 强伦轩人妻一区二区电影| 色色是色N一| 激情性爱婷婷| 伊人久久艹| 色播五月天激情| 深爱网深爱综合网| 激情丁香六月| 99热草草| 欧美性爱五月天| 五月婷婷五月天激情网| 激情深愛五月視頻| 国产AV不卡福利| 黑人巨粗进入警花疼哭A片| 99热丁香| 久久开心五月婷婷| 五月婷婷干干干| 操婷婷久久| 免费无码毛片一区二区A片| 丁香五月色五月| 激情五月婷婷中文字幕| av在线资源| 激情网色五月| 内射人妻视频国内| 亚洲高清在线| 99久久网站| 这里只有精品在线播放| 婷婷综合| 亚洲综合另类| 伊人九热| 丁香五月天社区| 婷婷丁香花五月天| 男人的天堂五月丁香| 欧美综合婷婷欧美综| 婷婷的99视频网站| 五月天丁香看婷婷| 男人操女人高潮91视频| 丁香五月电影| 无码色| 激情五月天伊人av| 五月婷婷伊人网| 伊人影音无码一区二区三区| 久久久久久99精品无码| 五月丁香 狠狠爱| 五月综合激情婷婷六月色窝| 九九黄色网| 九九热re99re6在线精品| 久久开心五月天激情| 五月丁香婷在线| 欧美综合婷婷欧美综| 五月总合激情网|