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

ARTICLE DETAIL

資訊詳情

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

基于微信小程序與Python的實(shí)驗(yàn)室預(yù)約排課系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

基于微信小程序與Python的實(shí)驗(yàn)室預(yù)約排課系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 最近好幾個高校的實(shí)驗(yàn)室管理員朋友跑來問我能不能把實(shí)驗(yàn)室預(yù)約從“微信群接龍Excel排課表”里解放出來。聊了一圈我給的方案都是同一個小程序 Python后端做一套實(shí)驗(yàn)室預(yù)約排課系統(tǒng)。小程序負(fù)責(zé)學(xué)生端和管理員端的使用入口Python負(fù)責(zé)預(yù)約規(guī)則、排課沖突檢測和數(shù)據(jù)接口這套組合對于實(shí)驗(yàn)室這類場景來說輕量、夠用、還特別好落地。這篇文章把我做這個系統(tǒng)的完整思路、核心代碼和踩過的坑一次說清楚正在做類似課設(shè)或者真想給實(shí)驗(yàn)室做個小工具的朋友可以直接拿走參考。1. 項(xiàng)目整體設(shè)計(jì)與技術(shù)選型1.1 為什么前端選小程序而不是App或Web頁面實(shí)驗(yàn)室預(yù)約這個場景有個特點(diǎn)使用頻次不算高但用的時候都特別急。今天老師臨時調(diào)課學(xué)生小組明天要做實(shí)驗(yàn)沒人愿意為了預(yù)約一次額外下載一個App。小程序天然適合這種“低頻剛需”的場景掃碼進(jìn)入、用完即走不用安裝也不用擔(dān)心安卓和蘋果應(yīng)用市場的審核流程。如果你還在糾結(jié)要不要用uniapp開發(fā)我的建議是分情況。如果項(xiàng)目只面向微信生態(tài)直接寫原生微信小程序就夠了開發(fā)工具順手、調(diào)試方便、API文檔也全。如果你們學(xué)校未來可能有支付寶小程序、抖音小程序的需求才值得用uniapp做多端適配但學(xué)習(xí)成本和打包配置的復(fù)雜度會明顯上升。相比之下原生小程序的wxml、wxss、js這套東西和前端基礎(chǔ)語法幾乎同源做過網(wǎng)頁開發(fā)的人一周就能上手。另外有個現(xiàn)實(shí)問題實(shí)驗(yàn)室預(yù)約系統(tǒng)往往還要對接企業(yè)微信或?qū)W校內(nèi)部的通知體系微信原生生態(tài)在這塊最省事。還有一點(diǎn)別忽略小程序不用處理跨平臺設(shè)備的碎片化問題。安卓和鴻蒙的返回鍵邏輯、iOS的鍵盤彈出方式、各種機(jī)型的劉海屏適配原生小程序都被微信統(tǒng)一處理得差不多了。如果自己搞App光是這些細(xì)節(jié)就能消耗掉半個開發(fā)周期。所以除非有明確的多端訴求否則不要讓“想做App”的沖動主導(dǎo)技術(shù)選型。1.2 后端為什么選Python而不是Java或Node.js后端選型上我毫不猶豫選了Python。理由很實(shí)際實(shí)驗(yàn)室預(yù)約排課系統(tǒng)的核心難度不在并發(fā)量而在排課規(guī)則和預(yù)約沖突的判斷。Python寫這類業(yè)務(wù)邏輯非常流暢幾行就能表達(dá)一個復(fù)雜的判斷條件而且字典、列表這些數(shù)據(jù)結(jié)構(gòu)處理前端傳來的JSON參數(shù)特別自然。Python做后端的優(yōu)勢在校園和中小企業(yè)場景里體現(xiàn)得尤其明顯。開發(fā)周期短一個人一周就能把核心接口寫完調(diào)試方便報錯信息直觀生態(tài)里有Flask、FastAPI、Django這些成熟框架按需選擇就行。我自己偏愛FastAPI因?yàn)樗钱惒娇蚣苄阅鼙菷lask好還能自動生成OpenAPI文檔小程序端的人看接口文檔都省了。如果團(tuán)隊(duì)里都是Python新手選Flask更穩(wěn)資料最多、坑最少。很多人在這個項(xiàng)目里糾結(jié)“用Python會不會性能不夠”這就是想多了。高校實(shí)驗(yàn)室的預(yù)約并發(fā)量高峰期也就幾百個人同時搶晚上幾個時段FastAPI加一個MySQL完全扛得住。真正決定系統(tǒng)好不好用的是你能不能把排課沖突規(guī)則寫對而不是語言本身快不快。當(dāng)然你要是想鍛煉自己也可以試試用Java Spring Boot但那個開發(fā)成本會明顯高對實(shí)驗(yàn)室預(yù)約這種項(xiàng)目來說有些大材小用。1.3 系統(tǒng)整體架構(gòu)和數(shù)據(jù)流整套系統(tǒng)的架構(gòu)非常簡單核心就三層小程序前端、Python后端接口、MySQL數(shù)據(jù)庫。小程序端負(fù)責(zé)頁面展示和交互比如實(shí)驗(yàn)室列表、日期選擇、時段預(yù)約、管理員審核后端用FastAPI暴露RESTful接口處理登錄鑒權(quán)、預(yù)約創(chuàng)建、沖突檢測、排課數(shù)據(jù)查詢數(shù)據(jù)庫存所有持久化數(shù)據(jù)包括用戶、實(shí)驗(yàn)室、預(yù)約記錄、排課課程。小程序通過wx.request請求后端的http接口數(shù)據(jù)格式統(tǒng)一走JSON。具體的請求流程可以這樣理解學(xué)生打開小程序先用微信code登錄后端調(diào)微信接口拿到openid并返回一個自定義token之后每次請求都帶上token后端校驗(yàn)身份學(xué)生選擇實(shí)驗(yàn)室、日期、時間段并提交預(yù)約后端先檢查這個時段是否已經(jīng)被課程占用、是否已被別人預(yù)約、是否超過實(shí)驗(yàn)室容量全部通過才寫入數(shù)據(jù)庫管理員端則負(fù)責(zé)導(dǎo)入實(shí)驗(yàn)課表、設(shè)置實(shí)驗(yàn)室開放時間、處理學(xué)生預(yù)約的審核和取消。這套流程不復(fù)雜但每個環(huán)節(jié)都有坑后面我逐個拆。2. 核心功能拆解與關(guān)鍵流程設(shè)計(jì)2.1 用戶端登錄、實(shí)驗(yàn)室列表、預(yù)約下單用戶端最核心的三個功能是登錄、查看實(shí)驗(yàn)室、提交預(yù)約。登錄這塊微信小程序一定要用wx.login拿到臨時code再把code傳給后端由后端調(diào)用微信的code2Session接口換取openid。這里有個特別容易被新手忽略的點(diǎn)小程序端絕對不要自己去請求微信接口換openid因?yàn)槟前補(bǔ)ppSecret暴露給了前端等于是把用戶數(shù)據(jù)脫褲子給人看。正確做法是后端持有appSecretcode每次用完就失效后端拿到openid后生成自己的token返回給小程序端后續(xù)請求都帶這個自定義token。實(shí)驗(yàn)室列表頁面要展示實(shí)驗(yàn)室名稱、所在位置、可容納人數(shù)、當(dāng)前開放狀態(tài)、今天的空閑時段。這里需要注意的是實(shí)驗(yàn)室列表不能一次性把所有數(shù)據(jù)都返回分頁是必須的否則數(shù)據(jù)量大了小程序渲染會卡。我習(xí)慣用limit和offset做簡單的分頁每個頁面加載20條觸底時再拉下一頁。預(yù)約下單是整個系統(tǒng)最敏感的操作。前端讓用戶選擇日期、時段、實(shí)驗(yàn)類型、參與人數(shù)然后提交給后端。千萬不要在前端做預(yù)約是否沖突的判斷就認(rèn)為萬事大吉更不要直接把數(shù)據(jù)寫進(jìn)數(shù)據(jù)庫。前端的判斷只是體驗(yàn)優(yōu)化真正的沖突檢查和寫入限制必須在后端完成因?yàn)榍岸舜a可以被抓包改參數(shù)繞過限制。小程序抓包這個事我就不細(xì)說了但做開發(fā)的一定要默認(rèn)所有前端傳參都不可信。2.2 管理員端排課導(dǎo)入、預(yù)約審核、數(shù)據(jù)統(tǒng)計(jì)很多做預(yù)約系統(tǒng)的人容易忽略管理端其實(shí)管理端的復(fù)雜度比用戶端還要高。排課是整個系統(tǒng)的靈魂學(xué)生預(yù)約是在課程剩下的空余時間上做文章的所以課程排課必須可靠。我建議的排課方式是管理員在后臺按實(shí)驗(yàn)室、按周次導(dǎo)入課程表。導(dǎo)入方式可以支持手工添加也可以支持Excel批量導(dǎo)入。Excel導(dǎo)入聽起來高級但從實(shí)際使用來看手工添加反而更穩(wěn)因?yàn)榻^大多數(shù)實(shí)驗(yàn)室一個星期就那么幾十節(jié)課手工一條條加也就十幾分鐘。批量導(dǎo)入Excel需要處理格式兼容、日期解析、重復(fù)行等問題開發(fā)成本和收益不成正比除非你們有幾十個實(shí)驗(yàn)室才建議做。預(yù)約審核這塊可以做成“提交即生效”和“需要管理員審批后生效”兩種模式。對于校園實(shí)驗(yàn)室我更推薦前一種即提交即生效但設(shè)置一個防沖突檢查和信用分機(jī)制。學(xué)生預(yù)約成功后如果爽約三次拉入黑名單限制預(yù)約兩周。這樣既保證使用效率又減少管理員的負(fù)擔(dān)。人工審批模式適合有特殊設(shè)備的實(shí)驗(yàn)室比如貴重儀器房需要老師確認(rèn)才能通過。數(shù)據(jù)統(tǒng)計(jì)也不能缺。管理員需要知道每個實(shí)驗(yàn)室的使用率、每個時段的預(yù)約熱度、每個院系的使用情況。這些數(shù)據(jù)可以指導(dǎo)下一學(xué)期的排課比如某個實(shí)驗(yàn)室周三下午總是被約滿可以考慮多排專業(yè)實(shí)驗(yàn)課某個設(shè)備孤島實(shí)驗(yàn)室長期無人用就應(yīng)該重新分配用途。簡單用SQL聚合查詢就能出報表沒必要上大數(shù)據(jù)組件。2.3 預(yù)約排課的核心沖突檢測規(guī)則沖突檢測是這個系統(tǒng)最核心、也最容易寫錯的地方。規(guī)則其實(shí)不難我把它拆成下面幾條第一時間不能重疊。學(xué)生預(yù)約的時段不能被課程表里的課程占用也不能被其他已成功的預(yù)約占用。判斷區(qū)間重疊有一個經(jīng)典公式現(xiàn)有預(yù)約開始時間小于新預(yù)約結(jié)束時間且現(xiàn)有預(yù)約結(jié)束時間大于新預(yù)約開始時間兩者同時成立即沖突。用代碼寫就是 prev_start new_end and prev_end new_start。第二實(shí)驗(yàn)室容量限制。預(yù)約人數(shù)不能超過實(shí)驗(yàn)室最大容納人數(shù)這個在請求參數(shù)里做校驗(yàn)前端也可以做一個提示但后端必須再查一次數(shù)據(jù)庫里的容量字段。第三同一用戶同一時間段不能重復(fù)預(yù)約。學(xué)生可以一次約多個時段但不能同一個時段約兩個不同實(shí)驗(yàn)室否則會造成名額浪費(fèi)。后端要用用戶ID加時間的唯一性查詢。第四課程優(yōu)先于自由預(yù)約。如果某實(shí)驗(yàn)室在周一上午第1-2節(jié)有固定實(shí)驗(yàn)課那這個時間段學(xué)生自由預(yù)約必須被拒絕除非管理員設(shè)置可預(yù)約數(shù)量增量。課程排課數(shù)據(jù)可以單獨(dú)存一張表在預(yù)約檢查時先查課程表再查預(yù)約表。我踩過的最大坑是以為只要在Python代碼里做判斷就足夠了但并發(fā)情況下兩個請求同時通過檢查然后同時寫入數(shù)據(jù)庫就會產(chǎn)生超賣。所以除了業(yè)務(wù)代碼判斷數(shù)據(jù)庫層面必須加唯一索引或利用事務(wù)后面我在代碼部分詳細(xì)講。3. 數(shù)據(jù)庫設(shè)計(jì)與核心代碼實(shí)現(xiàn)3.1 數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫我選MySQL原因很簡單校園環(huán)境里讓老師裝個Redis或者M(jìn)ongoDB不現(xiàn)實(shí)MySQL基本是標(biāo)配而且這類系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)非常規(guī)整用關(guān)系型數(shù)據(jù)庫最合適。如果只是開發(fā)學(xué)習(xí)或者本機(jī)演示SQLite也能跑起來只要把數(shù)據(jù)庫連接串改一下就行。第一張表是用戶表保存所有小程序用戶和管理員。字段包括id、openid、昵稱、頭像、角色student/admin、學(xué)號/工號、手機(jī)號、信用分、創(chuàng)建時間。openid必須加唯一索引這是用戶身份的唯一標(biāo)識。第二張表是實(shí)驗(yàn)室表。字段包括id、名稱、地址、容量、負(fù)責(zé)人、設(shè)備說明、是否開放預(yù)約、開放開始時間、開放結(jié)束時間、備注。重點(diǎn)在于“是否開放預(yù)約”這個狀態(tài)位管理員可以臨時關(guān)閉某個實(shí)驗(yàn)室進(jìn)行設(shè)備維護(hù)。第三張表是課程排課表。字段包括id、實(shí)驗(yàn)室id、課程名稱、教師、星期幾、開始節(jié)次、結(jié)束節(jié)次、開始周次、結(jié)束周次、單雙周標(biāo)記、備注。這里我用“星期幾開始節(jié)次結(jié)束節(jié)次”表述時段比直接存日期時間更符合高校作息排課表本來就是按周重復(fù)的。如果是企業(yè)培訓(xùn)場景也可以改成具體的開始時間、結(jié)束時間。第四張表是預(yù)約記錄表。這是最核心的表字段包括id、用戶id、實(shí)驗(yàn)室id、預(yù)約日期、開始節(jié)次、結(jié)束節(jié)次、參與人數(shù)、狀態(tài)pending/approved/cancelled/completed/no_show、創(chuàng)建時間、更新時間。狀態(tài)字段要有默認(rèn)值如果是免審核模式就直接置為approved。預(yù)約記錄表建議加兩個索引一個是實(shí)驗(yàn)室id、預(yù)約日期、開始節(jié)次、結(jié)束節(jié)次用來快速查沖突另一個是用戶id、預(yù)約日期用來查用戶的預(yù)約歷史和防止重復(fù)預(yù)約。并發(fā)情況下光靠索引還不夠下面代碼段解決。3.2 后端接口實(shí)現(xiàn)以FastAPI為例環(huán)境準(zhǔn)備這里不多廢話Python 3.9以上版本安裝fastapi、uvicorn、sqlalchemy、pymysql就夠了。Linux服務(wù)器上如果自帶Python版本太低建議用源碼編譯安裝新版或者直接裝miniconda管理虛擬環(huán)境省去一堆依賴問題。登錄接口先從簡單的開始。小程序傳入code后端拿到code調(diào)微信接口換openid再生成自己的token。from fastapi import FastAPI, Depends, HTTPException import httpx, secrets from datetime import datetime from sqlalchemy.orm import Session app FastAPI() # 假設(shè)已配置微信小程序 appid, secret WX_APPID your_appid WX_SECRET your_secret app.post(/api/login) async def login(data: dict): code data.get(code) async with httpx.AsyncClient() as client: resp await client.get( https://api.weixin.qq.com/sns/jscode2session, params{ appid: WX_APPID, secret: WX_SECRET, js_code: code, grant_type: authorization_code } ) wx_data resp.json() openid wx_data.get(openid) if not openid: raise HTTPException(status_code401, detail微信登錄失敗) # 查詢或創(chuàng)建用戶然后生成 token token secrets.token_hex(16) # 將 openid token 保存到數(shù)據(jù)庫返回 token return {token: token, role: student}真實(shí)的項(xiàng)目里token要把user_id、角色、過期時間一起管理最好存到一張login_token表里每次請求通過token查到用戶。token不要直接存openid的明文關(guān)系在小程序端不然有個人信息泄露的風(fēng)險。預(yù)約接口是重點(diǎn)我們必須保證創(chuàng)建預(yù)約時檢查沖突是原子操作。簡單的方法是用數(shù)據(jù)庫行鎖但更穩(wěn)妥的做法是對預(yù)約記錄表加一個唯一約束讓數(shù)據(jù)庫幫我們擋掉并發(fā)重復(fù)插入。實(shí)際項(xiàng)目中我會在業(yè)務(wù)檢查后再執(zhí)行一次插入插入時如果撞了唯一索引捕獲IntegrityError并返回“該時段已被預(yù)約”。下面是一個簡化示例from sqlalchemy import and_, func from sqlalchemy.exc import IntegrityError app.post(/api/reserve) async def reserve(data: dict, db: Session Depends(get_db)): # 參數(shù): user_id, lab_id, reserve_date, start_period, end_period, people_count lab db.query(Lab).filter(Lab.id data[lab_id]).first() if not lab: raise HTTPException(status_code404, detail實(shí)驗(yàn)室不存在) if not lab.is_open: raise HTTPException(status_code400, detail實(shí)驗(yàn)室未開放預(yù)約) # 檢查課程排課沖突 conflict_course db.query(CourseSchedule).filter( CourseSchedule.lab_id data[lab_id], CourseSchedule.week_day data[week_day], CourseSchedule.start_period data[end_period], CourseSchedule.end_period data[start_period] ).first() if conflict_course: raise HTTPException(status_code400, detail該時段已被實(shí)驗(yàn)課占用) # 檢查普通預(yù)約沖突 conflict_reserve db.query(ReserveRecord).filter( ReserveRecord.lab_id data[lab_id], ReserveRecord.reserve_date data[reserve_date], ReserveRecord.start_period data[end_period], ReserveRecord.end_period data[start_period], ReserveRecord.status.in_([approved, pending]) ).first() if conflict_reserve: raise HTTPException(status_code400, detail該時段已被預(yù)約) record ReserveRecord( user_iddata[user_id], lab_iddata[lab_id], reserve_datedata[reserve_date], start_perioddata[start_period], end_perioddata[end_period], people_countdata[people_count], statusapproved ) db.add(record) try: db.commit() except IntegrityError: db.rollback() raise HTTPException(status_code400, detail手慢了該時段剛被別人預(yù)約) return {id: record.id, status: record.status}代碼里用了一個技巧判斷課程沖突時沒寫死“星期幾等于”而是把week_day也作為篩選條件。這里注意數(shù)據(jù)庫查詢中的區(qū)間重疊判斷要和業(yè)務(wù)需求對應(yīng)跨天、跨節(jié)次的場景要特別測試。如果是晚上20:00到21:00這種按絕對時間存的判斷方式一樣但要把日期和時間拼成一個datetime再比較。3.3 前端小程序關(guān)鍵頁面實(shí)現(xiàn)小程序端代碼分三塊頁面、請求封裝、狀態(tài)管理。頁面用來展示和交互請求封裝統(tǒng)一處理token和錯誤提示狀態(tài)管理保存用戶信息。請求封裝非常重要。我見過很多新手在每個頁面里直接寫wx.request結(jié)果token過期了到處都要改錯誤提示五花八門。建議把請求封裝成一個request.js文件類似下面這樣const BASE_URL https://api.example.com; function request(path, method GET, data {}) { return new Promise((resolve, reject) { wx.request({ url: BASE_URL path, method: method, data: data, header: { Content-Type: application/json, Authorization: wx.getStorageSync(token) || }, success: (res) { if (res.statusCode 200) { resolve(res.data); } else if (res.statusCode 401) { wx.navigateTo({ url: /pages/login/login }); } else { wx.showToast({ title: res.data.detail || 請求失敗, icon: none }); reject(res); } }, fail: (err) { wx.showToast({ title: 網(wǎng)絡(luò)異常, icon: none }); reject(err); } }); }); } module.exports { request };預(yù)約頁面的wxml結(jié)構(gòu)很常規(guī)核心就是日期選擇器、時段選擇、實(shí)驗(yàn)室容量提示、提交按鈕。需要注意的細(xì)節(jié)有兩個第一日期選擇器的范圍要設(shè)置min屬性為今天不能讓學(xué)生約過去的日期第二時段選擇建議用按鈕組而不是picker因?yàn)橐坏┻x擇多個連續(xù)時段picker并不方便。用戶選完時段后前端先算一下本次預(yù)約總共多少節(jié)再連同實(shí)驗(yàn)室容量一起展示減少后端失敗的挫敗感。頁面JS里調(diào)接口也要注意防重復(fù)點(diǎn)擊。把提交按鈕加一個loading狀態(tài)第一次點(diǎn)擊后禁用按鈕直到請求完成否則用戶連點(diǎn)三下會產(chǎn)生三個重復(fù)請求雖然后端有沖突檢查但會給用戶“約了好幾次”的錯覺體驗(yàn)極差。4. 常見問題與排查技巧實(shí)錄4.1 并發(fā)情況下預(yù)約超賣怎么處理這是實(shí)驗(yàn)室預(yù)約系統(tǒng)最容易出的線上事故。兩個學(xué)生同時提交同一個實(shí)驗(yàn)室同一個時段的預(yù)約后端都先查詢了一遍沒有沖突然后同時執(zhí)行插入數(shù)據(jù)庫結(jié)果兩個請求都成功了實(shí)驗(yàn)室被超賣。我在開發(fā)階段就遇到過一次當(dāng)時還以為是前端按鈕沒做防重復(fù)后來一查是并發(fā)問題。解決這個問題的核心思路是查詢和寫入之間必須有隔離性不能靠業(yè)務(wù)代碼的先后順序。最實(shí)踐的做法就是在預(yù)約記錄表上建立針對實(shí)驗(yàn)室、日期、開始節(jié)次、結(jié)束節(jié)次的聯(lián)合約束但因?yàn)闀r間區(qū)間不是枚舉唯一索引比較難設(shè)計(jì)。退而求其次可以用數(shù)據(jù)庫的行級鎖。在SQLAlchemy里通過with_for_update()鎖定實(shí)驗(yàn)室記錄行保證同一時間只有一個事務(wù)能檢查并插入預(yù)約記錄。如果項(xiàng)目并發(fā)量確實(shí)大比如全校幾千人同時搶晚上7點(diǎn)到9點(diǎn)的實(shí)驗(yàn)室那就得上消息隊(duì)列或者Redis分布式鎖。但坦白說這種校內(nèi)預(yù)約系統(tǒng)做到這個程度有點(diǎn)過度設(shè)計(jì)了。我建議先把數(shù)據(jù)庫事務(wù)和行鎖做好已經(jīng)能覆蓋絕大多數(shù)場景。并發(fā)問題的排查也簡單高并發(fā)壓測時觀察日志里有沒有同時插入成功的情況。4.2 微信登錄時session_key和token搞混微信小程序登錄流程中主流的說法是通過wx.login拿到code后端用code換openid和session_key。很多新手會把session_key存在自己的服務(wù)器然后拿來當(dāng)身份憑證這是不對的。session_key是微信會話密鑰用來解密用戶數(shù)據(jù)不應(yīng)該服務(wù)于業(yè)務(wù)系統(tǒng)的會話管理。正確做法是后端用code換到openid之后生成一個自己的token比如用secrets.token_hex(16)生成隨機(jī)字符串關(guān)聯(lián)user_id設(shè)置7天過期時間存數(shù)據(jù)庫。小程序端以后請求都帶這個token后端通過查詢token表驗(yàn)明正身。不要把openid在接口返回里暴露給小程序端雖然openid本身不能直接干壞事但它屬于用戶敏感信息接口盡量只返回用戶id和昵稱等業(yè)務(wù)必要字段。在實(shí)際開發(fā)中微信官方對js_code2session接口的調(diào)用頻率有限制如果登錄頻繁可能會有臨時接口報錯。這種情況可以做一個簡單的本機(jī)token緩存小程序啟動時如果本地已有未過期的token就直接使用不再重復(fù)wx.login只有后端返回401才重新走登錄流程。4.3 時間重疊判斷的邊界問題時間重疊判斷這個代碼寫出來只有一行但邊界問題特別多。第一次寫這個系統(tǒng)的時候我用的是“開始時間小于新結(jié)束時間且結(jié)束時間大于新開始時間”然后測試時發(fā)現(xiàn)課程表里的“9月30日”和預(yù)約表的“2025-09-30”格式不一致直接查不中。后來約定所有日期都存成date類型節(jié)次都用整數(shù)才算是徹底解決。另一個邊界問題是跨天實(shí)驗(yàn)。比如晚上實(shí)驗(yàn)室通宵開放學(xué)生預(yù)約了22:00到第二天06:00如果按“日期”作為查詢條件這條預(yù)約在第二天的記錄里就查不到導(dǎo)致第二天白天的時段被重復(fù)預(yù)約。解決辦法是預(yù)約表里存“開始時間”和“結(jié)束時間”完整datetime查詢時用兩個時間字段做區(qū)間重疊判斷而不是用日期加節(jié)次的拼接方式。如果堅(jiān)持用節(jié)次模型那就要允許結(jié)束節(jié)次大于當(dāng)天總節(jié)次并且日期順延一天這會引入很多麻煩。還有單雙周排課的問題。很多高校實(shí)驗(yàn)課是單周或雙周輪換如果課程排課表不保存“單雙周標(biāo)記”會導(dǎo)致隔周一次的實(shí)驗(yàn)課在另一周被錯誤占用。我的建議是排課表里加一個week_type字段取值為all/odd/even檢查時間沖突時把當(dāng)前預(yù)約日期對應(yīng)的教學(xué)周和week_type比對一下只有匹配才視為沖突。4.4 小程序真機(jī)預(yù)覽和HTTPS域名配置這個問題幾乎每隔幾天就會有人來問我。小程序開發(fā)工具里接口調(diào)試得好好的一上真機(jī)就白屏、請求全部失敗原因基本都是域名沒配好。小程序正式環(huán)境要求所有請求必須是HTTPS而且域名要從小程序后臺的“request合法域名”里提前配置。如果你只是本地開發(fā)可以在開發(fā)工具里勾選“不校驗(yàn)合法域名”但真機(jī)上如果還跑localhost那是連不上的因?yàn)槭謾C(jī)訪問不到你電腦上的服務(wù)需要后端部署到局域網(wǎng)可訪問的IP或者云服務(wù)器。我個人的經(jīng)驗(yàn)是開發(fā)階段直接用內(nèi)網(wǎng)穿透工具或者部署到一臺云服務(wù)器上測試不要等到上線再配域名。后端接口路徑和前端BASE_URL要一致避免出現(xiàn)開發(fā)環(huán)境是http、線上環(huán)境是https導(dǎo)致請求被攔截的情況。部署后端時用Nginx把Python服務(wù)反代到443端口配好SSL證書小程序那邊才能順暢請求。再提醒一個容易忽略的點(diǎn)小程序的request并發(fā)限制是10個。如果頁面初始化時同時發(fā)送實(shí)驗(yàn)室列表、課程表、用戶信息好幾個請求數(shù)量不多沒問題但如果后續(xù)功能膨脹了注意合并接口或者做請求隊(duì)列不然偶爾會出現(xiàn)高并發(fā)時的請求失敗。4.5 Python環(huán)境與依賴安裝的坑Python環(huán)境的坑大多是版本不一致造成的。有的服務(wù)器自帶的Python是3.6但FastAPI要求3.7以上SQLAlchemy新版也可能不兼容Python 3.6所以裝好依賴后第一步就是檢查版本。建議用虛擬環(huán)境管理項(xiàng)目依賴簡單說就是在項(xiàng)目根目錄執(zhí)行python3 -m venv venv然后source venv/bin/activate激活再pip install。這樣不會污染系統(tǒng)Python換服務(wù)器時也能靠requirements.txt一鍵恢復(fù)環(huán)境。很多新手遇到的問題是這樣本地運(yùn)行好好的上傳服務(wù)器后報ModuleNotFoundError。原因基本是忘記執(zhí)行pip install -r requirements.txt或者requirements.txt沒有把依賴寫全。生成requirements.txt最穩(wěn)妥的方法是pip freeze但要注意它會把無關(guān)的全局依賴也帶進(jìn)去所以更推薦手動維護(hù)一個干凈的依賴清單只寫fastapi、uvicorn、sqlalchemy、pymysql、httpx這幾個核心包帶上版本號。Linux系統(tǒng)上安裝Python如果使用源碼編譯千萬別忘了先安裝libssl-dev和libffi-dev否則Python編譯出來缺少ssl模塊后面調(diào)用微信HTTPS接口會直接報錯。另外pip下載慢的問題可以臨時指定清華鏡像源pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名。這些都是老生常談但每屆學(xué)生都會踩一遍。5. 一些額外的實(shí)踐經(jīng)驗(yàn)做這個系統(tǒng)最值錢的不是代碼本身而是把一個真實(shí)業(yè)務(wù)抽象成一套可以被驗(yàn)證的邏輯。我開發(fā)的時候把大部分時間花在編寫沖突規(guī)則和測試邊界條件上反而頁面布局這些只花了兩天。如果你也在做類似項(xiàng)目我強(qiáng)烈建議先畫出完整的業(yè)務(wù)流程圖把每種角色、每個狀態(tài)、每個異常分支都標(biāo)出來再開始寫代碼。給即將上線的小項(xiàng)目三個具體建議第一先從一間實(shí)驗(yàn)室試運(yùn)行管理員手工檢查一天確認(rèn)預(yù)約準(zhǔn)確率再放開所有實(shí)驗(yàn)室第二預(yù)約成功之后一定要有消息通知最簡單的是在小程序里做個“我的預(yù)約”列表學(xué)生自己來看結(jié)果復(fù)雜點(diǎn)的可以用訂閱消息推送第三建立爽約懲罰機(jī)制否則過兩個月就會有人惡意占坑。信用分字段我已經(jīng)放在用戶表里了后續(xù)就是每次爽約扣分、定時解禁的簡單邏輯。如果后續(xù)想擴(kuò)展可以考慮把實(shí)驗(yàn)報告提交、設(shè)備借用、耗材領(lǐng)用都掛在預(yù)約單下一個實(shí)驗(yàn)室管理系統(tǒng)就慢慢成形了。但別急著一次做完先讓預(yù)約排課跑穩(wěn)定這個核心穩(wěn)定其他功能都是加分項(xiàng)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
啪啪视频免费在线观看| 日韩性爱播放| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 日本精品人妻少妇一区二区| 黄片免费久久久久久久| 亚洲伊人久久综合97| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 啊啊啊啊啊在线观看网址 | 国产无码一二三区| 天天躁日日躁xxxxx| 久久黄黄黄| 欧美 日韩 另类 亚洲| 色婷婷狠狠| 四虎影视永久在线免费| 国产精品亚洲色婷婷久久久| 国产人妖的免费的视频| 日本人妻中文字幕| 国产三级日产三级韩国三级| 亚洲欧美自拍偷拍| 999岛国大片| 日韩性爱视频在线免费观看| 翔田千里AV无码秘 三区| 久久久96精品| 国产操逼网站亚洲一级黄色| 好属操| 十八禁一区二区无码观看| 啊啊啊啊啊操我视频| 久久综合乱子伦国产免费| AV 少妇 人妻 偷拍| 亚洲福利中文字幕在线| 免费毛片在线播放| 欧美日综合| 91日本在线观看| 久久的网站啊啊啊啊啊| 日韩不卡a级视频专区| 国产乱伦亚洲| 另类小说五月天| 睡产熟女乱伦| 久久久97| 欧美老妇女内射网址| 熟妇高潮一区二区免费视频| 淫色网综合| 嗯啊免费视频| 欧色综合| 97在线欧| 偷拍自拍在线视频观看| 在线视频日韩欧美国产| 久久做97| 少妇高潮一区二区三区在线| 丝袜人妻av一区二区| 久久精品一区二区一8| 超碰免费人妻在线| 男女做爰猛烈动高潮A片免费应用| 成人26uuu| 国产乱伦亚洲色图高清无码| 91人妻做a观看视频| 中文字幕奈奈美被公侵犯| 探花在线免费观看视频国产一区| 人人操人人大香蕉| 中文伊人大香蕉视频| 久久AV无码1区2区3区| 亚洲精品不卡一二三区| 久久久久久97| 六月激情网| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 亚洲操人| 免费视频无码| 男啪女色黄无遮挡免费观看| 国产亚洲精品美女久久久| 国产精品区在线12p| 囯产乱伦一区二区三女 | 精品一区二区啪啪啪| 色女99一级片在线观看| 久久久天美| 欧美少妇色图| 操逼网免费无码视频| 天美精品av| 久草资源在线视频官方总站日韩丝袜美腿 | 97香蕉人人乳| 久久久久久久性爱| 人人扣人人操| 久久精品99| TS人妖另类精品视频系列| 国产精品一级毛片不卡视| 久久久婷| 色婷婷一区二区三区久久午夜成人不| 中文字幕乱码人妻二区三区| 国产91美女高潮| 2026国产精品视频| 特级特黄一级毛片免费| 欧美1727免费观看视频| 亚洲脚交| av天堂5| 爱干爱射网啊啊啊| 清纯唯美第一页| 国产成人99久久亚洲综合| 爱我干综合| 欧美 亚洲 综合 制服 另类| 中国操逼无码| 久久综合日韩亚洲欧美| 成人毛片免费| 中文字幕91综合| 天操天操夜操夜月月年年操操| 午夜美女福利视频| 麻豆精品久久久久久久| 超碰精品97| 久久久精品视频免费观看| 丝袜内射| 国产午夜精品在线观看| 野狼激情网| 天天干夜夜操一区二区| 亚洲二区精品在线观看| 日韩性爱1级片视频| 性色av网站| 亚洲精品国产日韩无码AV永久免| 啊啊啊啊啊在线观看网址 | 五月天婷婷欧美三区| 青青欧洲黑| 在线视频五十市| 欧美极度丰满熟妇hd| 亚洲天堂男人网| 蜜臀99久久国产| 国产精品自在线发布| 欧美一二三级精品在线| 少妇毛片久久| 人人干人人操人人..com| 97一区二区三区视频| 亚洲成人在线高清| 性爱AV天堂| 国产一区二区三三视频| 91天天爱| 青青草玖玖爱| 中文久久久| 精品一区二区三区蜜桃臀赵总 | 4tube欧美女厕所| 99久久网站| 男人的天堂1024| 骚货人妻偷情自拍在线视频| 91网九色蝌蚪操熟女| 色婷婷综合久久久久中文一区二区 | 亚洲性爱乱操x| 青青草国产一区二区三区| 色黄污美女啪啪啪免费网站| 99re公开精品免费视频| 国产精品96| 国产成人手机视频激情| 91超碰碰在线| 夜夜操2028| 精品无码一区二区三区| 国产熟码AV| 国产熟女少妇一区| 欧美性爱免费短视频| 青青操视频在线| 99亚洲天堂| 久久双插| 五十路一区无码| 在线视频一区二区传媒| 福利在线黄片| 操高情无码| 精品国产AV一区天美传媒| 麻豆久久久久久久久丝袜 | 69少妇一区二区| 91在线国产后入风骚翘臀美女素人| 亚洲第一综合| 97国产高清视频在线观看| 蜜臀久久久99久久久久 | 中文字幕二区日韩天堂| 淫荡熟女乱伦网| 粉嫩av一区二区三区天美传媒 | 日韩视频中文字幕| 欧美在线第五页| 亚殴在线| 久久久久9999| 精品伊人久久久大香线蕉小说| 九九九九精品| 国产成人五月天丁香花| 美女91av| 亚洲色图国产另类| 精品无码一二三四区| 五月丁香综合激情| 人成午夜免费大片| 国产探花精品在线| 国内精品a| 日韩三级伦理中文字幕| 欧美激情精品| 欧美日韩操逼动图| 中文字幕第9页萱萱影音先锋| 色爱综合网欧美| www.激情| 玖玖爱在线视频免费观看| 欧美疯狂做爰xxxx| 午夜男人av| 精品国产Av无码久久久亚洲| 尤物网址| www.色吧5.com| 少妇高潮流水av免费| 91中文字幕| …中文字幕亚洲乱,97人妻无码费视…| 超碰97资源大奶| 亚洲成人av色网| 东京热免费视频| 国产亚洲色婷婷久久99精品91葵花宝典| 91狠狠| 亚洲精品欧洲色| www.acm成人黄色毛片| 亚洲中文字幕av| 欧美日韩人妻婷婷一区| 熟女精品一区二区三区| 99热在线观看| 日韩偷拍色图| 国产美女91视频| 蜜桃视频一区二区三区在线观看| 亚洲色图a| 国产极品999| 少妇一线天久久久久久| 在线啊啊啊啊| 午夜毛片高清免费不卡| 欧美激情一| 人妻熟妇一区二区三区| 91激情| 久久久久久久久久va| 热无码中文亚洲H一道本一区二区| 日韩国产精品人妻无码久久久| 97精品一区二区三区免费| 超碰97国产欧美| 中文字幕天堂在线| 密乳无码| 国产精品三级视频网站| 国产精品高朝久久久久久久| 操逼网免费无码视频| 手机看片1024你懂的国产| 97国产成人精品免费视频| 男人的天堂一区三区| 日韩中文字幕二区| 双插在线| 97国产中文| 国产欧美精选自拍一区| av午夜玫瑰| 熟女熟妇伦久久影院毛片一区二区| 中文字幕天堂在线| 男女啊啊啊啊啊| 啊啊啊啊啊啊好湿好爽视频| 精彩久久中文| 色综合久久av| 操人91| 欧美日韩淫加| 青青草国产一区二区三区| 国产精品剧情| 国产九九九九九九九九| 九色 人妻 大香蕉| 亚洲在线观看| www.yeyecao| 黄aaaaaaaaaaaaaaaaaa色网站| 五月天开心网| 天天日天天干天天摸天天操| 日本免费一级AAA大片器| 91久久久久免| 天天影视91看看| 四虎国产精品永久在线囯在线| 婷婷五月天激情网| 日韩传媒在线| 啪啪综合网| 亚洲一区二区三区AV无码 | 欧美亚洲高清晰| 久久在线观看免费视频| 99热在线观看| 欧美成人精品一区二区男人蜜臀| 无码高清少妇久久| 精品久久久久瑟瑟| 少妇三p| 国产尤物AV尤物在线观看不卡| 久久女人视频| 啊啊啊啊啊啊啊啊在线观看| 五月丁香婷婷综合网| 精品妇操一区二区三区| 国产东北女人在线视频| 美女淫穴| 国产成人自拍视频视频| 亚洲男人天堂2013| 亚洲精美粉嫩嫩泬在线观看 | 91美女视频在线观看| a级成人毛片免费视频高清| 宅男午夜在线视频| 久久久国产av美女私房| 日韩伦理视频| 国产极品精品美女视频| 日韩av色图| 欧美一区二区三区互相| 国产性刺激| TS人妖另类精品视频系列| 一本道综合色图| 好湿好紧视频| 色婷婷丁香五月| 蜜桃久久一区| 色五月激情网| 91人妻在线视频| 蜜臀久久99精品久久久久久久久| 91日韩国产欧美亚洲另类精盘州至城都| 熟女人妻一区二区三区| 午夜视频久久久| 九月婷婷久久| 亚洲天堂精品日韩电影| 精品一区96| 另类亚洲一区二区三区| 人妻在线大香蕉| av一区二区三区四区| 天天综合欧美综合| 亚洲精品无码成人久久久99| 综合性视频99| 好吊妞转入那个网| 999久久久免费精品国产牛牛| 大鸡吧尹人在线| 日本中文熟女视频| 九一综合网| 爽 好舒服 无码刺激久久| 蜜臀va69| 日韩精品.久久精品.AV女优.天美传媒 | 国产黄色影片在线观看| 91超碰丝袜制服| 男人天堂一区二区| 日韩一级性爱无码| 天堂av最新电影网| 久热69九色熟妇97| 日韩性爱1级片视频| 中文字幕人乱码中文字的预防方法| 色yeye成人免费视频| 99热线麻豆 | 亚洲精品蜜桃久久久久久久| 色色色欧美| 国产亚洲福利第一页丝袜| 亚州中文字幕超碰97| 日本在线视频导航| 一本色道综合久久欧美| 天美久久久久| 亚洲综合97| 久久久久久久78| 91丨熟女丨丰满熟女| 99999re| 使劲用力艹少妇视频一区二区| 亚洲精品亚洲人成人网| 久久综合国产精品国产| 麻豆成人影音在线| 97超碰精品成| 91精品丝袜久久久久久无码人妻| 99热这里是精品| 成人av在线播放| 色爱亚洲| 欧美男人的天堂| 中文字幕女同在线| 日韩美脚一区二区网站| 夜夜草网站| 精品国产一区二区三区在线播出| 国产精品夜夜夜| 久久神马影院| 美女露胸露屁股| 国产乱伦一二三区| 欧美天天性| 少妇人妻精品| 欧美少妇人妻| 妺妺跟我一起洗澡没忍住| 人人操人人搞人人草| 欧美精品一区二区少妇免费A片 | 一级黄色性爱A级片| 国产精品伦理| 95自拍视频在线观看| 性综合网| 亚洲色婷婷久久91| 1024久久高清视频| 牛牛aV| 国产精品视频在线观看| 亚洲情色 自拍| 一级黄碟| 欧美一区二区三区成人性生活 | 免费草草草草草视频| 日韩激情视频| 污污污8888| 伊人青青草久久| 欧美久久毛片基地| 加勒比AV网| 60秒试看最爽10分钟网站| 大香蕉AV丝袜| 和协无码影院| 中文字幕人妻色偷偷久久皮| 激情亚洲天堂| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 91丝袜视频在线观看| 99蜜月精品久久| 亚洲图片在线| 超碰九九| 夜夜爽夜夜爽| 久操91视频| 国产日韩区| 日日操丁香五月天| 日韩人妻一区二区精品| 特污免视频| 99啪啪视频| 色天堂综合| 国模91| 一二三四区电影| 亚洲少妇视频| 青娱乐福利99| 福利在线观看一区二区| 婷婷性爱| 在线97在线| 四虎在线观看网站| 91第一页| 成人麻豆av电影网站| 国产伦乱91| 激情一区二区三区在线观看| 熟女天天干| 青青草好吊| 色九久| 欧美日韩国产黄色片| 竹菊影视国产一区二区| 四月丁香婷婷| 99re在线视频| 国产久久久久久| 黄色片一区二区三区四区五区| 51一区二区三区| 婷婷色在线| 干b在线性社区| 女人18精品一区二区三区| 超碰九7免费| www..com操老师| 国产第12页| 成人97人人超碰人人| 校园春色 欧美| 少妇淫妇久久久久久久| 国产精品一级毛片不卡视| 99色婷婷中文字幕乱色| 日韩偷拍色图| 天天综合网亚洲综合网| 丰满人妻区一区二区三| 国产久久av| 99热这里只有精| 大屁股熟女一区二区三区| 男人综合网| 少妇一区二区三区高速| 国产女人高潮视频| 中国亚洲呦女专区| 综合网色| 伊人综合色网| 色97欧美| 亚洲最新中文字幕免费| 蜜桃久久久久久久| 清纯唯美亚洲综合| 国产激情在线观看| 麻豆人妻偷人精品无码视频| 日本精品中文字幕视频| 旡码电影特区| 日日夜夜摸| 色婷婷狠狠| 天操天操夜操夜月操月年年操操| 国产h片在线观看视频| 精品久一区免费| 97欧美资源| 久久人人爽爽人人爽人人片αV| www.四虎在线| 91啦人妻| 久久天天躁日日躁狠狠躁| 蜜臀久久99精品久久久久久| 婷婷色导航| 亚洲狠狠入| 亚洲午夜福利视频| 精品二区三四区五电影 | 嗯嗯嗯啊啊啊操的我好爽| 97欧美综合| 婷婷五月成人| 97国产人人| 国产免费大片| 亚洲精品国产日韩无码AV永久免| 黑丝日韩av丝袜av| 欧美色视频在线| 欧美 亚洲 另类 综合| 操操吧亚洲乱伦视频| 东北女人的毛片| 免费一级性爱久久| 无码九九| 超碰av人人人| 欧美一级A一级a爱片久久| 国产蜜臀精品一区免费尤物| 久久精品一区二区三区四区五区| av在线浏览| 欧美亚洲素人制服精品| 亚洲视频二区| 91九色首页| 日韩欧美日韩| 精品国产国产AV| 亚洲欧美国产成人综合不卡| 色路综合| 国产av白丝| 国产AV色黄看到爽| 人妻日日夜夜精品| 六月丁香啪啪| 99热91| 亚洲欧美情色| 久久久∴| 五月丁香婷婷综合| 日韩性爱啪啪视频| 国产第二页| 任你爽视频| 日韩综合无码一区久久92| 操b网站亚洲无码| 亚欧性爱ab| 欧美综合天天| 俺去啦自拍| 爆乳免费黄网站| 成年女人黄网站| 欧美色九九| 亚洲视频,小说| 爱射综合| 99久久精品无码一区二区毛片免费| 九九九九精品一区| 国产日本熟女顶级一区二区三区视频| 亚洲国产尤物yw在线观看| 欧美综合综合| 91成人久久| 91 丝袜在线| 99re久久| 91足交| 黄色视频特级毛片| 欧美另类自拍 | 今日头条成人一区二区三区四虎精品| 99啪啪视频| 人妻一二三区| 伊人国产成人av网站| 夜色97| 久久夜嗨| 淫色网综合| 人妻AV在线| 国产高清在线观看欧美| 日韩无码视频黄色| 啊啊啊好多水| 久久久久久久久999| 人人摸人人舔一区二区| 国产人妻一区二区三区欧美毛片| 毛片17S| 九九色色| 91丨九色丨东北熟女| 欧亚乱色熟女一区二区| 波多野结衣一级视频| 操逼网站网站| 男女无套 免费网站| 97美日韩视频| 五月天丁香婷婷综合网站| 日韩紧密久久| 亚洲午夜免费狠狠干| 亚洲天堂 视频你懂的| 熟女熟妇一区二区三四区| 久久久天美| 亚洲精品一区二区免费在线观看| 中文字幕88av在线| 色老汉色| 久草婷婷| 96久久久精品| 999熟女精品| 亚洲麻豆18发?| 97超碰总站| 亚拍在线| 超碰97.com| 超碰九九| 91五十路| 日本孕妇一区二区视频操逼免费看| 日骚逼视频| 久久午夜色播影院免费高清| 麻豆天美传媒毛片| 97色网| 亚洲影院无码在线| 亚洲啪AⅤ永久无码| 国产视频一区二区三区在线免费观看 | 久久久精品91八戒| 国产av波波国产精品| 亚洲中文一区二区三区| 操屄不卡视频| 青青草操逼逼视频| 国产乱婷婷精品二区三区| 亚洲限制级在线| 中文一区在线日| 亚洲文学偷乱拍啪啪啪啪| 91天天爽| 中文字幕av亚洲精品| 7777奇米影视久久| 国产精品久久久久久片| 五月天激情小说网| 96AV久久久| Julia Annxxxxx| 97碰碰色| 国产精品亚洲色婷婷久久久| 操逼操逼视频操逼| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 亚洲色天堂九9| 国产精品天堂| 性爱视频无打码在线观看| 乱伦熟女区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 啪啪啪东京| 蜜乳AV色欲AVAV无码| 怡红院视频在线| 男人网站婷婷| 欧美高清色| 自拍视频一区在线观看| 一区二区三区在线资源| 骚女高跟AV在线| 人妻铁牛TV| 岛国艾薇凹凸视频天堂| 欧美色偷拍 | 日韩精品 视频一区二区| 狠狠干狠狠干| 午夜精品久久久99热蜜桃的功能特点| 少妇淫妇久久久久久久| yellow网站免费观看日韩高清无码| 狠狠干综合| 国产一区二区三区,在线观看观看| 欧美色干| 5252色欧美在线| 五月天成人综合| 亚洲色香| 亚洲日韩人妻中文字幕一区| 99久久婷婷国产综合| 97一区二区三区视频| 中出欧美| 婷婷伊人綜合中文字幕| 日韩色女精品| 国产9 9在线 | 亚洲| 激情第四色| 亚州精品人妻一二三区| 国产日逼视频| 欧洲亚洲人妻无码中字久久三区四区 | 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 狠狠躁AV| 欧美色图 色综合图| 日本亚洲熟女视频| 亚洲宗合网| AV天堂国产| 熟妇人妻精品一区二区视频色欲| 中文在线视频| 国产精品制服丝袜清纯唯美| 香蕉久久精品| 91精品久久久久五月天精品| 日产中文字幕2020| 色综合V| 91色综合激情| 日韩黄色片子| 九九九九九九九九九五码| 2018天天日天天日| 综合亚洲情色| 2017人人操,人人摸| 91殴美大片| 黄色操人| 久久一本大香蕉 | 97日视频| 天天搞在线综合网| 欧美中字不卡| 成人午夜视频免费播放| 97鸡把在线视频| 亚洲限制级| 加勒比av官网在线| 亚洲 欧美 手机在线观看| 色偷偷超碰亚洲| 天天干天天狼在线视频| 天美传媒精品久久视频| 中文字幕在线观看视频www| 中文字幕一区二区三区四五区| 成人片在线播放| 亚洲久9| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | av天天在线观看| 国产午夜在线观看| 国产乱人妻精品入口| 国产三级多多影院2022国产AA一级毛片无码| 夜夜综合| 国产97色在线| 亚洲欧美第一页| 久久久不卡区一区二区三区久久久| 久久这里是精品| 毛片99-全集电影手机免费观看完整-B029AV | 9999免费精彩视频| 操逼操逼操| 亚洲成人妻日韩在线| 在线性黄高清免费视频| 精品69网| 亚洲精品美女操逼| 五月天精品| 欧美日韩日产免费网站看| 久久久熟女一区| 天天欧美色| 午夜久久无码1000合集| 成人久久久| 亚洲精品白丝| 91精品国产综合久久久蜜臀| 在线国产福利网址导航| 日韩15p| 女人高潮抽搐喷水视频网站| 中文字幕成人乱码熟女精品国50| 日韩无码一级黄色av片| 超碰 另类 欧美| 久久久久免费看少妇A片特黄| 蜜桃午夜视频一区二区| 欧美在线色图| 超碰人人在线| 国产一进一出视频网站| 2017亚洲天堂| 尤物视频新赏网鲜网色诱网| 九九久久久九九| 亚洲精品三| 欧美一级久久久丰满| 色香av| 国产成人精品午夜福利| 天天干一区二区| 欧美在线干| 91艹B视频| 午夜男女爽爽大片免费观看| 久久欧美激情| 蜜桃臀久久| 啊啊啊在线观看免费视频| 啊啊啊啊嗯嗯嗯用力好爽 | 国内毛片无遮挡国产| 91老司机视频| 东北女人性交| 日韩专区久久久| 久久m| 国产精品色哟哟| 日本美女性生活久久久久久久| 欧美性爱视频免费一区一A| 91丨九色丨国产丨人妻在线| 天天激清| 国产自制av蜜乳| 啊啊啊啊操死我| 国产国产亚洲一二三久久| 日本黄色XXX| 久久久免费懂色| 国产亚洲色婷婷99精品91| 91暧暧| 中文字幕精品人妻丝袜| 91女在线观看| 熟女人妻av在线资源,黄色的资源| 欧美日韩第一页| 伊人色综合网电影| 2018色综合天天操| 120分钟婬片免费看| WWW黄片COM| 自偷自拍的亚洲视频| 日韩精品一区二区三区色欲| 亚洲各类熟们中文字幕| 天堂8在线新版官网| 色综合久| 大香蕉伊人久久| 久久精品一区二区三区不卡| 夜夜肏2021| 富二代亚洲精品99| 78p欧美| 男生女生啊啊啊啊| 久久国语| 9ⅰ久久久天天| chaopen97久久| 日本在线999| 中文字幕熟女人妻丝袜| 欧美夜夜草视频| 国产精品干干干| 亚州操逼网| 一区二区三区精品黑丝白丝酒店对鸡 | 青青草丝袜在线视频| 久久精品美女一区| 色爽爽文学| 欧美激情高清性猛交| 婷婷国产精品一区二区| 91骚熟女| 国产AV色黄看到爽| 亚洲欧美日韩夜夜| 国产熟女少妇一区| 青青草色情网站视频| 久久久91福利姬| 极品色综合| 91精品微拍福利| 中文字幕日本久久| 欧美亚洲激情小说| 综合久久99亚洲人妻中文在线| 乱操9999| 97无码视频在线播放| 欧美日本久久精品一区| 99在线免费公开视频| 免费久久精品麻豆一区二区av| 97精品国产97久久久久久免费| 蜜臀aV午夜一区二区三区| 亚洲 无码 偷拍| 日韩一级片| 九热视频| 精品人妻一区二区三区-国产| 九九这里只有精品| 天天日天天搞天天干| 校园春色之综合网| 又大又大又大又粗爽高潮观看| 5252色欧美在线男人的天堂| 97超碰无码网| 欧美淫乱视频| 国产 亚洲 一二三四| h无码动漫在线观看| 亚洲色诱惑| 丝袜亚洲综合| 久久一区二区高清免费| 97视频900| 天天综合网1| 亚洲天天更新| 免费一级毛片在线视频观看| 日韩精品人妻系列无码天堂| 嗯嗯不要 视频| 亚洲色系另类精品国产| 91爱综合| 青青草公开在线免费不卡视频| 国产高清精品一区二区三区毛片| 日日狠狠久久偷偷色综合免费| 91精品免费| 国产在线激情视频| 超碰在线974| 91人人| 香蕉久久国产AV一区二区| 91高潮喷水美女| 国产一级137片内射麻豆| 插入综合网| 亚洲视频精选| 亚洲超碰在线| 一本一道久久综合久久| 国产www色在线观看| 九九九九日本 | www99热| 久久中文字幕女同性恋一区| AV一区观看| 久久水蜜臀亚洲AV无码精品| 亚洲乱码精品一区二区| 视频国产精品未满十八禁止在线观看| 99综合视频一体| 99热线麻豆| 精品在线观看视频在线| 是还免费视频1727我| 亚洲激情综合另类男同| 久久一二三级一一一| 日韩国产精品人妻无码久久久| 亚洲黑丝在线| 极品色| 精品国产乱码久久久久久影片| 97AV在线观看| 亚洲情色第一页| 久久大黄片| 国产13区| 91精品久久久| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 精品一区96| 熟女熟妇一区二区三区视频| 国产精品一区午夜福利| AV色五月天| 国产a级午夜毛片| 97ai亚洲| 电影69乱码96| 中国操逼无码| A男人的天堂| 国产黄色av大片网站| 后入人妻无码| 偷拍 亚洲| 五月天色图影视| 免费观看成人www精品视频| 国产亚卅97| 久久东京伊人一本到鬼色| 一区二区三区 丝袜 高跟 美腿| 少妇淫妇久久久久久久| 人妻99p| 欧美一级久久久久久久大片动画| 一区二区三区视频在线观看免费| 蜜臀va69| 色噜噜国产在线| 日韩av不卡在线看| 91精品在线播放| 欧美色棕合| 日韩性爱视频在线免费观看 | 看全色黄大色大片免费视频| 日夜久久久九九九久| 日韩色| 亚洲久久久久| 久久夜夜夜| 伊人AAA| 国产成人无码a| 欧美少妇高潮| 欧美激情欧美精品| 中文字幕jul-617人妻熟女| 夜夜高潮夜夜爽夜夜爱爱一区| 男人天堂网址| 人妻丝袜无 码视频专区| 久久国产AⅤ| 国产夜夜艹| 婷婷三区| 欧美一级做a爰片免费视频| 啊啊啊啊网站| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 黑人天8A∨高清网站| 330dv亚洲成年视频网| 夜夜欧美| 日韩精品操少妇| 婷婷五月天伊人| av天堂精品久久| 玖玖久久久| 少妇内射视频| 麻豆久久久久久久久丝袜| 亚洲无线码一区国产欧美国| jizz啪啪| 午夜αv| 久久中文字幕女同性恋一区| 91欧美成人色站| 久久麻豆一区二区| 97任你吞精| 天天插夜夜操| 中文字幕丰满人妻日本| 尤物视频新赏网鲜网色诱网| 日韩精品怡红院| 超碰色中文| 欧美亚洲综合色| 免费一级视频特黄色大片| 久久riav中文精品| 在线岛国新天堂8| 试看日韩黄片| 亚洲风情在线观看| 97在线观看视频| 丝袜高跟澳门91视频| 久久久久久波多野吉衣高潮| 天天日日舔舔| 超碰亚洲欧美日韩无| 91蜜桃婷婷狠狠久久综合9色| 国产精品探花视频| 欧美一级A片不卡视频。| 都市久久精品激情亚洲| 成 人 A V免费视频在线观看| 欧美劲爆第一页| 60秒不遮不挡| 97K超碰在线| 欧美激情在线观看视频| 久操电影网| 99久久久| 91天堂| 啊啊啊免费| 天天综合色| 欧美亚州色的图| 精品久久視頻在线| 国产精品亚洲美女久久久久| 91人妻素女| 操逼视频免费日韩无码| 99re公开精品免费视频 | 男人天堂资源| 亚洲国产av中文字幕久久| 国产欧美后入| 色香阁在线| 百度百度日本操逼| 天天在线91| 高清不卡 中文 人妻| 97国产精品久久久久| 五月天精品| 美女久久久久久久久久久| 偷拍亚洲| 岛国1区2区3区在线观看| 久久久久久99AV无码免费网站| 日本熟女不卡视频| 日本免费中文字幕在线| 成人无码影片视频在线| 婷婷丁香五月激情啪啪| 五月婷婷六月激情| 亚洲美欧999| 97爱b| aV中文麻| 巨爆乳一区二区爆乳区| 99久久久久久久久| 天天爽天天干| 欧美大香蕉97| 免费精品AB| 毛片一区二区| 国产成年免费大片黄在线观看| 欧美性爱伊人| 国模限制级电影| 精品成人女人久久| 91老司机视频| 国产综合在线视频网站| 久久男女激情视频网站| 亚洲 91 在线| 爱妻综合网| 欧美天天综合网| 青青伊人这里只有精品| 91国产精品在线看| 桃色人妻在线视频| 亚洲交性| 熟女五十路一区二区三| 日本大片日本一区二区免费高清| 日韩三级在线观看mp4| 国产suv精品一区| 国产亚洲深夜激情| 99精品久久| 久久久久921| 91精品国产91久久青草| 亚洲一区二区三区欧美日韩| 射丝袜高跟鞋99| 91 亚欧| 高清国产性猛交xxxx乱大交| 久久综合九九| 黄色一区三区| 亚洲成人精品在线一区| 一级黄色影片| 日韩八十路老熟女| 国产美女口爆吞精视频| 99久久99久久综合| 亚洲性高潮| 中文字幕在线观看网址| 亚洲第一精品在线视频 | 亚州欧美综合| 在线一道啪| 亚洲精品1区| 亚欧无码在线| 日韩色香| 天天干天天狼在线视频| 二色av| 很很热性爱视频| 大香蕉宅男伊人| 日本欧美中文字幕| 岛国片在线观看视频亚洲| 亚洲97p| 日韩AV无码网站| 2011国产精品| 精品国产99999| 日本在线不卡v二区| 60秒免费小视频| 欧美操人视频| 99爱久久视频频| 蜜臀久久99精品久久久| 伊人五月天| henhen91| 97人人射| 97在线视频网站| 亚洲综合激情五月久久| 婷婷人妻激情| 久操大香蕉| 精人妻一区二区三区| 久久曰曰| 色区97| 青草视频在线看看看看看看看看看| 超碰九九| 丁香五月综合| 啊啊啊免费| 狠狠 91| 日日爱99| 一区二区三区四区姦女| 日韩免费福利在线观看| 欧美无圣光在线| 人人玩人人添人人澡免费| 一及黄久一点| 日本免费人成视频播放120秒| 日韩啪啪啪视频| 中文字幕91页| 青青青草原| 亚洲久热| 熟妇乱伦一区二区| 69视频福利导航| 伊人久久大香线蕉无码| 欧美色图97| 思思热在线| 欧美片第一页| 天堂射| 日本日逼视频网| 欧美97爱| 久久綜合很很很| 黑人嘿嘿嘿超爽免费视频| 91N综合网| 日韩女优在线| 超碰成人公开| 久久97视频| 亚洲欲色9532548967一区| 99亚洲国产精品色一区二区三区| 日本999精品| 久久露脸国产老熟女| 亚洲天堂久久久久久粉红视频| 性欧美天天| 亚洲免费人妻在| 99re免费| 亚洲色图自拍| 亚州少妇| 污污汅18禁网站在线永久免费观看| 久久亚州大香蕉| 神马久久久久眼| 国岛片视频| 97在线免费| 欧美青青草视频| 欧美美女自慰一区二区三区| 家庭乱伦国产| 日本大香蕉综合网| 色操逼网| 五月天综合| 亚洲另类综合欧美| 天天α片| 国产剧情在线| 激情综合网五月婷婷五月天| 看日韩美女二区三区免费操逼视频 | 青青操青娱乐| 欧美色交| 国产精品熟女一区二区三区| 精品人妻中文字幕4399| 大香蕉乱伦视频网| 久久久久密臀一区二区| AV电影在线播放| 99久国产精品午夜性色福利| 超碰九九| 久久久久久久久久久999| 人妻嗯啊啊在线播放| 日韩成人性爱AV| 亚洲乱码精品一区二区| 成人精品久久| 九九国产| 成人综合网 欧美| 亚洲中文字幕97久久精品少妇| 中文字幕日韩人妻视频一区二区三区| 亚州性9| 日日干日日摸| 男人天堂免费| 亚洲少妇色图自慰直播| 欧美亚洲国内自拍| 99精品久久| 日韩性爱小视频在线观看| 久久受www免费人成| 中文字幕欧美日韩三级| 久久大香蕉97| 综合网亚洲1| 制服中出中文人人精品| 在线综合 亚洲 欧美中文字幕| 超踫中文字幕| 色综合99| 99色在线视频| 亚洲 国产 精品一区| 午夜乱轮操逼视频免费看| 丁香六月婷| 久久国产在线一区二区| 91精品丝袜久久久久久| 9.1小视频| 欧美综合色综合| 四虎免费视频| 人妻激情在线视频| 国产偷人妻精品一区二区在线| 天天综合网在线| 96精品在线| 人妻熟女一区二区三区视频| 蜜臀无码一区二区| 欧美国产操逼| 国产偷人妻精品一区二区在线| 欧美熟妇操操视频| 97se综合网| 久久夜嗨| 国产视频大全| 日本性一区| 噜噜瑟| 欧美性性性| 亚洲天天更新| 日本人妻最新在线中| 中文字幕第9页萱萱影音先锋| V A在线| 欧美自拍偷拍综合图片| 欧美一级特黄淫片在线观看| 377p欧洲日本亚洲大胆| 欧美十八禁网站| 婷婷久久五月|