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

ARTICLE DETAIL

資訊詳情

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

ThinkPHP+uniapp上門預(yù)約源碼:從部署到訂單并發(fā)控制實戰(zhàn)

ThinkPHP+uniapp上門預(yù)約源碼:從部署到訂單并發(fā)控制實戰(zhàn) 簡介面向同城家政、上門按摩等本地生活服務(wù)場景的預(yù)約系統(tǒng)完整源碼后端基于ThinkPHP與FastAdmin框架前端采用Uniapp實現(xiàn)微信H5和小程序端適合具備PHP基礎(chǔ)、希望快速搭建可商用預(yù)約平臺的開發(fā)者或創(chuàng)業(yè)團隊。系統(tǒng)已完整跑通并通過測試包內(nèi)包含公眾號通知模塊、后端主程序、前端Uniapp源碼、數(shù)據(jù)庫SQL腳本及通知音頻文件運行環(huán)境為LinuxNginxphp7.2mysql5.6需安裝fileinfo與redis擴展H5屬于公眾號H5須在微信內(nèi)訪問并配合認證服務(wù)號、微信支付、小程序賬號完成部署。資源共2000個文件以JavaScript、Vue組件、Markdown文檔為主輔以JSON、HTML、CSS等配置樣式文件以及SQL、Python輔助腳本整體66.31MB目錄按功能模塊劃分便于快速定位與二次開發(fā)。已有255人學習下載參照包內(nèi)說明即可完成環(huán)境搭建、支付與服務(wù)號配置明顯降低從零開發(fā)聯(lián)調(diào)的踩坑成本。1. 為什么一套thinkphpuniapp的上門預(yù)約源碼能把三個月工期壓到兩周接到一個上門家政按摩的需求時多數(shù)團隊的第一反應(yīng)是拆端用戶端一個小程序技師端一個微信小程序后臺一個管理系統(tǒng)再來一套H5做分享四端聯(lián)動光聯(lián)調(diào)就得一個月。而thinkphpmysqluniappfastadminuniapp這套組合的思路是后端只有一份PHP負責接口和后臺前端只有一份uniapp代碼同時編譯成H5、微信小程序和App。后臺管理用fastadmin二次開發(fā)RBAC權(quán)限、菜單管理、數(shù)據(jù)表格CRUD這些重復(fù)勞動直接點出來用。也就是說你真正要寫的只有業(yè)務(wù)層的預(yù)約、派單、支付回調(diào)、結(jié)算這幾個模塊。這個方案適合的正是中小本地生活團隊、接外包的獨立開發(fā)者以及想用最小成本快速驗證同城上門模式的初創(chuàng)團隊。它不追求架構(gòu)上的炫技追求的是從拿源碼到跑通首單的速度。2. 選型邏輯這套技術(shù)組合憑什么能扛住上門預(yù)約業(yè)務(wù)2.1 thinkphpfastadmin為什么還是上門預(yù)約類項目的主力選型上門預(yù)約系統(tǒng)這類項目核心業(yè)務(wù)是訂單而訂單系統(tǒng)的首要要求是開發(fā)快、能維護、招人容易。thinkphp在國內(nèi)中小型項目里的存量非常大中文文檔和社區(qū)問答足夠覆蓋開發(fā)中遇到的絕大多數(shù)問題。對這個場景來說生態(tài)比性能重要——你招一個PHP開發(fā)大概率不用從零教框架你在搜索引擎里搜一個問題大概率能直接搜到別人踩過的坑。這就是為什么很多同城服務(wù)源碼、外賣源碼、預(yù)約源碼都在thinkphp里做市場已經(jīng)用腳投票了。fastadmin則是建立在thinkphp之上的后臺開發(fā)框架。它解決的痛點和上門預(yù)約項目高度相關(guān)后臺要管理用戶、技師、訂單、服務(wù)項目、優(yōu)惠券、提現(xiàn)申請……這些本質(zhì)上都是數(shù)據(jù)表格。fastadmin提供了一鍵生成CRUD的功能你在數(shù)據(jù)庫建好表后臺就能自動生成對應(yīng)的菜單、控制器、模型和視圖模板。對于技師審核、訂單列表、資金流水這類管理頁面幾乎不用手寫。我一般接手這類項目時第一步是先把fastadmin后臺跑起來看它的菜單結(jié)構(gòu)再決定哪些表直接生成CRUD哪些表需要寫自定義接口。這比從零搭后臺至少省一半工作量。還有一個關(guān)鍵點是權(quán)限。上門預(yù)約系統(tǒng)需要區(qū)分總管理、商家/門店管理、財務(wù)、客服這些角色。fastadmin自帶RBAC權(quán)限管理每個角色分配菜單和操作權(quán)限這套機制是現(xiàn)成的。如果自己寫角色-權(quán)限-菜單三張關(guān)聯(lián)表加上中間的邏輯校驗又是兩三天的活。省下來的時間投到業(yè)務(wù)里去。2.2 uniapp一套代碼覆蓋H5、微信小程序和App的編譯鏈路上門預(yù)約系統(tǒng)的前端有一個特點用戶可能在微信里搜小程序進來也可能從朋友圈的H5鏈接進來技師端又往往需要裝App。如果用原生開發(fā)這三端各寫一遍維護壓力巨大。uniapp的價值就在這里——一套vue語法的代碼通過不同的編譯配置分別產(chǎn)出微信小程序包、H5頁面和原生App包。我在實際項目中一般把前端分成兩個uniapp工程一個是用戶端包含首頁、服務(wù)分類、下單、訂單列表、支付、評價另一個是技師端包含接單大廳、訂單詳情、導(dǎo)航、結(jié)算記錄、提現(xiàn)。兩個工程共用公共組件和接口封裝但頁面和登錄邏輯分開。用戶端用微信授權(quán)登錄H5端用手機號驗證碼登錄不同端之間的差異通過條件編譯處理。條件編譯是uniapp里比較重要的一個機制。比如支付邏輯小程序端需要調(diào)起wx.requestPaymentH5端走的是公眾號支付或掃碼支付。代碼里可以這樣處理// #ifdef MP-WEIXIN uni.requestPayment({ provider: wxpay, orderInfo: res.data.payParams, success: () this.loadOrderDetail() }); // #endif // #ifdef H5 window.location.href res.data.payUrl; // #endif這段代碼的邏輯是編譯到微信小程序時只保留MP-WEIXIN塊調(diào)用小程序原生的支付接口編譯到H5時只保留H5塊直接跳轉(zhuǎn)到支付鏈接。這樣支付這種強平臺差異的邏輯就分開了頁面結(jié)構(gòu)和業(yè)務(wù)邏輯則完全復(fù)用。新人在接這類項目時最容易出問題的地方就是分不清哪些代碼是跨端通用的哪些是端特有的。我的經(jīng)驗是只管接口和渲染的代碼盡量寫通用一碰到登錄、支付、地理位置、文件上傳這類邊界能力馬上用條件編譯隔離。2.3 mysqlredis的分工哪些數(shù)據(jù)必須走數(shù)據(jù)庫哪些走緩存上門預(yù)約系統(tǒng)的數(shù)據(jù)可以分成兩層一層是訂單、用戶賬戶、技師資料、交易流水這些是核心業(yè)務(wù)數(shù)據(jù)必須保證強一致一律放mysql另一層是驗證碼、token會話、在線狀態(tài)、首頁熱門技師緩存這些允許短暫過期和延遲放redis是常規(guī)做法。mysql這邊有一個值得注意的點所有的訂單狀態(tài)變更都應(yīng)該用事務(wù)條件更新來保證安全。比如用戶取消訂單、技師接單、平臺關(guān)閉訂單三者的本質(zhì)都是把某個狀態(tài)的訂單變成另一個狀態(tài)必須確保同一時刻只有一個操作能成功。事務(wù)在這里是底線。redis的作用則更偏提速和限流。上門預(yù)約系統(tǒng)里最典型的redis應(yīng)用是短信驗證碼的發(fā)送間隔控制同一個手機號60秒內(nèi)只能發(fā)一次直接在redis里存一個key設(shè)置有效期60秒發(fā)送前先查這個key。另一個典型應(yīng)用是技師端接單大廳的訂單列表緩存——新訂單寫入mysql后同步寫一條到redis列表技師端輪詢接口優(yōu)先讀redis減輕mysql的查詢壓力。緩存和數(shù)據(jù)庫之間的一致性我的做法是只在非關(guān)鍵路徑上用緩存訂單狀態(tài)、賬戶余額這種敏感數(shù)據(jù)絕不先進緩存再落庫直接寫mysql讀也直接讀mysql。為省那么一點查詢壓力引入數(shù)據(jù)不一致的坑不值得。2.4 為什么不用微服務(wù)單體架構(gòu)對這個業(yè)務(wù)到底夠不夠很多開發(fā)者拿到這類項目后會問訂單、用戶、支付、技師管理是不是應(yīng)該拆成微服務(wù)這里要給個明確的結(jié)論同城上門預(yù)約的流量模型是典型的脈沖式峰值QPS大概率在幾十到幾百之間單體架構(gòu)完全扛得住。拆微服務(wù)帶來的服務(wù)發(fā)現(xiàn)、分布式事務(wù)、鏈路追蹤這些問題對一支三五個人的開發(fā)團隊來說是負擔而不是收益。我傾向于這樣看架構(gòu)業(yè)務(wù)量級沒到一個模塊單獨部署一臺機器之前保持單體但把模塊在代碼層面拆清楚。比如fastadmin里的應(yīng)用目錄按模塊組織admin后臺、api接口、job隊列各自獨立邏輯上已經(jīng)分離了。等哪天真需要拆先把api模塊抽出來獨立部署其他模塊保持原樣遷移成本是可控的。這套組合選型的最終理由是它能讓你把有限的開發(fā)資源全部投到業(yè)務(wù)邏輯里而不是基礎(chǔ)設(shè)施里。3. 把上門預(yù)約系統(tǒng)從源碼跑成本地可用的完整步驟3.1 環(huán)境準備PHP版本、擴展和nginx偽靜態(tài)上門預(yù)約系統(tǒng)的源碼跑起來之前先確認本機環(huán)境。PHP建議用7.2到7.4之間的版本這既是thinkphp 5.x系列最穩(wěn)妥的運行區(qū)間也兼容fastadmin第三方的絕大多數(shù)插件。需要用到的擴展包括pdo_mysql、redis、fileinfo、openssl、gd。其中fileinfo在部分環(huán)境下默認沒開thinkphp的文件上傳和圖片處理會用到漏了會報Class finfo not found。redis擴展也常被忽略但驗證碼和token依賴它后面會專門說。PHP環(huán)境就緒后設(shè)置php.ini里的兩個參數(shù)date.timezone Asia/Shanghai post_max_size 100M upload_max_filesize 20M時區(qū)必須顯式配置。PHP默認是UTCmysql默認又是系統(tǒng)時區(qū)兩個不一致訂單創(chuàng)建時間、技師接單時間全都會歪8個小時查數(shù)據(jù)時翻車概率很高。upload相關(guān)的兩個參數(shù)是為了后臺上傳服務(wù)項目圖片、技師頭像時不至于被大小限制卡住。接下來是nginx的偽靜態(tài)配置。thinkphp的URL訪問方式是入口文件index.php加上路由參數(shù)nginx默認配置下訪問https://域名/order/detail?id1這類地址時nginx會嘗試找order目錄下的detail文件結(jié)果404。必須在server塊里加上重寫規(guī)則server { listen 80; server_name your.domain.com; root /path/to/your-project/public; index index.php index.html; location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s$1 last; } } location ~ \.php$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; } }這段配置的邏輯是當請求的文件不存在時把路徑交給index.php處理并作為參數(shù)s傳遞php文件由fastcgi處理靜態(tài)資源單獨設(shè)置30天緩存減輕接口服務(wù)器壓力。參數(shù)方面root指向的是項目下的public目錄而不是項目根目錄這是thinkphp的安全要求public之外的目錄不允許被直接訪問。fastcgi_pass的端口要和你本機php-fpm的listen端口一致默認9000如果改動過要同步。3.2 導(dǎo)入數(shù)據(jù)庫與后臺初始化從SQL文件到第一個管理員賬號源碼包一般會帶一個.sql格式的數(shù)據(jù)庫備份文件。操作前先創(chuàng)建一個utf8mb4編碼的數(shù)據(jù)庫編碼用utf8mb4是為了正確存儲用戶昵稱里的emoji字符。然后導(dǎo)入SQL文件mysql -uroot -p -e CREATE DATABASE IF NOT EXISTS house_service DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; mysql -uroot -p house_service house_service.sql命令說明第一條命令創(chuàng)建數(shù)據(jù)庫第二條把備份文件里的表結(jié)構(gòu)和初始數(shù)據(jù)灌入。導(dǎo)入過程如果報錯常見原因是sql文件里包了創(chuàng)建數(shù)據(jù)庫語句或者是mysql版本差異導(dǎo)致語法不兼容。遇到這種情況直接用可視化工具導(dǎo)入更省心導(dǎo)入后再確認一下表數(shù)量和數(shù)據(jù)量避免中途中斷導(dǎo)致缺表。數(shù)據(jù)庫導(dǎo)入后配置項目根目錄下的.env文件或application/database.php。核心是數(shù)據(jù)庫連接信息// application/database.php 中的連接配置 return [ type mysql, hostname 127.0.0.1, database house_service, username root, password your_password, hostport 3306, prefix fa_, charset utf8mb4, ];注意prefix這個參數(shù)它對應(yīng)數(shù)據(jù)表前綴。fastadmin的數(shù)據(jù)表默認前綴是fa_例如fa_order、fa_technician。如果導(dǎo)入的表還是源碼自帶的前綴這里就不動如果手動改過表名前綴這里必須保持同步否則模型查詢時找不到表。表前綴不一致是拿到新項目后最常見的啟動報錯原因看到table not exists先查這里。后臺初始化在瀏覽器訪問http://127.0.0.1/install.phpfastadmin會引導(dǎo)你設(shè)置管理員賬號和密碼。安裝完成后后臺入口一般是http://127.0.0.1/admin.php。管理員登錄后第一件事是檢查菜單管理是否完整其次是權(quán)限管理里的角色是否可用。如果登錄后空白頁或者報權(quán)限錯誤基本都是后臺菜單緩存或權(quán)限緩存沒生成清掉runtime目錄下的緩存文件再刷新。3.3 前端uniapp編譯到H5和小程序manifest配置與接口域名前端工程是uniapp項目用HBuilderX或命令行工具打開。編譯到H5之前必須修改manifest.json里的配置。H5模塊需要設(shè)置路由模式小程序模塊需要填A(yù)ppID——如果還沒有小程序AppID在微信公眾平臺注冊一個測試號即可。另一個容易漏的是小程序后臺的request合法域名配置這個放到避坑章節(jié)詳細說。接口請求地址統(tǒng)一封裝在一個工具文件里下面是實際項目里常用的寫法// utils/request.js const BASE_URL https://api.yourdomain.com; export function request(path, data {}, method POST) { return new Promise((resolve, reject) { uni.request({ url: BASE_URL path, method: method, data: data, header: { Content-Type: application/json, Token: uni.getStorageSync(token) }, success: (res) { resolve(res.data); }, fail: (err) { reject(err); } }); }); }這個封裝把三件事統(tǒng)一了接口前綴統(tǒng)一、token自動帶上、返回結(jié)果統(tǒng)一走Promise。實際開發(fā)中所有業(yè)務(wù)模塊都引用這個request函數(shù)不要在每個頁面里直接調(diào)uni.request否則后續(xù)要改接口地址或者加統(tǒng)一錯誤處理時就得全局搜索替換。BASE_URL對應(yīng)的是后端api模塊的地址本地聯(lián)調(diào)時先指向本機IP加端口編譯發(fā)布時再改成正式域名。3.4 前后端聯(lián)調(diào)打通從登錄到首單的接口路徑環(huán)境全準備好后按一條鏈路驗證整個前后端是否打通用戶登錄、獲取服務(wù)項目、提交預(yù)約、技師接單、生成訂單。這條鏈路走通系統(tǒng)就算跑起來了。我一般會先在后端api模塊里寫一個ping接口驗證網(wǎng)絡(luò)鏈路// application/api/controller/Test.php public function ping() { return json([code1, msgpong, timetime()]); }前端瀏覽器或微信開發(fā)者工具請求http://localhost/thinkphp/public/index.php/api/test/ping能拿到JSON就說明后端可用。這里要提醒一點如果是本地聯(lián)調(diào)H5瀏覽器直接請求http://localhost的php接口通常是通的但小程序開發(fā)者工具有自己的限制后面避坑章節(jié)展開講。接下來按業(yè)務(wù)流程逐項測試手機號驗證碼登錄、服務(wù)項目列表、提交預(yù)約單、模擬技師端接單。每測試一個接口都在mysql里查一下對應(yīng)表的數(shù)據(jù)變化確認寫庫成功再進入下一步。前后端聯(lián)調(diào)的常見問題十有八九出在參數(shù)名不一致上php端讀的是tech_id前端傳成technician_id接口返回參數(shù)錯誤。我的習慣是先打開php的DEBUG模式把真實報錯暴露出來再逐個接口對齊參數(shù)名。聯(lián)調(diào)通過之后再把DEBUG關(guān)掉避免線上暴露敏感信息。4. 上門預(yù)約系統(tǒng)核心業(yè)務(wù)訂單狀態(tài)、搶單邏輯與同城距離排序4.1 訂單狀態(tài)機讓狀態(tài)的每一次流轉(zhuǎn)都有據(jù)可查上門預(yù)約系統(tǒng)的訂單和標準電商訂單有本質(zhì)差異多了一個上門的物理過程。一次完整的服務(wù)要經(jīng)過用戶提交預(yù)約、平臺或技師接單、技師上門、正在服務(wù)、服務(wù)完成待評價、結(jié)算完成中間還穿插用戶取消、技師取消、超時未接自動取消等多種分支。把這個流程管理好訂單模塊就穩(wěn)了一半。狀態(tài)清單和允許的流轉(zhuǎn)方向如下狀態(tài)含義允許流轉(zhuǎn)到0待支付1-待接單、-1-已取消1待接單2-待服務(wù)、-1-已取消2待服務(wù)3-服務(wù)中、-1-已取消3服務(wù)中4-待評價4待評價5-已完成5已完成無-1已取消無注意待支付可以直接跳待接單而不是經(jīng)過已支付這個狀態(tài)。這里是為了和支付回調(diào)對齊用戶支付成功回調(diào)里直接把狀態(tài)改成待接單同時更新支付時間和第三方流水號。把已支付省掉能減少一次狀態(tài)流轉(zhuǎn)也避免出現(xiàn)已支付但沒進待接單的中間態(tài)。我在項目里見過這個坑問題不大但排查時很繞。狀態(tài)流轉(zhuǎn)的校驗必須在后端做不能依賴前端傳state直接update。一個簡單的狀態(tài)機控制類// application/common/model/OrderStatus.php class OrderStatus { const UNPAID 0; const PENDING 1; const TO_SERVE 2; const SERVING 3; const WAIT_COMMENT 4; const COMPLETED 5; const CANCELED -1; private static $flows [ self::UNPAID [self::PENDING, self::CANCELED], self::PENDING [self::TO_SERVE, self::CANCELED], self::TO_SERVE [self::SERVING, self::CANCELED], self::SERVING [self::WAIT_COMMENT], self::WAIT_COMMENT [self::COMPLETED], ]; public static function canChange($from, $to) { return isset(self::$flows[$from]) in_array($to, self::$flows[$from]); } }這段代碼定義了訂單狀態(tài)的全集和每個狀態(tài)允許跳轉(zhuǎn)到的目標狀態(tài)。所有修改訂單狀態(tài)的地方先調(diào)canChange校驗不通過就直接拒絕。這樣即使前端被改過、接口被惡意調(diào)用訂單也不會進入非法狀態(tài)。值得注意的是狀態(tài)變更接口對外提供時只能接受當前狀態(tài)目標狀態(tài)訂單號絕不能直接把整個訂單對象傳上來讓你自由更新字段那是自尋死路。4.2 技師搶單的并發(fā)控制為什么直接update比先select再update可靠技師端接單大廳的核心操作是搶單而搶單的本質(zhì)是并發(fā)競爭一個資源。兩個技師同時看到同一個訂單都點了接單如果代碼寫成先select查狀態(tài)再update改狀態(tài)就會出大問題。兩個請求幾乎同時讀到status為1都認為訂單可接然后各自執(zhí)行update后執(zhí)行的覆蓋先執(zhí)行的一個訂單被兩個技師同時接走。這屬于典型的競態(tài)條件。正確做法是單條SQL原子更新把狀態(tài)檢查放進update的where條件里// application/api/controller/Order.php 技師接單 public function accept() { $orderId $this-request-post(order_id); $techId $this-request-post(tech_id); $result Db::name(order) -where(id, $orderId) -where(status, OrderStatus::PENDING) -update([ status OrderStatus::TO_SERVE, tech_id $techId, accept_time time(), ]); if ($result 1) { // 影響行數(shù)為1說明本次更新成功訂單歸這位技師 return json([code 1, msg 接單成功]); } // 影響行數(shù)為0說明訂單狀態(tài)已不是待接單被別的技師搶了 return json([code 0, msg 手慢了訂單已被接走]); }這個寫法的精妙之處在于where里帶了status條件數(shù)據(jù)庫行鎖在更新時會再次校驗where條件只有狀態(tài)仍是1的記錄才會被更新返回值影響行數(shù)是1否則影響行數(shù)是0。不需要事務(wù)不需要redis鎖一條SQL就把并發(fā)問題解決了。這是這類項目里最值得記住的寫法比引入分布式鎖簡單得多也穩(wěn)得多。再說一下redis鎖在什么情況下才需要當一個操作涉及多張表的多個步驟且必須在整個過程中獨占資源時才需要考慮鎖。比如用戶余額提現(xiàn)到微信錢包需要凍結(jié)余額、創(chuàng)建提現(xiàn)單、調(diào)第三方接口這串操作需要一把鎖保護。而單純搶單這種單表單字段的變更原子update就夠了。不要把所有并發(fā)問題都甩給redis很多問題的正解就在數(shù)據(jù)庫本身。4.3 同城距離計算經(jīng)緯度排序在mysql里的高效寫法同城兩個字是這類系統(tǒng)的業(yè)務(wù)核心。上門預(yù)約服務(wù)里用戶看到技師列表時一般有兩個訴求只看到同一個城市的技師并且按照距離從近到遠排序。城市過濾用city_id字段即可難點在距離排序。同城業(yè)務(wù)的覆蓋范圍通常在一個城市內(nèi)部經(jīng)緯度差異不大這時可以用haversine公式的簡化形式在mysql里直接算距離并排序。下面這段SQL在幾千技師的數(shù)據(jù)量下性能可以接受SELECT id, name, avatar, lat, lng, 6371 * 2 * ASIN(SQRT( POWER(SIN((:user_lat - lat) * PI() / 360), 2) COS(:user_lat * PI() / 180) * COS(lat * PI() / 180) * POWER(SIN((:user_lng - lng) * PI() / 360), 2) )) AS distance FROM fa_technician WHERE city_id :city_id AND status 1 HAVING distance 10 ORDER BY distance ASC LIMIT 20;參數(shù)說明user_lat和user_lng是用戶當前定位的經(jīng)緯度city_id是用戶所選城市distance的單位是公里HAVING distance 10表示只顯示10公里內(nèi)的技師。這段SQL的代價是每條記錄都做三角函數(shù)運算在技師表數(shù)據(jù)量超過幾萬時響應(yīng)會變慢但同城業(yè)務(wù)單城市技師數(shù)通常不會到這個量級所以前期完全夠用。如果技師數(shù)增長到十萬級再考慮引入按經(jīng)緯度網(wǎng)格分區(qū)或使用空間索引不要一開始就上重型方案。數(shù)據(jù)量上來后常見的優(yōu)化手段是粗篩后精算第一步用經(jīng)緯度差做一個方形框過濾把計算限定在一個小矩形區(qū)域里第二步只對框內(nèi)記錄做精準的距離計算。方形框的邊界值用固定比例估算一個經(jīng)度約111公里緯度約111乘以cos緯度公里來算。這個優(yōu)化可以直接在一開始就寫進SQL里把三角函數(shù)計算量降一個量級。5. 上門預(yù)約系統(tǒng)避坑記錄5個上線前后最容易翻車的現(xiàn)場5.1 小程序請求接口直接失敗連失敗回調(diào)都不觸發(fā)現(xiàn)象H5端一切正常換成微信開發(fā)者工具后所有接口請求都報request:fail。原因微信小程序?qū)W(wǎng)絡(luò)請求有域名限制正式環(huán)境要求request的url必須是HTTPS且在微信公眾平臺后臺配置過request合法域名開發(fā)環(huán)境下雖然可以勾選不校驗合法域名但前端代碼里的接口地址如果是http://localhost或http://192.168.x.x這類本機地址在真機預(yù)覽時依然會被攔截。解決本地調(diào)試時在微信開發(fā)者工具的詳情設(shè)置里勾選不校驗合法域名、web-view業(yè)務(wù)域名、TLS版本以及HTTPS證書要真機預(yù)覽則需把接口部署到一臺有公網(wǎng)地址且已配置HTTPS證書的服務(wù)器上并在小程序管理后臺添加合法域名。另外注意小程序要求TLS版本不能低于1.2部分老服務(wù)器上自簽證書或舊openssl配置會在這里卡住。5.2 thinkphp在nginx下訪問任何非首頁路由都404現(xiàn)象首頁能打開但訪問http://域名/order/list這類地址時nginx直接返回404后端接口全掛。原因nginx沒有配置thinkphp的偽靜態(tài)規(guī)則nginx在找不到對應(yīng)文件時按自身默認行為處理沒有把路徑轉(zhuǎn)交給index.php。解決在nginx的server配置里加上rewrite規(guī)則核心是if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s$1 last; }。改完配置后reload nginx不要忘記。還有一個容易踩的細節(jié)點thinkphp的入口文件是public/index.php如果root配置指向了項目根目錄而不是public目錄即使rewrite正確也會報錯因為index.php不在根目錄下也等于把非public目錄里的文件暴露了出去。5.3 mysql時間差8小時訂單時間、技師服務(wù)時間全錯位現(xiàn)象后臺看到的訂單創(chuàng)建時間比實際時間慢8個小時技師端顯示的預(yù)約時間也偏移。原因PHP的默認時區(qū)是UTCmysql的默認時區(qū)取決于服務(wù)器系統(tǒng)配置。PHP寫入的時間戳在mysql里顯示出來會因為時區(qū)換算產(chǎn)生8小時偏移。解決先確保php.ini中配置date.timezone Asia/Shanghai再確認mysql的時區(qū)設(shè)置可以執(zhí)行SQL查詢select now();如果結(jié)果和服務(wù)器本地時間不一致在mysql配置文件的[mysqld]段加一行default-time-zone08:00。兩個地方都對齊之后再測試一遍。這個問題玄學的地方在于本地開發(fā)可能不出現(xiàn)一部署到云服務(wù)器就出現(xiàn)因為云服務(wù)器默認時區(qū)往往是UTC。5.4 技師端輪詢接口打垮服務(wù)器沒有增量拉取的搶單大廳現(xiàn)象上線第一天技師端接單大廳接口的響應(yīng)從50毫秒漲到3秒服務(wù)器CPU持續(xù)跑滿mysql連接數(shù)被打滿。原因技師端每3秒輪詢一次訂單列表每次都返回全量待接單訂單幾百個技師同時輪詢瞬間打出的查詢量遠超mysql承受能力。解決輪詢接口改成增量拉取。前端記錄上一次請求返回的最大訂單ID下一次請求帶上這個ID后端只返回ID大于它的新訂單和狀態(tài)有變更的訂單。這個方案能在不引入websocket的前提下把服務(wù)器壓力降低一個量級。改造后同樣規(guī)模的并發(fā)接口響應(yīng)時間恢復(fù)到100毫秒以內(nèi)。這里要特別強調(diào)不要一上來就上websocket方案先把輪詢的增量邏輯做對大多數(shù)同城預(yù)約場景的實時性要求根本用不上長連接。5.5 并發(fā)搶單出現(xiàn)一單多接先查后改的代碼寫錯了位置現(xiàn)象兩個技師都收到接單成功的通知后臺查詢訂單發(fā)現(xiàn)tech_id字段被后操作的技師覆蓋。原因接單接口寫成了先select查詢訂單狀態(tài)、判斷可接、再update更新狀態(tài)的三段式。兩個并發(fā)請求同時讀到status為待接單都通過了判斷先后執(zhí)行update后執(zhí)行的覆蓋先執(zhí)行的。解決按第4章講的方式改寫為單條update語句將狀態(tài)判斷放進where條件用影響行數(shù)判斷是否搶單成功。代碼改完后可以做一次并發(fā)壓測驗證簡單方式是用兩個瀏覽器同時點接單按鈕也能復(fù)現(xiàn)。這是一條典型的血淚經(jīng)驗我在早期項目里踩過直接在線上出現(xiàn)過一單多接的運維事故。修完之后要同步檢查其它可能的并發(fā)點用戶余額扣減、優(yōu)惠券核銷、技師時間表占用凡是存在先查后寫模式的地方一律改成條件更新。6. 上線前的最后一道工序把演示源碼變成能商用的可用系統(tǒng)演示源碼跑通和真正對外接單之間還隔著幾道不得不做的工序。第一道是支付和結(jié)算確認微信支付/支付寶的小程序商戶號配置在后端配置項里支付回調(diào)地址必須是公網(wǎng)HTTPS地址回調(diào)邏輯要處理支付成功但訂單狀態(tài)沒更新的重復(fù)通知——支付回調(diào)可能被微信多次推送冪等處理必須做。第二道是把用戶協(xié)議、隱私協(xié)議、技師入駐協(xié)議加上這是這類平臺的合規(guī)底線。第三道是接口的鑒權(quán)和限流后臺登錄、下單、提現(xiàn)、驗證碼發(fā)送這幾個接口至少要加頻率限制redis計數(shù)器就能實現(xiàn)避免被刷。真正進入運營后有個技巧值得優(yōu)先投入把技師端搶單做成可配置的策略。前期單量少可以先用平臺派單——管理員在后臺直接把訂單分配給指定技師單量上來了再切先到先得的搶單模式。這個開關(guān)的核心邏輯就是一個配置項// 配置項dispatch_mode值為manual表示后臺派單compete表示搶單 $mode config(site.dispatch_mode); if ($mode manual) { // 后臺指派管理員選技師接口直接綁定訂單 Db::name(order)-where(id, $orderId) -where(status, OrderStatus::PENDING) -update([status OrderStatus::TO_SERVE, tech_id $techId]); } else { // 搶單模式走第4章的原子更新邏輯 }參數(shù)說明dispatch_mode這個配置放在后臺的系統(tǒng)配置里運營人員可以不用改代碼直接切換。不同模式下前端技師端的交互也要配合——搶單模式顯示立即接單按鈕派單模式只顯示訂單已指派的提示。這是從源碼走向商業(yè)運營最值得做的改造之一能讓運營策略的試錯成本降到最低。我自己的經(jīng)驗是做這類系統(tǒng)卡住進度的從來不是技術(shù)難點而是以為演示能跑就等于能上線的心態(tài)。演示源碼解決的是從無到有的問題從有到可用還需要把并發(fā)、支付、合規(guī)這三件事挨個磨一遍。每多提前一天處理這些問題上線后就少一分被用戶罵的風險。希望這篇筆記對你有點幫助。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99热免费| 亚洲欧美日韩精品久久久一区二区| 久久精品亚洲婷婷| 久久久国产成人一区二区三区在线| 久久精品国产亚洲av水密被窝| 欧美一二在线| 亚洲,欧美,春色,另类| 欧美Aⅴ| 久射吧| 少妇与黑人高潮在线| 亚洲免费人妻在| 色综合色色| 欧美美女自慰一区二区三区| 国产精品成人蜜臀AV在线| 欧美一区二区男人天堂| 日本天堂在线播放| 在线 欧美 亚洲| 高树玛利亚无码流出| 午夜寂寞欧美| 日本色色色视频| 人人看人人插| 亚洲国产成人7777| 激情综合网激情综合| 激情文学亚洲| 男人的天堂com| 性性欧美| 超碰这里只有精品| 超碰在线97国产| 女一区二区| 国产免费一区二区三区最新不卡| 色噜噜婷婷| 一块操欧美| 国产情侣自拍在线播放| 久久精品99| 亚洲欧美经典一区二区| 777奇米影视777四色| 国产精品免费日韩| 国产精品久久久久无码A√| 欧美成熟性爱精品| 久久中文字幕一区不卡| 爆操无码| 亚洲av在线免费观看| 99操逼| 激情综合网激情五月天| 水野优香在线观看| 97玖玖人妻| 国产女人高潮视频| 97久久精品国产| 日韩美女高潮喷水视频| KK色在线影院| av网站在线观看了| 成人日本视频人妻在线| 激情四射五月天| 婷婷亚洲综合| 久草精品国产蜜臀| 蜜臀久久99'精品久久久| 全国男人天堂网| 亚洲啪啪综合?v一区综合精品区| av三级电影在线播放| 强被迫伦姧在线观看无码网站| 最新日本中文字幕| 五月丁香拍拍激情综合三级| 日韩999| 女人天堂AV五区在线| 麻豆AV一区二区| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 亚州精品一区二区三区香中文字幕在线| 伊人久久88国产女| 亚洲第一色页夜| 肉丝无码中文高清| 精品国模无码| 99自拍视频在线观看| 志村玲子视频一区二区| 日欧毛片久久| 国产精品久久久亚洲第一牛牛_在线观看 | 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 久欲AV| 超碰97COm中文| 操操逼视频| 色综合久久888| 日韩人妻操B| 亚洲少妇色图自慰直播| 久久男人| 在线无码操| 九九九久千久久激情蜜桃在线看 | 性爱AV天堂| 一本色道久久综合狠狠操| 日本一级真人黄色性爱视频| 亚洲成a人在线观看久| 五月丁香在线| 九月伊人中文字幕| 久久老子无码午夜伦不卡| 蜜桃中文字日产乱幕4区| 中文字幕第95页| 岛国A V在线免费看| 亚洲国产麻豆一区二区三区| 欧美大香蕉97| 国内一区二区免费| 亚洲一区中文字幕一区| 亚洲 另类 丝袜 自拍 动漫| 日本女优在线视频福利| 日韩ab网 | 干婷婷综合网| 99久久9| 曰韩精品视频一区二区| 91在线美女| 超碰天天去日穴| 啪啪啪东京| 97操97色| 17c嫩草51久久91嫩草| 国产美女mm131爽爽爽爽| 国产91福利小视频在线观看| 亚洲图片91| 涩涩这里只有精品视频| 嫩草影院永久在线制服丝袜| 色色网91| 亚洲一区日韩| 午夜福利合集| 成人色女网| 97天天日| 久热久一区二区三区| 天天影视综合色| av凤凰久久久| 上床啊啊啊| 欧美日韩性爱操大逼| 日韩精品人妻中文字幕久久久| 上特色A在线| 99热自拍| 97免费视频在线| av资源在线播放天堂| 久久久久久少妇| 色欲蜜臀AV| 热久久无毒不卡| 日韩中文字幕在线视频观看| 久热精品在线| 97干在线看| 欧美翘臀视频网站一区二区三区| 超碰97资源大奶| 日韩免费中文字幕视频| 国产天美传媒精品| 人妻乱仑一区二区三区| 人妻91少妇| 在线观看AV不卡| 欧美天天综合网| 久久天天躁日日躁狠狠躁| 欧美人黑A片无码免视费| 91九久| 久久夜夜| 欧洲亚洲综合| 欧美日不卡| 日韩视频精品在线观看| av2014 日韩在线中文字幕| 欧美有码激情视频一区二区三区| 免费A片三p视频| 国产夜夜操| 欧美日韩不卡a片| 中文字幕无码不卡啪啪| 97天天爽| 日本人人操人人操| 久久久精品| 久久久久密臀一区二区| 欧美日韩成人| 精品国产丝袜一区二区三区乱码| 一区二区无码视频| 青青草吊丝| 91人妻素女| 亚州中文字幕超碰97| 亚洲本色精品一区二区久久| 美女丝袜激情小说| 啊a一区在线| 国产大陆天天艹| 激情文学亚洲| 国产乱人妻精品入口| 日本人人操人人操| 精品人妻一区二区视频| 国产一级高清免费观看| 欧美日韩亚洲国产中文永久天天看| 日本99久久| 蜜乳AV.COM| 超碰97COm中文| 青青草国产盗摄一二三区| www激情| 免费强奸av| 亚洲精品免费中文字幕| 亚洲少妇视频| 亚洲欧美天| 久久超碰、| 色婷婷影院| 国产无马视频| 欧美精品23| 96久久久久| 夫妻AV网站| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 欧美亚洲中文字幕| 欧美精品成人在线播放| 日本熟女不卡视频| 日韩视频精品在线观看| 91狠狠综合网| 美女9118禁| 久久噜噜噜精品国产亚洲综合| 色老汉色| 玖玖综合色| 五月天黄色av| 97中文超碰| 亚洲婷婷五月天| 人人操人人狠狠操| 人人看人人摸人人色| 日本一区视频在线观看| 富女玩鸭子一级毛片| 欧美成人精品欧美一级乱黄一区二…| 亚洲熟女精品| 92性色国产午夜福利在线661| 国产女人视频三四五区| 亚洲在线欧美| 热99这里有精品综合久久 | 天天综合91在线| 人人爱操| 强上我不卡卡| 一直超碰| 亚洲91射| 欧洲精品二区| 少妇综合| 99老司机精品视频在线观看| 亚洲蜜乳av| av日韩国产一区二区| 日韩精品碰碰| 久久综合激情| 91oumei| 国产丝袜美女诱惑| 日韩78m视频| 91精品婷婷国产综合久久竹菊| 操一区| 久久久免费懂色| 日本免费一区二区不卡 | 亚洲熟女性高潮久久久| 中日韩欧美精品无码AⅤ一区二区| 欧美亚洲另类在线蜜桃| 日韩偷拍色图| 亚洲综合校园春色| 探花视频免费观看国产专区| 欧美伊人久久综合网| 欧美国产伊人久久久久| 久久精品欧美一区蜜桃| 亚洲爱爱视频一区二区| 欧美日韩人妻精品系列一区二区三区| 国产老女人久久毛| 免费伦费视频在线观看| 天天狠| 久久久久ab| 亚洲天堂一区二区| 亚洲欧美日韩制服另类| 岛国成人av在线播放网址| 久久一二三四五六七八九区区区 | 久久久久久中文| 操逼操逼操| 欧美顶级黄色大片免费| 久久大香蕉手机高清视频| 91 综合 色| 男人的天堂1024| 国产真乱mangent| 国产黄色av大片网站| 天天综合,91综合永久| 97日视频| 91色交| 大香网站| 素颜老阿姨乱情色| 国产激情视频一区区三区| 久操凹凸视频| 欧美97在线观看| 大香蕉手机在线| 91色人妻| 97在线免费看| 精品对白久久不卡| 亚洲九月丁香| 久草男人天堂| 日本三级A片网站com| 综合色色婷婷| 日本久久久精品电影| 都市久久精品激情亚洲| 青青青青草av在线观看| 国产高清无码一区三区二区| 亚洲图片欧美制度| 日本性爱视频一级| 啊a一区在线| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 日本综合色图| 九九九国产精品| 国产av波波国产精品| 国产伊人自拍| 色五月AV| 中文字幕91综合| 老司机香蕉| 婷婷综合激情| 91精品丝袜久久久久久| 激情自拍 校园春色| 大色网久久| 青草av在线| 欧美色道啊| 久久性爱城| 偷拍亚洲视频一区二区三区四区| 99碰碰| 91熟女视频网| 六月激情婷婷| 亚洲人天堂| 亚洲欲色9532548967一区| 欧美黄业| 天天综合网在线| 家庭乱伦国产| 日韩有码中文字幕女同性恋| 亚洲天堂,男人| 韩国一级做a久久久久| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 91丝袜美腿片| 欧美爱三级日韩久久| 啪啪啪东京| 91九九九逼| 成人精品视频| 婷婷色香伊人| 天天看天天综合成人网| 人人操人人操人人人操| 少妇人妻在线| 久久久久久久久久久久久9999| 少妇高潮九九九九| 精品国产一区二区三区久久久蜜臀| 亚洲在线网站| 啊啊啊啊啊操我视频| 亚洲有码视频二区| 国产伦精品免编号公布| 国产精品久久久久久亚洲色欲| 欧美日韩人人精品| 加勒比在线视频一区二区三区| 久污| 四虎AV在线观看| 欧美一级黄色免费专区| 竹菊一区二区三区AV线| 欧美日韩精品久久| 天天综合~91入口| 中文AV制服乱伦| 丝袜美腿射精91| 激情五月丁香五月| 免费一级黄色录像影片| 亚洲色图A| 青青草啪啪网| 大香蕉AV丝袜| 精品久久99| 日韩高清黄片| 婷婷婷婷婷婷久久久久| 亚欧洲一区二区视频| 人妻少妇蜜桃视频欧美一区| A V视频日本| 夜夜躁狠狠躁日日躁av| 精品久操| 91精产一区二区三区| 欧州色图区| 家庭乱伦网站国产| 蜜乳AV免费观看| 天天影视综合色| 麻豆人妻少妇在线免费观看| 天天射影院| 乱伦1色页| 国产精品 视频| 黄色交缠性感爆操91国产精品免费一区二区三区 | 激情啪啪拍91| 日韩乱伦AⅤ| 啪啪啪综合网| 久久人妻熟女一区二区| 乱操9999| 丝袜加勒比| 老女人碰碰在线碰碰视频| 婷婷五月天激情网| 香蕉久久国产AV一区二区| 伊人精品久久网站| 日韩黄片影院| 思思热国产高清| 亚洲区 欧美区| 免费草草草草草视频| 成人综合网 欧美| 日本不卡卡一区| 熟妇在线视频一区二区| 婷婷五月成人| 欧美第一页性| 啊啊啊啊啊啊啊国| 老汉网| 欧美狠狠操| 第二页中文字幕| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 嗯嗯啊在线视频| 亚洲丝袜二区| 亚洲视频,小说| 国产精品制服丝袜中文字幕日韩一区二区三区 | 91N五十路| 蜜色网色哟哟| 三级片大波波| 狠综合网| 99热在线只有精品| 国产精品视屏| 综合国产影视三级| 日日操丁香五月天| 婷婷五月天福利| 少妇超碰在线| 红桃视频高潮| 四虎免费视频| 青青草久草| 啪啪视频免费在线观看| 天天色天天干天天爱| 欧美亚洲| 天美av在线观看| 久久久久久久久久久久久久久乱码| 蜜桃传媒一区二区亚洲| 欧美 综合 亚洲| 久伊人网78| 成全动漫视频观看免费下载| 91精品女厕偷拍视频| aaaa黄片| 欧美专区第一页| 1204金沙人妻懂旧版免费| 久久网亚洲| 中文字幕在线观| 日本性爱欧美性爱| 99久久久久| 96爱综合| 久久精品区| 性爱网站一区二区| 97人人模人人爽人人| 六月婷激情福利天堂69| 加勒比色综合| A 天堂| 深田咏美亚洲精品福利社| 亚州精品一区二区三区香中文字幕在线| 婷婷色香| 亚洲欧美日韩不卡人妻| 色乱二区| 中文字幕片| 亚洲无码一区成人免费午夜| 在线岛| 日本高清电影欧美色图| 操逼网站网站| 欧美精品二区视频在线| 桃花色涩综合影院| 操逼内射干逼白丝91| 欧美日韩小说| 成人性爱高清视频免费看| 欧洲综合视频| 欧美性夜| 五月婷丁香| 亚洲青青草| 国产隔壁老王影院在线| 人妻久久久久久久久久久久久久久 | 国产精品suv一区| 9久久精品| 国产 v乱码一区二| 日本免费一区二区不卡| 五月婷婷六月丁香网址| 九热大香蕉| 国产内射爽爽大片| 嗯啊不要在线| 日日摸天天爽夜夜欢| 黄色片大香蕉| 天堂网亚洲区手机版| 乱伦Av网| 国产精品乱码久久久、久久| 日本免费一级AAA大片器| 啪啪91| 人妻丝袜美腿中文字幕| 成人日韩欧美| 国产精品一区二区密臀| 天天天天天干夜夜夜夜夜操| 99色在线| 久久久国产成人一区二区三区在线 | 亚洲欧美97√| 97人人干| 99夜夜操| 人妻久久久久久久久久久久久久久| 欧美亚洲高清晰 | 日本在线15p| hd成人一区二区在线| 色九九综合AV| 亚洲色久| 亚洲成a人v欧美综合天堂下载| 日本天天操| 欧美综合91| 禁止观看美女黄| 国产无码成人无码| 欧美另类自拍 | 日操粉逼逼| 狠狠干妹子| 加勒比av网| 天天综合网~91| 春色综合免费| 人妻久久久| 大学生美女口爆| 亚洲欧美校园另类春色| 牛牛AV人人夜夜澡人人爽| 国精品一区二区三| 日本丝袜人妻内射| 91痴汉| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 免费观看国产小粉嫩喷水精品午| 亚洲色资源| 欧美刺激色黄片免费看| 超碰97男女| 久草视频制服诱惑| 欧美顶级黄色大片免费| 亚州性色| 欧美视频激情久久久久久| 一牛影视成人片免费| 亚洲综合有码| 东北女人的毛片| 新版天堂中文资源8在线| 亚洲深夜福利| 日韩人妻精品中文字幕| 97人人模人人爽人人| 午夜操一操| 亚洲日韩东京热一区| 五月丁香激情综合| 人妻中文字幕精品无码| 粉嫩AV一区二区夜夜| 欧美日韩少妇色情| av九九| 中文字幕日韩电影人妻| 色图四区| 国产视频大全| 操穴国产| 九九香蕉网| 国产精品人人爽人人做可爱福利| 人人操人人肉久久精品| 久久人妻少妇| 99re在线观看| 久久乐| 黄色性爱网网| 粉嫩av久久一区二区三区| 97超级久久| 毛片麻豆91糖心精品毛情片| 色婷婷成人综合| 女人高潮抽搐喷水视频网站| 日本狂喷奶水在线播放212| 粉嫩av一区二区三区天美传媒 | 亚洲黄色视频在线观看视频| 97视频免费播放| 欧美精品,四区。五区| 日本不卡三级网在线播放| 五月婷婷丁香| 爱av免费| 国产综合网站在线播放 | 97久精品| 中文字幕一区av| 日本理论在线| 爆操无码| 精品国产久热在线观看| 人人操人人摸人人看人人干| 99老司机精品视频在线观看| 天天爽夜夜爽夜夜爽精| 成人小说另类在线| 欧美福利视频啊啊啊啊| 亚洲婷婷丁香在线| 日韩成年人性爱视频| 九热中文字幕| 美女诱惑一区| 国产精品白领在线观看| 日韩欧美加勒比| 天天综合网日韩| 91精品人妻| 欧美 亚洲 第一页| 永久免费观看的毛片的网站| 东京热男人的天堂| 亚洲 无码 偷拍| 中文字幕天堂在线| 性爱网站一区二区| 亚洲精品人妻在线| 玖玖爱免费观看视频| 女人喷水视频在线观看| 午夜国产成人福利视频| 超碰AV在线| 亚洲日本成人动漫| 久久久9品一区二区三区| 天堂资源欧美| 久久夜精品一区二区三区| 亚洲超碰综合网| 久热精品在线| 亚洲色图91| 亚洲天堂五月天国产| 久久这里是精品| 亚洲欧美在线观看2021 | 欧美第二页| 亚洲欧洲自拍图片专区满春格| 精品国产91内射久久| 亚洲精品人妻在线| 色优久久| 久久中文色图| 亚洲日本大香蕉1| 91日韩国产欧美亚洲另类精盘州至城都| 9丨久久九九九| 国产精品白丝在线播放| 久操视频资源站公开| 婷婷在线视频| 丰满精品人妻少妇久久字幕| 久久久久幕乱码| 欧美亚洲| 天天色播亚洲综合网站| 超碰超碰欧美| 欧美色图在线视频少妇| www.久久制服糖| 美女操逼A A| 乱伦AVxx| 有码免费观看| 欧美黑人日韩少妇色情| 亚洲一区二区AV| 26uuu性物| 黑操B| 97在线资源| 91久久青青草原精品| 国产精品久久久久亚洲av| renqi久久久久久久久久久久| 欧美婷婷久久| 欧美性色网| 日韩国产在线观看av| 久久久精品日本一道| 女上位精品在线| 视频一区二区免费在线| www超碰| 人妻激情在线视频| 久久久久久99AV无码免费网站| 久久五月天婷婷| 久久超碰av在线| 日韩免费福利在线观看| 亚洲天堂性爱| 亚洲综合在线第一页| 欧美很很操视频| 四虎影院成年人片| 青青草福利视频| 盗摄女人妻在线| 麻豆天美国美国产| 天堂亚洲精品| 色综合久久88色综合久久天天| 啊啊啊啊啊在线观看网址 | 五月天久久婷婷亚洲 | 亚洲宗合电影| 国产精品爆乳懂色蜜乳| www.狠狠干.coom | 韩日性爱av| 日本人妻天堂网站在线播放| 天天看精品动漫视频一区| 欧美日韩丝袜 | 91视频国品一二三区| 殴美色网| 超碰狠狠操| 国产伊人精品在线| 狠狠色婷婷7777久| 男人的天堂99| 亚洲情色电影网| 97天天日| 少妇被玩视频二三区| a片自拍直播视频| 99自拍B亚洲| 狠狠久久手机视频精品| 欧美性区| 国产一进一出视频网站| 内射卯月麻衣| 无码国产精品午夜不卡(| 久久久久九九九九九| 亚洲AV无码久久久国产精品| 精品女同一区二区三区| 午夜免费视频1000| 91综合在线| 99热在线不卡| 秋霞无码av鲁丝片一区| 亚洲精品97p| 日韩三级一区| 日本性交操一区二区不卡系列| 60秒试看最爽10分钟网站| 中文日本免费高清| 亚洲欧美变态| 天综合网| 亚洲性爱免费电影| 天天影视综合色| 欧美熟妇视频| 久久无码成人| 欧美亚洲首页| 国产高清不卡视频| 97最新在线播放视频| 日韩人妻丝袜中文字幕| 白丝少妇一区二区| av资源在线观看少妇| 国产日本一区二区三区蜜臀在线观看| 91色图片| 色99视频| 久久透逼视频| 中文字幕乱妇免费视频| 中文字幕少妇色| 日韩性爱高清免费视频| 粉嫩av平台| 超碰97综合网| 日本丝袜美腿人妻九九| 久久亚洲精品成人av| 偷拍综合网| 玖玖超碰熟| 国产精品乱人伊人网| 国产精品无码av| 97天天综合| 欧美一品道| 人妻精品综合中文字幕在线| 黄片www.| 欧美日韩国产另类综合| 色色九区| 精人妻无码一区二区三区伊人直播| 欧美亚洲综合色| 亚洲中文日韩欧美大香蕉视频| 五月情色天| 欧美青青草视频| 国产夜夜艹| 丁香六月婷婷| 国产一区二区欧美日本| 人妻无一区二区三区| 农村少妇久久久久久久| 欧洲精品欧洲精品| 91成人国产综合久久精品蜜月| 91狠狠色丁香婷婷综合久久精品| 国产性爱在线视频一区二区| 九九九久久久| 97中文热色| 懂色影视久久| 日本孕妇孕交| 欧美夜色| 91天堂视频| 九一屌逼| 欧美专利1区2区3区4区5区免费| 影音先锋国产精品| 2019天天干天天操| 亚洲自拍天堂| 亚洲图片激情综合另类| 老熟女乱伦片| AV乱伦国产| 超碰97久久| 亚洲91网| 亚洲中文字幕熟女| 中文字幕蜜乳av| 97视频免费在线观看| 久久伊人影院| 啊啊啊爽爽| 综合久久2017| 懂色aV一区二区天美传媒| 午夜男人的天堂| 亚洲激情综合另类| av中亚| 性夜影院爽黄A爽免费动漫| 97欧美在线| 少妇久久| 亚洲天堂五月天国产| 自拍偷拍第26| 草草影院日本第一页| 人人看欧美性爱| 亚洲av影音先锋| 亚洲天堂无码| 丁香五月色情| 超碰亚洲97| 曰本精品久久久| 99蜜桃臀久久久欧美精品网站| 日本淫穴在线| 丰满欧美放荡少妇在线| 日本ZZ高免费A级视频| 精品人妻一区二区三区不卡断| 春色91| 亚洲无码精品AV久久久| 国产一区二区三区白丝| 日本免费专区| 久99| 亚洲官网在线| 91N综合网在线| 久久久久久久久久久久97| 欧美资源| 免费看国产曰批40分钟怎么下载| 91操人| 五月天婷婷欧美三区| 欧美一区二区在线资源| 亚州熟妇精品| 九九热三级片| 国产91av在线播放| 亚洲欧美精品福利在线| 一区二区三区 丝袜 高跟 美腿| 啊啊啊好湿久久| 欧美在线综合| 中文字幕国产在线天堂| 久久毛卡| www.狠狠干.coom| 色麻豆AV| 亚洲黑人在线| 91爆操视频| 99少妇精品视频| 久久同城AV| 欧美性色网| 国产一区二区精品久久99| 99热免费| 欧美色图97| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 久久999久| 中文字幕成人乱码熟女精品国50| ji熟女.com| 东京热亚洲一区二区| 97操在线| 天堂v无码免费视频| 欧美日韩中文亚洲v在线综合| 999久久久九| 五月天久久人妻| 中文字幕日韩人妻视频一区二区三区| 天天欧美欧美亚洲网| 中文一区二区| 精品成人亚洲午夜电影| 亚洲 欧美都市激情| 日韩干B| 18禁免费视频| 日本不卡三级网在线播放| 综合亚洲网| 亚洲精品一区二区三区在线播放| 国产精品久久久蜜臀| 久久久久久久| 日韩啪啪视频| 狠狠操狠狠燥| 在线观看亚洲专区| 国产小炒后入式| 中国农村熟妇毛片视频| 中日无幕一二三四区| 丝袜 中出 制服 人妻 美腿 中文字幕| www.av在线视频| 成人A片男人的天堂| 少妇综合| 东北黄色电影| 久热一区二区| 另类图片五月| 色香欲综合| AV 少妇 人妻 偷拍| 91狠狠狠| 91精品久久久久久综合五月天| 国产精品久久久久久久无码AV| 亚洲综合在线第一页| 我想要啊 啊 啊| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 午夜福利在线合集| 久久这里是精品| 1区2区3区中文字幕日韩| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 日韩情色视频| 国产激情视频一区区三区| 国产久久一区二区午夜| 久操97| 禁片 高清 在线观看视频网站| 91观看 国产白丝| 狠狠干,狠狠操| 97精品在线视频| 天天综合网一91网| 欧美一区二区男人天堂| 内射中出日韩在线观看视频| 国产又黄又爽| 久久久熟妇熟女国产| 日本性爱欧美性爱| 99热大香蕉伊在线| 久久精品性| 9久久精品| 用力操死我| 台湾成人无码AV| 加勒比性爱成人在线| 综合啪啪| 男啪女色黄无遮挡免费观看| 蜜臀人妻少妇久久在线观看| 欧美人与性动交a美精品| 欧美色图在线视频少妇| 2024人人操人人摸| 超碰色综合| 日韩精品第3页| 女人喷水视频在线观看| 91美女片在线| 亚洲综合113页| 午夜电影在线观看无码专区| 国产久久天堂资源| 欧美五区| 成人三级片无码| 亚洲色图 欧美| 欧日韩在线观看| 中文字幕一区二区三区视频播放| 亚洲色图欧洲| 欧美78| 久热免费视频| 国产精品爽爽v| 天天天干977| 中文在线久久字幕| 97人人超| 琪琪精品免费一区二区三区| 天天影视91看看| 欧美激情超碰777| 韩国一级做A片免费的| av黄图片在线观看| 国产乱不卡| 超碰碰97| 欧美日韩99| 8x福利精品第一福利视频导航| 亚洲第一男人天堂| 欧美少妇一区二区三区| 综合欧美日本三级| 夜夜草我| 大香蕉视频啪啪啪啪| 日韩精品操少妇| 国产亚洲综合欧美一区| 亚洲影院成人| 超碰精品97| 粉嫩AV输入| www老逼91| 色人久久| 欧美日韩国产高清在线一二三区| 俄罗斯及免费在线看| 夜夜国自区| 2017大香蕉国产精品久久| 中文字幕第页| 国产成人无码高清| 久久这里是精品| 午夜男女爽爽大片免费观看| 91N综合网| 偷拍片久久| 久久久久久久久久黄色网| 男人亚洲91首页在线| 亚洲高清无码免费观看视频| 乱伦1色页| 亚洲图片日本AⅤ欧美在线| 欧美天天| 91五十路| 午夜爽爽爽| 大香蕉视频啪啪啪啪| 免费精品AB| 99re6国产精品99re| 日本99一区二区| 超碰午夜在线| 日本不卡码黄色| 91熟女熟妇视频网站| 九九热视频在线观看| 国产AV超爽| 亚洲综合精品国产一区| 福利伊人玖玖国产| 全免费a敌肛交毛片免费| 377p欧洲日本亚洲大胆| 亚洲国产av中文字幕久久| 影音先锋每日最新资源在线观看| 欧美色人| 国产91福利小视频在线观看| 好色综合| 国产精品999aaa| 人妻精品视频一区二区三区| 91精品人| 最新av网站在线观看| 欧美日韩大黄片| 亚洲国产精品99久久久| 香蕉久久AⅤ...| 久久一区二区高清免费| 搡老人老9丨女老熟人| 色情乱伦AV| 日韩欧美字幕亚洲一区二区| 午夜福利成人免费视频| 大香蕉520| 国产av高清版| 屌妞视频久久久久久久久久久久 | 88xx成人精品视频| ,成人免费啪啪视频| 三级AV入口| 亚洲 国产 精品一区| 无遮挡猛进视频免费无限观看| 久久九九网| 日韩性色b| 综合天天网| 久久精品无码熟妇一区二区三区视频导航| 久久精品国产97欧美精品亚洲 | 99天堂网| 麻豆AV一区二区| 欧美性生活内射| 97久操| 国产在线综合福利网站| 色黄色美女大长腿午夜视频| 5月婷婷6月六月丁香| 欧美性天天影视| 亚洲视频一二区| 久久久性少妇| 丁香婷婷五月| 成人性爱高清视频免费看| 大香蕉亚洲中文| 美国人人操人人操| 色97国产69香蕉| 风流老熟女一区二区三区l| 91性感在线| 日韩在线欧美精品一区二区| 国产三级日产三级韩国三级| 99热官网| 综合91网| 91殴美| 欧美久久人人网| 熟妇熟女亚洲天堂网| 国产二区三区粉嫩在线| 欧美东京热青青草| 福利操逼| 亚洲有码 视频一区| 日韩欧美中文字| 三久久久四久久久久| 国产 亚洲 丝袜 制服| 加勒比在线视频| 国产高清在线自在拍69| 黄色香蕉视频网站一区| 色综合色色| 亚洲自拍欧美色综合| 夫妻天天操岛国视频| 自拍大香蕉乱插| 国产美女91视频| 91欧美综合| aaaa少妇高潮大片| 午夜福利区| 超碰97久久| 狠狠色综合网| 综合网亚洲1| 久久久久久亚洲Av无码| 日韩有码免费视频| 国产三级中文字幕粉嫩| 欧美一级久久久丰满| 蜜桃传媒一区二区亚洲| 密臀在线一区尤物| 91精品大奶人妻| 青青草中日韩在线| 综合久久久久久久综合网| 国产一区二区三区不卡手机在线| 色图综合| 天天干美少妇一区| 欧美伊人电影| 黄色av一区二区在线| 男人的天堂久久狠| 久久久久久人妻一区精品色欧美| 久热69九色熟妇97| 91丝袜在线播放| 婷婷五月天小说| 亚洲男人在线观看天堂| 任你爽视频| 午夜经典| 97色碰| 欧美96精品在线| 五月激情在线| 亚洲欧美情色| 欧美综合骚| 中文字幕蜜乳av| 天天肏美女| 亚欧无码线免费观看视频| 大香蕉 222| 澳门黄片一香蕉视频| 日逼五月天| 亚洲精品xxx| 97在线资源| 国产精品久久久999| 婷婷五月天无码 | 日韩在线观看AV| 国产精品久久久三级无码| 久久久78| 中文字幕在线24| 国产精品视频内谢女人| 嗯嗯啊啊操死我| 伊人专区一区二区三区| 青青草色插素人| 日日碰狠狠添天天爽超| 综合亚洲网| 欧美第一页性| 成人性爱AV在线免费观看| 色娱乐色呦呦夜夜夜夜av| 激情小说成人日本无码一| 一级免费精品| 人妻熟女一区在| 一起草三级AV电影在线观看 | 嗯嗯啊啊操死我| 久久久久免费看少妇A片特黄| 男人精品天堂一区| 蜜乳av首页| 97在线观看免费视频| 久久久久久久国产| 破苞ⅩXXX性无码动漫无码| 蜜臀人妻少妇久久在线观看| 91女人的网站| 国产精品亚洲无码| 亚洲精品久久久久久| 骚逼高潮久久精品| 无码高清操逼网址| 国产91专区| 又大又白奶子| 精品人体无圣光凹凸| 夜夜高潮夜夜爽夜夜爱爱一区| 欧美少妇一区二区三区| 国产综合网站在线播放 | 旡码电影特区| 草草网站影院白丝内射| 男女国产精品| 亚洲电影91| 啊啊啊com| 乱伦系列一区二区| 亚洲成人激情小说视频| 欧美91久久久久| 国产欧美美女免费观看视频| 精品一区二区综合熟妇| 亚洲97| 久久精品成人| 超碰综合色| 花野真衣| 免费一级欧美片片线观看| 国产成人99久久亚洲综合| 精品一区二区三区蜜桃| 91久久国产综合精品| 在线观看一卡二卡| 免费簧片在线观看| 无码久久国产 | 五月天丁香网| 国产精品自拍xxxx| 亚洲精品97| 日本道人妻久久久在线不卡色视频| 色五月天AV| 白嫩嫩一区| 超碰成人免费| 国产精品婬乱一级毛片彝族| 操啊国产| 激情综合网亚洲| 78精品| 女同性恋中文字幕| 九九热精彩视频| 九九热超碰97亚洲最新香蕉 | 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 久久九九97| 欧美色图天堂网m| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 久操B网| 色婷婷电影网| 欧美亚洲中文字幕| 美女午夜福利免费视频| 久久久久亚洲三级电影| 亚洲男人电影天堂| 香蕉99秘 一区精品蜜桃臀| 亚州,欧美在线| 青青久日| 久久99干一本高清| 大香蕉92| 男人的天堂日韩| 五十路人妻在线| 免费看国产大AB| 亚洲综合 欧美| 精品综合久久久久久97| 欧美与日韩97| 久久久久久久久国产| 大香蕉青青9| 香蕉大久久久| 日韩无码服务区| 91色欧美| 色综合91好| 凹凸精品熟女在线观看| 啊啊啊啊啊在线| 精品无码久久久久久久杏吧| 久久久精品| 国产JDAV无码视频在线观看| 性色av大全| 激情抓乳插进去啪啪啪日韩| 国产成人主播| 日本一区二区三区免费观看| 久久超碰国产一区二区三区| 成全动漫视频观看免费下载| 亚洲日韩人妻中文字幕一区| a片偷拍视频|