国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

微信小程序駕校預(yù)約管理系統(tǒng):并發(fā)控庫(kù)與核銷(xiāo)閉環(huán)實(shí)戰(zhàn)

微信小程序駕校預(yù)約管理系統(tǒng):并發(fā)控庫(kù)與核銷(xiāo)閉環(huán)實(shí)戰(zhàn) 簡(jiǎn)介面向微信小程序開(kāi)發(fā)學(xué)習(xí)者與Java全棧初學(xué)者這是一份駕校預(yù)約管理系統(tǒng)的完整源碼包。項(xiàng)目基于微信開(kāi)發(fā)者工具后端采用SSM框架與MySQL數(shù)據(jù)庫(kù)B/S架構(gòu)分為學(xué)員、教練、管理員三類(lèi)角色包含首頁(yè)、個(gè)人中心、學(xué)員管理、教練管理、駕校信息管理、駕校車(chē)輛管理、教練預(yù)約管理、考試信息管理、預(yù)約考試管理、系統(tǒng)管理等模塊游客無(wú)需登錄也可瀏覽公開(kāi)信息。壓縮包共1209個(gè)文件以png、js、vue、java、json等類(lèi)型為主涵蓋前端圖標(biāo)、小程序頁(yè)面、Vue后臺(tái)組件、Java接口與項(xiàng)目配置總大小12.28MB。目前已有463人下載學(xué)習(xí)。配套說(shuō)明文檔與一鍵安裝、運(yùn)行、構(gòu)建腳本便于快速啟動(dòng)項(xiàng)目資源目錄劃分清晰適合課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)以及想理解小程序預(yù)約類(lèi)系統(tǒng)完整實(shí)現(xiàn)流程的讀者參考。1. 駕校預(yù)約管理系統(tǒng)不是“做幾個(gè)頁(yè)面”是讓教練、時(shí)段、庫(kù)存和核銷(xiāo)轉(zhuǎn)成一條閉環(huán)駕校預(yù)約管理系統(tǒng)聽(tīng)起來(lái)像是“選個(gè)教練、挑個(gè)時(shí)間、存一條記錄”但真拿去給駕校用你會(huì)發(fā)現(xiàn)最核心的需求是學(xué)員能自助約課、改期、取消教練能看到自己一天什么時(shí)候被約了前臺(tái)要能核銷(xiāo)、統(tǒng)計(jì)、處理爽約。這個(gè)標(biāo)題里的小程序項(xiàng)目就是把這一整套流程壓縮到微信里學(xué)員不裝 App、教練不拿紙質(zhì)表打開(kāi)小程序就能操作。對(duì)剛接觸小程序開(kāi)發(fā)的人來(lái)說(shuō)它是一個(gè)比“電商練手”更貼近真實(shí)業(yè)務(wù)的樣本對(duì)正在接駕校、培訓(xùn)機(jī)構(gòu)私活的人來(lái)說(shuō)它直接對(duì)得上驗(yàn)收清單。真正讓這類(lèi)項(xiàng)目翻車(chē)的往往不是頁(yè)面難看而是“同一個(gè)時(shí)段被兩個(gè)人同時(shí)約上”這種并發(fā)問(wèn)題以及預(yù)約狀態(tài)一亂、核銷(xiāo)對(duì)不上賬的連鎖反應(yīng)。下面按我自己的落地習(xí)慣把這套系統(tǒng)的選型、表結(jié)構(gòu)、前端實(shí)現(xiàn)和排錯(cuò)順序拆開(kāi)講。2. 技術(shù)棧選型原生微信小程序還是 uni-app駕校預(yù)約為什么不能一上來(lái)就寫(xiě)頁(yè)面2.1 原生微信小程序與 uni-app 的真實(shí)差異拿到“微信小程序項(xiàng)目之駕校預(yù)約管理系統(tǒng)”這種源碼包第一件事不是打開(kāi)開(kāi)發(fā)工具而是確定這套前端是用原生微信小程序?qū)懙倪€是 uni-app 轉(zhuǎn)出來(lái)的。兩者在工程結(jié)構(gòu)上差別很大原生工程里你會(huì)看到pages、app.js、app.json直接導(dǎo)入微信開(kāi)發(fā)者工具就能跑uni-app 工程則是src/pages加uni_modules需要先npm install、再用 HBuilderX 或 CLI 打包成微信小程序產(chǎn)物目錄才是開(kāi)發(fā)者工具能認(rèn)的。從落地角度說(shuō)駕校預(yù)約這種業(yè)務(wù)基本只發(fā)生在微信生態(tài)里學(xué)員掃駕校的碼就進(jìn)小程序不存在“同一個(gè)人還要在支付寶里再約一次”的強(qiáng)需求。所以我一般建議除非你一早確定要同時(shí)發(fā)抖音、支付寶、微信三端否則不要為了“多端”硬上 uni-app。uni-app 確實(shí)能把一套 Vue 語(yǔ)法編譯到多端但代價(jià)是每次改完都要走一次“打包”流程遇到自定義組件、分包加載、原生插件時(shí)調(diào)試鏈路比原生長(zhǎng)一截。很多新手在 uniapp 微信小程序打包時(shí)踩到source size 2612kb exceed max limit 2mb就是因?yàn)闆](méi)有意識(shí)到小程序主包有 2MB 硬限制把圖片、SDK、公共庫(kù)全塞進(jìn)了一個(gè)包里。反過(guò)來(lái)說(shuō)如果這個(gè)駕校預(yù)約項(xiàng)目是課程設(shè)計(jì)要求里面有“管理后臺(tái) 小程序 數(shù)據(jù)庫(kù)設(shè)計(jì)文檔”那 uni-app 也不是不能用因?yàn)楹笈_(tái)界面可以復(fù)用同一套 Vue 代碼做成 H5省得再寫(xiě)一套。但你要接受一個(gè)事實(shí)出問(wèn)題的人多數(shù)不在業(yè)務(wù)邏輯而在“打包出的包太大”或“原生組件不兼容”。所以我的選擇順序是單純做微信端、工期緊、想少踩坑用原生要交作業(yè)展示多端能力、后臺(tái)也要復(fù)用才考慮 uni-app并且從第一天就做分包。2.2 后端選型PHP / Java / Node 在預(yù)約場(chǎng)景里的取舍前端只是入口預(yù)約管理系統(tǒng)真正的體力活在接口層。常見(jiàn)的源碼包里后端出現(xiàn)頻率最高的是 PHP 和 Java Spring Boot也有 Node 寫(xiě)的。駕駛培訓(xùn)行業(yè)的小型駕校通常已經(jīng)是 PHP 或 Java 的存量系統(tǒng)小程序只是新加一個(gè) C 端入口這時(shí)后端語(yǔ)言沒(méi)得選要順著老系統(tǒng)來(lái)。如果是從零開(kāi)始我的建議是按你的維護(hù)能力選而不是按“哪個(gè)熱門(mén)”選。PHP 的優(yōu)勢(shì)是部署門(mén)檻低隨便一臺(tái)虛擬主機(jī)就能跑很多源碼包的說(shuō)明文檔也是以 PHP MySQL 為主線適合課程設(shè)計(jì)或者小駕校自用。Java Spring Boot 適合要接大量并發(fā)、要寫(xiě)復(fù)雜報(bào)表、要把預(yù)約和財(cái)務(wù)對(duì)賬打通的情況但環(huán)境要求高M(jìn)aven 依賴一堆新手第一次跑起來(lái)容易耗一小時(shí)在配置上。Node 適合本來(lái)就會(huì) JavaScript 的人寫(xiě)接口快但線上部署和進(jìn)程守護(hù)要自己多留心。需要強(qiáng)調(diào)的是預(yù)約系統(tǒng)對(duì)后端的要求不只是“能存數(shù)據(jù)”而是“并發(fā)下不超賣(mài)”這一點(diǎn)跟語(yǔ)言無(wú)關(guān)跟事務(wù)和鎖的寫(xiě)法有關(guān)。所以我會(huì)先把后端能力當(dāng)成“黑匣子”測(cè)試用并發(fā)請(qǐng)求打它而不是看它用了什么框架。2.3 拿到“源碼說(shuō)明”包后先做三件事看文檔、倒數(shù)據(jù)庫(kù)、對(duì)接口約定標(biāo)題里帶著“(源碼說(shuō)明)”說(shuō)明包里應(yīng)該有配套文檔。我拿到這類(lèi)項(xiàng)目包的習(xí)慣是先翻說(shuō)明再看數(shù)據(jù)庫(kù)腳本最后才導(dǎo)入代碼。很多人的誤區(qū)是先把小程序跑起來(lái)結(jié)果白屏了才想起去看接口地址浪費(fèi)半小時(shí)。說(shuō)明文檔里通常會(huì)寫(xiě)清楚三件事數(shù)據(jù)庫(kù)初始化腳本在哪、后臺(tái)賬號(hào)密碼是什么、小程序需要改哪些配置項(xiàng)。這些信息不全時(shí)我會(huì)先按目錄猜常見(jiàn)結(jié)構(gòu)是server放后端、sql放建表語(yǔ)句、docs放設(shè)計(jì)文檔。數(shù)據(jù)庫(kù)腳本導(dǎo)入后我會(huì)重點(diǎn)核對(duì)幾張表用戶表、教練表、課時(shí)表、預(yù)約表。駕校預(yù)約的核心資源不是學(xué)員而是“教練 車(chē) 時(shí)段”的組合。如果表里沒(méi)有記錄“每個(gè)時(shí)段最多可預(yù)約人數(shù)”的字段那這個(gè)源碼包的預(yù)約邏輯大概率是閹割版——先查再插入并發(fā)一高就會(huì)重復(fù)預(yù)約。這一步確認(rèn)清楚后面所有頁(yè)面開(kāi)發(fā)才會(huì)踏實(shí)。小程序端要改的無(wú)非是app.js里的request域名、登錄密鑰以及每個(gè)接口的url前綴。記住源碼包能不能落地不在代碼多高級(jí)而在接口約定和數(shù)據(jù)字典能不能對(duì)上。3. 數(shù)據(jù)模型與預(yù)約狀態(tài)機(jī)先把“庫(kù)存”算清楚再寫(xiě)接口3.1 駕校預(yù)約管理系統(tǒng)的表結(jié)構(gòu)設(shè)計(jì)預(yù)約系統(tǒng)最怕“看起來(lái)像論壇約個(gè)課就是插一條記錄”。如果約課只是往appointment表里 insert那同一時(shí)間教練就會(huì)被兩個(gè)人同時(shí)約走因?yàn)檎l(shuí)都沒(méi)有檢查“這個(gè)時(shí)段還剩幾個(gè)名額”。所以第一步是設(shè)計(jì)出能反映資源庫(kù)存的表結(jié)構(gòu)。駕校的核心資源是教練和教練車(chē)一個(gè)教練一天可以分多個(gè)時(shí)段每個(gè)時(shí)段理論上只能服務(wù)固定數(shù)量學(xué)員通常是一對(duì)一。我常用的建表語(yǔ)句如下CREATE TABLE coach ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, phone VARCHAR(20), status TINYINT DEFAULT 1 COMMENT 1可用 0停用 ); CREATE TABLE course_schedule ( id INT PRIMARY KEY AUTO_INCREMENT, coach_id INT NOT NULL, course_date DATE NOT NULL, slot_id INT NOT NULL COMMENT 時(shí)段編號(hào) 1上午 2下午 3晚上, capacity INT DEFAULT 1 COMMENT 該時(shí)段可約人數(shù), booked INT DEFAULT 0 COMMENT 已約人數(shù), version INT DEFAULT 0 COMMENT 樂(lè)觀鎖版本號(hào), UNIQUE KEY uk_date_slot (coach_id, course_date, slot_id) ); CREATE TABLE appointment ( id INT PRIMARY KEY AUTO_INCREMENT, student_id INT NOT NULL, schedule_id INT NOT NULL, status TINYINT DEFAULT 1 COMMENT 1已預(yù)約 2已取消 3已完成 4爽約, cancel_reason VARCHAR(255), create_time DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_student_schedule (student_id, schedule_id) );這套結(jié)構(gòu)強(qiáng)調(diào)三件事。第一course_schedule是庫(kù)存表capacity和booked分別代表總量和已約量每次預(yù)約都要保證booked capacity。第二教練、日期、時(shí)段三個(gè)字段組成唯一索引防止同一批數(shù)據(jù)里出現(xiàn)重復(fù)排課。第三appointment表里不直接存教練和時(shí)段而是存schedule_id這樣改排課表的時(shí)候預(yù)約記錄不用跟著動(dòng)。version字段先留著后面做樂(lè)觀鎖要用。實(shí)際項(xiàng)目里我還會(huì)加一個(gè)cancel_log表記錄取消操作因?yàn)轳{校經(jīng)常需要知道“誰(shuí)頻繁爽約、哪個(gè)時(shí)段的取消率最高”。這不算過(guò)度設(shè)計(jì)是運(yùn)營(yíng)必須的數(shù)據(jù)。你要是嫌表多起碼也要把a(bǔ)ppointment里的狀態(tài)字段留出來(lái)否則后面做核銷(xiāo)的時(shí)候會(huì)發(fā)現(xiàn)根本沒(méi)有狀態(tài)可流轉(zhuǎn)。3.2 防止重復(fù)預(yù)約的原子扣減與狀態(tài)流轉(zhuǎn)預(yù)約接口寫(xiě)得好不好直接在并發(fā)下見(jiàn)分曉。最常見(jiàn)的錯(cuò)誤寫(xiě)法是先SELECT booked FROM course_schedule WHERE id ?判斷小于 capacity再I(mǎi)NSERT INTO appointment最后UPDATE course_schedule SET booked booked 1。這一步看代碼沒(méi)毛病但兩個(gè)學(xué)員同時(shí)請(qǐng)求時(shí)兩個(gè)請(qǐng)求都讀到booked0然后都插入預(yù)約記錄最后都執(zhí)行加一結(jié)果這里約滿了兩個(gè)人實(shí)際上超賣(mài)了。正確做法是把“檢查庫(kù)存 扣減”放在一個(gè)原子操作里用數(shù)據(jù)庫(kù)的行鎖保證同一時(shí)刻只有一個(gè)請(qǐng)求能成功扣減UPDATE course_schedule SET booked booked 1 WHERE id ? AND booked capacity;這條 UPDATE 影響行數(shù)為 1說(shuō)明扣減成功才允許繼續(xù)插入預(yù)約記錄影響行數(shù)為 0說(shuō)明時(shí)段已滿直接返回“該時(shí)段已約滿”。扣完庫(kù)存再插入預(yù)約并且這兩個(gè)動(dòng)作要在同一個(gè)事務(wù)里任何一步失敗都要回滾讓booked恢復(fù)原樣。后端代碼里大概是這個(gè)形態(tài)// 以 Node 為例使用 mysql2 驅(qū)動(dòng) const conn await pool.getConnection(); try { await conn.beginTransaction(); const [result] await conn.execute( UPDATE course_schedule SET booked booked 1 WHERE id ? AND booked capacity, [scheduleId] ); // affectedRows 1 才代表?yè)尩搅嗣~ if (result.affectedRows 0) { await conn.rollback(); return { code: 1, message: 該時(shí)段已約滿請(qǐng)換一個(gè)時(shí)段 }; } await conn.execute( INSERT INTO appointment (student_id, schedule_id, status) VALUES (?, ?, 1), [studentId, scheduleId] ); await conn.commit(); return { code: 0, message: 預(yù)約成功 }; } catch (err) { await conn.rollback(); throw err; } finally { conn.release(); }參數(shù)說(shuō)明affectedRows是 MySQL 執(zhí)行 UPDATE 后返回的受影響行數(shù)它能告訴你這個(gè) UPDATE 是不是真正改到了數(shù)據(jù)。這里的scheduleId是預(yù)約接口傳入的排課記錄 IDstudentId是登錄后服務(wù)端解析出來(lái)的用戶 ID不能拿前端傳的 userId 直接用不然學(xué)員可以把別人的 ID 塞進(jìn)來(lái)替別人約課。事務(wù)的beginTransaction和commit保證“扣庫(kù)存”和“建預(yù)約”要么同時(shí)成功要么同時(shí)失敗。3.3 取消預(yù)約與時(shí)段過(guò)期庫(kù)存回滾和違約標(biāo)記怎么處理有預(yù)約就必然有取消取消邏輯看起來(lái)只是把a(bǔ)ppointment的狀態(tài)改成“已取消”但別忘了把庫(kù)存還回去。這一步同樣要放在事務(wù)里先改預(yù)約狀態(tài)再booked booked - 1。順序別反不然出現(xiàn)“狀態(tài)已取消但庫(kù)存沒(méi)恢復(fù)”的半截?cái)?shù)據(jù)后面統(tǒng)計(jì)約滿率全錯(cuò)。駕校場(chǎng)景比較特殊的是“爽約”的處理。學(xué)員約了早上八點(diǎn)的課教練把車(chē)和人都空出來(lái)了學(xué)員沒(méi)來(lái)這個(gè)時(shí)段已經(jīng)不可能再補(bǔ)給別人所以不能簡(jiǎn)單地取消并回滾庫(kù)存而是要標(biāo)記為“爽約”系統(tǒng)可以記一次違約累計(jì)多次限制預(yù)約。實(shí)現(xiàn)上我一般會(huì)根據(jù)當(dāng)前時(shí)間判斷距離預(yù)約時(shí)段開(kāi)始還有足夠時(shí)間比如 4 小時(shí)允許正常取消并回滾庫(kù)存如果已進(jìn)入倒計(jì)時(shí)或者已經(jīng)過(guò)了開(kāi)始時(shí)間就只能由管理員手動(dòng)取消學(xué)員端只能看到“已過(guò)期”狀態(tài)。這種規(guī)則不寫(xiě)死在 SQL 里而是由后端在取消接口里判斷前端只負(fù)責(zé)引導(dǎo)用戶確認(rèn)。狀態(tài)流轉(zhuǎn)的完整鏈條是已預(yù)約 → 已取消 / 已完成 / 爽約。核銷(xiāo)動(dòng)作只允許把已預(yù)約變成已完成取消動(dòng)作只允許把已預(yù)約變成已取消。如果表里出現(xiàn)“已取消”直接跳到“已完成”的記錄基本可以判定接口邏輯里少了狀態(tài)校驗(yàn)。調(diào)試的時(shí)候可以在后端加一個(gè)狀態(tài)機(jī)的校驗(yàn)函數(shù)每次更新?tīng)顟B(tài)時(shí)檢查“當(dāng)前狀態(tài)是否允許跳到目標(biāo)狀態(tài)”不滿足就報(bào)錯(cuò)。這一步能擋住大多數(shù)臟數(shù)據(jù)。4. 小程序端從登錄到核銷(xiāo)手寫(xiě)核心頁(yè)面與請(qǐng)求邏輯4.1 微信小程序登錄獲取手機(jī)號(hào)兩種方式怎么選駕校預(yù)約一定要拿到學(xué)員手機(jī)號(hào)因?yàn)轭A(yù)約成功要發(fā)通知、教練要聯(lián)系學(xué)員確認(rèn)上車(chē)點(diǎn)。微信小程序登錄獲取手機(jī)號(hào)有兩種常見(jiàn)方式選錯(cuò)會(huì)直接影響審核和上線。第一種是傳統(tǒng)方式用wx.login拿到臨時(shí)code發(fā)給后端后端調(diào)用微信接口換openid然后讓學(xué)員在小程序里手填手機(jī)號(hào)后端發(fā)驗(yàn)證碼。這種方式實(shí)現(xiàn)簡(jiǎn)單、不用企業(yè)認(rèn)證也能測(cè)通但用戶體驗(yàn)多了一步并且驗(yàn)證碼短信有成本。第二種是使用微信提供的手機(jī)號(hào)快速驗(yàn)證組件學(xué)員點(diǎn)一下授權(quán)按鈕微信直接把手機(jī)號(hào)傳給后端體驗(yàn)最好但要求小程序必須完成認(rèn)證且該能力對(duì)個(gè)人主體小程序不開(kāi)放。很多個(gè)人開(kāi)發(fā)者在這里會(huì)被卡住審核時(shí)發(fā)現(xiàn)沒(méi)有權(quán)限只能退回手填手機(jī)號(hào)。我這里建議如果是公司主體的駕校項(xiàng)目?jī)?yōu)先用手機(jī)號(hào)快速驗(yàn)證組件如果是個(gè)人項(xiàng)目或畢設(shè)就老老實(shí)實(shí)走“登錄 手填手機(jī)號(hào) 短信驗(yàn)證”。核心代碼大致是// 前端手機(jī)號(hào)快速驗(yàn)證組件 button open-typegetPhoneNumber bindgetphonenumberonGetPhone 獲取手機(jī)號(hào) /button// 前端拿到加密數(shù)據(jù)后交給后端解析 Page({ async onGetPhone(e) { if (e.detail.errMsg ! getPhoneNumber:ok) { wx.showToast({ title: 需要授權(quán)手機(jī)號(hào), icon: none }); return; } const res await wx.cloud.callFunction({ name: decodePhone, data: { code: e.detail.code } }); // res.result.phone 就是手機(jī)號(hào) } });參數(shù)說(shuō)明e.detail.code是微信返回的動(dòng)態(tài)令牌只能在后端配合 session_key 換取手機(jī)號(hào)不能在前端直接讀出手機(jī)明文。如果是普通 HTTP 后端前端只能把code原樣 POST 給服務(wù)端服務(wù)端再按文檔調(diào)接口。這里最容易踩的坑是把openid和手機(jī)號(hào)混為一談OpenID 只能標(biāo)識(shí)“這是哪個(gè)微信用戶”不能當(dāng)手機(jī)號(hào)用。4.2 選教練、選時(shí)段、提交預(yù)約的核心代碼預(yù)約頁(yè)面的交互主線是選日期 → 選教練 → 選時(shí)段 → 提交。提交前要把日期、教練、時(shí)段拼成可校驗(yàn)的三個(gè)參數(shù)傳給后端后端再拿著教練 ID 和日期去查排課表。前端代碼不復(fù)雜但“重復(fù)提交”這個(gè)坑必須防用戶手快點(diǎn)兩次按鈕就可能發(fā)出兩個(gè)相同請(qǐng)求即使后端有庫(kù)存扣減兜底也會(huì)產(chǎn)生兩條預(yù)約記錄。所以提交按鈕要在請(qǐng)求發(fā)出后立即禁用成功或失敗后再恢復(fù)。!-- wxml 片段 -- view classslot-list view wx:for{{slots}} wx:keyslotId classslot-item {{item.disabled ? disabled : }} >Page({ data: { date: , coachId: , slotId: , submitting: false }, onSelectSlot(e) { this.setData({ slotId: e.currentTarget.dataset.id }); }, async onSubmit() { const { date, coachId, slotId, submitting } this.data; if (submitting) return; // 重復(fù)提交攔截 if (!date || !coachId || !slotId) { wx.showToast({ title: 請(qǐng)選擇完整, icon: none }); return; } this.setData({ submitting: true }); try { const res await wx.request({ url: https://api.example.com/appointment/create, method: POST, data: { date, coachId, slotId } }); if (res.data.code 0) { wx.showToast({ title: 預(yù)約成功, icon: success }); // 跳轉(zhuǎn)到預(yù)約記錄頁(yè) } else { wx.showToast({ title: res.data.message, icon: none }); } } finally { this.setData({ submitting: false }); } } });這里的date是形如2025-06-15的日期字符串slotId是排課表里具體的時(shí)段 ID而不是“上午”“下午”這種前端自己翻譯出來(lái)的值。后端必須用slotId coachId作為唯一鍵去查course_schedule不要用日期加中文時(shí)段名去拼否則數(shù)據(jù)庫(kù)里存什么你會(huì)徹底失控。wx.request的url必須是https且在微信公眾平臺(tái)配過(guò)合法域名開(kāi)發(fā)時(shí)可以在開(kāi)發(fā)者工具里關(guān)掉域名校驗(yàn)但真機(jī)預(yù)覽就一定要配好。4.3 自定義導(dǎo)航欄與頁(yè)面?zhèn)鲄㈨敳繉?dǎo)航欄高度怎么適配預(yù)約系統(tǒng)里“本周日期橫滑選擇器”很常見(jiàn)這種頁(yè)面通常想用自定義導(dǎo)航欄才能把標(biāo)題欄和選擇器做成一體。自定義導(dǎo)航欄不是把navigationStyle改成custom就完事真正麻煩的是狀態(tài)欄高度和膠囊按鈕位置在不同的手機(jī)上都不同適配不好就會(huì)出現(xiàn)標(biāo)題頂?shù)綌z像頭、按鈕錯(cuò)位的情況。微信沒(méi)有直接暴露狀態(tài)欄高度一般用wx.getMenuButtonBoundingClientRect()拿膠囊按鈕的位置再結(jié)合wx.getSystemInfoSync()里的statusBarHeight算導(dǎo)航欄總高度。常見(jiàn)做法是const rect wx.getMenuButtonBoundingClientRect(); const system wx.getSystemInfoSync(); const navHeight rect.bottom (rect.top - system.statusBarHeight) * 2;這段代碼里navHeight是自定義導(dǎo)航欄的推薦高度單位是 px。rect.top是膠囊到屏幕頂部的距離system.statusBarHeight是系統(tǒng)狀態(tài)欄高度兩者的差值就是膠囊上方的留白乘以 2 再加膠囊底部的留白基本能得到一個(gè)視覺(jué)協(xié)調(diào)的導(dǎo)航欄高度。拿到這個(gè)值后設(shè)置成外層容器的padding-top整個(gè)頁(yè)面內(nèi)容就不會(huì)被劉海屏吞掉。很多參考項(xiàng)目里寫(xiě)死44px在全面屏上就會(huì)顯得局促這是微信小程序頂部導(dǎo)航欄高度這個(gè)熱搜詞背后最常被問(wèn)的問(wèn)題。字段傳參方面從列表頁(yè)跳到詳情頁(yè)參數(shù)復(fù)雜時(shí)要用encodeURIComponent包一層防止特殊字符截?cái)唷?. 預(yù)約系統(tǒng)的常見(jiàn)坑與排錯(cuò)從白屏到重復(fù)預(yù)約5.1 現(xiàn)象真機(jī)預(yù)覽白屏模擬器正常模擬器里能正常打開(kāi)真機(jī)預(yù)覽卻是白屏第一反應(yīng)不應(yīng)該是查代碼而是查“請(qǐng)求域名”。微信開(kāi)發(fā)者工具默認(rèn)勾選了“不校驗(yàn)合法域名”所以工具里請(qǐng)求任何 HTTP 接口都能通甚至localhost也行。真機(jī)上這個(gè)校驗(yàn)是強(qiáng)制生效的未配置的域名直接請(qǐng)求失敗頁(yè)面拿不到數(shù)據(jù)就白在那里。解決方法是登錄微信公眾平臺(tái)在“開(kāi)發(fā)管理 → 服務(wù)器域名”里把后端接口的 HTTPS 域名加到request合法域名列表而且域名必須是備案過(guò)的不能是 IP。如果你只是臨時(shí)演示也可以打開(kāi)開(kāi)發(fā)者工具的真機(jī)調(diào)試并在“項(xiàng)目設(shè)置”里勾選“不校驗(yàn)合法域名”但這樣只能給你自己看發(fā)給別人一樣白屏。這個(gè)坑在校驗(yàn)域名前后最容易讓人誤判成“代碼寫(xiě)錯(cuò)了”其實(shí)后端日志里全是 CORS 或證書(shū)報(bào)錯(cuò)。5.2 現(xiàn)象兩個(gè)學(xué)員“同時(shí)”約到了同一個(gè)時(shí)段約同一個(gè)時(shí)段兩個(gè)人都收到“預(yù)約成功”這是并發(fā)問(wèn)題最典型的形態(tài)。原因基本可以鎖定為后端先 SELECT 再 INSERT沒(méi)有把“檢查名額”和“扣減名額”做成原子操作。兩條請(qǐng)求同時(shí)讀到booked0都認(rèn)為自己還有名額于是都插入成功。解決辦法就是把 3.2 里的原子 UPDATE 用起來(lái)配合事務(wù)。如果業(yè)務(wù)太復(fù)雜一條 SQL 解決不了也可以給course_schedule表加樂(lè)觀鎖UPDATE 時(shí)帶version當(dāng)前版本更新成功后version1失敗就重試。但原子 UPDATE 已經(jīng)足夠覆蓋駕校預(yù)約這種量級(jí)。修復(fù)后一定要用并發(fā)工具跑一次復(fù)測(cè)見(jiàn) 6.1。5.3 現(xiàn)象日期選完列表不刷新約到的還是前一天時(shí)段列表沒(méi)跟著日期變多半是頁(yè)面把第一次加載的數(shù)據(jù)緩存住了或者change事件里用的日期格式不對(duì)。常見(jiàn)原因有兩個(gè)一是日期組件返回的是new Date()對(duì)象直接setData后變成了字符串接口收到后解析出“昨天”二是小程序頁(yè)面棧的上一頁(yè)沒(méi)有在onShow里重新拉取數(shù)據(jù)導(dǎo)致返回時(shí)列表還是舊的。解決方法是前端先把日期格式化成YYYY-MM-DD再傳給后端預(yù)約記錄頁(yè)在onShow里重新調(diào)用列表接口而不是依賴onLoad只加載一次。如果后端返回的日期比前端少了 8 小時(shí)那就是時(shí)區(qū)問(wèn)題統(tǒng)一在接口層約定按YYYY-MM-DD的字符串傳參不要傳“相對(duì)當(dāng)前時(shí)間”的時(shí)間戳。5.4 現(xiàn)象體驗(yàn)版登錄不上后端一直報(bào) code 無(wú)效wx.login返回的code是有時(shí)效且只能用一次的。如果你后端的登錄解密邏輯把同一個(gè)code連續(xù)拿去換openid第二次就會(huì)報(bào)“code 無(wú)效”。還有一個(gè)很隱蔽的問(wèn)題開(kāi)發(fā)者工具里的appid和體驗(yàn)版所屬的appid不一致前端拿到的是 A 項(xiàng)目的 code后端用了 B 項(xiàng)目的密鑰去解必然失敗。解決方法是先核對(duì)小程序后臺(tái)的 appid 和后端配置的 appid 是否一致再檢查登錄接口是否對(duì)同一個(gè) code 做了緩存。最容易忽略的是一鍵登錄按鈕被用戶點(diǎn)了兩遍前端每點(diǎn)一次就調(diào)一次wx.login但用戶心態(tài)是“手機(jī)號(hào)沒(méi)出來(lái)就再點(diǎn)一下”導(dǎo)致舊 code 被重復(fù)使用。前端要做防重復(fù)點(diǎn)擊后端要做 code 消費(fèi)失敗時(shí)的友好報(bào)錯(cuò)。5.5 現(xiàn)象uniapp 打包后主包超過(guò) 2MB 上限如果你用的是 uni-app編譯成微信小程序時(shí)經(jīng)??吹絪ource size 2612kb exceed max limit 2mb。這不代表你的業(yè)務(wù)有多龐大而是很多依賴被打進(jìn)了主包。最常見(jiàn)的是把完整的uview、colorui這類(lèi) UI 庫(kù)全量引入或者把后端 SDK、加密庫(kù)都塞進(jìn)main.js再或者圖片直接 base64 進(jìn)代碼里。解決思路是分包、抽組件、圖片走 CDN。微信小程序主包只放頁(yè)面骨架和公共依賴教練詳情、預(yù)約記錄、用戶中心這些低頻頁(yè)面全部放到subpackages里從頁(yè)面名到資源路徑都要對(duì)應(yīng)調(diào)整。UI 庫(kù)改成按需引入如果只是用幾個(gè)組件復(fù)制對(duì)應(yīng)文件過(guò)來(lái)反而比全量引入更小。這里的取舍是主包大小決定首屏加載速度分包越干凈真機(jī)體驗(yàn)越順調(diào)試時(shí)也不至于為 2MB 邊界反復(fù)重構(gòu)。6. 讓預(yù)約系統(tǒng)經(jīng)得起真車(chē)流量壓測(cè)、訂閱消息與核銷(xiāo)閉環(huán)6.1 用最簡(jiǎn)單的方式給預(yù)約接口做并發(fā)壓測(cè)??荚囶A(yù)約、寒暑假約車(chē)高峰期流量會(huì)突然漲起來(lái)。不要等到上線當(dāng)天才發(fā)現(xiàn)接口扛不住用wrk或者一段帶Promise.all的 Node 腳本就能模擬并發(fā)。重點(diǎn)壓兩個(gè)接口創(chuàng)建預(yù)約和取消預(yù)約。壓測(cè)時(shí)關(guān)注三件事有沒(méi)有超賣(mài)、響應(yīng)時(shí)間是否穩(wěn)定、數(shù)據(jù)庫(kù)連接池有沒(méi)有爆。命令行跑法如下wrk -t4 -c50 -d10s -s create-appointment.lua http://api.example.com/appointment/create壓測(cè)腳本會(huì)帶不同studentId并發(fā)發(fā)起預(yù)約。跑完不要只盯著 QPS 數(shù)字而是對(duì)數(shù)據(jù)庫(kù)查一遍course_schedule的booked是否等于appointment表里狀態(tài)為“已預(yù)約”的記錄數(shù)。對(duì)不上就是邏輯有洞對(duì)得上并且響應(yīng)時(shí)間控制在幾百毫秒內(nèi)才算過(guò)基本門(mén)檻。這個(gè)測(cè)試要留著每次都跑比改完代碼拍胸脯有用得多。6.2 訂閱消息預(yù)約成功提醒的正確觸發(fā)方式駕校預(yù)約成功后學(xué)員需要收到“預(yù)約成功”“明日練車(chē)提醒”之類(lèi)的通知。微信官方現(xiàn)在把模板消息換成了訂閱消息關(guān)鍵限制是小程序必須在用戶點(diǎn)擊按鈕時(shí)調(diào)wx.requestSubscribeMessage不能在接口返回成功后再偷偷彈窗。也就是說(shuō)提交預(yù)約的按鈕事件里應(yīng)該先讓用戶確認(rèn)訂閱授權(quán)再發(fā)預(yù)約請(qǐng)求。async onSubmit() { await wx.requestSubscribeMessage({ tmplIds: [預(yù)約成功通知模板ID] }); // 用戶選“總是保持以上選擇”或點(diǎn)允許后再走預(yù)約接口 this.doCreateAppointment(); }注意這個(gè)授權(quán)結(jié)果只代表“下一次消息可以發(fā)”不能存下來(lái)長(zhǎng)期發(fā)。如果用戶拒絕預(yù)約流程也要繼續(xù)只是不發(fā)通知。所以這里不要因?yàn)橛脩魶](méi)點(diǎn)允許就中斷預(yù)約而是把它做成一個(gè)增強(qiáng)體驗(yàn)。真正的重要信息比如“教練臨時(shí)請(qǐng)假”還需要在后端做二次確認(rèn)機(jī)制不能只依賴訂閱消息。6.3 二維碼核銷(xiāo)與取消預(yù)約的回滾順序教練端“掃一掃核銷(xiāo)”是這個(gè)系統(tǒng)的最后一環(huán)。學(xué)員預(yù)約成功后后端生成一個(gè)帶預(yù)約號(hào)或簽名字符串的二維碼教練用小程序的掃一掃功能讀取再調(diào)核銷(xiāo)接口。核銷(xiāo)接口必須冪等同一個(gè)二維碼掃第二次后端要返回“該預(yù)約已完成”而不是報(bào)錯(cuò)或再次核銷(xiāo)成功。實(shí)現(xiàn)上預(yù)約號(hào)用隨機(jī)串生成數(shù)據(jù)庫(kù)里加唯一索引核銷(xiāo)時(shí)先查狀態(tài)再原子更新UPDATE appointment SET status 3 WHERE id ? AND status 1;這條 SQL 只有狀態(tài)為“已預(yù)約”的記錄會(huì)被更新成“已完成”影響行數(shù)為 0 就說(shuō)明狀態(tài)已變化直接給前端返回“不可重復(fù)核銷(xiāo)”。至于取消預(yù)約的回滾順序一定是先改預(yù)約狀態(tài)為“已取消”再讓course_schedule的booked減一。如果先減庫(kù)存再改狀態(tài)中間出現(xiàn)異常就會(huì)出現(xiàn)“約了課的人沒(méi)記錄、名額卻空出來(lái)”的永久性臟數(shù)據(jù)。把這兩個(gè)操作放進(jìn)同一個(gè)事務(wù)讓 MySQL 替你保證要么都成功、要么都失敗。我做第一個(gè)預(yù)約項(xiàng)目時(shí)就吃過(guò)這個(gè)虧取消了三條記錄后庫(kù)存全部對(duì)不上只能手動(dòng)寫(xiě)腳本清洗那感覺(jué)比改代碼痛苦得多。這些邊界問(wèn)題都處理完這套駕校預(yù)約管理系統(tǒng)才算真正能交付而不是只能在模擬器里點(diǎn)兩下。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
高跟丝袜AV专区国产| 亚卅熟女乱色| 亚洲狠| 色狠狠综合噜一二三区| 成视频在线观看免费看| 国产午夜福利专区综合| 91痴汉| 97操97色| 99热亚洲| 久久精品日韩| 日本不卡在线二区三区| 99国内熟女露脸视频| 久久久工口| 人妻精品视频一区二区| 日本操逼无码| 日韩少妇无码| 五月天精品| 天天舔九色婷婷| 五月激情天| 国产午夜福利专区综合| 亚洲成人贴图| 亚洲丝袜B诱惑| 色婷婷五月综合| 成人性爱视频在线看| 97国产精品视频| 曰韩香蕉97| 嗯……啊…嗯嗯…啊…好舒服| 欧美极度丰满熟妇hd| 国产在线观看一区二区三区| 嗯嗯不要视频| 91丝袜人妻| 欧美综合自拍成人自拍第二十页| 九九色色| 久久老子无码午夜伦不卡| 欧美一区二区一级岛国大片| 97超碰超碰| 夜夜夜爽www精品视频| 久久熟女久| 一区,二区,三区网站| 国产按摩一区二区三区| 大香蕉人妻| 亚洲第一狼人丝袜美女另类| 国产精品内射婷婷一级二| 另类欧美色| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 亚洲欧美激情小说| 丁香六月啪啪| 在线观看日韩av不卡| 少妇无码av专区线| 免费啪啪一级视频| 一类av片在线看| 亚洲码在线中文在线观看| 久热最新在线杭州| 激情小说亚洲色图| 在线欧美亚洲| 久久蜜桃一区二区| 亚洲天堂男人| 一区二区高清视频| 国产自制av蜜乳| 国产精品乱码久久久久| 91日韩| 免费视频97| 欧美的精品的视频| 97视频在线播放| 久久久久99999| 性欧美91| 日本色色视频网站| 操逼啊啊啊91| 欧 美 自 拍 偷 拍| 97爱爱爱| 精品视频在线观看精品| 高清有码一区二区| 26uuu性| h4610国产人妻| 撸无码不卡免费视频| 91热色| 青青草华人在线欧美在线| 乱操9999| 欧美色图20P| 亚洲久9| 丰满人妻一区二区三区免费 | 91人妻做a观看视频| 狠狠操,使劲操| 香蕉欧美| 国产精品成人无码a v毛片| 综合久久久久久久综合网| 乱伦图一区| 色综合尤物| 五月婷婷色色| 第四色亚洲色图| 日韩精品三级片长长久久| AV中文字幕剧情1区2区3| 日本中文字幕一区| 欧美人妖内射| 色婷婷国产精品一区在线观看| 69麻豆天美| 日本性爱视频一级| 日本1区2区不卡视频| 日本爽爽爽爽爽爽免费视频| 亚洲自拍天堂| 骚逼高潮久久精品| 国产精品亚洲一区二区三区四区| 色色无码| 欧美性区| 97视频播放| 秋霞色色影院| 性做久久久久久免费观看软件| 激情小说五月天| 日本久操视频| 91麻豆一二三区| 国产在线激情| 国产精品亚洲无码| 一区在线观看中文字幕| 亚洲熟女乱色| 色九九九九九九| 精品视频一区二区| 国产99精品一区二区三区免费| 美女黄频a美女大全免费皮| 天天日天天舔天天喷天天射| 天天综合网1| 日1区2区3区2020| 易易A毛视频| 亚洲天堂五月天国产| 国产精品无套内谢| 亚洲有码 欧美精品| 美女高潮视频91| 亚欧洲一区二区视频| 国产精品一区二区三区在线| 伊人黄色片| 免费强奸av| 国产精品视频麻豆入口| 99婷婷| 久久夜夜夜夜| 国产精品日日摸天天碰| 亚洲图片色图欧美另类| 激情专区综合| 极品AV网站在线观看| 成人三级片一区二区三区视频| 乱伦一二三| 强奸乱伦日韩AV| 国产精品视频电影| 国产超碰97| 操一操摸一摸| 九九综合色| 精产国品一区二三产品| 婷婷爽人人婷婷爽视频| 熟女人妇一区二区三区| 欧美亚男人的天堂| 久久有码视频| 亚欧成人中文字幕一区| 精品9区| 亚洲天天更新| www久久99| 色色99| 欧美天天综合网版| 探花熟女,姿勢到位,體驗感也到位| 五月天婷婷欧美三区| 国产情色第一第二页在线观看| 99999re| 一个人免费HD91视频| 噜噜在线| 玖玖综合视频| 五十路六十路七十路熟婆| 婷婷色五月激情| 色综合加勒比四四季| 97超碰精品图片| 国产操逼逼网| 久久精品老司| 日本视频在线中文字幕| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 久久风骚城市| 欧美亚洲色图另类国产| 亚洲限制级在线| 色妺妺AⅤ| 国产精品一区二区黄片| 久久久久ab| 亚洲国产综合视频| 黑操B| 亚洲好色人妻| 黄片无码在线制服| 青草影院内射高潮| 熟女五十路一区二区三| 黑操B| 青青草依人大香蕉| 992这里有精品| 蜜臀中文无码午夜| 五月丁香啪| 欧美同性恋 的搜索结果 - 91n| 三级网色| julia ann久久| 日本视频一区二区三区| 好看的久久不射无码影视影院| 在线播放成人高清免费视频| 岛国小电影| 97日韩欧美| 色蜜AV| www欧美91| 日本污ww视频网站| 极品少妇久久久久| 久久激情视频| 久久久久久无码人妻中文字幕| 男人a天堂手机在线版| 歐美性天天| 欧美性生活免费网| 97频视在线| 亚洲成a人片在线观看中文!!!| 欧美色图 人妻| 亚洲日本激情| 丝袜无码a片| 最新av中文字幕高清| 国产亚卅97| 久久久精品91八戒| 精品美女少妇一区二区三区| 久久91视频| 色网1| 日韩av一级黄片| 91男人综合| 久草视频分类在线| 精品国产乱码久久久| 天天爽天天干| 天天影视色香欲综合网小说| 成人综合视频久久| 黄色激情电影在线观看| 啊啊啊啊啊啊啊啊啊在线观看| 3d成人精品一区二区| 97免费视频在线观看视频| 无色无码| 天天欲望网| 国模限制级电影| 日韩av在线精品观看| 青青草白白色| 国产一区二区三区影片| 91欧美综合| 天天综合AV| 岛国片在线播放| 超碰97久久国| 97色碰| 欧美性第一页| 欧美传媒一区| 午夜福利免费福利视频| 国产91 丝袜在线播放| 国产精品乱人伊人网| 国产精品久久久久久久AV大片 | 激情文学小说一区二区| 91日本在线观看| 久久超碰网| 亚洲天堂人人妻| 国产精品无码AV网站| 91美女片在线| 夜夜国产一区| 十八禁成人网站在线观看| 九一国产精品| 97久精品| 国产精品成人福利在线| 欧美综色欧| 1024亚洲中文字幕久在线看片你懂的 | 精品国产一级久久| 91视频综合网| 粉嫩av一区二区三区四季| 亚洲另类在线观看| 天天搞在线综合网| 欧美色青| 精品十三区| 免费毛片在线播放| 第四色奇米影视777| 九九热只有精品| 午夜性| 精品人人插人人操| 黄色人人| 高潮精品| 色97综合中文字幕| 欧美在线色图| 少妇超碰在线| 亚州AV无码国产精品| 九九九网站| 啊啊啊啊啊啊啊啊啊在线观看| 嗯啊不要啊在线| 操逼逼一区视频| 欧美色图校园春色| 国外91| 国产不卡片| 亚洲一区二区精品福利| 国内偷拍精品一区二区| 亚洲欧美内射| 青苹果影院男人的天堂| 97干在线| 这里都是精品在线观看| 在线视频 亚洲精品| 男人天堂免费| 嗯嗯,好大,好爽,好骚| 欧美成人精品A片免费一区99| 在线播放一级无码视频| dy888午夜老子影视达达兔| 九99久久| 大香蕉综合久久| 麻豆60秒| 极品尤物在线观看| 日韩,欧美,中文在线| 欧美黄色手机在线观看| 午夜一区| 99在线观看视频在线高清| 搞中出视频在线观看| 六月天婷婷| 偷拍自拍在线视频观看| 亚洲 日本 国产 综合| 精品午夜福利| 国产丝袜啪啪| 久久久久久99999国产精品| 青青草色情网站视频| oumeisetu综合| 亚洲无码一区二区三区三州| 久久国产在线一区二区| 91美女在线观看| 操一对老熟妇爽上天视频| 国产第11页| 欧亚不卡| 九九九久千久久激情蜜桃在线看| 天天操av懂色| 麻豆天美国美国产AV| 综合色99| 不卡免费av在线播放| 日韩亚洲中文有码视频| 日韩黄片视频试看| 天堂а√在线最新版在线 | 99性视频| 九九色热| 夜夜狼人妻| 操人妻少妇中文| 五月天激情小说| 亚洲另类在线观看| 亚洲色宗合| 91精品久久久久| 91中出在线| rivers-china.com| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 国产高清免费不卡av| 国内精品久久人妻性色av| 国产精品点击进入在线影院高清| 国产区日韩区在线观看| 欧美岛国精品在线观看| 国产精品高潮久久久无码| 美女被啪到深处抽搐视频| 精品人妻一区二区三区四区不卡在| 亚洲小说视频| 成年人黄色| 天天综合亚洲综合| 2021国产成人精品久久| 啊啊嗯嗯好爽| 亚洲影院成人| 亚洲A曰本VA欧美VA视频| 人妻色偷色噜| 1024精品在线| 久久久久亚洲av综合波多野制衣| 国产精品网站免费| 欧美在线视频99| 中国熟女老妇仑乱一区二区三区| 女人午夜视频777| 国产自产自拍| 九九九偷拍| 亚洲一区二区中文字幕| 美女上床网站| 97超碰免费生活| 91黑丝露脚| 思思热在线视频精品| 全球成人中文在线| 秋霞影音一区二区三区| 操逼视频免费日韩无码| 亚洲色 国产 欧美 日韩| 玖玖爱免费观看视频| 国产9 9在线 | 亚洲| 色操逼网| 国产AV久久久蜜爱影集| 久久久久久亚洲精品不卡人乳| 熟妇熟女亚洲天堂网| 手机不卡视频不卡在线一二三区| 中文在线久久字幕| 国产精品一区二区麻豆| 色逼综合| 国产强奸91| 熟女人妇一区二区三区| 天天日天天舔天天喷天天射| 中文字幕在线观看网页| 色九九九九| 精品美女人人干| 超碰97男女| 人人妻碰人人免费| 亚欧日韩成人| 日韩精品 资源| 久久精品天美| 91艹| 少妇久久久久| 91内射| 天天艹天天日| 婷婷五月天网| 少妇极品熟妇人妻无码| 大色网久久| 日韩三级伦理中文字幕| 欧美成人性爱视频免费观看| 精品久久青青草| 午夜福利在线视频1000| 97超碰超| 日韩免费大片一级播放| 丁香五月天激情综合| 久久有碼| 精品对白久久不卡| 99热99在线播放激情| 很很干很很操| 综合网97| 91东北熟女| 亚洲天堂人人妻| 亚洲午夜精品久久久中文影院| 精品欧美不卡在线播放| 51一区二区三区| 1956日韩精品| 亚洲狠狠入| 操操操五月天婷婷丁香影院| 十八禁啪啦拍视频无遮挡| 欧美亚男人的天堂| 一区二区不卡免费| 色天天野狼综合社区| http://qxhbdz.com| 99精品网站| 欧美亚洲手机在线| 亚欧无码在线| 欧美人妻精品| 久久99干一本高清| 可以在线观看的黄色网址| 长长久久免费视频| 狠狠爱夜夜干| 乱伦熟妇一区二区| 女人爽到高潮潮喷18禁网站 | 国产 日韩 另类 视频一区爱| 午夜丁香| 欧亚揄拍偷拍精品视频| 一区操逼| 北京专精特新企业招聘信息| 91亚洲黄色网| 无码在线亚洲| 素颜老阿姨乱情色| 亚洲精品一区二区日本| 婷婷五月天网| 精品一区二区2| 中文字幕日韩电影人妻| 999日韩中文精品观看视频。| 超碰在线1234区| 精品国产91内射久久| 天天影视综合网欧美精品| 强奸乱伦中文字幕AV| 日韩免费福利在线观看| 伊人黄色片| 蜜臀久久99精品久久久久久久久| 免费一级精品啪啪视频| 久久超碰免费的| 中国亚洲呦女专区| 视频一区二区三区精品| 大逼色网站| www.高清无码诱惑一区.com| 啊啊啊啊啊啊啊国| 欧美性爱系列| 男人天堂网站| 久久天天摸| 天天综合中文字幕 91| 情侣操 逼视频99| 女生看匆91网站| 97K超碰在线| 午夜男女爽爽爽在线视频 | 一本一道人妻久久一区二区三区| 天天影视综合色| 韩国一级做A片免费的| 色www精品视频在线观看| 美女熟妇色| 久久99国产综合精品女同| 97欧美日韩| 伊人97超碰| 色97干| 操91| 欧美97色| 人妻加勒比东京热| 色姑娘综合网| 麻豆区99999| 伊人96在线| 艹比视频国产精品| 国产特级毛片AAAAAA高潮流水| yiqicaoav| 加勒比大香蕉视频在线| 婷婷五月丁香五月| 久久99九九九九6666免费观看软件| 国产欧美亚洲精品a第2页| 国产av色网| 97人人操人人干| 9精品久久久久| 婷婷激情五月| 免费国产视频| 中文字幕亚洲欧美在线不卡| 国产精品一区二区亚洲人成毛片| 欧美色图下一页| 麻花传媒免费网站在线观看| 午夜福利一区二区三区四区五区色婷婷| 天堂中文日本在线观看| 97国产精品在线观看| 国产又爽又黄| 欧美肥臀在线| 黑操B| 国内偷拍精品一区二区| 熟女欧美日韩综合婷婷| 国内自拍 日韩激情 99| 蜜臀AV午夜精品久| 啊啊啊啊啊操我视频| ji熟女.com| 亚洲天堂久| 亚洲宅男天堂| 亚洲AV成人精品网站在AV| 神马久久中文字幕| 免费观看的黄色的网站| 亚洲青青草| 成人无码在线视频网站| 成人片视频| 亚洲欧洲国产综合av| 天天性射网| 免费夜夜爱黄色视频毛片| 天天肏天天干| 91天天爱| 超碰国产在线| 情趣丝袜无码操逼视频| 久久九九热| 殴美性色a级欧美| 欧美特大AA级黄片| 日本幼女18+| 女人天堂AV五区在线| 6080YYY午夜理论片在线观看| 综合网亚洲1| 999久久久久久久精| 波多野结衣被操50分钟免费视频| 91蜜臀人妻中文字幕在线| 日韩在线视频1234| 亚洲av综合色区无码一| 欧美色图亚洲激情| 亚洲情色一区二区三区| www.婷婷| 国产精品自拍xxxx| 精品欧美乱码久| 日韩人妻精品中文字幕| 欧美色色色| 丰满人妻一区二区三区性色| AV女资源| 日韩电影天堂视频一区二区| 啊啊啊啊嗯嗯嗯用力好爽 | 粉嫩久久久久| 91N欧美| 日本操逼视频导航| 欧美岛国精品在线观看| 性欧美第一页| 美骚妇av高清在线| Julia在线播放亚洲久久| 国产精品久久久久亚洲av| 亚洲色宗合| 老女人91| 大稥蕉免费视频这里只有精品| 高清成年美女黄网站免费大全 | 97综合在线| 国产精品 午夜福利| 99热精品在线| 综合免费无码中文| 无码精品久久久久久亚洲| 高清孕妇孕交 交孕妇| 欧色综合| 欧美日韩99| 亚洲av无码国产精品字幕| 天天爱天天操| 久久久久幕乱码| 91成人在线| 综合网,亚洲,欧美| 九九aV| 国产成年免费大片黄在线观看| 中出欧美| 色色97爱| 国产九九九九九九| 在线亚洲精品久久久| 欧美大香蕉在线观看| 99久久综合网| 新婚人妻扶着粗大强行坐下| 男女猛烈无遮掩视频免费软件| 久热最新在线杭州| 伊人宅男大香蕉| 欧美天堂亚洲电影院一区在线播放| 97硬碰| 又黄又爽在线观看视频| 91九色首页| 粉嫩不卡一区二区性爱| 在线免费观看日韩一区| 国产拍偷精品网站| 国产久久久| 国产精品视频在线观看| 黑人性欧美| 精品无码产区一区二| 天天天天天超碰| 天天做天天爱天天爽AV| 亚洲欧美爆| 最新加勒比丝袜在线| 色哟哟的毛片| 性色AV蜜色av色欲av| 搡老女人老91二区| 日本精品一区二区三| 青青三级视频| 96国产污污污丝袜| 你草精品在线视频| 久久国模av| 国产农村妇女精品1区二区| 欧美.亚洲.另类.丝袜.制服.诱惑| 亚洲AV无码国产成人| 免费啪啪一级视频| 思思热久久成人| 美女天天干| 国产精品久久久吖| 91丨国产丨白浆秘 洗澡动漫| 污色区网站| 成人国产视频在线观看| 欧美亚洲自拍另类人妻| 亚洲成aⅴ人片不卡无码| 大屁股人妻女教师撅着屁股| www熟女乱伦com| 中国AAAAAA黄色片| 一本精品日本在线视频精品| A 在线网址| 久草视频在线视频在线视频在线观看 | 91美女看B| 60秒免费视频| 三级日韩一区二区三区| 国产乱码久久久久久| 日韩无码嘿咻黑热久| 成年男人的天堂| 中文不卡视频| 少妇久久久久久久| 国产h小视频在线观看免费| 看日韩黄片| 蜜臀AV秘一区翔田千里| 精品人妻1区| 成人性爱视频在线看| 久久精品亚洲成a人天堂| 美日韩男女操屄视频| 久草免费在线视频| 后入福利| 国产欧美日产一区二区三区 - 国产欧美日 | 性色av大全| 欧美日韩中文字幕不卡| 无码91| 国产午夜无码片在线观看影视| 色牛aV| 日本爽爽爽爽爽爽免费视频| 成人性爱AV在线免费观看| 高清孕妇孕交 交孕妇| 啊啊啊男女| 97日亚洲欧美| 青青青国产手线观看视频2| 五月婷婷影院| 久久综合久久综合人久久夜精品| 国产综合网站在线播放| 波多野结衣AV无码一区| 日日噜噜夜夜狠狠视频无| 另类 日韩 熟女| 久久九九99| 亚洲情色1区| 伊人991| 亚洲综合有码| 熟女探花啪啪| 亚洲国产欧美另类自拍| 青青草天天亲夜夜操网| 97人妻色| 好舒服视频| 欧美精品激情| 黑人精品XXX一区一二区| 国产AV激情无码久久无码 | 日韩天天综合| 欧美Ⅴ性爱| 日韩性爱电影一区| 久久色人体| 99黄页网站| 超碰97COm中文| 国产精品永久免费10000| 熟女六十路| 综合网色| 一牛一区二区三区久久| 蜜桃臀av一区二区| 国产黄色视频久久| 99无码视频| 丰满搜索结果 -第18页- 久久高清无码 | 丁香五月久久| 你草精品在线视频| 欧美色蜜桃97| 国产精品久久久久久久AV大片| 自拍鲍鱼一区在线高清观看免费| 大香蕉十区| 熟妇无码视频三区| 91人精品妻入口| 久久久久人妻| av东京热男人的天堂| 九月伊人中文字幕| 国产一区二区在线电影| 人妻精品综合中文字幕在线| 欧美一区二区三区成人性生活| 成人性爱免费播放| 日本黄 R色 成 人网站| 久久99手机免费视频| 国产福利夜| 美女91网址| 欧美一区二区福利在线| 亚州精品一区二区三区香中文字幕在线| 狠色婷婷久久一区二区三区_| 伊人麻豆传媒| 精品人妻一区二区视频| 91精品电影18| 人妻熟女一区二区三区视频| 日韩精品人妻一| 国产免费大片| 日韩欧视频| 日韩黄色一区二区三区| 久久超碰、| 色欧洲| 婷婷五月天av| 天美麻豆黄色录像| 国产精品高清2021在线| 午夜天天碰综合视频| 国产丁香精品露脸视频| 免费αⅴ在线观看| 亚州色站 日韩电影| 超碰色97| 亚洲中文字母在线播放| 亚洲熟久久| 国产亚洲精品一区二区三区| 亚洲人成网www| 91热热色| 免费的黄片wwwwww| 爱妻综合网| 日韩综合无码色欲vv| 国产视频一区二区在线观看| 亚洲熟女人妻中文字幕一区二区| 日韩成人大片一区二区| 九九热精彩视频| 日本一区二区三区四区五区六区七区八区九区| 色婷婷五月综合激情中文字幕| 中文字幕AV片| 欧美v日韩v亚洲v最新在线| 六月丁香五月婷婷| 清纯唯美综合亚洲| 俺去俺来也在线www| 日韩少妇丰满亚洲| 激情色图| 蜜桃臀 后入 一区 二区 三区 在线| 熟妇一区二区| 婷婷色五月激情| 97久久超碰日韩精品| 欧美日韩操逼嗦吊| 色777999综合| av资源在线播放天堂| 伊人在线大香蕉视频久久| 久久久久亚洲?V片无码V| 少妇内射www在线观看视频| 高清在线不卡一区二区 视频| 欧美亚洲丝袜美女电影| 欧美精品精品一区二区| 少妇国产不卡| 五十路熟女人妻一区二区三区四区五| 激情综合五月婷婷| 干B网| 日韩精品一区二区三区四虎影视| 校园激情狠狠四射| 日韩成人电影AV| 性久久| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 人妻五十路在线| 日本在线不卡v二区| 国产传媒午夜理伦精品| 美国一区二区三区视频| 色综合20p| 日日操丁香五月天| 少妇99| 一级毛片久久久久久久女人18| 久久m| 萌白酱自拍视频| 97久久久久久久久久| 丁香五月激情综合国产| 久久久涩| 五月天丁香欧洲日韩| 丁香色狠狠色综合久久小说| 亚洲国产综合久久久性感熟妇| 国产丝袜美女在线一区| 色天堂综合| 色色色欧美| 97久久久网站| 最新欧美色网| 国产内射爽爽大片| 国产极品久久久| 手机在线中文字幕国产| 激情婷婷丁香网| 丁香五月天视频| 97这里有精品| 欧美成人精品一区二区三区| 国产日韩手机视频在线| 国产热av| 色婷婷基地| 大香蕉狠狠爱| 熟女自慰久久久| 大香网站| 欧美中文综合| 国产农村妇女精品一| 人人看欧美性爱| 91bbbbbb| 蜜伊人色综合97| av绯色| 天天操妹子| 亚洲s在线观看| 国产极品美女高潮无套在线观看| 91精品国| 久久精品视频久久久| 蜜乳AV一区| 精品国产乱码久久久| 久久理论字幕视频| 日韩国产不卡在线视频| 97久操| 激情图片亚洲色图| 黄片www.| 免费操逼91| 久久久久久久久国产| 精品色色| 操逼免费视频无码国产| 超碰97综合在线| 97干色天堂| 六月激情婷婷| 一区二区三区免费岛国片| 丁香色狠狠色综合久久小说| 91综合网站| 国产精品不卡少妇白| 天天干夜夜| 啊啊啊 在线| 黑丝制服中文字幕| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 91麻豆天美传媒HD| 野狼激情网| 日韩在线视频1234| 思思在线免费视频| 逼操网站| 一级二级三级黑人无码| 亚洲无码免费看| 最新欧美色网| 婷婷五月成人| 91在线精品一区二区三区| 嗯嗯啊啊日韩精品| 九九九综合精品| 黄色网址在线免费观看| 91搡老女人老妇女老熟女歌词翻译| 热的中文 热的有码 热的国产| 99热精品在线| 玖玖玖玖精品国产剧情| 中英熟女操女| 欧美综合网站999| 中 文字幕一区二区三四 五 区日 日 骚| 1769精品一区二区三区| 综合久久少妇中文字幕| 欧美综合亚洲| 天天天乱色综合全| 久久久蜜桃一区二区三区| 日韩国产在线观看av| 性色亚洲| 东京太热男人的天堂久久久| 91欧美另类| 国精品一区二区三| 久久色情| 亚洲日韩美女中文字幕乱| 91啦人妻| 亚洲天天操| 有码专区最新中文字幕有码| 97色涩| 操婷婷逼| 亚洲精品1区| 中文字幕人乱码中文字的预防方法 | 91综合网在线| 天天激色| 亚洲欧美天堂在线| 99热官网| 午夜男女爽爽爽在线视频 | 边做饭边操逼逼| 人妻久久久久久久久久久久久久久| 大香蕉男人的天堂| 91小视频| 天天草夜夜草高潮片| 久久久中文| 日韩高清黄片| 婷婷色网| 国产乱码久久久久久| 精品欧美老熟女一二区| 麻豆国产免费影片| 99色日| 欧成人精品H无码| 成人乱码一区二区三少妇| 久久侵犯人妻爽爽爽| 欧美老妇女内射网址| 男人的天堂VA| 国产亚洲精品玖玖玖在线观看| 精品无码一区二区| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 男人成人黄色视频在线观看免费下载| 看大黄色大片原件| 精品91日日夜夜超清资源| 欧美日韩人人精品| 夜夜一区二区| 天天影视色香色欲| 五月婷婷性爱| 五月婷婷五月天| 久9视频| 狠狠色噜噜狠狠狠狠2018| 粉嫩久久久久| 亚洲 欧美 色图| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 欧美一区二区三区不卡高清视频| 丁香六月婷婷| 色妇91| 国产一区二区三三视频| 精品国产乱码久久久影院| 久久久久久精品免费看A级| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 亚洲AV秘无码一区..| 色97欧美| 蜜桃传媒一区二区亚洲| 99激情| 精品成人av一区二区三区在线| 亚洲中文字幕精品一区| 伊人嫩草| 一级黄色影片| 男女国产精品| 熟妇熟女视频一区二区三区| 2017天天插| 亚洲欧美精品一区天堂久久| 91亚洲网站| 久久一二三四五六七八九区区区| 草草草视频| 99性爱| 清纯唯美亚洲综合| 天天操av懂色| 国产拍偷精品网站| 干B| 欧美中出1| 78m成人视线| 色综合加勒比四四季| 国产欧美成人精品| 岛国视频一二三区| 成人一级二级| 六十路日本| 亚洲宗合网| 婷婷五月综合在线| 97啪啪| 丝袜熟女一区二区三区| 好屌色综合| 国产女人91精品嗷嗷嗷嗷| 欧美色视| 91熟女丨老女人| 91色人妻| 后入国产| 蜜乳AV免费观看| 国产中文精品一区二区在线观看| 无色无码| 91久久精品蜜臀| 亚洲中文字幕乱码无码一区二区| 中文人妻av高清一区| 日日碰视频网| 久久久久久久久久久人妻| 又大又长又粗又爽又黄| 97超碰欧美精品| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 啪啪视频mP4| 大香蕉一区二区在线观看.| 黑丝制服中文字幕| 免费人人搞97| 亚洲成人免费在线| 欧美aaaaaaa| 国产精品天堂| 情色五月天就去干| 91天堂视频| 99视频在线| 99久久婷婷丁香| 毛片久久| 玖玖爱视频网站| 亚洲国产一级中文综合久久天堂在线免费观看 | 激情视频一二三| 青青草国产欧美非洲黑人| 欧美 亚洲| 精品久久久久久无码| 国产尤物AV尤物在线观看不卡| 99视频内射三四| 欧美超碰9798| 东京热av男人的天堂| 深夜激情| 久久草草亚洲蜜桃臀| 婷婷AV一区二区三区| 操人妻丝袜高跟| 中文字幕二区| 四虎精品永久在线播放| 欧美日韩性爱操大逼| 99国产精品人妻人伦| 亚洲精品一区二区免费在线观看| 97超碰日韩| 日本无码1| 暖暖精品二区三区观看| 欧美91色| 午夜a成v人电影| 婷婷五月av| 成人色女网| 高颜值美女口爆高潮浪叫| 国产精品一区二区久久精品| 婷婷大香蕉| ai欧美亚洲小说| 亚洲欧美综合| 男人的天堂一区三区| 97色色色综合网站| 加勒比海人人操超碰在线| 无码一区免费在线不卡| 欧美日韩99| B049AV在线播放| 在线a亚洲视频播放在线| 久久男女激情视频网站| 久久999久| 中日韓欧美高清| 亚洲系列第一页| 99久久无色码| 久久久天堂| 国产精品久久久久久久黄无码 | 国产最火爆久久国产网站网站| 中文字幕一区二区三区视频播放| 欧美一区二区成人一卡| 亚洲超碰97| 久久五月婷| 无码人妻系列少妇| 中文字幕,人妻,日韩| 天美国产三级传媒| 日韩欧美久久婷婷网站| 国产一区二区精品久久99| 有码免费观看| 91天天综合日韩欧美| 伊人久操| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 欧洲精品一二三在线| 国产日韩中文字幕欧美| 四虎精品永久在线播放| 日本国产亚洲一区在线观看| 操逼国产免费| 一块操欧美| 91色黑人少妇| 亚洲美女黄色| 九九热AV| 国产女人操逼视频| 一起草av| 亚洲人在线成线成人| 久久久草草精品| 日韩欧美日韩| 欧美中出1| 欧美午夜色妇色鬼| 四虎AV在线播放| 91久久久亚洲| 久久久久亚洲三级电影| av在线免费一区二区| 久久9视频| 亚洲成人精品久久久| 91中出在线| 看日韩黄片| 999狠狠综合| 欧美日动态视频| 久久性爱视频99| 97视频www| 久久久九97| 久久日本熟妇熟色高清| 男女做爰猛烈动高潮A片免费应用| 狼天天狼天天大香蕉| 9Ⅰ超碰| 丁香六月婷婷久久综合| 日韩91网| 欧美一级黄色18片免费看| 欧美青青视频| 久久一区二区高清免费| 欧美猛交黑寡妇中文字幕| 蜜乳AV.COM| 色大香蕉97N| 国产宅男宅女在线观看| 久久爱超碰网| 国产不卡免费在线视频| 操淫穴亚洲五月丁香| 超碰成人最新最好看| 亚洲日本天堂| 日本精品一区二区中文字幕| 欧美精品不卡一二三四在线91| 天堂8在线新版官网| 亚洲脚交| 中文字幕91页| 国产精品毛片| 综合欧美日本三级| 久久久久久久久久久久色网| 亚洲黄色影视| 男人天堂欧美| 99热这里只有精| 亚洲国产成人精品999| 亚洲精品欧洲精品| 日韩激情小说一区二区| 亚洲鸥美色图| 欧美日韩第一页| 国产激情在线| 97精品国产97久久久久久免费| 亚洲伊人成综合成人网| 96免费视频在线| 人人操人人插人人摸人人干| 欧美手机在线综合| 六月婷婷综合| 日韩无限资源| 亚洲精品一二三四区| 先锋激情∨在线视频播放| 69久久久久久久久久久久久| 国内自拍 日韩激情 99| 欧美日韩狠狠爱| 麻豆AV一区二区| 八戒无码国产午夜福利| 天堂精品| 久久婷婷五月天| 精品人妻一区二区三区四区石在线| 99re在线观看| 性爱乱伦网址| 亚洲 欧美 第一页| 男人的天堂.com| 五月婷婷六月丁香网址| rivers-china.com| 成人情色一区二区| 欧美Aⅴ| 国产高清在线自在拍69| 资源在线观一 二| 国产深喉视频一区二区| 国产美女口爆吞精| 日韩精品1区2区中文字幕| 99re热| 97日韩欧美| 男人 天堂 日 亚洲| 激情五月天社区| 9丨久久九九九 | 超碰97人人乐| 亚洲精品蜜桃久久久一区二区三区| 69少妇一区二区| 欲综合网| 综精品久久久aaaa| 国产色精品午夜大片| 国产精品成人午夜福利| 神马午夜久久久| 91精品国产高清久久久久久,亚洲成人| 天天噜| 97超碰资源网| 啊啊啊操一区| 欧美1区二区三区公司| 青青久草| 亚洲精品一二三四区| 风流老熟女一区二区三区l| 偷拍 亚洲 欧美| 中文字幕精品久久久久人妻红杏ⅰ| 色吧五月| 成人免费看吃奶视频网站| 91bbbbbb| 人妻少妇色综合|