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

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
返回資訊列表
欧美韩日精品资源| 亚洲成?V人片在线观看福利| 国产女人成人精品视频| 亚洲一二三四区| 欧美三级免费伊人| 欧美人人AAA| 中文字幕三四区| 亚洲美女 晚间男人天堂 | 91人妻人人澡人人爽人人精品| 夜夜操av亚洲一区二区| 亚洲一卡2卡3卡4卡乱码网站| www.成人无码| 大香伊人在线一区| 国产少妇与亚洲av| 国产玖玖| 99色在线视频| 久久亚洲AV无码专区首页| 青青草白白色| 97国伦国色| 色色五月婷| 国产亚洲欧美每日在线| 精品人妻久久久久一区二区三区| 久久爱超碰网| 97资源欧美| 日本人体九九九九九九| 九色PORNY9l原创自拍| 国产一区二区三区免费视频在性观看| 亚洲色宗合| 欧美精品久久| 91精品国产乱码| 91色综合激情| 亚洲色诱惑| 婷婷五月天激情网| 婷婷五月av| 精品性爱一二三区| 激情视屏国产乱伦强奸| 操逼片国产| 午夜国产综合视频在线观看| 国产精品久久久久久无码红治院| 亚洲国产成人精品无码专区| 伊人精品久久网站| 1人人看人人摸人人操| 久久久亚洲熟妇熟女| 老色鬼成人精品视频下载大在线观看| 青青操在线亚洲视频观看欧美在线| 五月天婷婷综合网| 九九九九久久久| 亚洲人妻av| 另类在线| 中文字幕视频在线观看一区二区| 久99| 色五月婷婷色| 麻豆天美国美国产AV| 丁香五月天啪啪| 亚洲欧美激情在线视频| 5月婷婷6月六月丁香| 国产AV超爽| 久草免费在线一区二区| 亚洲欧洲视频小说在线观看| 中文在线视频| 色吊丝 日日骚 清纯唯美| 91精品国| 熟女熟妇一区二区三四区| 久夜操| 亚洲欧美综合图片| 天天日天天操天天射河南省| 91无码西班牙视频在线| 欧美大香蕉同搞| 手机看片日韩人妻| 激情综合五月婷婷| 天天综合影院91| 欧美在线l亚洲| 国产精品乱码久久久久久| 狠狠爱夜夜干| 欧美色图片| 亚洲日韩在线a不卡99精品| 欧美呦呦性爱| 婷婷伊人网| 四虎AV在线观看| 亚洲AV乱码专区国产噜噜亚洲| 欧美亚洲丝袜美女电影| 在线观看 99热| 天天摸夜夜操视频| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 2001天天操| 国产精品乱人伊人网| 九九九九日本| 96国产精品| 成人免费视瓶| 色九九综合| 午夜精品久久久99| 一级做a爰片性色毛片久久| 岛国黄| 色婷婷导航| 久久久久9久久久久| 亚洲性综合11| 日本成人免费一区二区三区| 人妻碰碰碰碰碰碰| 九99久久| 午夜福利激情在线视频| 亚洲网自拍| 日韩BBN| 精品国产一区探花在线观看| 操一区| 人妻少妇精品一区二区三区| 果冻传媒A片一二三区 | 后入内射蜜桃臀| 自拍亚洲综合| 高潮毛片无遮挡高清免费| 超碰国产在线| 600国产精品视频| 亚洲欧洲综合成人av一区| 精品国产久热在线观看| 免费网色网站| 欧美精品69性爱| 日韩性爱电影一区| 欧美日动态视频| 在线午夜成人无码视频| 91人妻视频| 蜜臀久久99精品久久久久| 亚洲二区精品在线观看 | 玖玖爱在线视频免费观看| 一级性爱aaaa| 久久久免费懂色| 欧美中文字幕日韩在线| 色综合加勒比四四季| 极品肉射| 人人喜人人妻| 国产精品一区二区手机看片| 九九九久久久久| 青娱乐二区免费| 天美精品av| 99精品九九九九九九| 亚洲成人一区二区精品| 一本色道久久综合精品婷婷| 久久五月视频| 亚洲色图欧美| 91色图片| 干日本人少妇午夜寂寞影院| 欧洲精品一二三在线| 国内精品a| 爱爱久久| 91成人精品在线播放| 久久AV色| 九九色婷婷| 美女爽到高潮91| 成片免费播放| 天美91| 96AV精品| 精品毛片久久久精品毛片| 综合激情一一91| 激情啪啪拍91| 女人天堂av在线播放| 午夜精品99久久久久传媒| 美女诱惑久久| 99热这里只有精| 欧美精品四区| 中文字幕 国产 精品| 91麻豆天美国产欧美高潮| 影音先锋国产精品| 国产AV色黄看到爽| 91国产丝袜美女| 久久露脸国产老熟女| 视频在线中文字幕| 99人人干| www.色吧5.com| 久久久久久久78| 国产黄色小视频网站| 日韩欧美偷拍美女视频| 亚洲精品 大香蕉| 婷婷超| 亚洲人91| 天天日老熟妇| 成人乱码一区二区三少妇| 欧美性性性| 超碰91在线| 亚欧高清| 久久久无码精品人妻二区| 爱爱60秒免费视频| 五月激情天| 国产精品嫩草影院午夜两性 | 自拍视频大全亚洲专媒视频/一区二区三区| 亚洲欧美色图小说| 男人的天堂2000| 九九碰九九爱97超碰| 国产h小视频在线观看免费| 亚洲色91C| 99色色网| 成人八戒网站| 天天色天天干天天爱| 欧美自拍网| 色欲人妻一区二区在线| 私色综合网| 国语av最新自产拍在线观看| 襙一襙| 国产乱不卡| 一区| 天无日色综合| 人妻日日夜夜精品| 五月天丁香| 噜噜噜无码AV一级一级久久影院 | 国产操伦| 91黑人狂躁丰满熟妇| 丝袜亚洲91| 99999精品视频| 成人午夜无码视频| 强奸乱伦日韩AV| 国产精品原创巨作?v网站| 超碰97综合| 中文字幕精品久久久久人妻红杏ⅰ| 麻豆2区1区天美| 中文字幕成人| 狠狠综合| 玖色AV| 午夜福利免费福利视频| 艹少妇网站| 亚洲91在线播放影院| 婷婷伊人五月| 一区AV| 91高潮| 日本黄色精品| 91老司机精品| 97在线免费观看| 欧美 亚洲| 蜜臀久久99精品久久久久久成人小说 | 日日狠狠久久偷偷色综合免费| 国产av美女被艹的乱叫| 免费看日产一区二区三区| 国产色精品午夜大片| 一牛影视成人片免费| 操操操五月天婷婷丁香影院| 在线观看高清AV| 精品欧美А∨无码黑人大荫蒂| 都市久久精品激情亚洲| 国产综合网站在线播放 | 久久成人国产精品| 黄页网站免费高清在线观看| 亚洲一区二区三区欧美日韩| 亚洲国产尤物yw在线观看| 日本免费一级AAA大片器| 激情国产乱伦Av| 亚州AV无码国产精品| 91人妻Pr| 亚洲免费精品一区| 欧美综合在线第一页| 97久久久网站| 最新亚洲黄色免费电影 | 久草在| 和协影院中文字幕三区| 99精品九九九九九九| 一本色道综合久久欧美日韩精品| 成人性爱免费播放| 熟妇的味道HD中文字幕| 国产日韩欧美三级片| 日韩无码专区| 91性生活久久久| 91热色| 日韩九九九| 亚洲无码超碰免费| 嗯啊抽插大香蕉网页| 久久亚洲精品成人av| 久热伊人| 久久久久久9999| 色97欧美| 自拍偷拍草一草| 亚洲操逼无码| 一区中文字幕二区日韩| 男人天堂2019| 日韩A优精品在线观看| 丁香六月激情综合| 久久手机视直播| 好吊色一区| 怡红院久久老司机| 日韩人妻制服丝袜av| 啪啪综合网| 九九九久久久久| 国产97色在线 | 亚洲| 熟女激情综合网| 手机在线看片免费人成视频| 免费人人搞97| 中文字幕在线观| 国产日韩在线播放| 久视频在线观看| 久久精品成人| 成人午夜小视频手机在线看| 日韩精品怡红院| 欧美啪啪色吧在线| 久久美女福利是上海美女| 亚洲第一色页夜| 亚洲色图A| 无码免费精品高清| 99色婷婷中文字幕乱色| 超碰成人人人爽人人爽| 亚洲最大成人a毛毛片| 欧美少妇一区二区三区| 酒色综合网| 欧美黄片视频在线观看免费 | 欧美日韩资源| 97人人模人人爽人人| 亚洲自拍欧美色综合| 干我久操| 国产激情片在线观看| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 青青草日韩无码| 日韩内| 国产一区二区三区久久久精品| 后入美女国产| 亚洲精品国产精品成人| 日韩 人妻 精品| 91久久青青草原精品| 日本中文字幕不卡视频| 婷婷操逼| 91综合站| 久久久久久久久久久97| 亚洲欧美国产va在线播放频| 91黑丝少妇| 91精品老女人| 草久久久| 午夜精品五区| 99精品九九九九九九| 久久九九视频九九视频| 青青草导航在线视频| 最新亚洲人成网站在线影院| 亚州熟妇精品| 无套内射人妻在线播放| 国产精品国产| www.99在线| 青青青青青手机视频| 国产91久久九九免费精品无码| 国产熟女高潮一区二区三区| 欧美黄片视频在线观看免费| 人妻娇喘 激情视频| 久久99黄色卞西瓜| 日韩欧美大力操| 久久国产999| 免费精品中文字幕| 亚洲欧美97√| 亚洲情色在线| 亚洲熟妇自偷自拍另欧美| 精品久久久久久久| 国产久久视频| 无码免费精品高清| 偷拍导航视频网站| 亚洲棕合电彰| 五月丁香啪啪网| 国产精品又黄又猛又粗| 蜜臀av网址| 色欲日韩欧美在线一区| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 夜夜躁狠狠躁日日躁av| 亚洲、日韩、综合、另类| 伊人久久综合影院| 这里只有精品97| 一区二区首页| 色综合久| 人妻一区视频| 亚洲日本激情| 精品视频一区二区| 欧美淫乱视频| 婷婷综合在线观看| 婷婷亚洲五月***久久| 日韩一级欧美一级国产一级台湾| 日日玩天天干| 人妻无码久久一区二区三区免费| 农村妇女一级二级三级视频| 熟女五十路一区二区三| 九热中文字幕| 天天大干大香蕉| 337p大胆噜噜噜噜噜91Av| 中文操逼字幕| 精品一区二区2| 国产SV一线| 欧美操逼熟女| 人人做天天爱| 日韩三级伦理中文字幕| 日本在线伊人啪啪| 精品十八在线观看| 密臀成人视频久久久| 99在线视频播放| 久久色人体 | 色综合中文字幕不卡| 国产一级做a爰大片免费久久| 久久神马| 亚洲中文字幕熟女| 色噜噜狠狠色综无码久久| 天天天天天天天天综合| 欧美成人精品一区二区三区| 一本道综合色图| 激情接吻视频久久久久久| 嫩草在线视频| 国产第12页| 日韩激情无码影院| 搡老女人911熟妇老熟女| 国产400孕妇孕交群| 婷婷午夜清品久久久久久久性色视频观| 少妇色综合| 国产熟女精品区| 美女裸体麻豆天美蜜桃91| 久久久久密| 欧美色三级片91| 99视频自拍| 国产免费永久精品无码| 五月丁香啪啪网| 亚洲免费在线探花| 国产女性无套 免费观看| 玖玖爱免费观看视频| 极品美女福利在线观看| 久思思热视频在线观看| 一级黄色性爱A级片| a片自拍直播视频| 久操操AV电影| 午夜AV人气不卡| 嫩草影院在线观看精品| 超碰91在线| 日韩人妻少妇 一区二区三区| www.天天干| 女人天堂AV五区在线| 亚洲日韩AV视色| 亚洲欧美性生活| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 九九九九九九成人| 国产9l 大屁股| 啊啊啊骚| 91性高朝久久久久久久久| 免费人成在线观看网站品爱网| 亚洲成人无码影院| 伊人婷婷五月天| 亚洲宅男天堂| 天天看高清麻豆| 亚洲中文字幕久久无码精品| 九九九九热只有精品| 97欧美精品| 亚洲精品国产无码高清| 激情五月婷婷| 国产成人主播| 欧美性性性| 日韩簧片免费看| 去干网最新版| 看黑人AV不卡| 超碰欧美COM| A片大香蕉在线| 萌白酱自拍视频| 色乱二区| 中文字幕制服欧美久久一区| 夜夜爽夜夜摸夜夜操免费视频| 97精品免费视频网站| 日本无码1| 亚洲日韩AV视色| 国产精品久久久九九九| 精品福利| 精品成人av一区二区三区在线| 久久久工口| 亚洲图片欧美另类综合免费视频大大香| 999精品乱码| 成人a大片在线观看| 欧美制服另类丝袜| 少妇激情一区二区三区视频| 九九久久一区二区伦理| 九九九九九九九九九九九免费国产| 风骚少妇视频中文字幕| 强奸乱伦AV网址| 久久婷五月| 精品久久久av| 久久久久久久91| 人妻精品一区二区在线| 久久久久78| 91内射| 五月综合婷婷久久网站| 伊人伊人LD| 国产日韩精品suv| 东京热免费视频| 一二视频神马久久传媒| 欧美日本一区二区a人| 96AV精品| 78超碰| 天天视频综合在线观看视频| 熟女高潮合集-永久久久-成人AV| 亚洲av国产av综合av卡| 日本人妻一区二区| 凹凸视频在线一区二区| 天天综合网国产| 男人的天堂免费| 五月婷网站| 噜噜噜久久亚洲精品色情| 成 人 A V免费视频在线观看| 婷婷色婷婷| 性交一区二区在线播放| 欧美系列在线一区二区| 国产免费一区| 无码视频黄色网战| 中文字幕第二页| 婷婷视频网| 日韩日韩日韩-国产乱码精品一区二区| 免费在线黄片视频| 大香蕉一人| 亚洲人妻av| 91情色在线| 97欧美性爱| 色原狠狠天天天| www久久99| 啊啊啊草死我| 磁力99AV| 大色综合网| 日日骚一区二区三区| 日韩 欧美 视频 在线 一区| 美骚妇av高清在线| 搡老人老9丨女老熟人| 天天影视网色欲色香| 国产欧美一区激情交| 91狠狠综合久久| 大香蕉97久久| 亚洲精品性爱片| 国产精品在线一区二区| 中文字幕在线日亚洲9| 丰满少妇一区二区三区免费看| 亚洲 欧美 中文 日韩超碰| 人人看黄色视频| 久久久久无码一妻区| 亚洲无码免费看| 91美女视频直播| 日韩精品一区二区三区四虎影视| 日本成人免费一区二区三区| 职场同事知名国产国产精品久久欧美日韩 | 精品久久99| 97久操| 中文字幕版| 秋霞免费AV| 亚洲欧美不卡线| 亚洲午夜免费狠狠干| 欧美日韩大黄片| 欧洲精品网| 天天干美少妇一区| 国产不良强奸视频免费看| 青青草国产一区二区三区| 亚洲国产精品久久久久久久久久| 久久五月天婷婷丁香中文字幕| 欧美综色欧| 99热在线不卡| 日韩三四五区| 另类专区在线观看| 欧美日韩色综合网| 91综合色噜噜| 少妇的嫩逼图片| 青青草在线视频人人想人人上| 亚洲情色中文字幕一区| 无遮挡男女激烈动态图| 日逼97| 精品美女少妇一区二区三区| 97久精品| 色噜噜狠狠色综合日日| 四虎影视永久在线免费| 强奸抽插av| 亚洲欧美97| 欧美在线第五页| 99色日| 蜜臀精品1区2区| 色色色综合网| www…国产操逼| 亚洲 日本 国产 综合| 亚洲国产精品无码AV久久| 丝袜加勒比| 久久精品中文字幕女同| 丰满少妇高潮无码| 欧美se亚洲| 99热色这里只有精品| 99热精品在线播放| 黄网色一区二区三区四区精品| 一区二区免费电影久久| 国产精品久久妻无码网站| 七月丁香婷婷| 国产白丝av| 91日韩| 91劲爆| 97视频新免费| 日韩卡一卡二卡三在线| 国产精品久久久久婷婷二区次| 蜜臀av中文字幕| 丝袜色综合| 亚洲资源网| 综合av影片| 加勒比五月天| 青草伊人久久| 久久精品女同亚洲女同13| 性欧美天天| 日本97久久久精品| 日韩精品9999| 动漫av中文| 加勒比无码一区二区三区| 333kkkk·亚洲com久久| 女同性恋一区二区三区精品视频| 18一区二区三区| 久久的网站啊啊啊啊啊| 一区二区三区四区五区高清无码永久视频| 色综合中文字幕不卡| 黄色AV影视| 色婷婷综合网站| 亚洲 日韩 欧美 国产综合体| 99热精品在线观看| 69AV女优男人的天堂| 久久亚洲不卡一区二区三区| 9长久久精品| 美日韩一卡二卡三卡免费人妻精品| 国产精品久久久久久夜夜夜| 小草av不卡亚洲二区 | 国内亚洲高清无码| 亚洲色图欧美色图另类图片| 中文字幕第9页萱萱影音先锋 | 久久精品国产72国产精品福利| 自拍偷拍2025在线观看| 日本人妻A片成人免费看片| 人妻天堂综合网| 亚洲AV无码天美传媒一区| 亚洲美女30b| 夜夜国自区| 加勒比综合网| yellow网站免费观看日韩高清无码| 天堂种子在线www网资源| 亚洲。日韩。欧美| 女人天堂网| 亚洲风情在线观看| AAAAAAAAA黄片| 国产精品麻豆成人AV艾秋| 91欧美美女日韩国产婷婷| 欧美91网| 日韩性爱小视频| 成人精品久久久午夜福利| 欧美疯狂做爰xxxx| 亚洲人妻熟妇三十三区| 人妻熟女一区二区三区视频| 欧美色女人| 久久精品国产96精品亚洲拳交| 色综合美国| 曰本特级特黄特色黄色A级网站高清在线免费看 | 日产操逼| 日本九九九九| 91夜夜蜜桃臀1区2区3区| 国产又粗又长视频| caoni国产亚洲av| 射丝袜高跟鞋99| 传媒在线观看一区二区三区| 老司机老司机午夜影院| 亚洲男人的天堂在线看| 欧美日韩在线视频网站| 五月天婷婷成人网| 欧美最婬乱婬爆婬牲视频| 岛国片在线播放| 99这里有精品| 蜜臀久久久99久久久久 | jazzjazz国产精品麻豆| 欧美日韩成人在线| 亚洲久草AV色图| 人人干人人搞人人摸| 青青草色情网站视频| 免费人成毛片乱码| 在线 亚洲 网爆 自拍| 激情小说亚洲色图| 欧美日韩超碰在线| 先锋女优在线观看视频| 啊视频在线| 91男人综合| 小情侣高清国产在线视频| 操淫穴亚洲五月丁香 | 先锋影音av先锋一区| 亚洲综合成人网| 囯产精品强| 久草网站免费在线观看| 日本免费一区二区不卡| 国产日韩区| 欧美国产有色电影| 国产亚洲精品美女久久久| 美欧老女人97| 久久男人精品| 亚洲色图自拍| 天天看,天天做| 精品人妻15区| 乱人伦 国语对白:视频直接看| 欧综合网| 青青草吊丝| 精品国产人成在线| av橘色网站| 亚洲色啪| 成人一二| 骚熟女吞| 亚洲一区日韩| 午夜精品久久99蜜桃的功能章节| 嗯嗯,啊啊,国产精品| 香蕉国产精品麻豆亚洲欧美日韩| 神马久久中文字幕| 亚洲欧洲精品视频发布| 日韩精品三级| 美腿色图| 色综合av男人天堂| 天天夜夜rb| 国产后入精品| 国产精品永久免费10000| 97超碰超欧美。| 五月丁香成人网| 操国产高清| 欧美大战久久久伊人| 高清无码国产亚洲| 国产精品美女视频诱惑| 少妇专区一二三四五| 九九久久综合| 青青免费在线视频一区 | 超碰吊日色| 日韩欧美成人大香蕉| AV网站高清无码在线观看| 97国产|免费| 好看的91视频| 色情综合网| 超碰成人公开| 欧美综合另类| 91黑丝操| 一区,二区,三区网站| 亚洲操逼无码| 国产兽交视频在线播放| 亚洲精品九九九九九九| 动漫片子网站3黄| 色婷婷网| 97精品熟女少妇一区| 丝袜综合网| 97国产综合欧美| 4141514逼喷水三级片| 亚洲欧美精品福利在线| 亚洲精品白浆高清久久久久久| 青草成人免费视频一COm| 亚洲色图 图片| 顶级少妇BT天堂| 丁香五月影院| 围产精品一区二区三区视频播放| 中文字幕国产在线天堂| 欧美综合中文| 日日嗨AV一区二区夜夜| 大香蕉操久久| 五月天大香蕉| 国产高清精品福利| 亚欧成人综合影院| 综合久久久久久久久91| 日夜伊人网| 情色五月天就去干| 午夜精品人妻二区三区| 偷拍超碰| 好看的91视频| 99999精品成人| 中文字幕啊啊啊在线观看视频| www久| 亚洲无码一二三区| 精品欧美А∨无码黑人大荫蒂| 国产v亚洲v日韩v欧美v片另类| 午夜亚洲| 国产日韩美女小穴视频网站不卡| 丰满丝袜少妇AV| 91久久久老司机| 怡红院成人av| 97免费在线视频在线观看| 亚州伊人色综台| 男人的天堂啪啪啪啪啪蜜桃不卡| 国产精品久久久三级无码| 盗摄女人妻在线| 欧美黄片免费在线观看视频| 午夜操逼不卡| 亚洲成人无码影院| 日日操丁香五月天| 久久精品国产亚洲AV无码做| 亚洲学生妹高清av| 综合色好色| 欧美色就是色| 欧美Ⅴ性爱| 亚洲 欧美 日韩 国产一区二区| 密臀在线视频| 久久久久久久唑| 国产人妻久久精品一区二区三区| 麻豆亚洲AV成人无码久久精品| 午夜精品久久久久久久| 91天天美女| 欧美综合色,www| 色吧5亚洲| 亚洲爽图| 国产又色又粗又黄又爽| 九九亚洲| 操婢日韩| 26uuu偷拍亚洲欧洲综合| 美国人人操人人操| 欧美的性爱网站免费| 国产精品极品美女视频| 艹比视频国产精品| 国内精品999| 婷婷五月丁香五月| 日韩欧亚太美不卡| 亚洲男人综合网| 婷婷20月天青娱乐| 日韩中文字墓| 一区二区三区视频国产免费| 亚洲成av人片色午夜乱码| 欧美夜夜狠| 超碰天天操| 色偷偷男人的天堂麻豆| 91欧美少妇| 成人羞羞视频国产| 综合久久久久久久综合网| 日本黄 R色 成 人网站| 亚洲国成人情色好看电影| 天天综合网亚洲综合网| 蜜臀99久久精品久久久懂爱| 久久久久亚洲AV无码专区少妇| 爱av免费| 久久精品亚洲婷婷| 国产精品高朝久久久久久久| 午夜精品久久久久久久99| 国产精品96久久久久久| 91人妻中文| 日韩精品熟妇| 加勒比综合在线| 久久久99免费| 日本天天色| 久久久久国产精品人妻aⅴ天堂| 国产精品久久久| 大香蕉免费乱伦视频| 97色色色综合网站| 亚洲色婷婷综合久久久久中文| 久久精品 六十路 熟女 欧美| 26uuu国产免费观看| 人人手机欧洲亚洲国产人妻| 国产丝袜一区二区三区| 免费的黄片有限公司| 天天操天天插| 人妻少妇久久| 日本免费一级AAA大片器| 欧美熟妇视频| 麻豆av一区二区| 亚洲国产成人7777| 校园春色综合| 国产日韩怡红院| 婷婷去俺也去六月色| 国产精品久久9| 日韩精品 欧美激情| 伊人五月天| 99热日| 天天激清| 久久极品一区二区| 青青久久艹| 91超级碰碰碰| 风间由美日韩欧美久久| 欧美日韩国内不卡| 综合性视频99| 欧美精品成人在线播放| 欧美老妇女内射网址| 蜜臀在线视频| 久久人人看| 久久青娱乐| 牛牛aV| 久久九操在线观看| 国产精品原创巨作?v网站| 日韩内射视频| 日韩免费一级性爱视频| 亚洲综合另类欧美久久久| 久热精品在线| 日本久久精品| 好爽视频在线观看| 最新欧美色网| 欧美A片中文字幕| 97综合国产精品高潮久久| 欧美乱伦专区| 精品人妻一区二区免费蜜桃| 国产真乱mangent| 天堂精品小草| 国产女人和拘做爰视频| 中文字幕超碰CAO| 亚洲一级特黄大片在线播放91| 综合视频91| 国产男女边吃边摸视频网站| 夜夜狠狠躁日日躁色视频| 欧美日韩操逼动图| 日韩ab网| 牛牛aV| 亚洲色综网| julia高潮后不停追击中出| 女生91网站| AV一二区| 操日韩第| 久久亚洲一区女同性恋中文字幕| 狠狠爱综合| 丁香七月婷婷| 97在线青| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 成熟熟女国产精品一区二区| 一区二区影院| 玖玖爱视频网站| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 超碰97起碰| 中文字幕人成乱码熟女香港| 激情四射婷婷六月天| 国产亚洲色婷婷久久99精品91葵花宝典| 久久久性少妇| 国产天天骚| 一级A片女人高潮叫床| 天美传媒精品一区二区| 色www精品视频在线观看| 乱老女人一区二区视频| 91欧美网| 精品性爱久久视频| 久久乐| 在线观看高清AV| 亚洲男人在线观看天堂| 丁香六月啪啪| 国产Aα| 92一区二区| 色哟哟av网址| 国产天天骚| 免费精品福利在线观看| 欧美18老人禁| 91N综合网| 超碰97在线色男人??| 久久黄色网址| 亚洲成?V人片在线观看福利| 日产欧美电影一区二区三区| 欧美午夜熟妇黑人精品91| 国产偷仑| 国产女人高潮视频| 久久婷婷精品| 干日本人少妇午夜寂寞影院| 蜜臀在线视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 97人人夜| 色天堂在线观看| 伊人久久大香大香线蕉中文| 亚洲图片色图欧美另类| 国产精品日日摸夜夜添骚逼| 99精品无码| 99国内熟女露脸视频| 日韩av熟女一区二区三区成人| 97色干| 色色色色日本| 99亚洲国产精品色一区二区三区| 大香蕉中文网| nuu12国产麻豆精品| 国产精品国产自产拍高清AV| 久草免费在线一区二区| 乱伦1色页| 伊人网青青| 亚州男人天堂| 97日韩超碰超碰中文字幕| 超碰欧美97资源| 久久精品99久久久久久| 人妻日日夜夜精品| 青草青青久久久久久国产| 精品久久99| 亚卅熟女乱色| 五月丁香啪啪网| 熟女视频久久| 日韩免费性爱视频在线观看| 蜜乳av首页| 亚洲日韩美国人妻| 精品国产人成在线| 国产精品免费日韩| 欧美成人一区二区三区在线播放| 性开放中文AV高清无码免费看| 国产无码精品高清| 凹凸视频在线观看伊人| 日韩色欲久久一二三四区| 欧美性爱第一区| 日韩操p| 久久黄色性爱视频| 国产91啪| 久久精品国产72国产精品福利 | 天天躁狠狠躁av| 老司机午夜精品福利视频一区二区| 射丝袜大香蕉| 青草伊人网| 97超级久久| 日本女人久久久| 99re在线视频国产| 91精品国| 校园春色 欧美| 亚洲第一页第二页激情| 免费?级毛片无码?∨蜜芽试看| 五月丁香六月综合缴清无码 | 久夜视频| 秋霞操逼片| 欧美日韩一区二区三区四区蜜桃| 国产精品亚洲美女久久久久| 99热亚洲| 欧美一区二区在线资源| 五月婷婷深深爱| 色盈盈影院| 精吧天堂| 美女诱惑一区| 日韩色欲久久一二三四区| 亚洲性爱电影| 国产免费一区在线观看| 色婷婷综合久久久久中文一区二区| 色网在线| 欧美色图校园春色| 大香蕉www.超碰| 日本色色的视频| 国产女上位好爽在线| 色女女女导航| 黄色一区三区| 色噜噜国产精品视频一区二区| AⅤ片水多多| 九九色影院| 天天综合网在线| 91亚洲丝袜熟女| 欧美一级美片在线观看免费| 日本高清一区二区在线| 色一射色一射| 国产suv精品一区| а√天堂资源官网在线资源| 日本性爱网址| 亚洲黄色影视| 粉嫩少妇自慰在线| 天天欲望网| 免费在线看黄片av| 综合啪啪| 亚洲污一污二| 久久午夜色播影院免费高清| 日韩丝袜二区| 亚洲永久AV无码精品秋霞| 97伊人| 91精品国产91久久青草| AAA久久| 神马久久啊啊| 偷拍精品一区二区三区| 综合久久欧美| 中文字幕AV片| 欧美视频一| 久久精彩免费视频| 色五月AV在线| 亚洲天堂中文字| 欧亚乱色熟一区二区三四区| 91精品丝袜久久久久久| 强奸a片网| 日本高清加勒比| 日韩中文字幕国产| 中文久久一区| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 国产亚州日韩欧美看片| 九草九九九| 13小男生GAY自慰脱裤子| 加勒比大香蕉视频在线| 欧美综合天堂| 人人考人人摸人人干| WWW美腿丝袜香蕉中文| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 人人操,操人人| ,国产乱人伦精品一区二区三区| 校园春色 亚洲| 2018天天干在线视频| 东北黄色电影| 中国AAAAAA黄色片| 真实高潮91| 伊人专区一区二区三区| 偷拍 亚洲| 久久九色| 蜜奶av| 伊人热综合| 九九热超碰97亚洲最新香蕉| AA级电影三区| 伊人青青草久久| 99这里只有精品国产| 天天日天天屌天天操| 日韩免费看在线黄色片| 久热伊人99re| 亚洲**2021在线观看| 欧美性暴力猛交XXXX | 91性网| www.夜夜| 日韩日本欧美在线观看| 日本加靬比网站发布页| 国产日韩欧美操逼视频| 日日妻色网| 国产小u女在线观看| 加勒比人妻综合| 大香蕉520| 九九九九9999| 精品国产网站| 热久久国产| 中美日韩毛片| 亚洲国产奇米影视久久| 嗯嗯啊啊的视频| 九九探花视频在线观看| 96一区二区| 大香蕉综合| A一区片| 97超级色碰碰| 五月丁香啪啪啪| 天天综合青苹果| 久久久精久久久| 91精品久久久久五月天精品 | 91这里只有精品| 一区二区 电影 亚洲| 国产精品探花视频| 啪啪啪综合网| 精品网站99999| 国产自偷自拍一区| 人妻精品免费一二三区| 欧美综合 站| 国产浮力影院第1页| 天天综合-91入口| 亚洲在高跟鞋自慰久久在色线| 欧美亚洲日本激情在线| 无码人妻精品酒店| 色网1| 久久久九97| 2017av无码免费无线播| 国产视频第2页| 成人综合色网| 日本操嫩b网| 欧美精品三级黄片| 亚洲极品| 国产美脚女优尤物在线观看| 国产精品免费视频人成| 密臀在线一区尤物| 欧美国产一区二区三区麻豆传媒| 91伊人久久在线| 欧洲黄色网| 97超碰中文字幕| 午夜激情床戏激情| 欧美日韩第一页| 级做a爱无码性色永久免费| 大香伊人在线一区| 色婷婷综合网站| 人人玩人人添人人澡免费| 高清不卡 中文 人妻| 婷婷三区| 99视频自拍| se吧提供国产乱老熟视频胖女人 | 欧美女同在线| 安徽熟妇视频| 91free福利| 免费亚洲黄色视频在线观看| 天天综合网网欲色| 国产精品丝袜在线| 九九九九97| 大香蕉免费中文| 国产97视频免费观看| 无码人妻精品一区二区中文| JIZZJIZZ亚洲女人被躁| 亚洲情色 欧美| 亚洲激情欧美色图 | 一区操逼| a片在线播放| 无码不卡亚洲成?人片| 久久香蕉国产线看观看亚洲女人| 日韩欧美天天爽爽爽天天爽爽| 欧美一区二区三区大综合| 嗯嗯啊啊视频在线看| 日本中文字幕在线视频| 中国农村熟妇毛片视频| 亚洲欧美人妻| 久操操| 欧美亚洲第1页| 97综合日韩| 北京专精特新企业招聘信息| 97天天摸天天碰| 资源在线观一 二| 精品超碰国产| 极品白嫩美女白浆成人福利在线看| 色婷婷激一区二区三区|