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

ARTICLE DETAIL

資訊詳情

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

基于Spring Boot和Vue的高校運(yùn)動(dòng)會(huì)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

基于Spring Boot和Vue的高校運(yùn)動(dòng)會(huì)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 1. 項(xiàng)目定位與整體設(shè)計(jì)思路1.1 高校運(yùn)動(dòng)會(huì)管理到底在管什么每年春秋兩季各高校都要辦運(yùn)動(dòng)會(huì)。但真正經(jīng)歷過(guò)的人都知道一場(chǎng)覆蓋幾十個(gè)學(xué)院、上千名運(yùn)動(dòng)員、近百個(gè)比賽項(xiàng)目的校級(jí)運(yùn)動(dòng)會(huì)背后的事務(wù)性工作有多繁瑣運(yùn)動(dòng)員報(bào)名信息要反復(fù)核對(duì)、田賽徑賽的時(shí)間場(chǎng)地要人工排布、檢錄表要打印幾百份、成績(jī)出來(lái)后要手工統(tǒng)計(jì)團(tuán)體總分、破紀(jì)錄要翻查歷史數(shù)據(jù)、證書(shū)要一個(gè)個(gè)手寫(xiě)填寫(xiě)。我做過(guò)幾個(gè)類(lèi)似的信息化項(xiàng)目最大的感受是運(yùn)動(dòng)會(huì)的業(yè)務(wù)鏈路其實(shí)非常適合系統(tǒng)化管理。它的數(shù)據(jù)邊界清晰——運(yùn)動(dòng)員、項(xiàng)目、成績(jī)、團(tuán)體分就這四類(lèi)核心實(shí)體但它的規(guī)則細(xì)節(jié)又足夠多——同分如何判定名次、一個(gè)運(yùn)動(dòng)員最多報(bào)幾個(gè)單項(xiàng)、接力項(xiàng)目算不算雙倍積分、田賽和徑賽的名次錄取規(guī)則還完全不同。這些規(guī)則如果靠Excel維護(hù)每屆運(yùn)動(dòng)會(huì)都要重做一遍而且極易出錯(cuò)。這個(gè)項(xiàng)目就是做一個(gè)前后端分離的高校體育運(yùn)動(dòng)會(huì)管理系統(tǒng)后端用Spring Boot提供RESTful接口前端用Vue 3 Element Plus搭建管理界面支持從運(yùn)動(dòng)員報(bào)名、賽事編排、成績(jī)錄入到團(tuán)體總分自動(dòng)排名、證書(shū)打印的全流程管理。它解決的痛點(diǎn)很明確把運(yùn)動(dòng)會(huì)的組織工作從Excel 微信群 手寫(xiě)紙質(zhì)表的模式遷移到一套可配置、可追溯、可復(fù)用的在線(xiàn)系統(tǒng)里。適合誰(shuí)來(lái)參考這個(gè)項(xiàng)目如果你正在做類(lèi)似的校園管理類(lèi)系統(tǒng)考勤、選課、社團(tuán)活動(dòng)報(bào)名都適用或者你的畢業(yè)設(shè)計(jì)/課程設(shè)計(jì)正好落在這個(gè)方向這篇文章里的數(shù)據(jù)建模思路、成績(jī)排名算法、文件存儲(chǔ)方案和前后端部署細(xì)節(jié)都可以直接抄作業(yè)。1.2 為什么選Spring Boot Vue這套組合選型這事我向來(lái)不追求花哨關(guān)鍵是穩(wěn)定和生態(tài)成熟。Spring Boot Vue這套組合在校園管理類(lèi)系統(tǒng)里基本是標(biāo)準(zhǔn)答案級(jí)別理由有三第一Spring Boot的自動(dòng)裝配機(jī)制極大降低了后端搭建成本。項(xiàng)目里用到Spring Security做登錄認(rèn)證、MyBatis-Plus操作數(shù)據(jù)庫(kù)、MinIO做文件存儲(chǔ)、POI做Excel導(dǎo)入導(dǎo)出這些都是Spring Boot生態(tài)里非常成熟的組件。你不需要為每個(gè)功能單獨(dú)寫(xiě)一堆配置類(lèi)加依賴(lài)、配application.yml、寫(xiě)業(yè)務(wù)接口三步走。第二Vue 3 Element Plus的前端方案對(duì)管理后臺(tái)這類(lèi)以表單和表格為核心的場(chǎng)景非常友好。運(yùn)動(dòng)會(huì)系統(tǒng)的前端頁(yè)面本質(zhì)上就是報(bào)名表、編排表、成績(jī)單的電子化呈現(xiàn)Element Plus的表格組件自帶排序、篩選、分頁(yè)表單組件自帶校驗(yàn)規(guī)則配合Vue Router做頁(yè)面跳轉(zhuǎn)、Pinia做全局狀態(tài)管理開(kāi)發(fā)效率比原生jQuery時(shí)代高出一個(gè)量級(jí)。第三前后端分離帶來(lái)的部署靈活性。開(kāi)發(fā)階段前端用Vite dev server跑在5173端口后端跑在8080端口通過(guò)代理轉(zhuǎn)發(fā)解決跨域部署階段既可以把前端打包成靜態(tài)文件扔到Nginx里也可以把dist目錄直接塞進(jìn)Spring Boot的resources/static打成單jar包運(yùn)行。兩種方案我都實(shí)際跑過(guò)后面第5節(jié)會(huì)詳細(xì)講。2. 核心功能拆解與數(shù)據(jù)建模2.1 六個(gè)核心業(yè)務(wù)模塊整個(gè)系統(tǒng)按運(yùn)動(dòng)會(huì)業(yè)務(wù)流程拆成六個(gè)模塊每個(gè)模塊的邊界要清晰才能避免后期改代碼改到頭禿系統(tǒng)管理模塊用戶(hù)登錄、角色權(quán)限超級(jí)管理員、學(xué)院領(lǐng)隊(duì)、裁判員、普通學(xué)生、學(xué)院班級(jí)數(shù)據(jù)維護(hù)。這里我用的是Spring Security JWT的無(wú)狀態(tài)認(rèn)證前端登錄后拿到token存在localStorage里每次請(qǐng)求帶在A(yíng)uthorization頭里。運(yùn)動(dòng)員管理模塊運(yùn)動(dòng)員信息錄入支持Excel批量導(dǎo)入這個(gè)很重要幾百號(hào)人一個(gè)個(gè)手輸會(huì)崩潰、運(yùn)動(dòng)員報(bào)名項(xiàng)目管理要校驗(yàn)每人限報(bào)兩個(gè)單項(xiàng)加一個(gè)接力這類(lèi)規(guī)則。賽事編排模塊比賽項(xiàng)目維護(hù)田賽/徑賽分類(lèi)、分組、預(yù)決賽輪次、賽程時(shí)間表生成、檢錄表打印。這塊的核心是一個(gè)場(chǎng)地時(shí)間沖突檢測(cè)算法后面3.1節(jié)細(xì)說(shuō)。成績(jī)管理模塊裁判員錄入成績(jī)、成績(jī)復(fù)核、自動(dòng)排名、破紀(jì)錄標(biāo)記。徑賽要記錄秒數(shù)并精確到百分位田賽記錄米數(shù)并精確到厘米排名邏輯完全不同。團(tuán)體總分模塊按單項(xiàng)、接力等不同權(quán)重自動(dòng)累加學(xué)院總分支持實(shí)時(shí)刷新排行榜。數(shù)據(jù)統(tǒng)計(jì)與證書(shū)模塊各學(xué)院金牌榜/總分榜、運(yùn)動(dòng)員個(gè)人成績(jī)單、獲獎(jiǎng)證書(shū)PDF批量生成。2.2 數(shù)據(jù)庫(kù)表設(shè)計(jì)的關(guān)鍵決策數(shù)據(jù)庫(kù)設(shè)計(jì)是這個(gè)項(xiàng)目的骨架我踩過(guò)不少坑重點(diǎn)說(shuō)三個(gè)決策第一比賽項(xiàng)目表的分類(lèi)字段不能只存田賽/徑賽兩個(gè)值。我一開(kāi)始只用一個(gè)event_type字段區(qū)分田賽和徑賽后來(lái)發(fā)現(xiàn)很多規(guī)則判斷都需要更細(xì)的分類(lèi)徑賽里100米是全程分道800米是部分分道田賽里的跳高和鉛球的錄取規(guī)則也不同。最后改成兩級(jí)分類(lèi)event_type田賽/徑賽/全能加event_sub_type短跑/長(zhǎng)跑/跳躍/投擲代碼里用枚舉統(tǒng)一管理避免魔法值滿(mǎn)天飛。第二成績(jī)表和排名表分離。新手容易犯的錯(cuò)是把排名直接算好存進(jìn)成績(jī)表成績(jī)一修改排名就亂套。我的做法是成績(jī)表result只存原始成績(jī)數(shù)據(jù)排名ranking由排名算法運(yùn)行時(shí)生成并緩存。這樣裁判錄入的成績(jī)能回溯、能復(fù)核排名出錯(cuò)了重跑一遍算法就行數(shù)據(jù)永遠(yuǎn)干凈。第三別用一張報(bào)名表硬扛所有業(yè)務(wù)。運(yùn)動(dòng)員報(bào)名一個(gè)項(xiàng)目涉及到運(yùn)動(dòng)員表、項(xiàng)目表、報(bào)名關(guān)系表三張表。報(bào)名關(guān)系表里要加status字段已報(bào)名/已檢錄/已參賽/棄權(quán)這個(gè)狀態(tài)流轉(zhuǎn)是業(yè)務(wù)流程的核心后面3.3節(jié)講。核心庫(kù)表清單如下表名用途關(guān)鍵字段sys_user用戶(hù)賬號(hào)username, password, rolecollege學(xué)院name, codeathlete運(yùn)動(dòng)員name, gender, college_id, student_noevent比賽項(xiàng)目name, type, sub_type, gender, round, score_unitregistration報(bào)名關(guān)系athlete_id, event_id, status, group_noresult成績(jī)記錄registration_id, score, rank, is_broken_recordschedule賽程安排event_id, venue, start_time, group_no3. 后端Spring Boot關(guān)鍵實(shí)現(xiàn)實(shí)錄3.1 賽事編排與場(chǎng)地時(shí)間沖突檢測(cè)賽程編排是個(gè)典型的約束滿(mǎn)足問(wèn)題。一個(gè)標(biāo)準(zhǔn)田徑場(chǎng)有跑道、跳遠(yuǎn)沙坑、鉛球區(qū)等場(chǎng)地同一時(shí)間段內(nèi)不同場(chǎng)地可以并行比賽但同一場(chǎng)地不能同時(shí)安排兩場(chǎng)比賽。人工排賽程的痛點(diǎn)在于幾十個(gè)項(xiàng)目、幾百組比賽交叉安排很容易出現(xiàn)一個(gè)場(chǎng)地同時(shí)被占用、或者一個(gè)運(yùn)動(dòng)員同時(shí)被兩個(gè)項(xiàng)目檢錄的沖突。我的實(shí)現(xiàn)思路是做一個(gè)時(shí)間槽 場(chǎng)地鎖的分配算法。先把運(yùn)動(dòng)會(huì)時(shí)間切成固定時(shí)長(zhǎng)的時(shí)段比如上午8:00-12:00按每30分鐘一個(gè)時(shí)隙每個(gè)場(chǎng)地在每個(gè)時(shí)隙只有一個(gè)可占用的槽位。編排時(shí)遍歷所有比賽組對(duì)每個(gè)組做三件事根據(jù)項(xiàng)目預(yù)估時(shí)長(zhǎng)計(jì)算需要占用的時(shí)隙數(shù)量找一個(gè)所有所需時(shí)隙都空閑的場(chǎng)地檢查該組的運(yùn)動(dòng)員在所選時(shí)段內(nèi)是否有其他比賽如果有則換時(shí)段。這個(gè)算法本質(zhì)是一個(gè)貪心策略實(shí)際使用中90%的場(chǎng)景都能一次分配成功剩余的沖突交給人工作調(diào)整。關(guān)鍵代碼邏輯// 場(chǎng)地時(shí)隙占用檢查 public boolean isVenueAvailable(Long venueId, LocalDateTime startTime, int durationMinutes, ListSchedule schedules) { LocalDateTime endTime startTime.plusMinutes(durationMinutes); return schedules.stream() .filter(s - s.getVenueId().equals(venueId)) .noneMatch(s - isTimeOverlap(s.getStartTime(), s.getEndTime(), startTime, endTime)); } // 運(yùn)動(dòng)員同一時(shí)段沖突檢查 public boolean isAthleteAvailable(Long athleteId, LocalDateTime startTime, int durationMinutes, ListSchedule schedules) { // 查該運(yùn)動(dòng)員所有已編排項(xiàng)目的比賽時(shí)間做區(qū)間重疊判斷 }注意貪心算法解決不了全部約束問(wèn)題所以我給管理員留了手動(dòng)調(diào)度的入口。界面上用日歷組件展示各場(chǎng)地的占用情況管理員可以直接拖拽調(diào)整系統(tǒng)實(shí)時(shí)做沖突提示。編排這個(gè)功能自動(dòng)化程度再高人工兜底永遠(yuǎn)是必須的。3.2 成績(jī)錄入、復(fù)核與自動(dòng)排名算法成績(jī)模塊是整個(gè)系統(tǒng)的業(yè)務(wù)核心也是最容易出邏輯bug的地方。徑賽成績(jī)錄入徑賽按秒記成績(jī)精確到百分位。裁判錄入的是原始成績(jī)比如11.25秒系統(tǒng)按小組排名然后所有組按成績(jī)統(tǒng)一排名取前八名進(jìn)入決賽或直接錄取。這里有個(gè)細(xì)節(jié)不同分組的運(yùn)動(dòng)員成績(jī)要在不同組內(nèi)排序預(yù)賽小組排名決定晉級(jí)決賽排名則全體統(tǒng)一比較。田賽成績(jī)錄入田賽每人試跳/試投若干次通常是三次取最好成績(jī)作為最終成績(jī)。這個(gè)三次取最優(yōu)的邏輯要用獨(dú)立表記錄每次試跳成績(jī)最終成績(jī)字段單獨(dú)冗余一份方便排名時(shí)直接比較。排名算法的同分處理是重災(zāi)區(qū)。徑賽同秒數(shù)極少見(jiàn)但田賽里成績(jī)完全相同比如都跳過(guò)1.75米的情況很常見(jiàn)。國(guó)際田聯(lián)規(guī)則是如果成績(jī)相同比較次優(yōu)成績(jī)?cè)傧嗤捅容^第三次成績(jī)也相同則名次并列。我在ranking服務(wù)里實(shí)現(xiàn)了完整的成績(jī)降序、次優(yōu)成績(jī)降序、第三次成績(jī)降序三級(jí)比較器public class FieldRankComparator implements ComparatorResult { Override public int compare(Result r1, Result r2) { // 第一級(jí)最好成績(jī) int cmp Double.compare(r2.getBestScore(), r1.getBestScore()); if (cmp ! 0) return cmp; // 第二級(jí)次優(yōu)成績(jī) cmp Double.compare(r2.getSecondBestScore(), r1.getSecondBestScore()); if (cmp ! 0) return cmp; // 第三級(jí)第三次成績(jī) return Double.compare(r2.getThirdBestScore(), r1.getThirdBestScore()); } }破紀(jì)錄判斷我在event表里加了record_score字段存當(dāng)前校紀(jì)錄。成績(jī)錄入時(shí)自動(dòng)比對(duì)超過(guò)就彈窗提示破紀(jì)錄并標(biāo)記is_broken_record字段。歷史紀(jì)錄數(shù)據(jù)我放在了單獨(dú)的record_history表里保留每次破紀(jì)錄的運(yùn)動(dòng)員、成績(jī)、時(shí)間和原紀(jì)錄對(duì)比既方便做破紀(jì)錄排行榜展示也讓數(shù)據(jù)可追溯。3.3 報(bào)名狀態(tài)機(jī)與規(guī)則校驗(yàn)報(bào)名這個(gè)環(huán)節(jié)看似簡(jiǎn)單實(shí)際上是最容易讓用戶(hù)罵娘的地方。一場(chǎng)運(yùn)動(dòng)會(huì)幾百上千個(gè)報(bào)名數(shù)據(jù)必須做好兩件事規(guī)則校驗(yàn)和狀態(tài)流轉(zhuǎn)。規(guī)則校驗(yàn)我在后端做了三層數(shù)據(jù)格式層學(xué)號(hào)格式、性別匹配、手機(jī)號(hào)格式用Spring Boot自帶的Validated注解搞定業(yè)務(wù)規(guī)則層每人限報(bào)兩個(gè)單項(xiàng)加一個(gè)接力、同一項(xiàng)目不能重復(fù)報(bào)名、女生不能報(bào)男子項(xiàng)目這些寫(xiě)在Service層里用自定義異常拋出數(shù)據(jù)完整性層學(xué)院、班級(jí)ID必須存在且匹配避免前端傳了臟數(shù)據(jù)。報(bào)名狀態(tài)我用一個(gè)狀態(tài)機(jī)管理字段status取值范圍PENDING已提交待審核、APPROVED審核通過(guò)、CHECKED_IN已檢錄、COMPETED已完賽、CANCELLED已取消。狀態(tài)流轉(zhuǎn)圖如下PENDING - APPROVED - CHECKED_IN - COMPETED PENDING - CANCELLED APPROVED - CANCELLED每次狀態(tài)變更都會(huì)寫(xiě)入registration_log表記錄操作人、操作時(shí)間、從哪個(gè)狀態(tài)到哪個(gè)狀態(tài)。這個(gè)設(shè)計(jì)在運(yùn)動(dòng)會(huì)當(dāng)天特別有用——領(lǐng)隊(duì)說(shuō)我的運(yùn)動(dòng)員檢錄了沒(méi)裁判說(shuō)這個(gè)運(yùn)動(dòng)員到場(chǎng)了沒(méi)一查日志就清清楚楚。3.4 基于MinIO的文件存儲(chǔ)與M3U8視頻回放這個(gè)項(xiàng)目的文件存儲(chǔ)部分我一開(kāi)始圖省事直接存服務(wù)器本地磁盤(pán)后來(lái)發(fā)現(xiàn)三個(gè)問(wèn)題一是比賽視頻文件大一個(gè)項(xiàng)目幾百M(fèi)B本地磁盤(pán)扛不住二是服務(wù)器磁盤(pán)擴(kuò)容麻煩三是視頻在線(xiàn)回放需要流媒體支持。最后改成了MinIO這東西和Spring Boot的整合非常順滑。MinIO是什么你可以把它理解成一個(gè)跑在自己的服務(wù)器上的迷你S3對(duì)象存儲(chǔ)。數(shù)據(jù)以桶bucket為單位組織每個(gè)文件是一個(gè)對(duì)象用HTTP接口訪(fǎng)問(wèn)。和FastDFS相比MinIO的部署和客戶(hù)端SDK要簡(jiǎn)單太多和阿里云OSS相比它不依賴(lài)外部云服務(wù)數(shù)據(jù)不出校門(mén)。Spring Boot整合MinIO的步驟很簡(jiǎn)單加依賴(lài)minioMaven坐標(biāo)是io.minio:minio:8.5.x在application.yml里配置endpoint、accessKey、secretKey、bucket名稱(chēng)寫(xiě)一個(gè)MinioService封裝上傳、下載、生成臨時(shí)訪(fǎng)問(wèn)鏈接的方法。Service public class MinioService { Value(${minio.endpoint}) private String endpoint; Value(${minio.access-key}) private String accessKey; Value(${minio.secret-key}) private String secretKey; Value(${minio.bucket}) private String bucket; private MinioClient minioClient; PostConstruct public void init() { minioClient MinioClient.builder() .endpoint(endpoint) .credentials(accessKey, secretKey) .build(); // 檢查bucket是否存在不存在則創(chuàng)建 } public String upload(MultipartFile file, String objectName) throws Exception { minioClient.putObject( PutObjectArgs.builder() .bucket(bucket) .object(objectName) .stream(file.getInputStream(), file.getSize(), -1) .contentType(file.getContentType()) .build()); return endpoint / bucket / objectName; } }M3U8視頻回放這個(gè)需求很多人忽略但實(shí)際做的時(shí)候全是坑。運(yùn)動(dòng)會(huì)現(xiàn)場(chǎng)錄的視頻格式五花八門(mén)手機(jī)錄的是MP4攝像機(jī)錄的是MOV讓瀏覽器直接播放需要格式兼容。我的方案是后端接一個(gè)FFmpeg轉(zhuǎn)碼服務(wù)把上傳的原始視頻統(tǒng)一轉(zhuǎn)成HLSM3U8流媒體格式再配合前端hls.js播放器實(shí)現(xiàn)在線(xiàn)回放。vue播放m3u8免安裝這個(gè)需求在運(yùn)動(dòng)會(huì)場(chǎng)景下就是典型應(yīng)用——評(píng)委和觀(guān)眾不需要裝任何播放器瀏覽器打開(kāi)就能看。轉(zhuǎn)碼我用的是FFmpeg命令行調(diào)用寫(xiě)一個(gè)異步任務(wù)執(zhí)行ffmpeg -i input.mp4 -codec copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls output.m3u8前端Vue里用hls.js加載M3U8流import Hls from hls.js; function playVideo(videoUrl) { const video document.getElementById(videoPlayer); if (Hls.isSupported()) { const hls new Hls(); hls.loadSource(videoUrl); hls.attachMedia(video); } else if (video.canPlayType(application/vnd.apple.mpegurl)) { // Safari原生支持直接設(shè)置src video.src videoUrl; } }注意M3U8是分片文件所有.ts分片要和.m3u8索引文件放在同一個(gè)目錄下如果目錄結(jié)構(gòu)變了播放器會(huì)報(bào)錯(cuò)。我踩坑的經(jīng)歷是把視頻文件按每年運(yùn)動(dòng)會(huì)/每個(gè)項(xiàng)目分目錄存到MinIO里前端拼訪(fǎng)問(wèn)URL時(shí)路徑一定要和上傳時(shí)的objectName完全一致。除了視頻MinIO還負(fù)責(zé)存運(yùn)動(dòng)會(huì)橫幅圖、獲獎(jiǎng)證書(shū)模板、運(yùn)動(dòng)員頭像等靜態(tài)資源。這么做有兩個(gè)直接好處一是Spring Boot應(yīng)用不再處理靜態(tài)文件上傳的狀態(tài)無(wú)狀態(tài)服務(wù)更容易橫向擴(kuò)展二是MinIO自帶的預(yù)簽名URL功能可以控制文件訪(fǎng)問(wèn)權(quán)限讓過(guò)期鏈接自動(dòng)失效小規(guī)模內(nèi)部系統(tǒng)用著剛剛好。4. 前端Vue實(shí)操記錄4.1 路由設(shè)計(jì)與權(quán)限控制前端用Vue Router做頁(yè)面路由模式選的是createWebHistoryHTML5 History模式原因有兩點(diǎn)一是URL干凈不帶#號(hào)方便分享二是部署到Spring Boot里可以做轉(zhuǎn)發(fā)配置讓刷新頁(yè)面時(shí)不白屏。路由分兩部分登錄頁(yè)和管理后臺(tái)。管理后臺(tái)是一個(gè)嵌套路由父組件Layout.vue包含側(cè)邊欄菜單和頂部導(dǎo)航條子路由對(duì)應(yīng)各個(gè)業(yè)務(wù)模塊const routes [ { path: /login, component: Login }, { path: /, component: Layout, redirect: /dashboard, children: [ { path: dashboard, name: Dashboard, component: Dashboard }, { path: athletes, name: AthleteList, component: AthleteList }, { path: events, name: EventList, component: EventList }, { path: schedules, name: ScheduleList, component: ScheduleList }, { path: results, name: ResultEntry, component: ResultEntry }, { path: rankings, name: RankingBoard, component: RankingBoard } ] } ];權(quán)限控制核心是路由守衛(wèi)。我在router.beforeEach里檢查兩件事一是token是否存在不存在就跳登錄頁(yè)二是用戶(hù)角色是否有權(quán)限訪(fǎng)問(wèn)當(dāng)前路由。角色的權(quán)限清單存在后端登錄時(shí)隨用戶(hù)信息一起返回前端用Pinia存一份。這里有個(gè)實(shí)際開(kāi)發(fā)中經(jīng)常踩的坑動(dòng)態(tài)路由。一開(kāi)始我把所有菜單都寫(xiě)死在前端后來(lái)不同角色看到的菜單不一樣只好在路由注冊(cè)時(shí)做動(dòng)態(tài)過(guò)濾。Vue Router 4提供了addRoute方法可以根據(jù)當(dāng)前用戶(hù)角色動(dòng)態(tài)掛載路由。但如果處理不當(dāng)退出登錄時(shí)動(dòng)態(tài)路由不會(huì)自動(dòng)清除換個(gè)賬號(hào)登錄還會(huì)看到上一個(gè)賬號(hào)的菜單。解決方案是登出時(shí)重置整個(gè)路由實(shí)例或者在注冊(cè)時(shí)保存一份原始路由表每次登錄根據(jù)角色從零開(kāi)始重建。4.2 成績(jī)錄入表單與實(shí)時(shí)榜單成績(jī)錄入頁(yè)面是前端做起來(lái)最順手也最需要細(xì)致考慮的部分。裁判員在田徑場(chǎng)的烈日下錄成績(jī)手上可能還夾著紙質(zhì)檢錄表所以頁(yè)面的交互必須做到最少點(diǎn)擊、最大容錯(cuò)。我的做法是選擇比賽項(xiàng)目后頁(yè)面自動(dòng)加載該項(xiàng)目的所有參賽運(yùn)動(dòng)員列表按組別和道次排好序。成績(jī)錄入?yún)^(qū)用表格形式每行一個(gè)運(yùn)動(dòng)員徑賽錄入秒數(shù)帶兩位小數(shù)的輸入框田賽錄入三次試跳成績(jī)?nèi)齻€(gè)輸入框。輸入框的校驗(yàn)規(guī)則是前端先校驗(yàn)格式必須是數(shù)字、范圍在合理區(qū)間后端再校驗(yàn)業(yè)務(wù)規(guī)則。表單里藏著兩個(gè)提高效率的細(xì)節(jié)鍵盤(pán)回車(chē)自動(dòng)跳轉(zhuǎn)下一個(gè)輸入框。給輸入框加keyup.enter事件判斷當(dāng)前行/列位置后把焦點(diǎn)focus到下一個(gè)框。裁判錄完一個(gè)運(yùn)動(dòng)員的成績(jī)回車(chē)就到下一格手都不用離開(kāi)鍵盤(pán)。這個(gè)交互細(xì)節(jié)對(duì)大批量錄入體驗(yàn)的提升比任何UI美化都管用。防誤觸的保存并繼續(xù)模式。錄完一組成績(jī)后點(diǎn)擊保存本組就把當(dāng)前組所有成績(jī)提交如果所有成績(jī)都合法就直接展示下一組不彈成功提示。這樣零打斷的操作流一場(chǎng)接力賽只需要不到兩分鐘就能錄完全部成績(jī)。實(shí)時(shí)榜單頁(yè)是Vue的強(qiáng)項(xiàng)用setInterval每5秒向后端拉一次團(tuán)體總分排行前端計(jì)算屬性驅(qū)動(dòng)排行榜渲染。分?jǐn)?shù)變化的時(shí)候加一個(gè)簡(jiǎn)單的CSS過(guò)渡效果數(shù)字滾動(dòng)觀(guān)眾席大屏投影出來(lái)效果非常好。4.3 文件預(yù)覽與視頻播放的坑這個(gè)項(xiàng)目的文件資源包括上傳的比賽視頻、生成的獲獎(jiǎng)證書(shū)PDF、運(yùn)動(dòng)會(huì)的橫幅圖、運(yùn)動(dòng)員照片。前端展示這些文件時(shí)有三組問(wèn)題是我反復(fù)踩坑后沉淀下來(lái)的PDF預(yù)覽。直接用iframe加載PDF地址能預(yù)覽但EasyExcel生成的PDF文件名帶中文時(shí)部分瀏覽器會(huì)亂碼或打不開(kāi)。解決方法是encodeURI編碼文件名或者在生成時(shí)就統(tǒng)一用英文文件名展示時(shí)再映射中文名。圖片不顯示。MinIO返回的圖片URL如果是預(yù)簽名URL鏈接里帶X-Amz-*參數(shù)直接放進(jìn)img src是能顯示的。但我遇到過(guò)一個(gè)問(wèn)題有些圖片URL里的號(hào)會(huì)被瀏覽器解析成空格導(dǎo)致鏈接失效。排查了半天最后發(fā)現(xiàn)是URLEncoder編碼空格符號(hào)時(shí)用了而不是%20統(tǒng)一成%20后問(wèn)題解決。視頻播放延遲。M3U8格式的視頻首次加載需要先請(qǐng)求索引文件、再按序加載各個(gè).ts分片如果MinIO和瀏覽器之間網(wǎng)絡(luò)狀況一般首幀會(huì)出現(xiàn)3-5秒的緩沖。優(yōu)化手段是轉(zhuǎn)碼時(shí)把hls_time參數(shù)調(diào)大比如10秒一個(gè)分片減少分片數(shù)量另外可以在頁(yè)面加載時(shí)預(yù)連接MinIO端點(diǎn)用link relpreconnect提前建立連接。實(shí)測(cè)下來(lái)首幀時(shí)間能縮短到1秒左右體驗(yàn)已經(jīng)可接受。5. 項(xiàng)目打包部署實(shí)戰(zhàn)5.1 方案一前后端分開(kāi)部署推薦生產(chǎn)環(huán)境推薦前后端分開(kāi)部署前端build后的靜態(tài)文件交給Nginx后端Spring Boot打包成jar獨(dú)立運(yùn)行。這樣做的最大好處是動(dòng)靜分離——靜態(tài)資源由Nginx直接返回Tomcat只處理API請(qǐng)求壓力小很多另外前端更新時(shí)不需要重啟后端服務(wù)發(fā)版更快。前端部署步驟# 1. 構(gòu)建前端 npm run build # 2. 把dist目錄下的文件上傳到服務(wù)器 /var/www/sports-meet/ # 3. 配置Nginx反向代理Nginx配置的關(guān)鍵片段server { listen 80; server_name sports.example.edu.cn; # 前端靜態(tài)資源 location / { root /var/www/sports-meet; index index.html; try_files $uri $uri/ /index.html; # 解決前端路由刷新404 } # 后端API反向代理 location /api/ { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }這里特別提一下try_files這一行。Vue Router開(kāi)了HTML5 History模式后前端路由像/athletes、/rankings在刷新時(shí)Nginx會(huì)去找對(duì)應(yīng)的物理文件找不到就返回404。加上try_files $uri $uri/ /index.html后所有找不到的路徑都回退到index.html由前端路由接管問(wèn)題解決。后端部署就簡(jiǎn)單了Spring Boot項(xiàng)目用Maven打包mvn clean package -DskipTests java -jar target/sports-meet-0.0.1.jar --server.port80805.2 方案二Vue打包放進(jìn)Spring Boot單jar運(yùn)行有些場(chǎng)景下沒(méi)有獨(dú)立的Nginx環(huán)境或者就一臺(tái)小服務(wù)器不想多維護(hù)一個(gè)服務(wù)——這時(shí)可以把Vue打包后的dist目錄直接拷貝到Spring Boot項(xiàng)目的src/main/resources/static下重新打包成jar后端啟動(dòng)后前端頁(yè)面和應(yīng)用接口都在同一個(gè)端口提供訪(fǎng)問(wèn)。這個(gè)方案我在一個(gè)小型內(nèi)部系統(tǒng)上實(shí)測(cè)過(guò)跑通的前提是注意三個(gè)地方前后端路由的聯(lián)動(dòng)。前端Vue Router用createWebHistory模式時(shí)訪(fǎng)問(wèn)/athletes刷新會(huì)出現(xiàn)404因?yàn)镾pring Boot默認(rèn)只映射了靜態(tài)資源沒(méi)有把未知路徑轉(zhuǎn)發(fā)到index.html。解決辦法是寫(xiě)一個(gè)WebMvcConfigurer把非API路徑全部轉(zhuǎn)發(fā)到/index.htmlConfiguration public class WebConfig implements WebMvcConfigurer { Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController(/{spring:\\w}) .setViewName(forward:/index.html); registry.addViewController(/**/{spring:\\w}) .setViewName(forward:/index.html); } }靜態(tài)資源路徑要用相對(duì)路徑。Vite默認(rèn)base是/打成jar后資源路徑如果帶絕對(duì)路徑在某些嵌入場(chǎng)景下會(huì)找不到。實(shí)測(cè)最穩(wěn)的方式是構(gòu)建時(shí)設(shè)置base: ./讓Vue打包出來(lái)的資源全部走相對(duì)路徑這樣不管jar部署在哪個(gè)端口都沒(méi)問(wèn)題。上傳文件的存儲(chǔ)目錄要和jar包分離。用java -jar運(yùn)行時(shí)當(dāng)前工作目錄是jar所在目錄如果文件上傳路徑寫(xiě)成相對(duì)路徑每次升級(jí)jar包時(shí)很容易把上傳的老數(shù)據(jù)覆蓋掉。我是把上傳路徑配置成絕對(duì)路徑/data/sports-meet/upload在jar外面獨(dú)立管理這樣jar升級(jí)完全不影響已有文件。5.3 MySQL初始化與數(shù)據(jù)遷移數(shù)據(jù)庫(kù)部分我用MySQL 8.0項(xiàng)目里配了Flyway做數(shù)據(jù)庫(kù)版本管理。每次表結(jié)構(gòu)變更寫(xiě)一個(gè)新的V{n}__{description}.sql遷移腳本spring.flyway.enabledtrue應(yīng)用啟動(dòng)時(shí)自動(dòng)執(zhí)行增量遷移。這個(gè)習(xí)慣幫我避免了好幾次測(cè)試環(huán)境加了字段、生產(chǎn)環(huán)境忘了加的慘劇。初始化數(shù)據(jù)用data.sqlFlyway的R__前綴文件可以重復(fù)執(zhí)行把學(xué)院名單、默認(rèn)管理員賬號(hào)、比賽項(xiàng)目模板100米、200米、跳遠(yuǎn)、鉛球等寫(xiě)進(jìn)去。新一屆運(yùn)動(dòng)會(huì)開(kāi)賽前管理員不需要從頭配置基礎(chǔ)數(shù)據(jù)只要把報(bào)名數(shù)據(jù)導(dǎo)入就行。6. 常見(jiàn)問(wèn)題與排查實(shí)錄6.1 開(kāi)發(fā)環(huán)境的高頻坑這個(gè)項(xiàng)目開(kāi)發(fā)過(guò)程中我記錄了不少典型問(wèn)題挑幾個(gè)最有代表性的整理成表問(wèn)題現(xiàn)象根本原因解決方案前端請(qǐng)求后端接口報(bào)跨域錯(cuò)誤Vite開(kāi)發(fā)服務(wù)器5173端口和后端8080端口不同源開(kāi)發(fā)環(huán)境用Vite代理server.proxy轉(zhuǎn)發(fā)/api到localhost:8080生產(chǎn)環(huán)境靠Nginx天然同源上傳大視頻文件時(shí)Netty報(bào)內(nèi)存溢出MinIO客戶(hù)端寫(xiě)入時(shí)未分片處理后端用FileInputStream分段流傳給MinIO不用MultipartFile一次性讀入內(nèi)存同時(shí)調(diào)大server.tomcat.max-swallow-size和spring.servlet.multipart.max-file-sizeVue打包后運(yùn)行時(shí)白屏路由模式用了history但服務(wù)器未配fallback按方案一配N(xiāo)ginx的try_files或按方案二走WebMvcConfigurer轉(zhuǎn)發(fā)刷新頁(yè)面返回404同上同上表格導(dǎo)出中文亂碼POI生成Excel時(shí)未設(shè)置XSSFWorkbook的字符集設(shè)置wb.setCharset或統(tǒng)一用UTF-8 BOM格式輸出CSV/ExcelSpring Boot版本和JDK版本不匹配導(dǎo)致啟動(dòng)失敗Spring Boot 3.x強(qiáng)制JDK17而項(xiàng)目用了JDK8要么升JDK要么降級(jí)Spring Boot 2.7.x基于javax而非jakarta命名空間6.2 數(shù)據(jù)與權(quán)限類(lèi)問(wèn)題的獨(dú)家排查技巧并發(fā)報(bào)名沖突。運(yùn)動(dòng)會(huì)報(bào)名開(kāi)放當(dāng)天幾百個(gè)學(xué)生同時(shí)在線(xiàn)報(bào)名出現(xiàn)過(guò)同一運(yùn)動(dòng)員重復(fù)報(bào)名同一項(xiàng)目的臟數(shù)據(jù)。排查后發(fā)現(xiàn)是前后端校驗(yàn)只做了一端兩個(gè)請(qǐng)求同時(shí)進(jìn)來(lái)都通過(guò)了校驗(yàn)。解決方式是在數(shù)據(jù)庫(kù)層面加唯一約束UNIQUE(athlete_id, event_id)從根上防止重復(fù)再用后端的select ... for update行鎖保護(hù)報(bào)名流程的并發(fā)更新。操作日志排查。系統(tǒng)上線(xiàn)后出現(xiàn)過(guò)一個(gè)成績(jī)被修改但查不到是誰(shuí)改的問(wèn)題。當(dāng)時(shí)所有成績(jī)更新操作只記錄更新后的值沒(méi)有記錄舊值。后來(lái)我在成績(jī)更新接口里強(qiáng)制附加了舊值快照日志格式是舊成績(jī)-新成績(jī)操作人操作時(shí)間。排查問(wèn)題時(shí)一眼就能看到數(shù)據(jù)變化的前因后果。建議所有涉及關(guān)鍵數(shù)據(jù)的更新操作都記錄完整審計(jì)日志這個(gè)習(xí)慣關(guān)鍵時(shí)刻能救你命。JWT過(guò)期引發(fā)的會(huì)話(huà)混亂。JWT token設(shè)有2小時(shí)有效期裁判錄成績(jī)錄到一半token過(guò)期前端請(qǐng)求返回401但頁(yè)面沒(méi)有任何提示裁判以為系統(tǒng)卡了白錄的成績(jī)?nèi)珌G了。解決方案兩個(gè)一是在A(yíng)xios攔截器里統(tǒng)一處理401響應(yīng)彈出提示并跳轉(zhuǎn)登錄頁(yè)二是給token加靜默續(xù)期機(jī)制——每次API請(qǐng)求返回時(shí)帶上新的token前端取下更新本地存儲(chǔ)讓長(zhǎng)時(shí)間在線(xiàn)的裁判不會(huì)被迫中間重新登錄。成績(jī)錄入精度問(wèn)題。徑賽成績(jī)手動(dòng)輸入時(shí)出現(xiàn)過(guò)11.5被自動(dòng)糾正為11.50但排名時(shí)發(fā)現(xiàn)11.5和11.50被當(dāng)成了不同數(shù)值。排查后才知道問(wèn)題出在JSON序列化前端傳字符串11.5后端BigDecimal正常存儲(chǔ)但傳給Double字段做比較時(shí)丟失了精度。最終方案是所有成績(jī)字段統(tǒng)一用BigDecimal存儲(chǔ)比較用compareTo而不是equals問(wèn)題根治。6.3 性能優(yōu)化實(shí)測(cè)運(yùn)動(dòng)會(huì)當(dāng)天是系統(tǒng)壓力最大的時(shí)刻檢錄查詢(xún)、成績(jī)錄入、榜單刷新三線(xiàn)并發(fā)高峰期QPS可能到幾百。我做的性能優(yōu)化有三個(gè)實(shí)測(cè)有效的點(diǎn)數(shù)據(jù)庫(kù)層面查詢(xún)最頻繁的排名查詢(xún)和報(bào)名狀態(tài)查詢(xún)涉及的字段全部加了聯(lián)合索引比如(event_id, status)、(athlete_id, event_id)慢查詢(xún)?nèi)罩纠镌?00ms的查詢(xún)降到20ms以?xún)?nèi)。Redis緩存團(tuán)體總分排行和項(xiàng)目報(bào)名人數(shù)這類(lèi)讀多寫(xiě)少的數(shù)據(jù)用Redis做緩存設(shè)置30秒過(guò)期。排名算法計(jì)算完成后寫(xiě)入緩存前端定時(shí)輪詢(xún)的接口直接讀緩存數(shù)據(jù)庫(kù)壓力大幅下降。異步化PDF證書(shū)批量生成是典型耗時(shí)操作我改成MQ異步任務(wù)前端點(diǎn)生成全員證書(shū)后返回生成中提示后端線(xiàn)程池異步處理完成后前端能看到生成結(jié)果列表。運(yùn)動(dòng)會(huì)現(xiàn)場(chǎng)沒(méi)有人愿意為生成1000張證書(shū)等半分鐘的頁(yè)面轉(zhuǎn)圈。最后再分享一個(gè)我做這類(lèi)校園管理系統(tǒng)的心得功能做成什么樣取決于誰(shuí)在用。運(yùn)動(dòng)會(huì)系統(tǒng)的管理員是體育部的老師裁判是學(xué)生志愿者我一開(kāi)始把界面做得功能豐富、選項(xiàng)很多實(shí)際使用后收到最多的反饋是太復(fù)雜了我就想錄入成績(jī)。后來(lái)我專(zhuān)門(mén)開(kāi)了簡(jiǎn)化模式裁判登錄后默認(rèn)直達(dá)成績(jī)錄入頁(yè)所有無(wú)關(guān)菜單都隱藏能一鍵完成的絕不兩步。系統(tǒng)最終好不好用不是看功能全不全而是看最核心的那條操作鏈路順不順。這個(gè)項(xiàng)目的所有設(shè)計(jì)都該圍繞這個(gè)原則來(lái)取舍。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色香av| 成人片视频| 亚洲精品色| 国产人妖的免费的视频| 99自拍视频在线观看| 后入综合久久| 国产AV天美| 婬女免费一二三区A片| 立川理惠无码一区二区| 欧美色图91| 欧天美中出| 色综合av男人天堂| 97天天摸天天爽| 大香蕉在线视频15| 日韩簧片免费看| 少妇内射视频| 色色操| 青草成人免费视频一com| 欧美在线啊啊啊 | 久久毛卡| 欧美日韩在线小说 | 精品人妻一二三| 91丨人妻丨国产丨丝袜| 亚洲第一男人天堂| 欧美与日韩97| 日韩无限资源| 欧美裸体美女日麻屄| 96超碰网| 老司机福利青青草| 国产美女自拍AV| 欧亚在线视频| 最新无码国产| 亚洲综人网| 91在线色| 97色碰| 日本一区二区成人在线| 日韩性爱啪啪视频| 日本亚洲嫩草影院啪啪| 亚州,欧美在线| 男人网站婷婷| 欧美亚洲清纯| 伊人网在线点播| 久9久9久9久9久9久9| 亚洲欧美清纯| 91丨熟女丨丰满熟女| 1二区9| 久久久久亚洲| 少妇一线天久久久久久| 国模艳艳啪啪一区| 亚洲无码一区二区三区三州| 91久久青青草原精品| 色97干| 久久久555| 91国产美女丝袜足交精品视频| 青青草色AV| 国产丝袜欧美在线视频| AV天堂因数| 91精品国产91综合久久蜜臀| 日本日逼高清| www…国产操逼| 久草视频分类在线| 欧美中日韩XXXX| 99久久com免费视频′| 国内亚洲精彩视频在线| gogogo免费高清看中国国语 | 强被迫伦姧在线观看无码网站| 欧美同性恋 的搜索结果 - 91n| 伊人欧美大香蕉视频| 天天综合网~91| 精品国产乱码久久久久久久久久毛片| 91丝袜美女国产| 狠狠操狠狠燥| 九九九九免费视频| 粉嫩久久久极品| 色噜噜日韩精品| A片大香蕉在线| 激情色图| 爽 好舒服 无码刺激久久| 成人情色一区二区| 风月影院男女十八禁| 日韩三级av片| 天天综合网站| 蜜臀亚洲中文| 97日视频| 国产人伦精品一区二区三区| 国产第11页| 久久久久久久| 国产精品久久久久久久久久梁医生| 国产九九九九九九九九| 黄色免费网页无码| 91中文在线| 安徽熟妇视频| 外国免费性情大片| 久久激情婷婷| 玖玖在线视频| 亚洲黄色网址| 高清国产性猛交xxxx乱大交| 久久精品一区| 美女让帅哥通她小鸡鸡| 另类小说综合网| 狠狠 91| 麻豆黄四叶草网站| 精品免费一区| 激情综合五月| 美女91av| 黄片国产精品一区二区| 日韩紧密久久| 91色色网站| 亚洲av强奸乱伦| 久色99999| 亚川综合视频| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 色婷婷A V一二三四区麻豆综合| 秋霞一集毛片观看| 久久久久久久久久久人妻| 超碰97最新人妻| 亚洲九九九| 六六久久日韩不卡| 欧美91在线| 婷婷六月色| 九九九久千久久激情蜜桃在线看 | 欧综合网| 情侣开房子拍 日韩无码 女的很漂亮| 久久久久女教师免费一区| 性爱乱伦视频免费| 色综合20p| 中文字幕日韩电影人妻| 久久精品视频28| 成人无码在线视频网站| 欧美日动态视频| 26uuu偷拍亚洲欧洲综合| 青久操| 日韩精品一区二区高清 | 极品欧美一区二区三区| 久久女同性恋一二区| 亚洲 欧美 偷拍 唯美| 人妻丝袜无 码视频专区| 亚洲自拍一区夜夜操| 欧美性xxxxx狂欢| 伊人色综合超碰| 久久久久久夜夜夜夜夜| 国产在线观看一区二区三区| 96免费视频在线| 精品久久久久久中文| 91熟女.com| 少妇超碰在线| 色就色综合| 99久久精品无码一区二区毛片免费 | 久射吧| 五月丁香婷婷啪啪| 欧美日韩天堂| 桃花色涩综合影院| 日韩综合97p| 99999精品成人| 97在线视频免费| 激情五月丁香五月| 亚洲国产精品成人综合| 日本潮催一卡操| 一级啊性爱在线视频| 午夜福利 成人 91| 懂色AV中文| 亚洲精品美女久久久久久久久| 色色九区| 2017超碰| 99国产在线绯色一区| 午夜偷拍久久熟女| 九九九热| 午夜视频久久久| 四虎影库国产精品免费| 婷婷中文网| 午夜性生活av免费在线看| 美女黄码视频午夜| 偷拍欧美激情| 美中韩AV综合网| 操屄不卡视频| se01国产在线视频| 成人五月天丁香激情综合| 久湿久久| 一区二区三区黄色片a| julia国产在线 | 殴美,日韩国产伦精品| 日韩丨制服丨中文|在线| 国产亚洲 中文欧美久久| 中日韩熟女| 日本高清有码网址视频| 伊人丝袜美腿高跟在线观看高清| 大香蕉免费中文| 欧美天堂亚洲电影院一区在线播放| 春色91| 欧美激情亚洲情色| 99热这里只有精品地址| 成人a大片在线观看| 69丨亚洲丨精品丨入口免费播放| 日韩午夜精品一区二区三区电影| 色女网日韩| 国产熟女乱论| 黄骗免费网站| 100啪啪视频大全| 熟女少妇一区二区三区| www.av不卡中文字幕| 操逼999| 天堂国产AV| 欧美不卡在线美女| 91精品成人| 黄总AV色图| 日本在线15p| 国产AV人人夜夜澡人人爽麻豆| 老汉网| 91爱做| 在线视频一区二区传媒| 一本一道久久综合久久| 欧美日韩国产黄色片| 亚洲av强奸乱伦| 久久精品国产亚洲粉嫩| 亚洲情色中文字幕一区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 无码视频黄色网战| 久久精品 六十路 熟女 欧美| 精品久久久无码| 欧美日韩国产高清在线一二三区 | 蜜伊人色综合97| 中文字幕丝袜人妻| 91天天综合在线观看| 呻吟 欧美 日本 中出| 中文字幕精品亚洲熟女| 久9精品| 亚洲欧美日韩精品久久久一区二区 | heyZO天然素人无码AⅤ专区| 欧美一级特黄淫片在线观看| 思思性爱| 国产女人高潮视频| 久久久亚洲Av| 五月丁香激情综合网| 人妻熟女字幕一区二区| 刺激精品视频| 精品国产乱码久久久久久蜜臀| 呦呦一区| av日韩在线观看电影| 久久久久国产无av| 欧美丝袜激情| 亚州欧美另类| 无码 黑人一区二区三区| 国产综合网站在线播放| 天天影视网综合少妇| 精品久久久久久久久久久久| 精品无av| 翔田千里AⅤHD无码| 久久精品国产免费观看99| 麻豆国产97在线| 91少妇通奸网站| 欧洲亚洲人妻无码高清久久三区四区| 人妻三级在线中文字幕| 无码天天操| 色五月综合| 蜜桃久久久久久久| 色九色久| 大香蕉一区二区在线观看.| 果冻国产精品麻豆成人av| 中文字幕二区日韩天堂| 超碰这里有精品| 色逼综合| 亚洲经典啪啪| 亚洲熟久久| 国产精品96久久久久久| 日本操BAV| 久久色一区| 黑人性欧美| 久久综合资源一区二区| Av色五月| 国产精品不卡少妇白| 啪啪AV导航| 欧美 中文字幕 一区| 暴力av在线| 男女性感激情网站| 97视频在线观看高清资源| 91美| 人人扣人人操| 色偷偷人人玩人人舔人人操人人摸人人爽 | 嗯嗯,啊啊,国产精品| 超碰偷拍| 国产精品一区二区 尿失禁| 色爱欲亚洲| 丝袜AV一区二区三区| 久久九九国产精品| 97热视频在线观看| 国产51色综合久久免费| 亚洲欧美日韩国产丝袜自拍中文| 日本1区2区不卡视频| 四虎影视在线| 天天做日日做| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 在线精品福利免费播放| 亚洲和欧美裸体美女双飞视频| 热思思免费视频| 亚洲中文字幕妇伦久久| gogogo免费高清看中国国语| 97综合国产精品高潮久久| 农村女一级毛卡片| 97色视频在线| 欧美性爱另类综合| 国产97在线 | 亚洲| 婷婷午夜| 亚洲av青草久久一区二区| 91xingse| 婷婷在线视频在线观看| 日韩欧美丝袜诱惑| 天堂中文日本在线观看| 天天综合网视频91| 欧美嗯啊……在线观看视频免费| 在线日韩精品一区二区三区| 欧美综合第一| 日韩欧美午夜视频在线| 色97欧美| 久久久久性熟视频| 性影在线视频| 国产精品网址| 大香蕉在线视频重口味毛片在线| 国产成人无码啪| 99国产精品自在自在| 久久99综合| 婷婷婷婷婷婷久久久久| 亚洲综合九| 人人透人人操| 日韩成人无码| 97资源站久久| 97网址www| 国产人妖视频一区在线观看| 亚洲丝袜少妇在线| 精品久久久亚洲AV成人网站| 欧美日韩欧美| 精品中文日韩字幕视频| 狠狠干综合| 中文字幕精品免费一区二区| 十八禁电影伊人网| 丰满人妻一区二区三区四| 欧美性爱综合,免费| 操死我了嗯嗯嗯| 日本午夜福利影院| jiujiujiujingpin| 草草影院最新网址| 国内一区二区免费| 亚州高清av| 手机av天堂久久久久| 97在线视频观看免费| 天天拍天天操| 国产精品一二三在线看| 亚洲国产97| 午夜久久久| 中文字幕在在线观看网站| 国产操逼逼网| 国产在线强奸视频| 亚洲综合影院| 嗯嗯啊好爽| 超碰9 7女人| 午夜欧美神马久久久久| 91色综| 日欧操屄视频| 操比国产| 日韩欧美国产高清视频| 国产日韩精品人妻久久久久色欲网站| 综合欧美亚洲| 另类欧美色| 亚洲另类色综合网站| 97色妞| 97硬碰| 99热色这里只有精品| 亚洲综合婷婷| 蜜桃无码AV一区二区| 人人看人人爰人人操| 小说区 图片区色 综合区| 日韩久射综合| 91免费看中出视频| 999国产精品999久久久久久| 亚洲脚交| 97人人色| 欧美日韩亚洲少妇寂寞影院正在播放| 中文字幕第95页| 色色色色日本| 日韩熟女精一区二区三区不卡| 97精品国产97久久久久久| 日本孕妇一区二区视频操逼免费看| 欧美日韩妖精91com| 亚州大图综合色图| 欧美日韩亚洲少妇寂寞影院正在播放| 搡老熟女国产1000部| 肉丝无码中文高清| 91少妇高潮| 欲色综合| 日本淫乱女一区二区三区视频| 97 色综合| 日本淫乱女一区二区三区视频| 97欧美日韩综合| 青青草公开在线免费不卡视频| 人人澡人人澡人人| 久久超碰com| 蜜臀视频网站| 亚洲自拍天堂| 综合色99| 国产白嫩精品久久| 日欧毛片久久| 亚洲丝袜二区在线| 84YTCOM性无码| 男人天堂黄片| 综合五月婷婷| 青青操在线亚洲视频观看欧美在线 | 日日爽夜夜爽| 偷拍在线观看视频| 九九九九九九九九九九九九九九九女| 职场同事知名国产国产精品久久欧美日韩 | 精品小视频在线| 精品射1999| 91九九九逼| 日韩精品大香蕉伊人在线| 精品999日本| 激情婷婷丁香网| 欧美亚洲丝袜人妻制服中文99| 亚洲国产丝袜熟女av| PMv在线观看| 乱伦日本色图AⅤ| 久久久久久欧美精品se一二三四| 啪啪91| 97精品在线| 日韩欧美女求操每天更新| 东京热一区二区中文字幕| 亚洲欧美日韩免费电影| 天天日天天干天天摸天天操| 欧美日韩一区二区三区四区蜜桃| 色香蕉影院| 亚洲最大的黄色电影网站。| 久久久久九九九九九| 男人的天堂2018| 免费中文在线| 97人人中文网| 天天射天天色成人| 日韩图区 偷拍| 长长久久88视频| 欧美日韩国产电影| 九九碰九九爱97超| 国产呦精品一区二区三区下载| 97 亚洲 日韩 欧美 在线| 天综合网欧美| 性videos欧美熟妇hdx| 中文字幕在线高清男人的天堂| 天天摸,夜夜摸| 久久影视二区三区行押| 中文字幕一区二区三区高清| 九九九久千久久激情蜜桃在线看 | se吧提供国产乱老熟视频胖女人| 激情小说五月天| 9精品久久| 国产无码精品久久久久久| 99re国产中文字幕| 后入式五六区| 亚洲综合精品国产一区| 熟女网站最新| 免费精品国偷自产在线在线| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 九9精品| 超碰无码加勒比| 色婷婷在线视频精品导航| 麻豆一区二区AV天美| 国产高清成人mv在线观看| 青草香蕉网| 欧美呦呦性爱| 欧美国产一区二区三区麻豆传媒| 欧美十八禁视频| 动漫片子网站3黄| 青草av在线| 日本女人操逼| 久操九九九九| 精品人妻一区二区三区日产| 欧美淫穴| av中亚| 婷婷尹人大香蕉免费| 综合天天。| 国产三级中文有码在线视频| 青草视频人妻在线观看| 日韩毛片9| 95人妻爽爽人人做人人澡 | 日韩大香蕉AV影片| 日韩人妻精品久久久久| 亚洲不雅视频1区二区| 婷婷五月天色| 综合影院永久入口国产| 午夜精品久久久久| 老司机射| 精精品人妻一区二区三区| 伊人91| 淫荡网址| 91综合国产精品| 操B在线观看| 极品出轨视频网站| 日韩99神马视频播放片在线播放| 亚洲一区二区三区春色| www被窝色com| 国产精品第一区第一页| 天天日天天操VV| 牛牛操视频逼| 国产九九九九九九| 色哟哟国产精品免费网址| 大象AV在线| 国产一区二区三区,在线观看观看| 精品一区二区成人| 91成人精品| 日本一区二区三区精品| 亚欧中文字幕在线视频| 精品在线观看视频在线| 青青草中文字幕| 91在线丝袜视频| 久久婷婷亚洲| 久久久精品中文字幕爱豆| 日韩丨制服丨中文|在线| 婷婷综合五月天| 在线观看无码三级少妇| 91色欧美| 欧洲亚洲人人爽爽视频| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | a片自拍直播视频| 亚洲欲| 97AV爱| 免费作爱一级视频| 亚洲日韩人妻中文字幕一区| 青青草华人在线欧美在线| 国产亚洲 中文欧美久久| 蜜桃视频成a人v在线| 俞拍久久国应视频| 色阁阁AV综合网| 久久国色天香香蕉| 欧美性爱另类综合| 国产精品999zyz| 偷拍精品一区二区三区| 四虎av在线| 欧美影音在线| 欧美日韩亚洲高清不卡一区二区三区| 中文字幕日本久久| 2018天天干在线视频| 少妇综合网| 97K超碰在线| 国产精品久久久999| 强奸少妇AV导航网| a网站免费观看| 国产激情在线| 欧美另类综合久久| 久久久久久亚洲Av无码| 亚洲黄片免费在线播放| 日韩欧无码一区二区三区免费不卡| 欧美日韩国产色五月综合在线| 双插在线| 国产无码精品久久久久久| 欧美线天码中字| av一区二区三区四区五区久草臀| 中文字幕一二三区| 国产伦精品免编号公布| 男人亚洲91首页在线| 亚洲第一综合| 人妻啊啊人妻啊| 婷色五月| 久久久98网站免费视频| 男人夜色天堂ss| 大香蕉亚洲中文| 五月丁香激情综合网| 99九九久久| 任你爽视频| 激情综合久久| 男人的天堂在线有码| 九九九九九精品十六| 六月丁丁香| 五月丁香激情综合| 东北女人av| 男女激情中文字幕| 亚洲Av噜噜一区二区三区妖精| 妇人噜噜| 校园春色欧美| 97色欧洲| 在线视频 亚洲精品| 亚洲国产另类在线中文| 人人玩人人添人人澡免费| 九月丁香婷婷色| 久久久 国产精品| 丁香五月大香蕉| 精品无码久久久| 日本啊啊啊啊啊视频| 久久久久大香青草精品综合| www.acm成人黄色毛片| 国产91丝袜 在线播放| 久久久久久9| 日本一区视频在线观看| 一区二区三区视频在线观看免费| 九月色婷婷| 欧美在线色图| 大但人体久久久久| 超碰色综合| 日韩欧美大力操| 国产亚洲精品自在线亚洲情侣| 亚洲色色色| 91伊人大香蕉| 国产精品黄色三级av| 亚洲精品乱码久久久久久蜜桃麻豆| 色色色网站| 97色97好| 亚洲黄色AV电影| 狠狠操官网| 色优久久| 九9热伊人| 97免费在线观看| 最新中文字幕精品在线| 青青草原人妻| 中文字幕午夜精品久久久| 伊人操| 1769国内精品视频| 97视频网站在线观看| 久久超碰亚洲人| 99久久精品欧美国产| 亚洲熟女少妇免费视频| 欧亚性爱在线视频| 亚洲人精品午夜不卡| 久一区久久蜜桃| 国产成人午夜视频网址| 五月天婷婷欧美三区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 人妻欧美| 久久男女激情视频网站 | 一区二区乱码福利| 亚洲成熟国产精品美女| 亚洲淫乱骚妇AV| 日日夜夜摸| 精品人妻美妇91job| 色五月天AV| 97欧美超碰| 97色碰| 99re6国产精品99re| 天天看精品动漫视频一区| 日本岛国黄色网址| 欧美天堂第二区| 中文字幕一区二区免费在线| 江都AV在线| 九九热九九| 激情四射五月天| 久超碰这里只有精品| 精品成人亚洲午夜电影| 欧美美女在线高潮999| 超碰在线一区二区| 亚洲男人天堂Av| 91国产丝袜白虎| 亚洲欧洲日韩国产自在线| 天天干天天日天天射黄色片| 秋霞网无码| 亚洲精品蜜桃久久久一区二区三区| 亚洲色棕合| av婷婷色婷婷色六月| 91热色| 亚洲日韩成人性爱视频| 粉嫩久久久极品| 国产精品久久久久久久久AV大片| 日本精品一区二区三| 久久精品国产亚洲AV嘿嘿| 成人在线午夜视频一区| 九月丁香综合网| 精品9999| 骚逼高潮久久精品| 日本阿v天堂在线观看| 中文字幕国产精品1区| 色在线视频导航| 亚洲精品天天影视综合网| 91久久免费视频互動交流| 嗯嗯,好大,好爽,好骚| 国产强奸91| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 人妻少妇久久久| 亚洲色图欧美色图另类图片| 青青草视频在线观看一区二区| 日韩性爱1级片视频| 91国内外在线| 婷婷97| 国内亚洲高清无码| a人片中文字幕一区二区| 人人摸人人叼| 久久97| AV丝袜东京热| 中字乱伦AV| 国产又黄又粗又猛大片| 亚洲揄拍网| 国产女性无套 免费观看| www欧美91| 亚洲五区熟女| 日韩欧美字幕亚洲一区二区| 夜夜躁狠狠躁日日躁av| 少妇69中文| 国产女性无套 免费观看| 日韩无码一区二区三区| 亚洲激情色片| 婷婷导航| 亚洲最新av无码成人精品区| 伊人麻豆传媒| av东京热男人的天堂| 久久伊人大香蕉| 亚洲天堂五月天国产| 青久久| 蜜桃臀 后入 一区 二区 三区 在线| 精品人妻中文字幕4399| 密臀视频三区免费网站| 91色色综合| 青青国产精品在线| 入口操逼网站| 免费少妇一区二区| 欧亚日韩中文在线| 国产丝袜高跟美女av免费观看| 亚洲18禁| 亚洲综合婷婷| 亚州操逼图| 亚洲码在线中文在线观看| 天天操天天干美女网址导航| 人妻熟女一区二区三区在线| 校园春色 男人天堂 | 亚洲日韩XXX| 日韩内射视频| 丰满人妻一区二区三区免费,| av在线一区二区三区| 日韩免费a级毛片无码a∨| 蜜汁欧美| 五月婷婷青青草娱乐伊人| 白 大 人妻 区 在线| 亚洲色人妻综合| 亚洲五月婷| 五月天婷精品激情| AV网站高清无码在线观看| 一二三区操逼国产91| 91黄站| 日日玩天天干| 久久久久96| 岛国不卡超碰护士AV在线播放| 欧美老妇综合网| 夜夜高潮夜夜爽高清视频一| 精品久久久久,69国产成人精| 亚洲AV无码乱码在线观看性色| 亚洲成熟国产精品美女| 日韩性爱毛片操骚逼| 国产精品福利视频播放| 五月丁香黄色网| 91网站18| 黄骗免费网站| 久久性爱视频免费看| 在线综合网| 日本孕妇一区二区视频操逼免费看 | 狼人综合婷婷激情四射 | 国产欧美精选自拍一区| 精品成人动漫一区二区| 国产高清成人mv在线观看| 黄色在线网站| 日韩A优精品在线观看| 色嗨嗨在线| 国产AV超爽| 五月丁香综合| 操少妇很爽av| 极品少妇99| 丰满丝袜少妇AV| 美女天天干| 97超碰美女| 成人羞羞视频国产| 在线播放免费av福利片| 美女操逼福利视频| 探花一区在线| 婷婷六月色| 色综合潮| 国产精品久久久久999| 中文字幕黄色一起草| 亚欧成人一级片在线播放| 亚州熟女乱伦| 欧美性爱一级操| 午夜婷婷| 青青草精玖玖69精品| 国产亚热在线久久| 精品人妻一区二区三区日产| 中文字幕精品一区二| 国语国产操逼伊人AV网| 99久热| 蜜臀色乳| 久久精品无码专区| 无码人妻一区二区三区色欲aⅴ | 久久黄黄| 久久熟女久| 天天日天天看| 国产成人综合在线播放| 婷婷大香蕉| m欧洲一级午老| 午夜一区| 天天搞在线综合网| 麻豆天美电影一区二区| 热热色色综合| 国产性爱强奸乱伦大全| 一区二区三区免费岛国片| 懂色AV一区二区三区| 97视频900| 亚洲精品久久久久久久蜜桃臀| 精品午夜福利国产一区二区在线观看 | 亚洲综合性感在线| 夜夜高潮夜夜爽国产伦精品| 国模无码人体一区二区三| 大香蕉综合在线| 熟女网站最新| 国产自制av蜜乳| 九九亚洲视频| 黄色一区三区| 亚洲国产成人精品999| 大香蕉久久| 中出后入| 大香蕉www.超碰| AV色天香在线| 亚洲a色| 每日更新AV| 久久久网一区| 中日韩免费看男女操逼大全| 99热啪啪| 超碰色美女| 美国人人操人人操| 性色高清在线| 2024年最新色情网站在线观看| 97久久久| 人妖欧美一区二区| 亚洲高清无码在线桃色| 干B| 自怕偷自怕亚洲精品| 狼人综合婷婷激情四射 | 狠狠色一区二区中文字幕| 91久久久亚洲| 欧美精品成人亚洲| 1区2区3区视频| 超碰av人人人| 亚洲97超碰| 欧日韩不卡视.频| 亚洲天堂资源在线| 色色五月丁香| 精品人妻一区二区三区不卡断| 大屁股xxxxx| 亚洲另类色综合网站| 日韩精品9999| 女人与公拘交酡2020视频| 成人贴图日韩欧美| 97精品视频| 91 丝袜在线| 久久免费99精品久久久久久| 闷骚老熟女15P| 成人性爱AV在线免费观看| 96免费视频在线| 免费1级a做爰片观看| 成人精品一区二区三区| 在线色导航| 人妻无码视频一区二区三区久久| 另类 日韩 熟女| 淫穴高潮色图| 久久乐| 久久夜夜| 国产中文福利| 午夜寂寞欧美| 2017,超碰| 欧美综合骚| 亚洲黄色视频在线观看视频| 久日91在线| 操逼网免费无码视频| 九九九999久久久网站| 天美国产精品| 久久久久人妻二区精品叶可怜| 色男人色天堂东京热| 牛黄色久午久| 亚洲色欧美| 啊啊啊快操我视频| 国内精品久久久久影院亚洲| 丝袜美腿操av| 一道本东京热加勒比一区二区三区 | 探花熟女,姿勢到位,體驗感也到位| 舔舔啊| 性爱动态120秒| 成人免费看吃奶视频网站| 我想要啊 啊 啊| 亚洲性综合9| 国产黄片精品在线| 超碰色大香蕉| 亚洲瓯美色图| 柠檬AV导航| 亚洲无线观看久久| 伊人96在线| 欧美嫩性色| 日韩成人性爱AV| 国产精品天堂| 国产精品国产| 久久久久久久久久久久久久久性生活视频 | 成人小说另类在线| 97在线欧| 玖玖蜜臀资源网| 色情五月丁香| 国内偷自视频区视频综合| 国产一区二区在线看| 久久做97| 色五月婷婷麻豆在| 日韩精品1区2区中文字幕| 97超碰香蕉| 欧美洲精品一级| 嗯……啊…嗯嗯…啊…好舒服| 国产一区二区av综合| 久久久久久久强迫| 人妻激情视频| 97精品在线| 人人污日韩一区二区| 99无码| 欧美性爱一级操| 中文人妻av高清一区| 天天伊人| JuliaAnnXXX888| 91欧美性| 99国产精品免费| 欧美色偷拍| 婷婷香蕉| 日本一级性爱| 日本免费人成视频播放120秒| 日日夜夜精品视频| 97操B| 国产日韩中文字幕欧美| 青青草白白色| 亚洲色性情三级| 一区二区三区 丝袜 高跟 美腿 | 肉动漫无遮挡h在线观看| 99精品九九九九九九| 影音资源男人日韩| 天天色踪合| 日日噜噜夜夜久久亚洲一区二区| 久久伊人网视频一区二区三区| 92福利社视频| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 91精品免费| 少妇99| 亚洲熟女偷拍在线观看| 国产25页| 亚洲污污网站| 亚洲的天堂网| 97欧美色综合| 97国产综合欧美| 狠狠爱夜夜干| 国偷自 一区| 一二三四区电影| 日本黄色精品| 老熟女91视频| 91综合熟女| 超碰97久久| 日本不卡一区| 国产亚洲福利第一页丝袜| 中文字幕久久婷婷丁香五月天| 在线综合网| 98人妻精品一区二区色欲| 久久国产熟女影院| 亚洲熟女精品| 亚州AV无码国产精品| 国产 v乱码一区二| 五月天激情四射| 口爆综合网| 国产视频一区二区三区久久亚洲天堂| 91欧美偷拍| 99久热精品99re6热| 精久久久| 超碰九区| 18禁在线视频| 天天看天天在线精品| 国产小u女在线观看| 五月综合色| 欧美最婬乱婬爆婬性视频 | 成人性爱AV在线免费观看| 日韩国产欧美伦理在线| 91爆操视频| 狠狠久久亚洲欧美专区| 一牛影视久久久一区二区三区| 自拍欧美| 中文字幕一品色图| 欧美亚洲情色| 欧美国产精品| 色色色综合网| 人人澡综合涩| 东京热,男人的天堂| 91操熟女| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 久久婷色| 亚洲射综合网| 久久精品一区二区三区蜜桃臀| 美女网站91| 8x福利精品第一福利视频导航 | 99999久久精| 91久久九九精品国产综合| 国产av美女被艹的乱叫| 天天操女人| 在线小说视频一区| 日韩精品字幕| 国内三级自拍小视频在线观看| 67914在线精品观看| 草草影院日本第一页| 婷婷综合在线| 嗯嗯啊好大| 女生91网站| 18禁网站在线播放| 久久精品视频久久久| 亚洲怡春院| ji熟女.com| 黄污污污污| 国产熟女高潮一区二区三区| 欧美性爱精品七区| 色五月av| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 大香蕉AV在线| 熟妇国产免费一区| 毛片一区二区| 婷婷综合五月| 91美女国产在线| 国产精品麻豆免费视频| 99在线免费观看| 亚洲中文字幕一区| 夜夜操青青草| 欧美天天综| 91狠狠综合网| 激情五月综合网| 久久久天美| 岛国网址国产| 亚洲激情天堂网| 日B操| caopeng97| 78久久| 天天日天天操心| 天天影视综合色| 久久精品店| 亚洲熟女乱综合一区二区三区| 国产精品一区二区手机看片| 伊人天堂在线| 天天日夜干| 日韩人妻大香蕉| 九热久| 婷婷在线播放| 亚州综合在线| 无码免费一区二区三区啪啪| 久热伊人| 狠狠狠狠狠干| 资源新线在线天堂| 精品精品精品| 97视频在线播放| 女人的久久久| 啊v在线观看视频| 碰碰在线视频| 少妇久久久久久| 很黄很污的免费网站| 国产精品久久久吖| 欧美性色综合网| 熟女这里只有精品6| m欧洲一级午老| 免费看国产曰批40分钟怎么下载| 日日夜夜噜| 日韩亚洲中文字幕在线| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 蜜乳av首页| 农村少妇久久久久久久| 最新欧洲欧美日本激情网站| 欧美色图91| 大香蕉综合| 亚洲密乳AV| 欧洲亚洲天堂精品| 免费a在线播放v| 91精品人妻一区二区三区蜜臀| 黄页大片在线观看| 天天视频黄| 强奸熟女一区二区三区| 日韩精品永久在线观看| 日韩91网站| 少妇被玩视频二三区| 操逼天美3区| 伊人久大| 欧美另类色| 少妇人妻好深太紧了vr91| 中文字幕乱偷人妻久久艾草网| 伊人久久大香大香线蕉中文| 校园春色AV天堂| 久久一二三级一一一| 无码av永久免费专区网站| 密臀在线一区尤物| 97se综合网| 亚洲欧美国产其他二区| 日韩无限资源| 亚洲限制级| 99热啪啪| 日韩精品碰碰| 欧美 亚洲精品首页| 91久久久视| 成人性爱电影网| 100啪啪视频大全| 中文字幕一品色图| 高清不卡国产| 精品性爱无码在线播放| 精品视频一区二区| 婷婷激情五月综合| 男人下部插入女人下部| www网站黄| 国产精品一区二区手机看片| 欧美激情一| 91网站18在线| 久久五月综合| 久久直播国产| 大学生美女口爆| 美女天天干| 人人搡人人肉久久精品| 日韩国语字幕| 嫖老熟女A片一二三区| 91国产操逼视频| 色吊丝 日日骚 清纯唯美| 歐美性天天| 97玖玖人妻| 99精彩视频| 久久香蕉综合一本到3atv| www.99色| 国产精品剧情| 精品人妻久久久| 97频视在线| 欧美色图中文字幕| 婷婷久草一区二区三区| 亚洲性爱无码乱伦av| 一个国产在线综合网站| 97啪啪| 台湾佬大香蕉| 国产自偷| 97就爱干| 免费看污网址| 精品国产一区二区三区久久久蜜臀| 色婷婷激情| 岛国片在线观看视频亚洲| 日日摸夜夜夜夜爽| 日韩性爱视频在线免费观看| A 天堂| 性天堂| 99热在线观看| 天天做天天爱| 精品九区| 99re98| 亚洲国产综合图区中文字幕| 78操B| 精品对白久久不卡| 蜜桃传媒视频第一区入口在线看| 青青草女人天天干| 搡老女人老91妇女熟女| 亚洲熟女一区| 玖玖草久草99蜜月一区二区三区| 性性欧美| 亚洲精品1区| 亚洲综合骚逼| 看看日B真人视频| 狠狠干2020| 久肏视频字幕| 中文字幕乱妇免费视频| 欧美色蜜桃97| 99av| 国产精品一区二区a| 亚洲在线网站| 免费a级毛片av无码久久精品中文字幕| 久久久性| 超碰精品国产无码| 日韩精品在线观看观看| 93人人操人人| 亚洲女毛多水多21P| 午夜丁香|