日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

微信小程序健身管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn):從數(shù)據(jù)庫(kù)到接口全解析

微信小程序健身管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn):從數(shù)據(jù)庫(kù)到接口全解析 先聊點(diǎn)實(shí)際的。微信小程序健身管理系統(tǒng)這個(gè)名字在各類畢設(shè)選題里出現(xiàn)頻率相當(dāng)高CSDN、GitHub上隨便一搜就是一大堆但真正能跑通、邏輯清晰、能經(jīng)得起答辯追問(wèn)的項(xiàng)目其實(shí)不多。這個(gè)題目之所以熱門是因?yàn)樗骖櫫恕扒岸私换フ故尽焙汀昂蠖藰I(yè)務(wù)邏輯”兩頭不管是小程序端還是管理端都有足夠的內(nèi)容可寫工作量飽滿技術(shù)棧也有一定的延展空間對(duì)本科畢設(shè)來(lái)說(shuō)是個(gè)非常合適的選題。我手頭這套基于微信小程序?qū)崿F(xiàn)的健身管理系統(tǒng)功能上覆蓋了用戶端和小程序內(nèi)部的管理端雙角色。用戶端主要解決“選課、約課、練后記錄”這條主鏈路管理端處理“課程排期、用戶審核、健身數(shù)據(jù)復(fù)核”這些偏后臺(tái)的事。整體技術(shù)路線走的是微信小程序原生 后端接口 MySQL 數(shù)據(jù)庫(kù)的經(jīng)典組合結(jié)構(gòu)清晰也方便后續(xù)擴(kuò)展。接下來(lái)我會(huì)把整套系統(tǒng)的設(shè)計(jì)思路、核心功能拆解、具體實(shí)現(xiàn)的關(guān)鍵代碼片段、踩坑記錄以及論文寫作時(shí)需要注意的要點(diǎn)一次性梳理清楚。1. 健身管理系統(tǒng)整體設(shè)計(jì)思路1.1 為什么選微信小程序而不是獨(dú)立App很多人在選題時(shí)會(huì)糾結(jié)健身管理系統(tǒng)用微信小程序做為什么不干脆做個(gè)App這個(gè)問(wèn)題的答案其實(shí)取決于使用場(chǎng)景和目標(biāo)用戶。健身管理系統(tǒng)面向的是健身房會(huì)員和運(yùn)營(yíng)人員。會(huì)員的典型動(dòng)作是翻看課程表、預(yù)約一節(jié)團(tuán)課、查看自己的鍛煉記錄。這些操作都是“低頻但必須隨時(shí)可用”的用戶不可能為了約一節(jié)瑜伽課專門下載一個(gè)幾十兆的App。微信小程序“用完即走”的特性恰好匹配這個(gè)場(chǎng)景在微信里搜索一下或掃個(gè)碼就能進(jìn)入預(yù)約完就退出下次需要時(shí)再打開(kāi)。從開(kāi)發(fā)成本上看小程序前端基于微信提供的組件體系和API開(kāi)發(fā)門檻低于原生App一套代碼在iOS和Android上都能跑不需要分別維護(hù)兩套工程。再加上微信生態(tài)本身就解決了登錄授權(quán)的問(wèn)題通過(guò)wx.login拿到code后端再用code換openid就能識(shí)別用戶身份省去了自己搭建賬號(hào)體系和短信驗(yàn)證的成本。還有一個(gè)很多人容易忽略的點(diǎn)健身管理系統(tǒng)作為畢設(shè)或課程設(shè)計(jì)項(xiàng)目小程序的形式更容易展示。答辯現(xiàn)場(chǎng)用微信掃一掃就能在手機(jī)上看效果比在電腦上啟動(dòng)一個(gè)模擬器要直觀得多。如果做成App還要考慮簽名、打包、安裝的問(wèn)題這些對(duì)于非專業(yè)安卓開(kāi)發(fā)的同學(xué)來(lái)說(shuō)都是額外的時(shí)間消耗。1.2 系統(tǒng)角色與核心功能劃分健身管理系統(tǒng)從業(yè)務(wù)上天然分成兩類角色普通用戶會(huì)員和健身管理員教練或運(yùn)營(yíng)人員。兩方在小程序端看到的界面和能執(zhí)行的操作完全不同。用戶端的核心功能我梳理下來(lái)主要圍繞三條主鏈路展開(kāi)看課瀏覽團(tuán)課課程列表查看課程詳情包括教練信息、上課時(shí)間、課程強(qiáng)度、剩余名額。約課選擇心儀的課程時(shí)間段進(jìn)行預(yù)約預(yù)約后在我的預(yù)約中查看狀態(tài)支持取消預(yù)約。記錄每次鍛煉結(jié)束后記錄訓(xùn)練內(nèi)容、時(shí)長(zhǎng)、消耗熱量系統(tǒng)對(duì)歷史記錄做統(tǒng)計(jì)分析用圖表展示每周的訓(xùn)練趨勢(shì)。管理端因?yàn)槭切〕绦騼?nèi)嵌的管理模式功能不追求大而全但必須覆蓋運(yùn)營(yíng)的基本訴求課程管理發(fā)布新課程、設(shè)置課程容量、管理排期。預(yù)約管理查看所有預(yù)約記錄處理異常預(yù)約統(tǒng)計(jì)約課率。用戶管理查看注冊(cè)用戶列表對(duì)用戶進(jìn)行備注或標(biāo)記。角色體系的劃分用一個(gè)role字段就能區(qū)分用戶表中role1是普通會(huì)員role2是管理員。管理員登錄后通過(guò)條件渲染切換導(dǎo)航欄和頁(yè)面入口不需要做復(fù)雜的路由攔截。當(dāng)然這只是前端層面的控制真正的權(quán)限校驗(yàn)必須放在后端接口里做這個(gè)后面在接口設(shè)計(jì)部分詳細(xì)說(shuō)。1.3 技術(shù)選型的考慮與得失這套系統(tǒng)的后端我選的是Node.js Express數(shù)據(jù)庫(kù)用MySQL。選這個(gè)組合的原因很簡(jiǎn)單JavaScript全棧前后端語(yǔ)言統(tǒng)一代碼寫起來(lái)順手而且Express的中間件機(jī)制做接口鑒權(quán)非常方便。如果你用的是Java Spring Boot或者Python Django本質(zhì)上沒(méi)區(qū)別只是語(yǔ)言層面的不同。選型時(shí)有一個(gè)原則需要守住選自己最熟悉、最快能出活的技術(shù)棧不要為了追求所謂的高并發(fā)、分布式去強(qiáng)行上微服務(wù)那是給自己找麻煩。微信小程序端用的是原生開(kāi)發(fā)沒(méi)有引入vant-weapp這類UI組件庫(kù)。原因是原生組件在小程序里的穩(wěn)定性最好自定義樣式的可控度也最高。雖然vant組件庫(kù)確實(shí)好看好用但引入后還會(huì)帶來(lái)樣式覆蓋、組件升級(jí)適配等額外問(wèn)題對(duì)于這種體量的項(xiàng)目原生寫法反而更省心。數(shù)據(jù)庫(kù)表設(shè)計(jì)是整個(gè)項(xiàng)目的地基我踩過(guò)一次坑后把表結(jié)構(gòu)重構(gòu)過(guò)一版最終的方案值得重點(diǎn)說(shuō)一下。2. 數(shù)據(jù)庫(kù)設(shè)計(jì)與核心接口實(shí)現(xiàn)2.1 核心數(shù)據(jù)表結(jié)構(gòu)健身管理系統(tǒng)最核心的表有四張用戶表、課程表、預(yù)約表、訓(xùn)練記錄表。另外還有一張管理員的公告表用來(lái)發(fā)布站內(nèi)通知功能不復(fù)雜但能讓系統(tǒng)顯得完整。用戶表字段并不需要很多核心字段是openid、nickname、avatar_url、phone、role。openid是用戶在小程序里的唯一標(biāo)識(shí)后端通過(guò)微信的code2Session接口換取它才是用戶身份的真正主鍵。nickname和avatar_url是用戶在小程序里主動(dòng)授權(quán)后獲取的個(gè)人信息。role區(qū)分用戶和管理員。課程表重點(diǎn)在于排期概念。一門實(shí)體課程比如“燃脂搏擊”一周可能有多節(jié)課每節(jié)課有自己獨(dú)立的時(shí)間段、教練、剩余名額所以課程表其實(shí)存儲(chǔ)的是“課程實(shí)例”字段包括course_name、coach_name、start_time、end_time、capacity、booked_count、difficulty、cover_url。booked_count是已預(yù)約人數(shù)每次有人成功預(yù)約就加1取消預(yù)約就減1前端詳情頁(yè)直接展示這個(gè)字段來(lái)判斷名額是否已滿。預(yù)約表存儲(chǔ)的是用戶和課程實(shí)例的多對(duì)多關(guān)系id、user_id、course_id、status、create_time。status字段有幾種取值0表示已取消、1表示已預(yù)約、2表示已完成。當(dāng)課程時(shí)間過(guò)去后用戶可以打卡確認(rèn)完成這時(shí)status更新為2。訓(xùn)練記錄表比較簡(jiǎn)單記錄用戶自主提交的訓(xùn)練數(shù)據(jù)user_id、exercise_type、duration_minutes、calories、record_date、remark。它的作用就是為統(tǒng)計(jì)圖表提供數(shù)據(jù)來(lái)源。2.2 預(yù)約狀態(tài)機(jī)設(shè)計(jì)預(yù)約是整個(gè)系統(tǒng)里業(yè)務(wù)邏輯最復(fù)雜的一個(gè)環(huán)節(jié)因?yàn)樗婕暗綘顟B(tài)流轉(zhuǎn)。我一開(kāi)始想得簡(jiǎn)單了以為只要一個(gè)status字段就夠了后來(lái)發(fā)現(xiàn)不行。比如用戶預(yù)約了一節(jié)課這節(jié)課還沒(méi)開(kāi)始用戶想取消這個(gè)狀態(tài)是“已預(yù)約但未開(kāi)始”可以取消。但如果這節(jié)課已經(jīng)結(jié)束了呢用戶就不能再取消了只能標(biāo)記完成或直接棄課。最終我設(shè)計(jì)了一套簡(jiǎn)單的預(yù)約狀態(tài)機(jī)一共四個(gè)狀態(tài)已預(yù)約status1預(yù)約成功課程未開(kāi)始此時(shí)用戶可以取消預(yù)約。已取消status0用戶主動(dòng)取消或管理員后臺(tái)取消名額釋放。已完成status2課程已結(jié)束且用戶完成了打卡這個(gè)狀態(tài)由用戶操作觸發(fā)。已過(guò)期status3課程結(jié)束但用戶未打卡系統(tǒng)定時(shí)任務(wù)自動(dòng)將這類預(yù)約標(biāo)記為已過(guò)期。這個(gè)設(shè)計(jì)在事務(wù)層面有幾個(gè)細(xì)節(jié)必須處理用戶發(fā)起預(yù)約時(shí)要判斷當(dāng)前時(shí)間是否已經(jīng)超過(guò)開(kāi)課時(shí)間如果超過(guò)了直接拒絕預(yù)約。還要判斷課程實(shí)例的booked_count是否小于capacity如果不小于說(shuō)明已經(jīng)約滿不能再約。這里容易踩的坑是并發(fā)問(wèn)題——兩個(gè)人同時(shí)提交預(yù)約都讀到剩余名額為1然后同時(shí)寫入預(yù)約記錄最終導(dǎo)致超賣。解決辦法是給booked_count的更新加一個(gè)條件UPDATE course SET booked_count booked_count 1 WHERE id ? AND booked_count capacity讓數(shù)據(jù)庫(kù)層面的原子操作來(lái)兜底。2.3 后端接口設(shè)計(jì)與權(quán)限校驗(yàn)后端接口統(tǒng)一以/api為前綴按模塊劃分路由。核心接口我整理了一張表方便對(duì)照接口路徑方法功能說(shuō)明權(quán)限要求/api/user/loginPOST微信登錄code換openid公開(kāi)/api/user/profileGET獲取當(dāng)前用戶信息用戶級(jí)/api/course/listGET獲取課程列表公開(kāi)/api/course/detailGET獲取課程詳情公開(kāi)/api/booking/createPOST創(chuàng)建預(yù)約用戶級(jí)/api/booking/cancelPOST取消預(yù)約用戶級(jí)/api/booking/listGET獲取我的預(yù)約列表用戶級(jí)/api/record/addPOST添加訓(xùn)練記錄用戶級(jí)/api/record/statsGET獲取統(tǒng)計(jì)圖表數(shù)據(jù)用戶級(jí)/api/admin/course/addPOST新增課程排期管理員/api/admin/booking/listGET查看全部預(yù)約管理員權(quán)限校驗(yàn)用的是最經(jīng)典的token方案。用戶登錄成功后后端返回一個(gè)自定義token前端把token存入wx.setStorageSync之后每個(gè)請(qǐng)求在header里帶上Authorization: Bearer token。后端寫一個(gè)認(rèn)證中間件從header里取出token解析出user_id和role掛載到req對(duì)象上。然后每個(gè)路由按需聲明權(quán)限等級(jí)// auth.js 中間件核心邏輯 const verifyToken (req, res, next) { const authHeader req.headers[authorization]; if (!authHeader || !authHeader.startsWith(Bearer )) { return res.status(401).json({ message: 未登錄 }); } const token authHeader.split( )[1]; try { const decoded jwt.verify(token, SECRET_KEY); req.userId decoded.userId; req.userRole decoded.role; next(); } catch (err) { return res.status(401).json({ message: token無(wú)效或已過(guò)期 }); } }; const requireAdmin (req, res, next) { if (req.userRole ! 2) { return res.status(403).json({ message: 無(wú)管理員權(quán)限 }); } next(); };前端頁(yè)面雖然做了角色區(qū)分但真正防住越權(quán)操作的是后端這層校驗(yàn)。管理端的接口必須加上requireAdmin不然任何人只要修改小程序的存儲(chǔ)數(shù)據(jù)就有權(quán)限調(diào)用管理接口這是開(kāi)發(fā)階段最容易忽視的安全漏洞。3. 小程序端核心功能實(shí)操3.1 登錄授權(quán)與用戶識(shí)別微信小程序的登錄流程跟普通Web網(wǎng)站的登錄完全不一樣。它沒(méi)有用戶名密碼的概念核心是微信的openid識(shí)別機(jī)制。具體流程是這樣的第一步小程序前端通過(guò)wx.login接口獲取一個(gè)臨時(shí)code這個(gè)code的有效期只有5分鐘而且只能用一次。第二步前端把code發(fā)給自己的后端接口后端拿到code后調(diào)用微信官方的code2Session接口用code換回openid和session_key。第三步后端拿著openid去數(shù)據(jù)庫(kù)里查用戶如果從來(lái)沒(méi)注冊(cè)過(guò)就自動(dòng)建一條新記錄。最后后端自己簽發(fā)一個(gè)token返回給前端前端存起來(lái)供后續(xù)請(qǐng)求使用。這里有一點(diǎn)值得注意wx.login拿到的code只能換一次openid如果換成功了你重新調(diào)用wx.login拿新code之前的code就失效了。所以在寫代碼時(shí)不要在一個(gè)頁(yè)面里反復(fù)調(diào)用wx.login應(yīng)該把登錄邏輯放到一個(gè)統(tǒng)一的入口處理。用戶昵稱頭像的獲取現(xiàn)在微信政策收緊后無(wú)法直接通過(guò)wx.getUserProfile無(wú)限次彈窗獲取了。新方案是在頁(yè)面里放一個(gè)按鈕用戶主動(dòng)點(diǎn)擊“授權(quán)頭像昵稱”后通過(guò)button的open-typechooseAvatar拿到頭像地址typenickname拿到昵稱輸入框。這兩塊的操作是小程序開(kāi)發(fā)里比較容易被卡住的點(diǎn)因?yàn)榕f接口在基礎(chǔ)庫(kù)版本升級(jí)后已經(jīng)不能用了。3.2 課程列表與預(yù)約流程實(shí)現(xiàn)課程列表是這個(gè)系統(tǒng)里用戶最常用的頁(yè)面。列表頁(yè)用onShow生命周期加載數(shù)據(jù)因?yàn)橛脩魪脑斍轫?yè)返回列表頁(yè)時(shí)名額可能已經(jīng)被搶占了需要刷新。我用wx.request請(qǐng)求課程列表接口把返回的數(shù)據(jù)渲染成卡片// courseList.js 關(guān)鍵請(qǐng)求邏輯 onShow() { this.fetchCourseList(); }, fetchCourseList() { wx.request({ url: ${BASE_URL}/api/course/list, method: GET, success: (res) { const list res.data.map((item) { // 計(jì)算課程狀態(tài)0-可預(yù)約 1-已約滿 2-已開(kāi)始 const now new Date(); const start new Date(item.start_time); let status 0; if (item.booked_count item.capacity) status 1; if (now start) status 2; return { ...item, status }; }); this.setData({ courseList: list }); } }); }預(yù)約按鈕的處理邏輯最核心的一點(diǎn)是先判斷狀態(tài)再調(diào)接口。前端判斷當(dāng)前課程是否可約后端再次判斷并做原子更新雙重校驗(yàn)。前端判斷是為了體驗(yàn)后端判斷是為了正確性。用戶點(diǎn)擊“立即預(yù)約”時(shí)先彈一次確認(rèn)框然后調(diào)預(yù)約接口。預(yù)約成功后不要急著跳轉(zhuǎn)直接把當(dāng)前課程的booked_count更新一下讓用戶立刻看到名額變化。如果接口返回“約滿了”之類的錯(cuò)誤彈toast提示并刷新列表。取消預(yù)約我額外加了一個(gè)時(shí)間限制開(kāi)課前30分鐘內(nèi)不允許取消。這個(gè)限制放在后端做前端只做展示。為什么因?yàn)橛脩舳藭r(shí)間可能不準(zhǔn)依賴用戶設(shè)備時(shí)間做業(yè)務(wù)判斷是危險(xiǎn)的以服務(wù)器時(shí)間為準(zhǔn)才是正確姿勢(shì)。3.3 訓(xùn)練打卡與圖表統(tǒng)計(jì)訓(xùn)練記錄模塊的價(jià)值在于給用戶一個(gè)正向反饋閉環(huán)。每次練完用戶錄入訓(xùn)練類型、時(shí)長(zhǎng)、消耗熱量這些數(shù)據(jù)累積起來(lái)就能用圖表展示趨勢(shì)。圖表功能我一開(kāi)始想用ec-canvasECharts的小程序版但后來(lái)發(fā)現(xiàn)項(xiàng)目體積會(huì)增加不少而且在小程序Canvas里的渲染效果在低端機(jī)上有點(diǎn)卡。最后我方案改成用CSS手繪簡(jiǎn)易柱狀圖雖然不如ECharts好看但勝在輕量、穩(wěn)定、零依賴。簡(jiǎn)化版的柱狀圖實(shí)現(xiàn)思路是后端返回一周內(nèi)每天的鍛煉時(shí)長(zhǎng)總和前端把七天數(shù)據(jù)渲染成七根豎條高度按比例計(jì)算view classchart view classbar-item wx:for{{weeklyStats}} wx:keyindex view classbar-value styleheight: {{item.percent}}%{{item.duration}}min/view view classbar-label{{item.label}}/view /view /view這里最需要注意的細(xì)節(jié)是percent字段的計(jì)算規(guī)則最長(zhǎng)的一天設(shè)為100%其他天數(shù)按比例換算而不是按所有天數(shù)的總和換算。如果按總和換算會(huì)出現(xiàn)一周只練了一次但柱子也頂?shù)胶芨叩那闆r視覺(jué)上會(huì)誤導(dǎo)用戶。統(tǒng)計(jì)接口的SQL其實(shí)也不復(fù)雜就是按日期分組求和SELECT DATE(record_date) AS record_day, SUM(duration_minutes) AS total_duration FROM fitness_record WHERE user_id ? AND record_date DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY DATE(record_date) ORDER BY record_day4. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄4.1 網(wǎng)絡(luò)請(qǐng)求失敗的排查清單小程序開(kāi)發(fā)中wx.request請(qǐng)求失敗是出現(xiàn)頻率最高的問(wèn)題。我總結(jié)過(guò)一張排查清單遇到請(qǐng)求失敗按順序查基本不跑偏第一域名是否配置到合法域名。開(kāi)發(fā)時(shí)可以在開(kāi)發(fā)者工具里勾選“不校驗(yàn)合法域名”但真機(jī)預(yù)覽時(shí)必須把后端域名加到小程序后臺(tái)的request合法域名列表里。很多人本地調(diào)試沒(méi)問(wèn)題一上真機(jī)就請(qǐng)求失敗九成是這個(gè)原因。需要注意這個(gè)小程序后臺(tái)有個(gè)“校驗(yàn)合法域名”的開(kāi)關(guān)如果域名沒(méi)有備案就算加進(jìn)去了也會(huì)校驗(yàn)失敗。第二請(qǐng)求頭是否缺少參數(shù)。后端接口要求必須在header里帶上token如果token沒(méi)存進(jìn)去或已過(guò)期后端返回401前端拿到錯(cuò)誤碼后沒(méi)有做統(tǒng)一處理就會(huì)表現(xiàn)為“請(qǐng)求失敗”。我的做法是在請(qǐng)求封裝里統(tǒng)一響應(yīng)401狀態(tài)自動(dòng)清除緩存的過(guò)期token并跳轉(zhuǎn)到登錄頁(yè)。第三WXS腳本里發(fā)起不了請(qǐng)求。WXS是在視圖層運(yùn)行的腳本它和JavaScript運(yùn)行環(huán)境是隔離的無(wú)法調(diào)用wx.request。有次我寫了個(gè)需求想在wxs里實(shí)時(shí)判斷課程是否開(kāi)始結(jié)果發(fā)現(xiàn)wxs里連new Date()都有兼容問(wèn)題更別提發(fā)請(qǐng)求了。正確的做法是在wxs里只做純計(jì)算判斷邏輯放到事件處理函數(shù)中。小程序請(qǐng)求封裝的推薦寫法是統(tǒng)一封裝一個(gè)request方法把baseURL、token注入、錯(cuò)誤碼處理都收攏到一處不要在每個(gè)頁(yè)面里直接裸調(diào)wx.request。這樣后面對(duì)接新接口、統(tǒng)一加loading效果都方便。4.2 緩存數(shù)據(jù)更新不及時(shí)的問(wèn)題關(guān)于緩存我踩過(guò)一個(gè)很典型的坑。課程列表數(shù)據(jù)在onShow里刷新了但課程詳情頁(yè)的數(shù)據(jù)是寫在onLoad里的。因?yàn)樾〕绦蝽?yè)面的onLoad在頁(yè)面實(shí)例創(chuàng)建時(shí)只執(zhí)行一次從詳情頁(yè)跳到列表頁(yè)再回來(lái)詳情頁(yè)不會(huì)重新觸發(fā)onLoad于是展示的還是舊數(shù)據(jù)。解決辦法是區(qū)分onLoad和onShow的職責(zé)第一次進(jìn)入頁(yè)面時(shí)拉取數(shù)據(jù)放在onLoad里從其他頁(yè)面返回需要刷新時(shí)把拉取動(dòng)作放在onShow里。具體場(chǎng)景里我會(huì)在詳情頁(yè)的onShow里判斷一個(gè)參數(shù)如果從預(yù)約成功的回調(diào)返回就刷新數(shù)據(jù)否則沿用原有數(shù)據(jù)。關(guān)于wx.setStorageSync緩存設(shè)置了過(guò)期時(shí)間的問(wèn)題小程序原生的Storage API不帶過(guò)期機(jī)制存進(jìn)去就一直在。如果不想讓某個(gè)緩存數(shù)據(jù)一直是臟數(shù)據(jù)可以在存入時(shí)附帶一個(gè)時(shí)間戳讀取時(shí)判斷const CACHE_KEY course_list; const CACHE_TTL 5 * 60 * 1000; // 5分鐘 function getCourseListFromCache() { const cached wx.getStorageSync(CACHE_KEY); if (!cached) return null; if (Date.now() - cached.timestamp CACHE_TTL) { wx.removeStorageSync(CACHE_KEY); return null; } return cached.data; }這種帶過(guò)期時(shí)間的緩存在課程列表這種對(duì)實(shí)時(shí)性要求不高的場(chǎng)景下很合適既能減少后端壓力又能避免用戶每次進(jìn)入都看到加載動(dòng)畫。4.3 組件層級(jí)的兼容性問(wèn)題實(shí)現(xiàn)底部導(dǎo)航欄時(shí)小程序原生的tabBar只能配置固定的兩個(gè)位置的功能頁(yè)。因?yàn)榻∩砉芾硐到y(tǒng)里有“首頁(yè)”“課程”“記錄”“我的”四個(gè)頁(yè)面剛好四個(gè)tab直接用原生tabBar完全沒(méi)有問(wèn)題。真正麻煩的是自定義導(dǎo)航欄。有些頁(yè)面需要根據(jù)滾動(dòng)位置調(diào)整導(dǎo)航欄背景色這種效果用原生導(dǎo)航欄實(shí)現(xiàn)不了要設(shè)置navigationStyle: custom。自定義后就涉及到狀態(tài)欄高度適配的問(wèn)題不同機(jī)型的頂部安全區(qū)高度不一樣。我用的是wx.getWindowInfo()獲取狀態(tài)欄高度再手動(dòng)加上自定義導(dǎo)航欄的高度const { statusBarHeight } wx.getWindowInfo(); this.setData({ navHeight: statusBarHeight 44 });這個(gè)44是navigationBar的標(biāo)準(zhǔn)高度。iPhone X系列和普通機(jī)型在這個(gè)值上沒(méi)有區(qū)別區(qū)別都在狀態(tài)欄高度上。如果適配不對(duì)會(huì)出現(xiàn)導(dǎo)航欄按鈕被劉海遮擋的問(wèn)題。還有textarea組件層級(jí)穿透的問(wèn)題在表單頁(yè)面需要錄入訓(xùn)練備注時(shí)textarea是原生組件層級(jí)高于普通view會(huì)出現(xiàn)z-index設(shè)了也沒(méi)用的現(xiàn)象。如果非要用textarea通常配合cover-view來(lái)解決。為了規(guī)避這個(gè)坑我在訓(xùn)練記錄頁(yè)面直接用input代替了textarea訓(xùn)練備注一般也就一句話input的單行輸入完全夠用也省了一堆適配工作。4.4 預(yù)約并發(fā)超賣問(wèn)題的處理開(kāi)發(fā)初期我模擬過(guò)兩個(gè)人同時(shí)搶同一個(gè)課程最后一個(gè)名額的情況果然出現(xiàn)了超賣——兩個(gè)人都預(yù)約成功了但課程容量只有20人最后booked_count變成了21。原因很簡(jiǎn)單我原本的邏輯是SELECT判斷名額再INSERT預(yù)約記錄中間有時(shí)間差兩個(gè)請(qǐng)求都通過(guò)了判斷。修復(fù)方式前面提到過(guò)用一條原子SQLconst updateResult await db.query( UPDATE course SET booked_count booked_count 1 WHERE id ? AND booked_count capacity, [courseId] ); if (updateResult.affectedRows 0) { return res.json({ message: 該課程已約滿 }); } // 只有更新成功才插入預(yù)約記錄這種樂(lè)觀鎖方案實(shí)現(xiàn)簡(jiǎn)單對(duì)課程預(yù)約這種場(chǎng)景完全夠用。如果硬要用Redis分布式鎖那是殺雞用牛刀而且還要額外部署Redis增加了項(xiàng)目的復(fù)雜度。5. 論文寫作與答辯準(zhǔn)備心得5.1 論文結(jié)構(gòu)怎么組織“項(xiàng)目源碼論文說(shuō)明”這個(gè)組合意味著論文說(shuō)明部分同樣很重要。很多人的項(xiàng)目能跑通但論文寫得一塌糊涂答辯時(shí)被老師一問(wèn)就露餡。我建議按以下結(jié)構(gòu)組織緒論講背景、意義、國(guó)內(nèi)外研究現(xiàn)狀。注意這個(gè)部分不要抄書重點(diǎn)寫清楚“為什么健身管理需要系統(tǒng)化”這個(gè)問(wèn)題。相關(guān)技術(shù)介紹微信小程序技術(shù)框架、Node.js技術(shù)棧、MySQL數(shù)據(jù)庫(kù)。寫技術(shù)介紹時(shí)注意不要只寫概念最好把“為什么選這個(gè)技術(shù)”“它解決什么問(wèn)題”寫透。需求分析功能性需求用戶端和管理端的用例圖、非功能性需求性能、安全、易用性。系統(tǒng)設(shè)計(jì)總體架構(gòu)圖、功能模塊設(shè)計(jì)、數(shù)據(jù)庫(kù)E-R圖、核心表結(jié)構(gòu)設(shè)計(jì)字段說(shuō)明。系統(tǒng)實(shí)現(xiàn)每個(gè)模塊的實(shí)現(xiàn)截圖配關(guān)鍵代碼說(shuō)明。代碼不需要全部貼貼核心片段加解釋即可。系統(tǒng)測(cè)試功能測(cè)試用例表、測(cè)試結(jié)果。測(cè)試部分一定要真實(shí)寫不要只寫“全部通過(guò)”要寫清楚測(cè)試了哪些場(chǎng)景、有沒(méi)有發(fā)現(xiàn)bug、怎么修復(fù)的。寫論文時(shí)有一個(gè)非常實(shí)用的建議先畫圖表再圍繞圖表寫文字。系統(tǒng)架構(gòu)圖、用例圖、時(shí)序圖、E-R圖這四張圖畫出來(lái)論文的核心骨架就定下來(lái)了。文字是在骨架上填肉的過(guò)程圖片可以自己做也可以用在線繪圖工具。5.2 數(shù)據(jù)庫(kù)設(shè)計(jì)的編寫要點(diǎn)論文里的數(shù)據(jù)庫(kù)設(shè)計(jì)部分不建議把所有表的所有字段都羅列一遍那樣太長(zhǎng)太啰嗦。正確姿勢(shì)是選擇最核心的表詳細(xì)說(shuō)明其他表用一張匯總表帶過(guò)。比如用戶表、課程表、預(yù)約表這三張表是系統(tǒng)最核心的業(yè)務(wù)表每張表單獨(dú)用一個(gè)表格列出字段名、數(shù)據(jù)類型、是否主鍵、是否為空、字段說(shuō)明。訓(xùn)練記錄表、公告表這些輔助表可以合并成一個(gè)表格展示。這樣既體現(xiàn)了設(shè)計(jì)深度又不至于讓論文變成數(shù)據(jù)庫(kù)字典。數(shù)據(jù)庫(kù)設(shè)計(jì)的圖示我用的是E-R圖。E-R圖不需要畫得有多精美關(guān)鍵是實(shí)體、屬性、聯(lián)系要理清楚。用戶和課程的預(yù)約關(guān)系是多對(duì)多通過(guò)預(yù)約表作為中間表來(lái)分解這個(gè)關(guān)系一定要在E-R圖里清楚表達(dá)出來(lái)很多答辯老師喜歡盯著E-R圖問(wèn)。5.3 答辯前的加試準(zhǔn)備答辯環(huán)節(jié)被問(wèn)得最多的問(wèn)題我整理過(guò)一份清單提前準(zhǔn)備基本都能應(yīng)對(duì)系統(tǒng)有哪些角色權(quán)限怎么控制的答用戶角色和管理員角色后端用JWT鑒權(quán)中間件控制管理接口額外校驗(yàn)角色字段。預(yù)約功能并發(fā)沖突怎么處理答數(shù)據(jù)庫(kù)原子更新條件判斷s booked_count capacity受影響行數(shù)為0則拒絕預(yù)約。數(shù)據(jù)庫(kù)為什么要設(shè)計(jì)預(yù)約表答因?yàn)橛脩艉驼n程是多對(duì)多關(guān)系需要中間表解除復(fù)雜關(guān)聯(lián)。token過(guò)期了怎么辦答前端攔截401響應(yīng)清除本地緩存跳轉(zhuǎn)登錄頁(yè)重新獲取token。系統(tǒng)有什么可以改進(jìn)的地方答可擴(kuò)展消息推送、引入ECharts做更豐富的可視化、部署到云服務(wù)器統(tǒng)一域名訪問(wèn)。還有一個(gè)容易被問(wèn)到的點(diǎn)登錄功能為什么要通過(guò)自己的后端中轉(zhuǎn)而不是小程序直接調(diào)微信接口換openid答案是安全因素。微信的code2Session接口需要用到AppSecret這個(gè)密鑰一旦暴露在小程序前端就等于公開(kāi)了任何人都能冒充你的小程序身份。所以必須由后端調(diào)用微信接口AppSecret只保存在后端環(huán)境變量里。6. 開(kāi)發(fā)過(guò)程中的時(shí)間與版本管理建議這個(gè)系統(tǒng)我一個(gè)人從數(shù)據(jù)庫(kù)設(shè)計(jì)到小程序上線調(diào)試前后用了三周半時(shí)間。時(shí)間分配大致是數(shù)據(jù)庫(kù)設(shè)計(jì)及表結(jié)構(gòu)優(yōu)化用了3天后端接口編碼和自測(cè)用了5天小程序前端頁(yè)面開(kāi)發(fā)用了7天前后端聯(lián)調(diào)和修Bug用了4天論文寫作和答辯準(zhǔn)備用了6天。版本管理一定要用Git哪怕只有一個(gè)人寫也要用。理由很簡(jiǎn)單你在加新功能時(shí)改著改著發(fā)現(xiàn)舊的邏輯更合理要回退有Git就一條git checkout命令的事。我第一版預(yù)約狀態(tài)機(jī)設(shè)計(jì)得過(guò)于復(fù)雜后來(lái)花了半天時(shí)間回退到簡(jiǎn)單四狀態(tài)方案。代碼提交時(shí)養(yǎng)成寫清晰message的習(xí)慣比如feat: 新增課程列表頁(yè)面、fix: 修復(fù)預(yù)約并發(fā)超賣問(wèn)題。習(xí)慣的養(yǎng)成對(duì)于論文里的“系統(tǒng)測(cè)試”章節(jié)也很有用因?yàn)槟憧梢苑璆it提交記錄來(lái)回憶什么時(shí)候修了哪些問(wèn)題。最后再分享一個(gè)實(shí)際開(kāi)發(fā)中的小技巧wx.request的timeout默認(rèn)是60000毫秒但有些接口在高并發(fā)下響應(yīng)慢。如果用戶看不到加載中的提示就會(huì)反復(fù)點(diǎn)擊預(yù)約按鈕造成重復(fù)請(qǐng)求??梢栽陬A(yù)約接口里加一個(gè)冪等判斷同一用戶在同一秒內(nèi)重復(fù)提交相同課程預(yù)約直接返回“處理中”不要走第二次數(shù)據(jù)庫(kù)更新邏輯。健身管理系統(tǒng)這個(gè)項(xiàng)目邊界清晰、需求明確、技術(shù)棧常見(jiàn)用來(lái)做畢設(shè)或面試作品都很合適。希望這篇拆解能幫你把系統(tǒng)做得更扎實(shí)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
女生看匆91网站| 玖玖综合网| 久久精品国产免费观看99| 外站AV在线| 国产丰满少妇久久久精品影院| 爱av免费| 天天色天天干天天爱| 蜜桃精品视频一区二区三区| 九九九午夜| 色婷亚洲五月在线观看| AV和黑人在线播放| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 女优大全 - 91n| 97视频在| 日本东京热大香蕉a片| 欧美 亚洲 制服 精品| 欧美性爱中文字幕无线码| 91亚洲影视| 91欧美性| 亚洲天堂电影网| 伊人991| 亚洲av夫妻操穴网| 99热精品在线| 人人污日韩一区二区| 婷婷久久久| 日韩成人性爱AV| 成人麻豆av电影网站| 国产综合日韩伦理| 天美传媒AV在线播放| 又黄又硬又粗又长国产视频| 日日骚精品视频| 久久久久大香青草精品综合| 97av,com| 超碰 欧美| 亚洲欧美天| 中文字幕无码不卡啪啪| Julia Annxxxxx| 日本道日本道中文字幕日本道最新日本道在线观看| 99色骚| 久久久国产精品人妻丝袜| 伊人97色天使| 2026国产精品视频| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 久久精品国产久精国产| 久草成人影片| 欧美高清第一页| 激情一区二区| 国产高清MV操逼视频| 成年人黄色小视频网站| 自偷自拍的亚洲视频| 久久欧美性爱视频| 情侣开房子拍 日韩无码 女的很漂亮| 久久久性爱视频| 精品人妻一区二区乱码一区二区| 情侣操 逼视频99| 蜜臀久久久国产| 精品小视频在线| 色在线69堂| 97鸡把在线视频| 日韩欧无码一区二区三区免费不卡| 强奸乱伦AV一天堂网| 综合在线导航一区| 性爱久久| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 91综合在线| 亚洲色图尤物视频 | 久久精品成人| 天天综合网网欲色| Av手机版天堂网| 色色福利| 超踫中文字幕| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 香蕉在线一区二区三区| 国产乱码精品久久久久久 | 日本女优在线视频福利| 欧美综合站| 日韩八十路老熟女| yw尤物av无码点击进入麻豆| 欧美东京热精品A∨| 日韩美脚一区二区网站| 日日AAvv| 国产成人无码a| 大香蕉手机视频| 狠狠搞 亚洲91| 99热这里只有精品1| 综合亚洲欧美精品日韩?v| 93人人操人人| 射欧美综合| 深爱伊人影院| 国产专区第一页| 欧美AB在线观看| 欧美日韩国产人人| 天天躁日日躁AAAAXXXX国产| 婷婷综合五月| 精彩久久中文| 亚洲 自拍偷拍 欧美| 91狠狠综合久久久| 欧日韩一二三f区| 日韩无码人妻| 欧美一级三级| 久久久久久久久9| 美國A片| 国产美女口爆吞精| 富女玩鸭子一级毛片| 亚洲国产无码精品首页久久久| 亚洲视频一二区| 国产女人视频三四五区| 综合色色婷婷| 欧美色狠| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 久久久久久久久久久999| 亚洲乱妇p22| 九九香蕉网| 加勒比色综合| 午夜120视频在线观看| 18岁禁 茉莉成人久久| 国产精品九九九| 欧美性爱在线无码| 欧美丰满少妇交换91欧美精品| 少妇人妻太紧太深av| 久久久久久久久久久久久9999| 国产精品农村妇女精品| 久久久A∨| 欧色网址| 久久久久国产亚洲一区欧美色图日韩| 亚洲精品九九九| 插入综合网| 张柏芝国产一区在线观看| 日韩在线视频1234| 老熟女搡BBBB搡BBBB视频| 老熟女熟妇| 一本色道综合久久欧美| 97精品在线| www.久久最新地址| 青青草一本道福利视频| 五月婷婷影院| 性色AV网站| 精品然女一区二区| 亚洲欧美日韩精品久| 亚洲电影91| 日韩欧美aⅴ综合网站发布| 色拍偷亚洲| 精品偷拍13p欧美dodk视频| 超碰在线97国产| 特级丰满少妇一级AAAA爱毛片| 最新9久久久9免费视频| 狠狠干狠狠干| 日本成人免费一区二区三区| 麻豆人妻偷人精品无码视频| 狠狠操夜夜操蜜桃视频三区| 中文精品一区二去| 伊人九九九| 久久色激情一区二区三区| 免费看黄片现成| 玖玖爱综合网| 色精品极品| 国产精品久久久久久久黄无码| 久草成人影片| 欧美亚综合色图| 色伊人91| 久久久性| 欧中美三级一区二区三区| 人妻久热在线| 亚洲综合五月天| 中文字幕AV乱伦| 欧美色亚洲色| 天天澡天天爽日日av| 99热最新| 人妻精品一区二区在线| 亚洲精品无码成人久久久99 | 亚洲欧美精品一区天堂久久 | 校园春色AV天堂| 久久只有精品一区二区三区| 国产一区二区视频在线播放| 国产一区二区三区高清视频| 有码专区最新中文字幕有码| 情色五月天网| 久久精品视频在线观看| 久久人妻办公室视频| 久操凹凸视频| 亚洲日本激情| 91在线免费精品视频| 99最新日韩偷拍视频| 中日无幕一二三四区| 丰满人妻一区二区三区大胸懂色 | 无码9区| 97日韩| 成片免费播放| 新婚人妻扶着粗大强行坐下| 丰满人妻被猛烈进入中| 无码外流操逼视频| 亚洲欧洲综合av在线| 亚洲精品97| 综合欧美色图| 精品一区99999| 精品久久久久黄少妇| 在线播放成人网站| 十八禁啪啦拍视频无遮挡| 日韩中文字幕国产| 黄视频免费| 中日韓欧美高清| 嗯嗯嗯啊啊在线观看| 成人热久久精品| 中文字幕视频一区视频二区| 啊啊啊啊啊啊好湿好爽视频| 樱花草社区www中国| 欧洲射精91| 欧美|91色综合| 成人片在线播放| 免费看久久久性性| 亚洲AV无码国产精品久久久久| 国产黄色影片在线观看| 中文色综合| 无码外流操逼视频| 久久五月天婷婷丁香中文字幕| 久久久久久9| 欧美九九九九九| 精品一区二区三区丰满熟女-亚洲欧美一区| 亚洲AV永久无码精品成人调教| 青青欧美| 亚洲色棕合| 91亚洲黄色网| 97超碰日韩| 精品国产乱码久久久久久网站入口| 九九九九一区| 国产一区二区在线播放| 亚洲春色欧美激情自拍| 亚洲一区二区三区中文字幕| 欧美v亚洲v日韩v最新在线二区| 日韩午夜精品一区二区三区电影| 人人做人人妻人人夜视频| 亚洲最新a在线观看| 亚洲激情四射| 老熟妇一区二区三区啪啪| 在线中文AV| 校园春色 亚洲| 黄色工厂这里只有精品| 国产精品久久天天干| 黄色在线网站| 久久9视频| 女人爽到高潮久久久| 人妻在线臀日韩| 一区二区三区成人| 久久久久久综合久久伊人蜜月| 午夜精品久久久久久久久久久久久 | 超碰这里只有精品| 中国91AV| 免费亚洲黄色视频在线观看| 久久免费中文字幕在线观看| 99在线啪| A级毛片在线看免费| 久久99人妖视频国产| 大香蕉色十月| 色偷综合| 成人五月天丁香激情综合| 亚州免费啪啪视频| 久久久99久9| 少妇内射视频| 国产精品永久免费10000| 亚洲激情av| 最新精品久久蜜桃 | 涩综合导航| 色香蕉影院| 久久九七| 精品福利| 婷婷色色五月天| 欧美亚洲国产日本在线,久久精品国产| 97欧美日韩综合| 久久久久国产精品喷潮免费观看臀| 看日韩美女二区三区免费操逼视频 | 黄色十八禁网站| 高清无码91| 国产成人一级av88| 97se综合网| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 操操操五月天婷婷丁香影院| 狠狠操狠狠插| 久久超碰天天| 黄aaaaaaaaaaaaaaaaaa色网站| 欧美激情 日韩精品| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | 青娱乐日韩无码| 97视频900| 在线免费观看高清无码视频| caopeng97| 欧美人妻少妇| 日韩另类色图| 操逼操2| 67194国产| 91狠狠综合久久| 欧美日韩操操操| 激情视频一二三| 澳门黄片一香蕉视频| 亚洲精品97在线| 人妻丝袜美腿中文字幕| 久久精品国产精品亚洲艾通辽熟妇| 男人网站婷婷| 人人操人人大香蕉| 久久熟女精品不卡一区| 丁香五月影院| 久久久97| 国产乱弄免费在线视频。| 亚洲婷婷综合网| 午夜呻吟欧美| 国产精品久久久久无码A√| 妇女视频网站| 美国人人操人人操| 青青草在线视频美女| 黄片直播三级黄片两女一男| 少好三P| 狠狠操狠狠爱| 亚洲中文字幕熟女| 熟女天天干| 又粗又长又爽在线观看| 丰满少妇精品一区二区| 五月天社区| 97视频在线播放| 97国伦国色| 日韩av不卡在线看| 99999久久精| 欧美天天插| 少妇一级无码精品| 亚洲日韩乱码中文无码蜜桃臀网站| 久久精品国产亚洲AV片多多| 久操国产在线| 欧美日韩少妇色情| 熟妇操花| 国产高清午夜成人在线观看| 国产乱人妻精品入口| 亚洲欧美激情在线视频| 亚洲美女AV无码| 欧美A√综合网 | 九九英色视频| 欧亚免费视频| 亚洲乱码精品一区二区| 亚洲欧洲无码一区夜| 日本色色色| 91东京热男人的天堂| 天天综合站| 欧美天天谢综合网| 久久久久婷婷| 成人无码电影在线观看网| 欧日韩不卡视.频| 久久精彩免费视频| 97人人模人人爽人人| 1024手机看片欧美日韩| 一区二区三区精品视频| 日韩国产欧美伦理在线| 18禁久极品美女久久哦哟呀!| 另类专区加勒比| 国产99热| 精品一区96| 亚洲一区二区三区四区视频| 四虎AV在线观看| 熟女精品一区二区三区| 九九英色视频| 国产强奸乱伦无码视频| 色狠狠综合噜一二三区| 中文一区在线视频| www.色婷婷色综合| 一区二区三区亚洲| 91夜色| 天美av在线| 97色视频在线| 嗯嗯啊啊操死我| a在线视频免费观看| 日韩av免费一级电影| 极品少妇久久久| 91久久久久久久| 青青草五月天| 久久精品老司| 免费人人搞97| 情色五月天网| 中文久久96| 日韩99神马视频片| aaa淫乱视频| 熟女一区二区| 夜夜久久| 91欧美另类| 精品一区二区三区四区女 | 综合欧美日韩在线| 熟女欧美日韩综合婷婷| 成人A片男人的天堂| 久久精品亚洲婷婷| 色婷婷aV一区二区三区麻豆综合| 久久色人体 | 久久中出| 性夜影院爽黄A爽免费动漫| 亚洲成人ab| 亚洲国产日韩精品久久久| 久热这里| 少妇综合| 日韩国产不卡在线视频| 午夜爽爽爽在线观看永久入口姬片| 欧美的性爱网站免费| 男人天堂黄片| 国产一区二区欧美日本| 精品人人插人人操| 99热超碰| 日韩精品人妻中文字有码在线| 欧美在线啊啊啊| 日韩精品操少妇| 91久久久久久久| 欧亚韩国999| 999久久久久久久久| 91女日逼| 欧美性爱精品七区| 亚洲图片欧洲图片aⅴ| 亚洲激情综合| 蜜臀AV成人精品蜜臀| 99热8| 密臀在线视频| 老子午夜伦不卡影院| 操逼啊啊啊91| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 97鸡把在线视频| 午夜男女爽爽爽影院视频| 思思热久久成人| 日韩性爱小视频在线观看| 国产伦精品一区二区三区在线观| 日韩人体偷拍| 九九国产| 日本道不卡| 性在久久久久久| www.色婷婷| 蜜臀99999| 欧美色亚洲色| 亚欧成人综合影院| 大香樵伊人网| 九草九九九| 欧州91高潮| 色欲蜜臀AV| 日韩国产品视频中文字| 99re综合伊人| 不卡中文字幕aⅴ在线| 99精品成人免费看| 色欲人妻一区二区在线| 欧美色图校园春色| 插穴性爱视频在线观看| 国产精品情侣啪啪| 激情另类激情| 中文字幕精品一区二区精| 先锋精品av色鲁| 狠狠干2020| 免费av在线播放二区| 九九这里只有精品| 免看60秒涩涩视频| 天天躁日日躁成人字幕aⅴ| 天天插天天射| 97久久久久| 一区二区三区 日韩欧美| 天天日日日射| 黄色片A级一区二区三区| 操久久久久久| 欧美肥臀在线| 亚洲成人久久美女| 香蕉国产97| 日本国产高清色www视频在线| 亚洲蜜臀懂色| 日韩成人性日韩成人性爱视频在线免费观看 | 五月天激情小说| 99热在线只有精品| 黄片免费看黄片免费看| 蜜臀久久精品久久久久视频| 性色生活片久久毛片婬片免费放女人一级毛片 | 黄色不卡视频| 久久久久免费看少妇A片特黄| 日韩精品人妻中文字幕有码午| 欧美一级二级三级| 亚洲91少妇| 日本加勒比无码专区| 91操人视频| 人妻精品一区一区三区蜜桃91| 一区二区视频在线播放| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 国产精品一区二区黄片| 婷婷8月天青娱乐| 日本久久精品| 97精品免费视频网站| 欧美亚洲综合色| 亚洲国产综合图区中文字幕| 熟妇人妻一区二区| www.91人妻.com| 亚洲男人天堂2016| 国岛片视频| 亚洲天堂久| 狠狠综合网| 精品久| 中文字幕精品丝袜| 日韩精品一区二区日韩| 欧美线天码中字| 丁香五月天社区| 激情小说在线视频| 色色综合97| 全球成人中文在线| 女性91网站| 青青草色情网站视频| 国产成年免费大片黄在线观看| 中文字幕欧美日本乱码一线二线| 久久麻豆一区二区| 国产精品原创巨作?v网站| 日本黄页视频在线观看| 素人播放一区| 一类无码操逼视频| 亚洲女人91| 婷婷五月天久久精品视频一区二区三区 | 亚洲 欧美 手机在线观看| 日日夜夜骑| 亚州色站 日韩电影| 青青久久手机线视频| 欧美性色欧美| 99在线视频播放| 亚洲精品成人激情在线| 国产高清午夜成人在线观看| 成人情色综合网| 色噜噜国产在线| 强奸乱伦日韩AV| 超碰成人人人爽人人爽| 九一国产精品| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 九九这里只有精品| 日逼五月天| 丁香六月婷婷久久综合| 亚洲 日本 国产 综合| 国产91丝袜 在线播放| 爱爱动态试试看6 0秒| 久久精品性| 在线观看无码三级少妇| 欧美天天弄| 亚洲不卡一| 东北老女人的激情视频| renqi久久久久久久久久久久| 天天色,天天干,天天干| 免费国产电影一区二区| 青青操国产夫妻| 天天色踪合| 欧美色图片91| 国产一区二区三区中文字幕| 97人人操人人干| 嫩草一区二区在线观看| 91av一区二区在线观看| 精品无码久久久久久久杏吧| 国产乱码久久久| 国产女人9999| 亚洲熟久久| 成人五月天色网| 欧美日日夜夜| 999久久久久久久精| 无码又爽又硬又激情免费视频| 免费中文在线| 欧美日韩国产中文精品字幕自在自线| 亚洲国产尤物yw在线观看| 超碰日韩人妻| 亚洲国产一区二区日韩专区| 国产精品爆乳懂色蜜乳| 沈阳熟女高潮对白视频| 九九无码| 91被操| 日本中文熟女视频| 性爱综合一区二区| 人妻天堂综合网| 久久久久免费少妇| 国产女人高潮视频| 嗯嗯,啊啊,国产精品| 嗯嗯啊啊啊好舒服| 欧美 日韩 另类 亚洲| 欧美日韩一干二干| 欧美色色人| 99色在线| 欧美写真视频一区| 久久中文字幕不卡人妻| 国产亚洲精品久久久久小| 日韩中文字幕精品一区在线| 亚乱色| 欧美性爱五月天| 啊啊啊啊嗯嗯嗯用力好爽| 色香阁在线| 九九热五区| 老司机午夜福利视频一区二区| 91成人久久| 亚洲一区二区av| 亚洲超碰97| 欧美一区二区三区四区综合| 国产精品一级片在线看| 狠狠五月天| 日本九九久久99播| 久9爱经典视频| 久久精品无码专区| 亚洲精品一区二区精华| 亚洲一区二区三区四区视频| 碰碰在线视频| 天天摸夜夜操视频| 97视频免费播放| 99re6久热只有精品6在线直播| 中文一区二区三区影院| 黄页网站成人免费| 亚洲日韩人妻中文字幕一区| 一区二区影院| 久久精品人体| 91美女视频电影| 亚洲天天综合| 国产懂色精品国产av| 97视频网站在线观看| 91路www| 91人妻人人澡人人爽人人精品| A一区片| 久久激情网| 黄色不卡视频| 91少妇人妻| 九九探花视频在线观看| 久久免费看高潮毛片韩国| 成人情色综合网| 国产精品视频自拍在线| 情侣开房子拍 日韩无码 女的很漂亮| 欧美色日| 日韩三A大片在线观看| 色999亚洲人成色| 97精品久久久久中文字幕| 亚洲精品99999| 成人国产精品三级A片| 91成人在线| 青娱乐休闲视频在线观看| 午夜丁香婷婷| 日韩色图 一区二区| 久久久一区二区三区三州| 东京热亚洲一区二区| 久久久精| 色综合av男人天堂| 蜜桃不卡一区二区| 欧美v亚洲v综合v国产v妖精| 激激五月| 96久久久久| 日日夜夜天天| 国产成人精品网站| 久久久国产三级黄色片| 本道在线| 欧美日韩岛国大片在线观看| 骚人妻少妇视频| www亚洲免费| 熟女欧美日韩综合婷婷| 超碰国产精品无码| 自拍视频大全亚洲专媒视频/一区二区三区 | 亚洲精品蜜桃久久久久久久| 欧美呦呦性爱| 欧美精品双插| 国产一进一出视频网站| 麻豆精品A片免费观看| 免费精品国偷自产在线在线| 999日韩中文精品观看视频。| 熟妇人妻丰满久久久久久久无码| 99综合网| 97亚洲综合影院| 成 人 影视 一区 二区 三区 四区| 91欧美网| 亚洲国产精品乱码在线观看| 欧美视频一| 色婷婷婷五月天激情四射| 国产精品99精品视频网站| 中文字幕免费观看| 性色av蜜臀av色欲aV| 97超碰总站| 亚洲精品视频在线播放| 精品九区| 国内黄色精品| 岛国黄| 亚洲精品国产熟女| 超碰在线第一页| 国产在线精品偷| 亚洲激情视频| 一本大道综合伊人精品热热| 日韩在线观看字幕精品| 精品夜夜澡人妻无码AV| 亚洲 图片 综合91| 中文字幕国产| 99热欧美| 用力操死我| 久久久久国产精品喷潮免费观看臀 | 91AV天美在线视频| 337p大胆噜噜噜噜噜91Av| 诱惑网综合| 午夜精品久久久99| 欧美系列在线一区二区| 久久精品一区二区| 久久AV色| 超踫中文字幕| 国产精品色片一区二区| 夜夜爽夜夜操| 日本男人插女人的逼黄色| 爱我干综合| 国内精品嫩模A∨私拍小视频| 日韩 女同 综合| 激情综合五| 操迟操逼在巾线Fre看| 天美传媒麻豆一区二区三区国产精| 五月天黄色av| 亚洲各类熟们中文字幕| 99久久久无码国产精品性啊聊| 99热18这里只有精品| 6080yy午夜理论三级一区二区三区无码| 99re热有精品视频国产| 大香蕉淫人| 国产吹潮女在线观看| 国产欧美一区二区| 影音先锋国产精品| 欧美人与性动交a美精品| 欧美色欧美| 9久9久| 色综合99999| 久久国产视频专区一二三| 成人午夜视频免费播放| 亚洲中文字幕久久人妻| 国产又黄又粗又猛大片| 96超碰网| 久久r精品| 熟女高潮合集-永久久久-成人AV| 操穴国产| 日韩有码一区三区| 九九久久99| 久久免费精品视频免一| 综合久久久久久久综合网| 国产精品人妻免费精品| 天天cao在线| 亚洲久久天堂| 97少妇人妻中文字幕久久| 久久久中文版| 亚洲高清视频在线观看| 免费的av网| 久7色| 亚洲一区深夜| 一区二区 韩日AV| 欧美婷婷| 婷婷综合在线| 婷婷五月天福利| www.久久99| 久久精品性| 熟女乱伦二区| 99热啪啪| 蜜桃成人1区2区3区| 999久久久精品国产| 久久香蕉影院| 一区二区偷拍拍视频| 99久久9| 天天操夜夜操| 久久久工口| 欧美在线色图| 色老牛| 搡老女人老91妇女熟女| Julia Annxxxxx| 尤物视频偷拍免费| 亚洲 欧美 日韩另类 麻豆| 老鸭窝在线视频播放| 国产精品69久久久久久久| 五月天九九日国产精品一区二区三区| 久久久久幕乱码| JuliaAnnXXX888| 四虎精品一区二区| 大二网站亚洲| 乱欲一区二区| 久久草大香蕉| 精品久久久av| 亚州综合图片| 欧美日韩亚洲国产中文永久天天看 | 91视频精品| 精品成人无码| 国产一区二区av综合| 丁香五月影院| 另类亚洲图色| 97欧美色综合| 日日骚中文字幕| 久久中文字幕一区不卡| 首页中文字幕中文字幕免费| 丁香六月综合激情| 后入内射蜜桃臀| 国产精品乱码久久久久久| 欧洲亚洲人妻无码久久三区四区| 超碰78| 国产不卡免费在线视频| 激情综合五月婷婷| 国产精品熟女九九九| 中文字幕av片| 天天综合网网欲色| 91人妻做a观看视频| 大香樵伊人网| 91 亚洲情侣偷拍 久久| 78精品| 操逼天美3区| 玖玖色综合| 天操老女人| 亚洲欧美黄| 粉嫩不卡一区二区性爱| 黄页大片在线观看| 久久风骚城市| 国产一区二区三区白丝| 动漫av中文| 9118禁| 爱av免费| 日韩啪啪啪视频| 97超碰中文在线| 日本熟妇人妻中出视频| 少妇毛片久久| 青草精品视频一日本久久久久网站| 在线中文字幕| 七久久久| 91精品人妻五十路| 操婢日韩| 天天干天天操天天拍| 91少妇高潮| 国产精品人妻熟女aⅴ| 性欧美另类高清| 亚洲丝袜二区在线| 亚洲成a人在线观看久| 男人天堂.AB| 极品肉射| 开心激情站| 亚洲精品九九九九九九| 男人a天堂手机在线版| 第四色色综合91| 97欧美| 99热精品在线播放| 日韩在线观看AV| 亚洲一卡2卡3卡4卡乱码网站 | 91M一社| 亚洲αv一区二区三区| 日本999精品视频| 久久精品国产亚洲5555| 久久久人体| juliaann丝袜| 韩日精品四区| 97手机日韩| 精品久久視頻在线| 成人性交午夜免费片| 中文久久爆乳| 香蕉国产97| 成人网址在线观看| 在线洲亚线| 亚洲中文字幕网| 久操免费电影| 日本 欧美 亚中文字幕| 97超碰美女| 大鸡巴久久久| 国产精品人妻免费精品| 熟妇最新先锋一二三区| 国产精品内射婷婷一级二| 日本九九久久99播| 久久成人国产精品| 大香蕉色欲AV| 97碰在线视频| 欧美亚洲情色| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 人人爽人人精品乱人伦AV| 亚洲国产精品9999在线观看| 熟女AV一区| 欧美v亚洲v日韩v最新在线二区 | 日本欧美一区二区三区免费| 加勒比性爱成人在线| 免费在线观看AV无码网站| 精品免费囯产一区二区三区| 亚洲欧美九九| 天堂а√在线最新版在线| 亚洲资源网| 色婷网| 狠狠干91| 97在线观看免费视频l| 99精品成人免费看| 97在线视频网站| 2025亚洲男人天堂| 少妇xx精品| 亚洲深夜福利| 精品国产一区二区三区久久久蜜臀 | 欧美日韩国产中文精品字幕自在自线 | 少妇精品| 中文字幕少妇色| 老司机老司机午夜影院| 久久久久久999| 久热精品色情| 日韩免费性爱视频在线观看| 秋霞 色色| 四虎影视永久在线观看精品免费网站| 久草婷婷| 99re国产精品视频| 亚洲 欧美 第一页 | 在线精品福利免费播放| 欧美大片91| 国偷自 一区二区| 96AV精品| 大香网站| 一区二区三区免费视频入口 | 91久操| 自怕偷自怕亚洲精品| 偷偷人人精品女女久久| 欧亚第一综合网| 国产乱伦性爱AV| 伊人一区二区在线播放| 97国产|免费| 天堂射| 97精品国产97久久久久久免费| 操操逼操操逼操操逼逼| 极品销魂美女一区二区| 久热这里| 91日产欧美| 青青青国产| 91Chinese在线| 欧美亚洲| 国产精品久久久无码aV去| 人妻丝袜二区| 四虎免费视频| 精品999日本| 91人妻视频在线| 婷婷综合五月天| 1769精品一区二区三区| 国产精品国产自产高清AV| 免费国产视频| 午夜传煤十二区精品| 91色s| 亚州日韩97| 久久精品72| 黄色小说亚洲| 天天肏美女| 亚洲欧洲偷拍一区| 丁香色婷婷| 人妻22p| 色情五月丁香| 大香蕉乱伦视频网| 久久香蕉国产线看观看猫咪av| 国产一区二区a毛片| 91成人高清在线观看| 麻豆视频国产一区二区| 日本中文熟女视频| 蜜桃狠狠色伊人亚洲综合网站| 日日干日日摸| 清纯唯美激情| 国产又粗又长又大的视频| 男女香蕉一区二区| 欧美在线|亚洲| 伊人96在线| 欧美日韩97在线| www.av不卡中文字幕| 久久久少妇诱惑精品视频| 加勒比综合a∨| 亚洲脚交| 91丝袜人妻| 精品少妇99| 91综合网站| 男人天堂网站| 日产欧美电影一区二区三区| 天堂69亚洲精品中文字| 国产一区二区成人av在线播放| 四虎国产精品永久入口| 熟妇的味道HD中文字幕| 丰满岳乱妇一区二区三区| 思思热久久成人| 大香网站| 97色婷| 2020中文字幕在线| 偷拍亚洲视频一区二区三区四区| 欧美色交| 天天综合欧美| 国产亚洲深夜激情| 日韩卡一卡二卡三在线| 国产做?爰片久久毛片?片美国| 一区二区三区机械有限公司| 超碰97起碰| 中文字幕日韩精品一区二区三区| 综合视频91| 在线洲亚线| 欧美综合天天| 狠狠中文字幕| 日本午夜久久电影| 国内精品999| 天天日天天屌天天操| 亚洲女人毛茸茸91| 天天综合网91| 亚洲欧美综合区自拍另类| 午夜天堂啪啪| 嗯嗯嗯啊啊啊操的我好爽 | 日韩精品在线放| 成人性爱美曰韩| 亚洲精品男人的天堂| 免费网站观看www在线观| 精品欧美日韩在线观看| 99999国产精品| 综合久久久久久久综合网| 99色视频| 国产av热热色| 婷婷久月| 国产操偷| 婷婷伊人一区| 一区二区播放| 自拍偷拍草一草| 韩国黄色片精品久久久| 91电影色诱| 男人的天堂99| 懂色天天爱天天日天天射天天澡| 午夜天堂精品久久久久91| 淫乱图区 | 久草五月| 丝袜狠狠草尤物 91| 久久AV无码AV| 97色婷| 综合激情一一91| av网站国产主播在线| 色婷婷狠狠18禁| 97视频900| 13小男生GAY自慰脱裤子| 午夜色婷婷| 91美女視頻| 国产成人 综合亚洲 天堂| 色色色综合| 亚洲区小说| 性爱乱伦网址| 欧美天堂超碰97| 国产精品人妻无码久久久老鸭窝| 柠檬AV导航| 色偷偷人人玩人人舔人人操人人摸人人爽| 天堂v无码免费视频| 日韩精品区二区三区不卡| 亚洲熟妇AV日韩熟妇在线| 精品国产一区二区三区香蕉欧美| 日本久久久久久久久| 色九久| 婷婷五月色| 欧美黑人与女人91| 中国一区二区亚洲人妻| 18禁久极品美女久久哦哟呀!| 国内精品嫩模A∨私拍小视频| 玖玖视频在线资源一区二区三区| 久热网| 国产91久久九九免费精品无码| 久久精品中文| 熟女五十路一区二区三| 少妇三P| 欧美aa一级片| 欧美亚洲日韩16色| 国产又黄又爽又刺激久久久久久| 色好看av| 懂色中文一区二区三区| 中文字幕人妻色偷偷久久皮 | 簧片免费看视频| 久久久九| 色综合色色| 欧美性夜| 亚洲图片 91| 思思热在线视频在线| 九九久久久九九| 秋霞一级鲁丝片A片| 快点操死我| 欧美五十路熟| 97超碰精品成| 999国产精品999| 国语精品对白| 日本高清电影欧美色图| 日韩视频中文字幕| 淫色网综合| 亚洲AV无码翔田千里网站| 天天干人妻| 欧美日韩性爱操大逼| 超碰偷拍| 国产 码在线成人网站| 欧美高清色| 啊啊啊啊啊在线视频| 操逼片国产| 中文字幕免费在线观看| 天天日日夜夜| 一级性爱视频免费观看 | 91欧美偷拍| 国产精品一区午夜福利| 国产夫妻性生活视频| 九九在线视频| 午夜国产成人精品视频| 麻豆精品天美| 日本在线激情一区二区三区| 香蕉视频精品亚洲一区二区三区在线播| 艳美熟妇先锋一二三区| 一级@啪啪视频| 青青久久久| 久久超碰久| 美国人人操人人操| 欧美 色 亚洲| 欧美精品91| 97av在线视频| 波多野结衣AV无码一区| 人妻无码一区二区三区久久99| 91碰碰| 日韩精品一区二区高清| 96精品久久久| 久久九七| 人妻av在线| 国产亚洲精品无码三区| 啊啊啊啊嗯嗯在线久久久| 大吊色| 日韩操人| 久久久久久久久久久免费精品| 色婷婷日韩精品一区二区三区| 东北女人av| 日韩成人大片在线观看| 97日韩欧美| 国产精品69久久久久孕妇欧美| 国产视频一区二区在线| 亚洲欧美中文日韩视频中国语| aaa亚无码专区| 骚货操死你| 亚洲综合骚逼| 91丨国产丨白浆| 久操精品网| 嗯啊视频免费在线观看| 无码人妻精品酒店| 亚州男人天堂| 亚洲中文字幕噜噜噜久久久| 高清国产性猛交xxxx乱大交| 人人妻人人爽| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 欧美特大黄一级片片免费| 26uuu最新| 欧美97超碰| 午夜福利合集| 亚洲高清在线se| 18岁禁 茉莉成人久久| 日本天天吊| 一区二区日韩欧美久久| 亚洲九月丁香| 亚洲国产精品有声| 三级日韩一区二区三区| 欧美激情视频一区二区| 欧美综合狠| 九七毛片九九毛片| 久9久9精品| 久久男人网| 久久久久一本一区二区青青蜜月| 91视频国品一二三区| 丁香六月婷| 亚洲无码一区二区三区三州| 婷婷午夜成人色中色| 欧美亚洲第一页| 涩涩涩综合| 国产午夜福利电影免费在线观看| 男人的天堂 在线一区| 91网站18禁| 东京热毛片177b2viP| 日日躁夜夜躁狠狠躁超爽| 欧美精品不卡一二三四在线91| 精品无码产区一区二| 亚洲精品久久一区二区三区蜜桃臀| 亚洲色91C| 天综合网欧美| 亚洲精品 欧美精品| 伊人久久蜜月| 91精品又粗又猛又爽| 偷拍五区| 少妇蹲下买菜露大唇0| 日本天堂在线播放| 97视频免费在线| 日本一二三免费久久| 精品人妻久久久| 天堂综合网| 性夜影院爽黄A爽免费动漫| J?P?NESEHD熟女熟妇伦| 三级精品三级在线观看| 久草尤物| 日韩美女操b|