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

ARTICLE DETAIL

資訊詳情

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

用云開(kāi)發(fā)構(gòu)建微信小程序點(diǎn)餐系統(tǒng):從環(huán)境初始化到訂單閉環(huán)

用云開(kāi)發(fā)構(gòu)建微信小程序點(diǎn)餐系統(tǒng):從環(huán)境初始化到訂單閉環(huán) 簡(jiǎn)介一款基于云技術(shù)實(shí)現(xiàn)的微信小程序點(diǎn)餐系統(tǒng)覆蓋在線點(diǎn)餐、菜單分類(lèi)、訂單生成等常用功能主要面向高校學(xué)生與小程序開(kāi)發(fā)者可作為課程設(shè)計(jì)項(xiàng)目或期末大作業(yè)的完整參考實(shí)現(xiàn)。資源共46個(gè)文件壓縮包僅502KB包含頁(yè)面結(jié)構(gòu)、樣式、邏輯腳本、JSON配置文件以及云函數(shù)與數(shù)據(jù)庫(kù)初始化腳本和用于界面展示的JPG/PNG圖片目錄劃分明確便于按模塊閱讀和二次開(kāi)發(fā)。已有988人學(xué)習(xí)下載。源碼提供完整項(xiàng)目配置與部署腳本下載后可直接導(dǎo)入微信開(kāi)發(fā)者工具運(yùn)行無(wú)需額外修改同時(shí)附有項(xiàng)目說(shuō)明文檔和云函數(shù)上傳腳本可幫助讀者快速理解前后端交互流程落地一個(gè)可演示的點(diǎn)餐小程序從菜單展示到訂單提交完整演示業(yè)務(wù)閉環(huán)適合高分課程設(shè)計(jì)與期末大作業(yè)場(chǎng)景。1. 微信小程序點(diǎn)餐系統(tǒng)不是“把菜單搬上線”云技術(shù)到底替我們省了什么“微信小程序點(diǎn)餐系統(tǒng)”這六個(gè)字放到一起很多人第一反應(yīng)是做個(gè)點(diǎn)菜頁(yè)面、拉個(gè)菜品列表、再寫(xiě)個(gè)購(gòu)物車(chē)就能交差。真正到餐廳里跑過(guò)一遍掃碼點(diǎn)餐就會(huì)發(fā)現(xiàn)難的不是界面而是“下單那一刻之后的事”庫(kù)存會(huì)不會(huì)被超賣(mài)、訂單狀態(tài)誰(shuí)來(lái)更新、用戶不支付就走怎么辦、商戶端怎么實(shí)時(shí)看到新單。這套方案目前比較省力的落地方式是微信小程序端配云技術(shù)也就是云開(kāi)發(fā)——數(shù)據(jù)庫(kù)、鑒權(quán)、云函數(shù)、對(duì)象存儲(chǔ)都替你兜住不用自己買(mǎi)服務(wù)器配域名。這篇按一套可復(fù)現(xiàn)的最小方案來(lái)講先想清楚選型再搭云端數(shù)據(jù)模型然后把下單、支付、接單的狀態(tài)機(jī)跑通最后把分頁(yè)加載和真機(jī)適配這些細(xì)節(jié)補(bǔ)上。適合準(zhǔn)備接小程序私活、做校園食堂訂餐系統(tǒng)、或者幫線下餐廳做數(shù)字化改造的開(kāi)發(fā)者。拿到源碼包之后先別急著跑先把環(huán)境和數(shù)據(jù)模型對(duì)上了后面才不返工。2. 選型階段先想明白為什么是微信小程序云技術(shù)而不是純Web或自建后端2.1 小程序端只做三件事渲染、交互、調(diào)云端點(diǎn)餐場(chǎng)景最核心的訴求是“到店掃碼即用”。用戶不需要下載App也不用記住網(wǎng)址微信掃一下桌臺(tái)碼就進(jìn)入菜品頁(yè)面這個(gè)體驗(yàn)只有小程序能順滑給到。相比公眾號(hào)H5小程序在微信生態(tài)里喚起更快還能拿到更穩(wěn)定的登錄態(tài)。相比純Web方案省掉了域名備案、跨域、H5登錄態(tài)維護(hù)這一堆雜事。小程序端本身不該承擔(dān)太多業(yè)務(wù)邏輯。它只做三件事展示菜品和價(jià)格、維護(hù)本機(jī)購(gòu)物車(chē)、把下單動(dòng)作變成一次云函數(shù)調(diào)用。真正算錢(qián)、扣庫(kù)存、改訂單狀態(tài)的操作必須放到云端。原因是微信小程序的代碼包可以被反編譯你把庫(kù)存判斷和訂單金額計(jì)算放在前端就等于把改價(jià)和超賣(mài)的權(quán)限也交給了用戶。云技術(shù)在這里補(bǔ)位的具體能力有三個(gè)一是數(shù)據(jù)庫(kù)集合存菜品和訂單二是云函數(shù)跑不能暴露給前端的邏輯三是云存儲(chǔ)放菜品圖片。這三塊都由微信云開(kāi)發(fā)托管你不需要關(guān)心服務(wù)器在哪臺(tái)機(jī)器上、磁盤(pán)滿沒(méi)滿、SSL證書(shū)要不要續(xù)期。我一般會(huì)把這個(gè)叫做“最小可信邊界”前端只負(fù)責(zé)表達(dá)云端只負(fù)責(zé)決策。這里要潑一盆冷水如果客戶已經(jīng)有現(xiàn)成的收銀系統(tǒng)、庫(kù)存系統(tǒng)或者需要和供應(yīng)鏈對(duì)賬那云開(kāi)發(fā)不一定是最優(yōu)選。它適合從零起步的門(mén)店不適合做復(fù)雜系統(tǒng)集成。判斷標(biāo)準(zhǔn)就一句話——你的數(shù)據(jù)是不是只在這個(gè)系統(tǒng)里轉(zhuǎn)是就放心用云開(kāi)發(fā)不是就得考慮自建后端。2.2 云開(kāi)發(fā) vs 自建后端這張對(duì)比表幫你做決定很多團(tuán)隊(duì)糾結(jié)“要不要自己寫(xiě)后端”我干脆把判斷維度列成一張表對(duì)著看就行。維度云開(kāi)發(fā)自建后端Node/Java MySQL前期成本按量付費(fèi)個(gè)人項(xiàng)目一個(gè)月幾塊錢(qián)甚至免費(fèi)額度內(nèi)服務(wù)器、域名、備案、運(yùn)維前期就要投入登錄鑒權(quán)wx.cloud.init之后openid直接拿不用寫(xiě)code2session需要自己接微信登錄維護(hù)session和token實(shí)時(shí)推送數(shù)據(jù)庫(kù)watch監(jiān)聽(tīng)改動(dòng)直接推給前端要自建WebSocket或者輪詢接口文件存儲(chǔ)云存儲(chǔ)自帶CDN圖片直接傳要自己接OSS/MinIO再配CDN事務(wù)能力云函數(shù)支持事務(wù)但跨集合復(fù)雜事務(wù)要小心完全可控支持復(fù)雜表關(guān)聯(lián)和事務(wù)適合場(chǎng)景門(mén)店點(diǎn)餐、校園食堂、中小餐飲獨(dú)立系統(tǒng)連鎖總部、已有ERP/POS、需要數(shù)據(jù)倉(cāng)庫(kù)的客戶我給小餐廳做點(diǎn)餐系統(tǒng)絕大多數(shù)情況選云開(kāi)發(fā)。原因很現(xiàn)實(shí)客戶預(yù)算就那么多你讓他在“前端開(kāi)發(fā)”之外再養(yǎng)一個(gè)后端項(xiàng)目周期和成本都翻倍。而校園食堂訂餐這類(lèi)需求用戶量不大、并發(fā)可控、數(shù)據(jù)模型簡(jiǎn)單云開(kāi)發(fā)完全扛得住。一個(gè)常見(jiàn)的反面案例是團(tuán)隊(duì)花兩周寫(xiě)后端接口第四周發(fā)現(xiàn)客戶改需求前后端一起返工云開(kāi)發(fā)模式下改兩個(gè)云函數(shù)就行成本低很多。2.3 數(shù)據(jù)模型設(shè)計(jì)先于寫(xiě)代碼三種集合怎么分點(diǎn)餐系統(tǒng)的數(shù)據(jù)模型比想象中簡(jiǎn)單但字段設(shè)計(jì)錯(cuò)了后期很痛苦。我一般分三個(gè)集合dishes菜品、orders訂單、cart購(gòu)物車(chē)。其中購(gòu)物車(chē)不建議存云端放在小程序本地storage里就行。原因是購(gòu)物車(chē)是即時(shí)交互本地讀寫(xiě)零延遲不消耗云資源換設(shè)備丟購(gòu)物車(chē)在點(diǎn)餐場(chǎng)景里不成立因?yàn)橛脩粲玫氖峭慌_(tái)手機(jī)。dishes集合的字段建議這么定字段類(lèi)型說(shuō)明namestring菜品名稱pricenumber單價(jià)以“分”為單位存儲(chǔ)避免浮點(diǎn)誤差categorystring分類(lèi)名稱如“主食”“飲品”stocknumber庫(kù)存0代表售罄imagestring云存儲(chǔ)文件IDstatusstringon/off下架用sortnumber排序權(quán)重越小越靠前createTimedate上架時(shí)間orders集合要額外注意冗余字段items數(shù)組里把菜品name和price都冗余進(jìn)去。別嫌臟數(shù)據(jù)這是必須的。用戶下單之后你改了菜價(jià)歷史訂單不受影響月底對(duì)賬時(shí)訂單里冗余的快照才是真正的賬本。total金額同理必須存進(jìn)訂單不能靠items實(shí)時(shí)算。訂單狀態(tài)就一個(gè)status字段建議用英文枚舉pending、paid、preparing、completed、cancelled。別用中文也別用數(shù)字后面接支付回調(diào)、定時(shí)任務(wù)時(shí)英文枚舉讀起來(lái)不容易搞錯(cuò)。createTime和updateTime都存數(shù)據(jù)庫(kù)時(shí)間不要信前端傳的時(shí)間戳用戶手機(jī)時(shí)間不準(zhǔn)會(huì)影響對(duì)賬。3. 從零把在線點(diǎn)餐系統(tǒng)跑起來(lái)初始化云端環(huán)境與小程序骨架3.1 云開(kāi)發(fā)環(huán)境初始化與三個(gè)必調(diào)參數(shù)拿到源碼包的第一步是先把云端環(huán)境對(duì)上。打開(kāi)微信開(kāi)發(fā)者工具導(dǎo)入項(xiàng)目后app.js里的wx.cloud.init是第一個(gè)要改的地方。// app.js App({ onLaunch() { wx.cloud.init({ env: your-env-id, // 改成你自己的云環(huán)境ID traceUser: true // 聯(lián)調(diào)時(shí)打開(kāi)可以在控制臺(tái)看到用戶訪問(wèn)記錄 }); this.globalData { openid: }; } });邏輯說(shuō)明wx.cloud.init如果不傳env默認(rèn)用第一個(gè)環(huán)境但很多開(kāi)發(fā)者電腦上有兩三個(gè)環(huán)境環(huán)境一多就串了訂單寫(xiě)進(jìn)測(cè)試環(huán)境里前端看不到。顯式傳環(huán)境ID是最穩(wěn)的做法。traceUser在前端聯(lián)調(diào)時(shí)建議開(kāi)著能看到是哪個(gè)用戶調(diào)用了哪個(gè)云函數(shù)排查問(wèn)題很有用。上線前可以關(guān)掉減少一點(diǎn)點(diǎn)日志量。還需要檢查project.config.json里有沒(méi)有聲明云函數(shù)目錄。沒(méi)有的話在文件里加一行{ cloudfunctionRoot: cloudfunctions/ }參數(shù)說(shuō)明這行配置告訴開(kāi)發(fā)者工具所有云函數(shù)都放在cloudfunctions目錄下。每個(gè)子目錄是獨(dú)立的云函數(shù)右鍵就能上傳部署。如果這行缺失云函數(shù)目錄在工具里就是個(gè)普通文件夾右鍵根本沒(méi)有“上傳并部署”的選項(xiàng)。這是新手最容易卡的第一個(gè)點(diǎn)。3.2 小程序頁(yè)面骨架左右分欄的點(diǎn)餐主頁(yè)頁(yè)面結(jié)構(gòu)我一般分四個(gè)pages/index點(diǎn)餐主頁(yè)、pages/order確認(rèn)下單頁(yè)、pages/orders訂單列表、pages/admin商戶接單頁(yè)。按原生小程序?qū)懖灰匦涂蚣芎竺婵蛻粢臉邮綍r(shí)你才不會(huì)被框架綁住手腳。點(diǎn)餐主頁(yè)的經(jīng)典布局是左側(cè)分類(lèi)、右側(cè)菜品列表!-- pages/index/index.wxml -- view classmenu-container view classcategory-side view wx:for{{categories}} wx:keyname classcategory-item {{currentCategory index ? active : }} bindtapswitchCategory>// cloudfunctions/initDishes/index.js const cloud require(wx-server-sdk); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); const db cloud.database(); exports.main async () { const dishes [ { name: 招牌牛肉面, price: 2800, category: 主食, stock: 50, sort: 1, status: on, image: cloud://xxx } // 更多菜品按同樣格式補(bǔ) ]; const result []; for (const dish of dishes) { const res await db.collection(dishes).add({ data: dish }); result.push(res._id); } return { added: result.length }; };參數(shù)說(shuō)明env用cloud.DYNAMIC_CURRENT_ENV意思是“云函數(shù)在哪個(gè)環(huán)境運(yùn)行就用哪個(gè)環(huán)境的數(shù)據(jù)庫(kù)”。這個(gè)寫(xiě)法有兩個(gè)好處一是不會(huì)因?yàn)橛簿幋a環(huán)境ID而串環(huán)境二是同一份代碼在開(kāi)發(fā)和生產(chǎn)環(huán)境都能跑不用改。價(jià)格字段用2800表示28元按“分”存整數(shù)避免浮點(diǎn)運(yùn)算誤差。前端拉取菜品列表數(shù)據(jù)庫(kù)查詢。注意limit的默認(rèn)限制。async loadDishes() { const db wx.cloud.database(); const res await db.collection(dishes) .where({ status: on }) .orderBy(sort, asc) .limit(20) .get(); this.setData({ dishList: res.data, currentCategory: 0 }); }參數(shù)說(shuō)明前端直連數(shù)據(jù)庫(kù)查詢單次最多返回20條超過(guò)20條必須用skip分頁(yè)。where篩選上架的菜品orderBy按sort升序排列。這里有個(gè)隱藏坑orderBy的字段必須在云開(kāi)發(fā)控制臺(tái)里建索引否則會(huì)報(bào)錯(cuò)。建索引的方法很簡(jiǎn)單進(jìn)控制臺(tái)數(shù)據(jù)庫(kù)集合點(diǎn)索引管理把sort設(shè)為升序索引。聯(lián)調(diào)時(shí)如果提示“query is not allowed”優(yōu)先查索引。4. 核心業(yè)務(wù)閉環(huán)點(diǎn)餐、下單與接單的狀態(tài)流轉(zhuǎn)4.1 購(gòu)物車(chē)邏輯放在本地為什么我不建議存云端購(gòu)物車(chē)是點(diǎn)餐頁(yè)面到確認(rèn)訂單的中間態(tài)把它放在小程序本地storage里是性能和數(shù)據(jù)成本的雙贏。本地讀寫(xiě)在毫秒級(jí)不產(chǎn)生云函數(shù)調(diào)用用戶體驗(yàn)流暢云端購(gòu)物車(chē)要處理多端同步代碼量和出錯(cuò)的概率都翻倍。// utils/cart.js const KEY CART; function getCart() { return wx.getStorageSync(KEY) || []; } function addToCart(dish, count 1) { const cart getCart(); const exist cart.find(item item.dishId dish._id); if (exist) { exist.count count; } else { cart.push({ dishId: dish._id, name: dish.name, price: dish.price, image: dish.image, count }); } wx.setStorageSync(KEY, cart); }邏輯說(shuō)明購(gòu)物車(chē)?yán)锏膒rice是從dishes集合里帶出來(lái)的冗余副本只在界面展示用。真正下單時(shí)云函數(shù)會(huì)重新從數(shù)據(jù)庫(kù)讀取菜品價(jià)格以數(shù)據(jù)庫(kù)為準(zhǔn)。這樣就算前端storage被人改過(guò)也影響不了訂單金額。這是點(diǎn)餐系統(tǒng)安全的基礎(chǔ)防線不能省。4.2 下單云函數(shù)服務(wù)端核價(jià)、狀態(tài)校驗(yàn)、庫(kù)存前置檢查用戶點(diǎn)“去結(jié)算”后前端把tableNo和items傳給云函數(shù)云函數(shù)只做一件事把訂單合法地寫(xiě)進(jìn)數(shù)據(jù)庫(kù)。// cloudfunctions/createOrder/index.js const cloud require(wx-server-sdk); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); const db cloud.database(); exports.main async (event) { const { OPENID } cloud.getWXContext(); const { tableNo, items } event; const orderCol db.collection(orders); const dishCol db.collection(dishes); let total 0; const checkedItems []; for (const item of items) { const res await dishCol.doc(item.dishId).get(); const dish res.data; if (!dish || dish.status ! on) { return { code: -1, msg: ${item.name} 已下架 }; } if (dish.stock item.count) { return { code: -2, msg: ${dish.name} 庫(kù)存不足 }; } total dish.price * item.count; checkedItems.push({ dishId: dish._id, name: dish.name, price: dish.price, count: item.count }); } const order { openid: OPENID, tableNo, items: checkedItems, total, status: pending, createTime: db.serverDate(), updateTime: db.serverDate() }; const addRes await orderCol.add({ data: order }); return { code: 0, orderId: addRes._id, total }; };邏輯說(shuō)明cloud.getWXContext()拿到的是微信側(cè)確認(rèn)過(guò)的openid前端無(wú)法偽造這是訂單歸屬用戶的依據(jù)。for循環(huán)里先查菜品再核價(jià)所有金額在后端算前端傳的price直接被忽略。返回的total供前端展示但真正的扣款以云函數(shù)為準(zhǔn)。參數(shù)說(shuō)明這次創(chuàng)建訂單沒(méi)有扣庫(kù)存status是pending因?yàn)橛脩暨€沒(méi)付款。庫(kù)存留在支付回調(diào)里扣這是點(diǎn)餐系統(tǒng)防超賣(mài)的關(guān)鍵決策。db.serverDate()記錄數(shù)據(jù)庫(kù)當(dāng)前時(shí)間避免用戶手機(jī)時(shí)鐘偏差影響超時(shí)判斷。下單之前還有一個(gè)防重復(fù)提交的校驗(yàn)我一般會(huì)在createOrder開(kāi)頭加一段短查詢const recent await orderCol.where({ openid: OPENID, status: pending, createTime: db.command.gt(new Date(Date.now() - 60 * 1000)) }).count(); if (recent.total 0) { return { code: -3, msg: 您有一筆訂單待支付請(qǐng)先處理 }; }參數(shù)說(shuō)明檢查該openid最近一分鐘內(nèi)是否已有pending狀態(tài)的訂單有就直接拒絕。這能擋住用戶連點(diǎn)“提交訂單”產(chǎn)生的重復(fù)單也擋住高頻惡意刷單。前端按鈕loading當(dāng)然要做但云端兜底才是硬保障。4.3 支付回調(diào)、庫(kù)存扣減與商戶實(shí)時(shí)接單創(chuàng)建訂單之后前端調(diào)wx.requestPayment進(jìn)入微信支付。支付成功后微信支付后臺(tái)回調(diào)你的云函數(shù)這才是真正扣庫(kù)存的時(shí)機(jī)。// cloudfunctions/payCallback/index.js const cloud require(wx-server-sdk); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); const db cloud.database(); exports.main async (event) { const { orderId } event; const orderRes await db.collection(orders).doc(orderId).get(); const order orderRes.data; if (!order || order.status ! pending) { return { code: 0 }; // 重復(fù)回調(diào)直接冪等返回 } const tasks order.items.map(item { return db.collection(dishes).doc(item.dishId).update({ data: { stock: db.command.inc(-item.count) } }); }); await Promise.all(tasks); await db.collection(orders).doc(orderId).update({ data: { status: paid, payTime: db.serverDate(), updateTime: db.serverDate() } }); return { code: 0 }; };參數(shù)說(shuō)明庫(kù)存扣減用db.command.inc(-item.count)這是原子操作多個(gè)并發(fā)回調(diào)同時(shí)執(zhí)行也不會(huì)互相覆蓋。先校驗(yàn)訂單狀態(tài)再扣庫(kù)存回調(diào)重復(fù)觸發(fā)也能安全退出這叫冪等處理。把狀態(tài)改成paid之后訂單就進(jìn)入商戶端的視野了。商戶端實(shí)時(shí)接單我一般用數(shù)據(jù)庫(kù)watch監(jiān)聽(tīng)const db wx.cloud.database(); const watcher db.collection(orders) .where({ status: paid }) .watch({ onChange: snapshot { snapshot.docs.forEach(doc { wx.showToast({ title: 新訂單${doc.tableNo}, icon: none }); }); }, onError: err { console.error(watch error, err); } });邏輯說(shuō)明watch是云開(kāi)發(fā)數(shù)據(jù)庫(kù)的實(shí)時(shí)推送能力比前端定時(shí)輪詢省資源也比“下拉刷新”實(shí)時(shí)。snapshot.docs是本次變更后的訂單列表里面是你監(jiān)聽(tīng)條件下的全部文檔不只是新增的。注意watch只在真機(jī)和開(kāi)發(fā)者工具的一部分場(chǎng)景下穩(wěn)定我建議以真機(jī)測(cè)試為準(zhǔn)。集合權(quán)限要允許watch觸達(dá)否則onError會(huì)一直刷。5. 避坑排查點(diǎn)餐系統(tǒng)最容易翻車(chē)的五個(gè)細(xì)節(jié)5.1 云函數(shù)調(diào)用報(bào)錯(cuò)環(huán)境ID沒(méi)對(duì)上還算是客氣的情況現(xiàn)象點(diǎn)擊提交訂單按鈕后一直轉(zhuǎn)圈最終提示“云函數(shù)調(diào)用失敗”。開(kāi)發(fā)者工具控制臺(tái)有時(shí)只給一句“FunctionName: createOrder not found”。原因有三個(gè)按概率排序一是云函數(shù)目錄沒(méi)有“上傳并部署”到云端本地代碼改了但云端是舊版二是云函數(shù)里cloud.init的env寫(xiě)死成測(cè)試環(huán)境ID線上小程序卻跑在生產(chǎn)環(huán)境三是云函數(shù)依賴的npm包沒(méi)有安裝右鍵上傳時(shí)選了“上傳全部文件”但node_modules缺失。解決先在開(kāi)發(fā)者工具里右鍵云函數(shù)目錄選“上傳并部署云端安裝依賴”再看控制臺(tái)日志。改完代碼一定要重新部署光保存不生效這不是玄學(xué)是部署流程沒(méi)走完。環(huán)境ID一律用cloud.DYNAMIC_CURRENT_ENV從根上規(guī)避多環(huán)境串環(huán)境的問(wèn)題。5.2 菜品列表白屏數(shù)據(jù)庫(kù)權(quán)限把普通用戶擋在門(mén)外現(xiàn)象開(kāi)發(fā)者工具里預(yù)覽菜品正常用體驗(yàn)版二維碼發(fā)給店長(zhǎng)測(cè)試頁(yè)面列表空白控制臺(tái)報(bào)權(quán)限錯(cuò)誤。原因database集合權(quán)限設(shè)成了“僅創(chuàng)建者可讀寫(xiě)”。菜品是管理員通過(guò)控制臺(tái)或initDishes云函數(shù)寫(xiě)入的創(chuàng)建者是管理員本人普通顧客的openid不是創(chuàng)建者被拒絕讀取。解決dishes集合權(quán)限改為“所有用戶可讀僅創(chuàng)建者可寫(xiě)”。orders集合是訂單數(shù)據(jù)不能開(kāi)放所有用戶可讀要按用戶隔離。云開(kāi)發(fā)控制臺(tái)里可以設(shè)置自定義安全規(guī)則{ read: doc.openid auth.openid || auth.openid admin-openid, write: doc.openid auth.openid }參數(shù)說(shuō)明read規(guī)則允許訂單屬主讀取自己的訂單同時(shí)放行管理員openid讀取全部訂單。admin-openid在安全規(guī)則里是明文如果客戶對(duì)安全要求高就讓所有訂單操作都走云函數(shù)不開(kāi)放數(shù)據(jù)庫(kù)直連。我自己的項(xiàng)目一律走云函數(shù)省心。5.3 連點(diǎn)“提交訂單”生成三張重復(fù)單現(xiàn)象用戶手速快或者網(wǎng)絡(luò)慢導(dǎo)致前端loading沒(méi)及時(shí)渲染同一份菜品下了三個(gè)訂單而且都是pending狀態(tài)。原因前端按鈕沒(méi)有做防重后端也沒(méi)有冪等校驗(yàn)。一個(gè)訂單請(qǐng)求進(jìn)來(lái)了三個(gè)并發(fā)請(qǐng)求同時(shí)通過(guò)查詢同時(shí)寫(xiě)入。解決前端button加disabled或loading狀態(tài)這是第一道防線。后端在下單云函數(shù)里加最近一分鐘pending訂單判斷有就拒絕。這里要注意云函數(shù)端的時(shí)間用new Date()取服務(wù)器時(shí)間不要用前端傳的timestamp。兩道防線都加上重復(fù)單基本絕跡。5.4 庫(kù)存被扣光但訂單沒(méi)支付庫(kù)存扣減的時(shí)機(jī)錯(cuò)了現(xiàn)象店里盤(pán)點(diǎn)發(fā)現(xiàn)某道菜庫(kù)存變成0但后臺(tái)沒(méi)有一筆paid狀態(tài)的訂單全是pending。原因創(chuàng)建訂單時(shí)就直接扣庫(kù)存用戶下單不付款庫(kù)存白白占用。等客戶真正來(lái)付款時(shí)反而因?yàn)閹?kù)存不足付不了款。解決把庫(kù)存扣減放到支付回調(diào)里只有支付成功才扣。同時(shí)加一個(gè)云函數(shù)定時(shí)觸發(fā)器每5分鐘掃一次pending超過(guò)15分鐘的訂單把它們置為cancelled。如果業(yè)務(wù)上需要在創(chuàng)建訂單時(shí)鎖庫(kù)存那cancelled時(shí)要用inc(count)回補(bǔ)庫(kù)存邏輯就復(fù)雜了小型點(diǎn)餐系統(tǒng)沒(méi)必要。5.5 真機(jī)預(yù)覽正常體驗(yàn)版發(fā)給別人全部白屏現(xiàn)象自己在開(kāi)發(fā)者工具和真機(jī)預(yù)覽都正常客戶拿體驗(yàn)版二維碼一打開(kāi)頁(yè)面空白或登錄態(tài)丟失。原因最常見(jiàn)是wx.cloud.init里env寫(xiě)空字符串開(kāi)發(fā)者工具自動(dòng)選了第一個(gè)環(huán)境真機(jī)上又找不到匹配環(huán)境。另一個(gè)原因是體驗(yàn)版用了“不校驗(yàn)合法域名”的調(diào)試開(kāi)關(guān)開(kāi)發(fā)時(shí)開(kāi)著沒(méi)事體驗(yàn)版上關(guān)了之后所有非白名單域名請(qǐng)求全部失敗。云開(kāi)發(fā)本身不需要配request合法域名但如果調(diào)了外部接口必須去小程序后臺(tái)把域名加進(jìn)白名單。解決初始化時(shí)顯式寫(xiě)環(huán)境ID。上線前把“不校驗(yàn)合法域名”關(guān)閉用體驗(yàn)版完整走一遍流程。怎么抓包排查把小程序接到抓包工具里看請(qǐng)求有沒(méi)有發(fā)出去、返回什么狀態(tài)碼能分清是前端沒(méi)調(diào)還是后端報(bào)錯(cuò)。不過(guò)云開(kāi)發(fā)的部分請(qǐng)求走微信內(nèi)部通道抓包工具看的是普通https請(qǐng)求最終還是以云開(kāi)發(fā)控制臺(tái)的日志為準(zhǔn)。6. 從能下單選到好用加載更多、導(dǎo)航欄適配與數(shù)據(jù)兜底菜品超過(guò)20條時(shí)列表不能一次渲染完要在滾動(dòng)到底部時(shí)加載下一頁(yè)。這個(gè)功能對(duì)應(yīng)熱搜里常見(jiàn)的“微信小程序頁(yè)面列表加載更多”是點(diǎn)餐列表的核心交互async loadMoreDishes() { const { dishList, page } this.data; const db wx.cloud.database(); const res await db.collection(dishes) .where({ status: on }) .orderBy(sort, asc) .skip(page * 20) .limit(20) .get(); this.setData({ dishList: dishList.concat(res.data), page: page 1 }); if (res.data.length 20) { this.setData({ hasMore: false }); } }邏輯說(shuō)明skiplimit是云開(kāi)發(fā)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)分頁(yè)方式每頁(yè)20條page從0開(kāi)始。hasMore用于隱藏“加載更多”提示。餐飲菜單一般幾百條而已skip性能完全夠。如果以后菜品上千再考慮用_id游標(biāo)分頁(yè)現(xiàn)在不用提前優(yōu)化。自定義頂部導(dǎo)航欄時(shí)要適配不同機(jī)型的菜單按鈕位置。搜“微信小程序頂部導(dǎo)航欄高度”能翻到一堆文章核心就一句用膠囊位置反推不要寫(xiě)死高度。const { menuButton } wx.getMenuButtonBoundingClientRect(); const { statusBarHeight } wx.getSystemInfoSync(); const navHeight menuButton.top - statusBarHeight menuButton.height; this.setData({ navHeight, statusBarHeight });參數(shù)說(shuō)明menuButton是右上角膠囊按鈕的位置信息不同機(jī)型高度不同。iPhone靈動(dòng)島和安卓狀態(tài)欄的差異都能被這個(gè)函數(shù)覆蓋比你寫(xiě)死64或72像素穩(wěn)得多。數(shù)據(jù)兜底是我交項(xiàng)目前必做的一輪菜品圖片加載失敗時(shí)不能留灰塊要用占位圖頂上去。image組件加binderror事件數(shù)據(jù)里把失敗項(xiàng)的圖片替換成本地占位圖。我自己的習(xí)慣是每次交付前用體驗(yàn)版完整走一遍“點(diǎn)餐—支付—接單—出餐—取消”全流程然后在開(kāi)發(fā)者工具里把Network面板打開(kāi)重點(diǎn)看云函數(shù)調(diào)用時(shí)長(zhǎng)和失敗率。給別人做系統(tǒng)做了幾輪之后有個(gè)教訓(xùn)凡是“先做界面再做后臺(tái)”的后面全要返工先把數(shù)據(jù)模型和訂單狀態(tài)機(jī)定死界面隨便改都不慌。點(diǎn)餐系統(tǒng)這個(gè)方向技術(shù)難度不大真正值錢(qián)的部分是對(duì)業(yè)務(wù)細(xì)節(jié)的理解和那些不試幾次發(fā)現(xiàn)不了的邊界坑。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月天激情综合网| 精品欧美А∨无码黑人大荫蒂 | 中文字幕一区二区三区蜜臀| 久久av成人无码免费| 97超碰超| 国产精品一区二区三区四区五区| 国产美女口爆吞精| 成人在线视频二区| 婷婷丁香五月激情啪啪| 26uuu国产日韩综合在线观看| 国产精品国产精品国产| 曰本特级特黄特色黄色A级网站高清在线免费看 | 人妻中文字幕日韩电影| 亚洲 欧美 制服 另类 自拍| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 久操免费观看| 亚洲国产精品久久久久婷婷老年 | 极品销魂美女一区二区| 欧美图片校园春色| 亚州国产成人精品女人久久| 国产精品久久久777| 熟女一区二区| 清清一区二区三区四区不卡视频| 日本欧美成人片AAAA| 久草网站免费在线观看| 久久国产视频性吧| 91啪啪| 波多野结衣先锋影音| 婷婷五月天激情四射| 久热精品在线| 大香蕉78| 尤物av网站免费在线播放| 一区二区高清视频| 欧美狠狠干| 人人妻人人澡人人爽久久av| 欧美天天综合| 久久国产在线一区二区| 欧美国产欧美在线观看| 亚洲国产麻豆一区二区三区| 欧美日韩性爱操大逼| 97国产高清视频在线观看| 久久成人午夜精品影院 | 男人的天堂久久狠| 亚洲色天堂九9| 欧美在线视频观看一二三四区高清| 婷婷色网| 青青操在线视频| 欧美亚洲韩国视频十五区 | 色情综合网| 天天爽天天爽| 一区二区三区四区五区高清无码永久视频 | 春色综合网| 日韩一级久久毛片| 波多野结衣先锋影音| 国产白嫩漂亮KTV在线| aaaa黄片| 夜夜操天天肏| 啊啊啊啊啊舒服| 国际精品久久久| 天美麻豆一区二区三区| 成人97人人超碰人人| 精品无码久久久久久国产浪潮| 久久69精品久久久久久久| 国产日逼视频| 综合网色| 麻豆色约约| 成·人免费午夜在线观看| 精品久久久久久AV无码| 日韩啪啪视频| 高跟伊人julia ann| 欧美性少妇| 黄骗免费网站| 色五月首页| 亚洲永久永久永久永久一级一级一级精品 | 蜜臀99久久精品| 女性喷水高潮在线观看| 大香蕉黄色一区| 久久久久久夜夜夜夜夜| 人妻无码一区二区三区久久99| 人人妻人人爽| 亚洲精品一区二区三区在线播放| 天天综合色电影| 久久日本熟女精品一区| 欧综合网| 91婷婷| 高潮综合网| 精品国产AV一区天美传媒| 精品日韩人妻视频| 志村玲子视频一区二区| 婷婷五月天色网| 亚洲无码com| 欧美日韩岛国大片在线观看| 一二三四视频在线社区中文字幕| 99婷婷一区二区| 操逼网免费无码视频| 欧美老妇女内射网址| 女生久久网| 欧美丰满熟妇XXXX性ppX人交| 99xav| 亚洲AV成人无码一二三久久 | 91色欧美| av九九| 欧洲自拍色图gif在线| 国产午夜精品理论片a大结局| 人成午夜免费大片| 日韩综合97P| 国产隔壁老王影院在线| 国产60区。| 夜草网站| 啊啊啊啊在线观看网址| 久久久免费一级黄片| 欧美永久激情一区二区| 欧美夜夜草视频| 精品久久久无码| 中出欧美| 久草毛片电影怡| 国产无吗在线播放| 久久久久久久久九九久孕交| 综合亚洲欧美精品日韩?v| www.狠狠| 中出欧美| 1204金沙人妻懂旧版免费| 成 人 A V免费视频在线观看| 午夜天堂精品久久久久91| 亚洲综人网| 黄色毛片A片| 中文久久96| 嗯啊抽插大香蕉网页| 欧美72网页| 夜夜天天噜狠狠爱2021| 91爱剪切久久| 淫色网综合| 18禁在线视频| 97在线青| 激情色播| 国产亚洲色停停久久99精品91| 天天操女人| 国产在线综合福利网站| 性爱AV天堂| av天堂手机版追回| 久久久久亚洲熟妇熟女| 锕锕好爽 死我在线观看| 欧美经典一区二区三区| 男人天堂毛片| 欧美爆操91| 盗摄女人妻在线| 超碰色美女| 亚洲色鬼| 黄片色区软件| 99999国产精品| 色爱欲亚洲| 国产福利在线视频网站| 蜜汁欧美| 欧美影音在线| 亚州成人A√| 国产女人高潮嗷嗷嗷叫小说| 日韩天天综合| 美女AV一区二区| 再深点灬舒服灬太大了好硬好爽| 亚洲综合首页| 好爽要喷了| 2010男人的天堂| 亚洲国产av中文字幕久久| 激情久久日韩精品中文字幕麻豆| 久久精品人体AV| 欧美18 在线观看| 插B在线观看| 中文字幕乱码人妻一区二区三区,99精品 | 亚洲。日韩。欧美| 色婷婷在线视频| AV一区观看| 国产日韩美女小穴视频网站不卡| 欧美一区二区日韩传媒搭讪精品| 激情五月激情综合网| 日本人妻中文字幕 | 欧美日韩免费性爱| 欧洲久久一二线| x97av| 麻豆性爱视频在线播放| 又黑又大又粗| 又大又黄国产| 狠狠欧美| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 国产综合久久久麻桃个| 精久久久| 无卡一区=区| 韩国轻伦国内自拍一区| 成人五月香网在线| 久久人妻办公室视频| 国产二区视频在线观看电影| 探花视频免费观看国产专区| 日韩欧美亚洲自拍偷拍| 亚洲欧美清纯| 久热精品在线| 天天天堂影视日韩亚洲91| 欧美无圣光在线| 狠狠狠狠狠干| 91艹逼精品| 真实高潮91| 夜夜操狠狠操| 伊人久久国产免费观看视频| 日韩一区二区熟女| 97 国产一区| 欧美另类自拍 | 骚女高跟AV在线| 国产精品suv一区| 91在线限制级| 啊啊啊不要啊啊受不了了视频在线| 国语人妻精彩刺激| 台湾肥佬网一区二区三区| 七久久久| 久久久久久波多野吉衣高潮| 久久久18禁| 天天综合欧美综合| 欧美传媒一区| 操熟女91| 91被操| 国产日韩欧美中文在线播放| 欧美日韩操操操| 久久精品国产72国产精品福利| 成人性爱高清视频免费看| 久久久亚洲欧美综合| 探花一区在线| 国产欧美第五页| 九九九九九九九精品视频| 国产少妇与亚洲av| 色制服丝袜夫妻av一区| 91精品91久久久久77777| 高颜值美女口爆高潮浪叫| 青青草这里只有精品| 中文字幕制服诱惑| 国产亚洲精品无码三区| 久久香蕉国产线看观看猫咪av| 国产精品亚洲免费| 午夜欧美J进J出白浆流出久久久 | 中文一区二区三区影院| 无码逼| 熟女乱伦二区| 中文字幕55555| 欧美熟妇亚洲版| 精品国产99999| 亚州性色| 中文字幕91页| 另类综合另类| 久久岛国| 国产自偷自拍一区| 美女淫穴| 伊人超碰97| 操逼不卡中文字幕| 一区二区三区男女操逼黄色小电影| 97超碰亚洲| 亚洲资源一区| 日韩视频中文字幕| 欧美亚洲中文字幕| 久久久免费高清中文视频| 久夜操| 一区二区中文| 人人射人人操人人摸| 99久久久无码国产精品性男| 亚洲情色1区| 91无摭挡| 欧美日韩性爱电影在线| 九九热精品在线| 亚洲欧美啪啪| 欧美性生活免费网| 香蕉99秘 精品一区丁香| 1000午夜黄色| 一区AV| 乱色视频中文字幕| 蜜臀无码一区二区| 人妻少妇被猛烈进入中| 久久发布国产伦子伦精品| 俞拍自拍| 强奸乱伦av电影| 艾草av| 久久国产精品m码| 一级aaaaa欧美中文字幕录像片| 丝袜夫妻自拍| 97手机日韩| 曰韩成人免费视频| 屁股久久久久久久久| 超清福利精品视频在线| 日韩AV色图| 啊啊啊草死我| 极品综合| 欧美另类综合久久| 亚洲蜜乳av| 久湿久久 | 大香蕉伊人亚洲| 日韩色| 精品成人女人久久| 国产精品亚洲无码| 亚洲色欲一区二区三区| 91久久青青草原精品| 六月婷婷综合| 亚洲色图欧美色18直播在线| 秋霞曰韩R级| 另类专区加勒比| 亚洲最新av无码成人精品区 | 国产精品久久久久久久久久久久久久久久| 在线视频97| 美女啊啊啊啊啊啊啊| 日逼97| 色欧美天天| 啊啊啊操死我| 亚洲射综合网| 亚洲九区| 婷婷超| 日韩99神马视频播放| J?P?NESEHD熟女熟妇伦| ai欧美亚洲小说| 国产三级电影免费观看| 久肏视频字幕| 91色五月俺来也| 操B视频日韩无码| 国产亚洲色婷婷99精品91| 天天色,天天干,天天干| 春色综合免费| 日本亚洲vr欧美不卡高清专区| 亚洲美女av无码| 国产肏屁眼视频| 国产成人一级av88| 成人性交免费视频| 神马久久中文字幕| 欧美啪啪女女| A一区片| 欧美亚州色的图| 极品色www影院| 97免费视频在线| 亚洲熟女综合| 乱色视频中文字幕| 国产午夜精品理论片一二三区区| 91nbbbbbb| 色婷婷综合网| 日韩无码精品综合久久| 蜜臀99久久精品| 无码欧美有限公司| 麻豆这里只有精品| 国产美女自拍AV| 揉揉揉夜夜| 久久少妇视频| 五月天婷婷综合网| 亚洲精品人妻在线| a片久久久久久久久久久久| 超碰69| 狼人综合婷婷激情四射| 国产极品99热在线播放69| 欧美美女视频| 蜜桃传媒视频第一区入口在线看| 东京热一区二区三区四区五区六区| 久草免费福利在线播放| 日本一区二区亚洲综合| 传媒在线观看一区二区三区| 后入式999| 亚洲淫乱骚妇AV| 67914亚洲精品| 性做久久久久久久| 国产精品久久久久无码A√| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 性做久久久久久免费观看软件| 欧美 日韩 另类 亚洲| 性吧在线视频| 综合色久| 丁香五月性| 亚洲 日韩 丝袜 熟女 变态| AV和黑人在线播放| 中文字幕交换人妻| 成人a大片在线观看| 欧美性天天| av2014 日韩在线中文字幕| 综合九九| 加勒比久久av| 超碰色美女| 色偷偷人人玩人人舔人人操人人摸人人爽| 九九成人精品| 9精品久久| 国产亚洲欧洲在线观看| 日韩啪啪啪视频| 国产精品乱码久久久久久久久久久久| 97国产天堂岛| 97国产天堂岛| 亚洲色图美腿丝袜| 精彩久久中文| 蜜臀中文无码午夜| 天天亚洲| 伊人精品久久网站| 精品人妻一区| 操一区| 99色在线| 日日黄色三级网站| 青草视频人妻在线观看| 久久激情四射婷婷丁香五月天| 亚洲欧美综合网站| 欧美色图99| 久久久久久久唑| 精品九九九九九九| 国产精品99精品视频网站| 伊人精品久久网站| 久久香蕉综合一本到3atv| 欧美亚洲中文字幕| 大香蕉宗合网在线| 亚洲色性情三级| 北条麻妃性愛视频| 日韩干B| 丰满人妻-区二区三区免费看 | 中文字幕一区二区视频在线观看| 热思思免费视频| 自怕偷自怕亚洲精品| 国产精品一区二区 尿失禁| 日本九九九九| 欧美激情欧美精品| 中国91AV| 免费a级毛片av无码久久精品中文字幕| 国产精品视频自拍在线| 综合久久欧美| 97青青操视频| 在线 欧美 亚洲| 夜夜爽夜夜爽| 深夜激情无码| 九九九九九九九九九五码| 欧美精品欧美精品系列 | 日本三级中国三级99人妇网站| 97人肏| 日韩久草| 国产亚洲色停停久久99精品91| 操逼免费视频无码国产| 青青三级视频| 久久一二三四五六七八九区区| 麻豆激情综合| 裸模AV女优| 国产午夜激片Av毛片不卡| 欧美婷婷五月天| 超碰97在线 欧美 国产| 日本ZZ高免费A级视频| 亚洲 欧美 日韩 国产一区二区 | 日人妻视频91| 久久久久久久久久久久久9999| 久久久久斤小| 日韩字幕一区| 亚洲色婷婷久久91| 青操影院| 欧美情色亚洲| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 人人操,操人人| 天天色悠悠激情| 日本精品一区二区三| 欧美日本成人一区二区| 五月婷婷五月天| 亚洲国产丝袜在线观看| 性爱视频免费网址| 久久久久久夜夜夜夜夜| 欧美se综合| 最新日韩黄片| 蜜臀无码一区二区| 台湾成人无码AV| 久久综合中文国产| 91国产操逼视频| 亚洲一区二区麻豆影院| 超碰人妻97| 大香蕉黄色一区| 久热99999| 日韩AV电影网站| 国产精品69久久久久久久| 人人操人人搞人人草| 色噜噜人妻丝袜AV资源| AA级电影三区| 国产亚卅97| 丁香九月 婷婷| 美女97超碰| 国产AAAAAABBBBB| 亚洲乱色视频一区、二区在线| 亚洲97超碰| 天美av在线观看| 九九综合九九综合| 久久久久9999妇女| 日韩无码a片| 狠操91,com| 国产精品一级片在线看| 91久久国产精品| 五月丁香久久| 欧美性xxxxx狂欢| 男人的天堂2018.| 大二网站亚洲| 亚州欧美总和| 国产女人成人精品视频| 91性情| 国产一区二区三区中文字幕| 欧美综合网| 日韩二三区| 人妻81p| 中文字幕精品专区搜索结果91| 国内毛片国产专区二| 精品国产乱码久久久久久免费| 国产成人精品日本亚洲语言| 偷拍亚洲| 伊人991| 精品性爱无码在线播放| 绯色一区二区三区不卡少妇 | 日本在线观看网址| 久久一本大香蕉 | 樱花草社区www中国| 四虎影视永久在线免费| 亚洲综合嫩| 高清不卡一二三区视频......| 青青青操| 欧美经典一区二区三区| 精品玖九九久| 欧美A√综合网| 睡产熟女乱伦| 免费视频在线一区二区不卡| 九九九只有精品| 97超碰国产精品| 国产精品久久久久久无码红治院| 午夜传煤十二区精品| 久插综合| 五月天婷婷成人网| 首页亚洲国产高跟丝袜诱惑视频 | 欧美大香蕉在线观看| 国产日韩欧美亚洲精品95 | 曰本人妻人人澡人人夹| 久久国产乱子伦精品免费女,网站| 成人日韩中文字幕| 超碰在线看| WWW操逼| 久久春色| 亚洲天堂少妇| 日韩少妇在线视频| 免费看污网站| 99re视频在线观看这里只有精品| 亚洲国产精品有声| 成人a v在线播放免费| 色噜噜日韩精品| 色男人色天堂东京热| 97网址www| 婷婷在线精品| 日韩av不卡在线观看| 操人人| 欧美不卡五十路| 外国免费性情大片| 蜜桃臀av一区二区| 91碰碰| 成人精品一区二区三区| 亚州再线| 亚州乱码中文字幕综合久久久| 色婷婷视频| 国产一级做a爰大片免费久久| 成全在线观看免费观看| 久久午夜鲁丝片| 蜜桃av色偷偷av老熟女| 97超碰9| 校园春色AV天堂| 208天天久久九九九| 九九九九97| 免费亚洲国产精品久久一区| 夜夜操中文字幕| 大香蕉啪啪啪啪在线| 91九九九小逼| 91日产欧美| 青青伊人久久| 国产第二页| 天天拍天| 97国产|免费| 国产久久天堂资源| 超碰78| 国产精品爆乳懂色蜜乳| 久久丁香久草综合网| 亚洲另类欧美精品| 探花一区二区三| 国产AV毛片| 玖玖玖玖精品国产剧情| JULIA一区二区三区在线播放| 久操不卡视频| 乱精品一区字幕二区| 久久久蜜桃一区二区三区| 国产精品久久久亚洲一区| 青青久草| 久草老司机| 大学生美女口爆| 中文字幕一区av| 四虎永久在线精品免费网址| 91亚洲精品青草| 欧美熟妇人体| 亚洲一二三四区在线免费看视频| 久久久亚洲精品中文字幕人妻| 香蕉99秘 一区精品蜜桃臀| 91天天| 亚洲国产精品99久久久| 人人干人人操人人..com| 久热9| 九九玖玖精品| 91视频综合在线| 久久精品国产亚洲5555| 色婷婷日韩精品一区二区三区| 欧美亚洲尤物久久| 日韩精品国模| 久久久久久亚洲精品中文字幕人妻| 狠狠色婷婷7777久| 热久久国产| 99久久精品国产高潮| 熟女精品一区二区三区| 人人澡综合涩| 91色夜| 9丨亚洲一区二区在线| 日本精品不卡一二三区| 国产精品视频电影| 亚洲精品九九九九九九| 欧美18老人禁| 91九色首页| 神马久久久久久久久久久久| 天天天干977| 国产欧美日韩一区二区三区| 超91综合网| 国产人人干| 国产极品粉嫩馒头一线天av| 91|九色|国产熟女| 欧美少妇高潮久久91| 97超碰色色| 欧美黄色大香蕉一区二区| 熟女天天干| 97视频免费播放| 久久久久成人亚洲国产| 亚洲天堂第一页| 神马久久久久久久| 九九Av| 亚洲AV色图一区| 370p日韩欧美亚洲精品| 久久久噜噜噜久久久| 91色欧美| 乱老女人一区二区视频| 日韩中文9| 91精品国产日韩欧美综合| 中文字幕视频2区| 国产精品网址| 日韩免费人妻色情网站| 久久香蕉国产线看观看亚洲女人 | 三级三级三级a级全黄三| 久久久久国产亚洲一区欧美色图日韩| 色网综合网| 成人免费看吃奶视频网站| 搡老女人911熟妇老熟女| 青草成人免费视频一com| 成人八戒网站| 色九九久九九| 欧美一区二区成人一卡| 好色综合| 亚洲另类久操网| 91人妻少妇| 久久久久久久久久久六六| 78m啪啪啪| 人人操av| 日本精品999| 久久综合18p| 欧美极品美女aaaaaa级黄片| 德国一二三不卡| 秋霞一级鲁丝片A片| 国产AV天美| 密乳AV免费观看| 欧美 综合 亚洲| 在线精品福利免费播放| 97中文字幕一区| 超碰99在线观看| 72av视频| 欧美大码在线视频| 日本成a人v网站在线观看| 116美女午夜| 日韩性爱小视频| 老熟女91av| 伊人丁香五月婷婷| 大香蕉在线SuP| 综合久久婷婷| 中文字幕国产在线天堂| 久久久久久91香蕉国产| 在线无码操| 亚洲欧美清纯| 宗合情欲网| 乱欲一区二区| 男人久久天堂| 天美欧美国产| 偷窥自拍亚洲天堂网爆| 国产精品国产精品国产| 国产精品色哟哟| 日本一级二级三级网站| 欧美综合亚洲综合| 97一区二区三区视频| 国产女人成人精品视频| 一区二区三区美女超清| www鬼畜国产男人的天堂| 中文字幕在线免费观看 | 95人妻爽爽人人做人人澡| 亚洲91综合| 精品国产乱码久久久久A| 少妇高潮流水av免费| 亚洲国产丝袜熟女av| 中文字幕88av在线| 最近2019中文字幕国语免费版| 91精品国| 欧美72网页| 婷婷综合在线| 天天插夜夜操| 欧美激情视频一区二区| 999综合色| 人妻激情偷乱视频一区二区三区 | 九九五月天| 欧美丝袜激情| 伊人久久婷婷| 人人看欧美性爱| 亚洲另类天堂| yazhouzaixian| 天天天肏屄欧美| 天天色播| 日韩成人性爱AV| 欧美性爱综合,免费| 黑人精品欧美一区二区蜜桃| 天天综合网AV91| 久久久久中出| 超碰人人妻| 亚洲乱熟女一区二区三区大香蕉| 欧洲黄色网| 资源新线在线天堂| a啊啊啊啊啊啊啊啊一区二区| 久久亚洲人妻| 日本免费不卡二区| 日韩精品 资源| 国产成人在线观看综合| 日韩免费大片一级播放| 日本精品网站在线中文| AV乱伦国产| 无码国产精品96久久久久孕妇| 亚洲中文字幕av | 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 97在线免费看| 丝袜 亚洲 偷拍| 五月婷婷大香蕉| 欧美性爱五月天| 人人色人人操在线| 中文字幕亚洲在线一区| 美国日韩黄色片| 岛国黄色大片网站| 亚洲色图亚洲无码强奸乱伦| 在线观看AV片| 日本熟妇人妻中出视频| 国产一级作爱毛片| 亚洲av综合色区无码一| 激情小说成人日本无码一| 亚洲一区二区三区中文字幕| 亚洲精品一二区| 午夜120视频在线观看| 做爱A级亚欧| 91爆操视频| 日本性爱不卡视频| 国产做?爰片久久毛片?片美国| 国产亚洲日本精品在线| 婷婷深爱五月| 亚洲色图大香| 国产精品久久久视频| 久久的网站啊啊啊啊啊| 麻豆福利视频导航| 我中文字幕6区| 99最新日韩偷拍视频| 2020天天色综合| 中文字幕成人乱码熟女精品国50| 97这里有精品| 99无码狠狠久久| 黄视频免费| 色情乱伦AV| 五月天婷婷小说| 人妻精品综合中文字幕在线 | 五月婷婷综合网| 情色日播放AV| 裸体1区| 欧美亚洲高清晰| 亚洲在线91| 免费一级性爱久久| 亚洲砖码砖专无区2023| 国产精品色色| 黄总AV色图| 伊人午夜福利视频| 野狼福利社区| 久操凹凸视频| 婷婷久久久| 大香蕉99热| 日韩欧美~中文字| 91天天| 亚洲狼狼干综合1| 嗯~啊~快点 死我视频免费看网站| 蜜汁欧美| 伊人黄色片| 日本一级一级一级一级| oumeizonghese,www| 大香蕉日韩| 亚洲国产ⅴ高清在线观看| 亚洲日韩精品在线播放| 亚洲日韩青青草色月| 中出20p| 午夜福利1区2区3区| 99热伊人| 嗯嗯啊啊的视频| av网站国产主播在线| 在线性黄高清免费视频| 熟妇人妻一区二区三区| 免费男人的天堂| 强奸国产精品视频| 校园春色制服丝袜中文字亚洲| 亚洲日韩东京热一区| 91色综合| 翔田千里av一区二区三区| 99抽插| 校园春色亚洲| 婷婷激情四射| 另类专区加勒比| 国产精品蜜臀久久久久无码AV| 天天射影院| 老司机福利社视频在线观看| 国产精品亚洲一级av第二区| 91丝袜在线观看视频在线观看| 综合网亚洲在线| 久久久无码av精| www.高清无码诱惑一区.com | 五月丁香婷婷啪啪| 五月天亚洲网| 干干干天天| 超碰碰激情97+久| 在线观看一级α片刺激高潮视频| 日本三级久| 亚洲图片91| 九九久久99| 成人日本片久久久蜜桃| 精品国产www久久| 亚洲丝袜99| 免费精品中文字幕| 欧洲精品网| 一级做a爰片久久毛片图片| 91丝袜美腿网站| 男女一进一出视频久久| 欧美熟妇视频| 国产一区二区三区高清视频| 精品人妻二区三区| 在线日韩日本亚洲国产| 综合亚洲欧美精品日韩?v| 国产精品久久久久久久电影渣男| 91在线综合网| 日产操逼| 中日韩久久人妻一区二区| 国产强奸乱伦无码视频| 91n美女视频| 欧美一级黄色免费专区| 99啪啪| jk白丝没脱就开始啪啪| 人妻熟妇久草在线| 中文操嬖片。| 91青青在线| 96AV精品| 伊人网免费视频| 久久久111| 亚洲操逼无码| 欲香欲色综合天天伊人| 防屏蔽在线视频| 天美精品原创av片国产| 91天堂视频| 日本五十路熟女一区二区| 久久有码视频| 天天干天天日天天射黄色| 女人与公拘交酡2020视频| 激情综合av| 五月综合婷婷久久网站| 欧美色网络| 中文字幕在线观看第二页| 欧美一区二区三区互相| 国产免费一区| 亚洲综合色男人网| 人人妻人人爽 97人人看碰人免费公开视频| 日韩精品作爱导航| 另类小说五月天| 91P0RNY大屁股人妻| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日本女优在线视频福利| 日日干日日摸| 精品国产99| 簧片免费看视频| 性猛交| 久久久免费懂色| 67914亚洲精品| 免费?级毛片无码?∨蜜芽试看| 91熟女.com| 久久国产精品91| 国产精品婬乱一级毛片彝族| 精品一级| 91男人天堂网| 成人AV素股で擦久久| 精品欧美А∨无码黑人大荫蒂| 殴美在线AⅤ| 丝袜色综合| www.五月天| 久久风骚城市| 成人AV素股で擦久久| 秋霞无码av鲁丝片一区| 欧美天天综合| 国产精品毛片| 中文久久一区| 天天天天干| 永久免费发布性爱网| 丝袜亚洲综合| 91蜜臀人妻中文字幕在线| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 午夜男女爽爽爽在线视频| 久久国产熟女影院| 久久久久久人体| 99re在线精品78| 又黄又粗又硬又长又大| 日韩AV一区二区三区四四| 殴美大黄片| 亚洲AV秘 精品久久老牛影视| 精品视频一区二区| 中日韩久久久免费看| 久久久网一区| 久久超碰、| 97玖玖人妻| 五月丁香网站| 五月丁香综合啪啪| 插日本熟女视频| 污污汅18禁网站在线永久免费观看| 久久夜夜| 青青草中文字幕| 日骚逼视频| av橘色网站| 亚洲有薄码区久久在线一区| 中文字幕诱惑制服人妻丝袜美丝袜美| 人妻久热在线| 久久天天性久久伊人| 东京日日夜夜| 大香蕉人妻| AAA久久| 日韩欧美亚洲一区二区三区影院| 很黄很色的视频在线观看| 欧州一区二区三区四区| 亚洲综合一区二区| 国产精品嫩草久久久久| 日韩乱伦AⅤ| 天天插夜夜操| 免费超碰97在线观看| 久操网无码在线| 国产亚洲精品农村妇女| 国产成人欧美一区二区三区的国产| 亚洲性爱成人| 成人免费看吃奶视频网站| 1人人看人人摸人人操| 欧美1区二区三区公司| 秋霞免费无码视频日韩A片| 国产日韩手机视频在线| 欧美日韩啪啪电影| 亚洲精品国产熟女| 中国女人内射6XXXXX| 乱伦3P视频| 99碰碰| 亚洲 图片 综合91| 日韩人妻网站| 亚洲日韩久久精品一区| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 一级啊性爱在线视频| 日本亚洲熟女视频| 激情AV| 999久久久九| 日韩欧美资源| 女人香蕉久久毛毛片精品| 天天久久| 欧美一级美片在线观看免费| 秋霞无码av鲁丝片一区| 久久老子无码午夜伦不卡| 激情自拍 校园春色| 国产SV一线| 熟女露脸激情自拍视频| 91爱啪| 欧美精品一区二区少妇免费A片 | 久久夜色一区二区| 欧美天天综合站| 欧洲综合色| 人人操我人人干| 大香蕉丝袜一级片| 91色图片| 偷拍亚洲视频一区二区三区四区| 综合网欧美| 日韩无码黄色片| 夜夜爽77777| 九九热精彩视频| 亚洲天堂加勒比| 欧美激情性爱视频网站| 色噜噜婷婷| 日本欧美色| 性色综合网| 韩国黄片aaaa| 国产av高清版| www.acm成人黄色毛片| 99久久无码| 爱做久久久久久| 欧美久久婷婷| 熟妇人妻精品一区二区| 无码国产Av| 亚洲人精品久久久喷水| 在线播放中文字幕| 国产精品嫩草影院午夜两性| 婷婷综合网| 99re在线精品78| 2023天天操夜夜操| 97色婷| 天天综合麻豆视频| 日韩性爱一级片| 狠狠操天天干| 国产精品一二三| 中文字幕中文字幕一区二区| 久久手机好看网站| 亚洲欧美综合图片| 欧美顶级黄色大片免费| 一区二区三区四区姦女| 精品久9| 国产视频一区二区免费| 精品小视频在线| 欧美一区二区三区不卡高清视频| 中文字幕一区二区三区视频播放| 精品九九九九九九九九九| 国产日韩精品suv| 综合色图亚洲欧美| 大香蕉日韩| 国产免费永久精品无码| 91少妇通奸网站| 国产AV毛片| 中文字幕女同在线| 亚洲成aⅴ人片不卡无码| 超碰日本97美女人妻人人玩人人爱| 色欧美色交综合| 中文字幕狠狠玩| a片亚洲一本通视频| 一本色道久久天天射天天干| 一区=区三区视频| 超碰午夜| 91九色丨国产丨爆乳| 九九热九九热| 国内一级精品| 99热这里只有精品8| 九九九成人| 91美女中出| 久久精品一区二区| 校园春色综合| 国产精品ww久久| 91丝袜美女| 一级婬片120分钟试看| 欧美久久毛片基地| 无码区蜜乳| 精品中文日韩字幕视频| 免费看A片毛毛片在线播| 久久精品99久久久久久| 殴美大黄片| 亚洲深夜福利| 偷拍 亚洲| 岛国A V在线免费看| 亚欧高清在线| 丁香六月婷婷久久综合| 9久9久9久9久视频网站| 91丨熟女丨丰满熟女| 后入式999| 99在线观看| 大香蕉99999| 99国内精品| 91伊人久| 国模91| 色婷婷激情| 26uuu最新| 91欧美性| 国产激情综合五月久久| 国产精品久久| 人人澡人人弄| 丰满的三级少妇欧美久久久| 天天肏夜夜肏| 青娱乐av在线| av天堂天堂av日韩| 欧美综合中文| yirendaxiangjiashipin| 日韩精品电影| αⅴ天堂| 亚洲情色 无码专区| 五月婷色| 成人免费视瓶| 91老熟女91老女人| 久久久久久久一级黄色打同平台| 国产精品嫩草影院午夜两性| 国产精品乱码久久久久久久| 少妇超碰在线| www.大香| 欧美人妻少妇| 婷婷久草| 久久久久久夜夜夜夜夜| 日韩欧美aⅴ综合网站发布| 一本色道久久综合精品婷婷| 男人干美女| 爱射综合| 色就色综合| 色噜噜国产精品视频一区二区| a人欧美综合天堂麻豆| 操美女高潮抽搐白浆| 91国产操逼视频| 91天天爽| 99黄页网站| 蜜臀精品1区2区| 五月丁香六月婷| 99久国产精品午夜性色福利| 欧美熟妇色| 久九9精品| 青青色综合| 日本免费中文一区二区三区四区| 一本久道在线综合视频| 试看60秒 爽| 夜夜嗨一区二区三区三州加勒比| 综合激情97 | 亚洲日韩XXX| 亚洲中文人妻色| 色墦五月丁香| 成人性爱美曰韩| 一个色导综合| 欧洲久久一二线| 超碰九九| www.acm成人黄色毛片| 老熟妇综合| 嗯~啊~快点 死我视频| 婷婷五月天小说| 91精品伊人久久久大香线蕉91| 精品成人无码| 国产精品午夜福利亚洲综合网| 精品黄色电影| 少妇天堂| 欧美色图片色哟哟| 欧美手机在线综合| 色妇91| 亚洲青色欧美| 欧美日韩精品国产91| 久久这里精品国产99丫e6| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 99热这里都是精品| 亚欧性爱在线无码| 人妻乱仑一区二区三区| 精品视频免费在线一区| 91老妇女| 岛国片国产成人亚洲播放| 国产又色又粗又黄又爽| 一级黄色性爱裸体视频| 中文一区二区三区影院| 我想要 啊 啊 啊| 欧美国产婷婷久久| 欧美色另类| 中日韓欧美高清| 婷婷丁香激情| 国产午夜精品理论片一二三区区| 国产91精品在线免费| 日日爱99| 成人毛片免费| 内射老妇BBWX0C0CK| 7777奇米影视久久| 蜜乳Av成人片网站| 欧美日韩操操操| 日韩女模中文造逼| 凹凸视频特色日本特黄| 久热久|