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

ARTICLE DETAIL

資訊詳情

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

基于Node.js與Vue的球員訓(xùn)練報名系統(tǒng)全棧開發(fā)實踐

基于Node.js與Vue的球員訓(xùn)練報名系統(tǒng)全棧開發(fā)實踐 接手本地業(yè)余足球俱樂部的運(yùn)營管理系統(tǒng)時我遇到的情況相當(dāng)?shù)湫途銟凡坷镉兴氖嗝郧騿T、三名兼職教練每周安排三到四次訓(xùn)練還穿插著青少年訓(xùn)練營和周末友誼賽。在此之前球員檔案散落在 Excel 表格里訓(xùn)練報名靠微信群接龍教練通知靠群發(fā)公告每次活動結(jié)束后統(tǒng)計出勤都要手工核對聊天記錄經(jīng)常出現(xiàn)“報名了沒到場、到場了沒報名”的亂賬。后來我用 Node.js 和 Vue 框架完整做了一套足球俱樂部管理系統(tǒng)把球員信息、訓(xùn)練計劃、活動報名、出勤統(tǒng)計全部收攏到一個前后端分離的 Web 系統(tǒng)里。這篇博文我會把這套球員訓(xùn)練活動報名系統(tǒng)從需求拆解、技術(shù)選型、數(shù)據(jù)庫設(shè)計到前后端具體實現(xiàn)的整個流程掰開揉碎地講給正在做類似管理系統(tǒng)、或者想練手全棧開發(fā)的讀者一份能直接落地的參考。1. 項目背景與整體設(shè)計思路1.1 需求場景拆解俱樂部的管理痛點做這類系統(tǒng)最忌諱一上來就寫代碼。我花了兩天時間跟俱樂部負(fù)責(zé)人、教練和幾個球員挨個聊把真實的工作流梳理清楚發(fā)現(xiàn)核心痛點集中在四塊。第一是球員檔案管理。俱樂部里每個球員除了姓名和電話還涉及年齡段、場上位置、體檢狀態(tài)、緊急聯(lián)系人。原來這些信息在教練手機(jī)上各存一份臨時需要某個位置的球員名單時只能翻聊天記錄。第二是訓(xùn)練計劃安排。教練每周要發(fā)布訓(xùn)練時間、地點、帶隊安排還要區(qū)分普通訓(xùn)練、體能課、對抗賽和青少年訓(xùn)練營不同課程對應(yīng)不同的適用人群。第三是報名和請假。球員要先看到訓(xùn)練安排再決定是否參加教練需要知道哪些人確定來以便準(zhǔn)備訓(xùn)練器材和分組。第四是出勤統(tǒng)計。俱樂部每年要給球員做評估出勤率是重要參考靠人工統(tǒng)計幾乎不可能準(zhǔn)確。把這些業(yè)務(wù)規(guī)則抽象出來之后系統(tǒng)功能就清晰了球員檔案 CRUD、訓(xùn)練課程排期、活動報名與取消、報名名單導(dǎo)出、通知公告、出勤統(tǒng)計。每個功能看起來簡單但背后都有隱含邏輯。比如報名不是點了就算完得處理滿員、截止時間、取消后名額返還、請假留痕這些都需要在數(shù)據(jù)模型上提前想清楚。這個階段我把需求畫成簡單的流程草圖和頁面原型跟需求方確認(rèn)后再進(jìn)入技術(shù)設(shè)計省掉了后面很多返工。1.2 技術(shù)選型為什么是 Node.js Vue這套系統(tǒng)的定位是俱樂部內(nèi)部使用的管理工具數(shù)據(jù)規(guī)模撐死幾千條并發(fā)量也不高但對開發(fā)效率和維護(hù)成本很敏感。選 Node.js 和 Vue 主要有三個理由。第一個理由是前后端語言統(tǒng)一。Node.js 和 Vue 都基于 JavaScript一個人維護(hù)全棧項目不需要切換語言上下文工具鏈也能共用。第二個理由是生態(tài)成熟。后端用 Express 寫 REST API 非常輕量配合 mysql2 操作數(shù)據(jù)庫、jsonwebtoken 做登錄鑒權(quán)、bcryptjs 做密碼加密這些庫都很穩(wěn)定。前端用 Vue 2 或 Vue 3 組件化開發(fā)配合 Element UI 這類現(xiàn)成組件庫后臺管理頁面的表格、表單、彈窗幾乎不用自己寫樣式開發(fā)速度很快。第三個理由是部署簡單。Node.js 應(yīng)用可以直接跑在一臺小服務(wù)器上前端打包成靜態(tài)文件交給 Nginx 托管運(yùn)維成本很低。也對比過 Java Spring Boot 方案。Spring Boot 在企業(yè)級項目和畢業(yè)設(shè)計里很常見框架規(guī)范、功能全面但對這種體量的內(nèi)部系統(tǒng)來說偏重環(huán)境配置和構(gòu)建鏈路更復(fù)雜開發(fā)節(jié)奏會慢不少。PHP 方案也有考慮但前后端分離后配套的工程化體驗不如 Node.js 順手。最終定下來的技術(shù)棧是后端 Node.js Express MySQL前端 Vue Vue Router Pinia Axios Element UI登錄采用 JWT 方案。這套組合對中小型管理類系統(tǒng)非常合適既能支撐功能擴(kuò)展又不會過度設(shè)計。1.3 功能邊界與角色劃分系統(tǒng)涉及三類用戶角色權(quán)限邊界必須在一開始就定死否則后面接口校驗會寫得很亂。我用一張功能矩陣來管理需求功能模塊管理員教練球員球員檔案維護(hù)增刪改查查看查看本人訓(xùn)練計劃創(chuàng)建全部操作創(chuàng)建/編輯自己負(fù)責(zé)的課程只讀活動報名查看名單查看名單/確認(rèn)到場報名/取消通知公告發(fā)布發(fā)布查看出勤統(tǒng)計全部查看所帶班級查看本人這個表的作用不只是存需求后續(xù)每個接口的權(quán)限校驗都要對照它來寫。比如球員調(diào)用刪除訓(xùn)練計劃的接口后端必須在中間件里攔截并返回 403而不是等進(jìn)了業(yè)務(wù)邏輯再判斷。我還刻意控制住了功能邊界第一期不做支付、不做多俱樂部 SaaS、不做復(fù)雜財務(wù)報表。這些在初期都屬于范圍蔓延真正使用起來才發(fā)現(xiàn)俱樂部最急需的就是把“訓(xùn)練 — 報名 — 出勤”這條核心鏈路跑通。2. 數(shù)據(jù)庫設(shè)計與接口規(guī)劃2.1 角色權(quán)限模型這個系統(tǒng)的權(quán)限模型比較簡單不引入 RBAC 那套復(fù)雜的角色-權(quán)限-菜單表直接在用戶表里加一個 role 字段就夠了。原因很簡單系統(tǒng)只有三種角色權(quán)限規(guī)則是固定的沒有必要把關(guān)系表設(shè)計得過度抽象。用戶登錄成功后后端會簽發(fā)一個 JWT里面帶上 userId 和 role。前端拿到 token 存在本地每次請求通過 Authorization 頭帶上。后端寫了一個 authMiddleware在需要權(quán)限的接口上掛載角色判斷直接用中間件參數(shù)完成。比如只允許管理員和教練調(diào)用的接口寫法大致是這樣的const requireRole (...roles) { return (req, res, next) { if (!req.user) { return res.status(401).json({ code: 401, message: 未登錄 }); } if (!roles.includes(req.user.role)) { return res.status(403).json({ code: 403, message: 沒有權(quán)限 }); } next(); }; }; router.post(/training-sessions, requireRole(admin, coach), sessionController.create);JWT 本身是無狀態(tài)的服務(wù)端不需要存 session這特別適合前后端分離部署。但要注意 JWT 密鑰必須放在環(huán)境變量里不能寫死在代碼中密鑰泄露等于所有用戶的登錄憑證都可偽造。2.2 核心表結(jié)構(gòu)設(shè)計數(shù)據(jù)庫我選了 MySQL用 Sequelize 還是直接寫 SQL 也糾結(jié)過。最后決定用 mysql2 連接池加手寫 SQL因為這個項目表之間關(guān)系不復(fù)雜手寫 SQL 的調(diào)試成本更低也更容易控制事務(wù)邊界。核心表一共規(guī)劃了五張。表名主要字段說明usersid, username, password_hash, role, player_id, created_at登錄賬號表與球員檔案關(guān)聯(lián)playersid, name, age_group, position, phone, emergency_contact, medical_status, created_at球員檔案training_sessionsid, title, coach_id, start_time, end_time, location, max_participants, status, created_at訓(xùn)練和活動安排training_registrationsid, session_id, player_id, status, register_time, remark報名記錄noticesid, title, content, publisher_id, publish_time, is_important通知公告重點說一下 training_registrations 這張表。報名記錄的 status 我設(shè)計了三個值registered 表示已報名待確認(rèn)confirmed 表示教練確認(rèn)到場cancelled 表示已取消。很多人在做報名系統(tǒng)時會直接物理刪除報名記錄但這里有個問題如果球員取消報名就刪行那“某人曾經(jīng)報過名但取消了”這個信息就丟失了而教練往往需要知道有人臨時請假以便復(fù)盤出勤情況。保留 cancelled 狀態(tài)出勤統(tǒng)計和請假分析都能做代價只是多一行數(shù)據(jù)而已非常劃算。在 session_id 和 player_id 上還加了唯一索引防止同一個球員對同一場訓(xùn)練重復(fù)報名。這個索引在并發(fā)請求下是最后一道防線后面的并發(fā)問題章節(jié)會詳細(xì)講。另外所有表的主鍵都用了自增整數(shù)沒有用 UUID。原因很簡單內(nèi)部系統(tǒng)的數(shù)據(jù)量少自增主鍵查詢性能好、索引占用小UUID 的優(yōu)勢在這里體現(xiàn)不出來。2.3 接口路徑與統(tǒng)一返回格式接口設(shè)計遵循 REST 風(fēng)格路徑按資源劃分。主要接口如下請求方法路徑功能權(quán)限POST/api/auth/login登錄公開GET/api/players球員列表管理員/教練POST/api/players新增球員管理員GET/api/training-sessions訓(xùn)練計劃列表登錄用戶POST/api/training-sessions創(chuàng)建訓(xùn)練管理員/教練GET/api/training-sessions/:id訓(xùn)練詳情與報名狀態(tài)登錄用戶POST/api/training-sessions/:id/register報名球員DELETE/api/training-sessions/:id/register取消報名球員GET/api/training-sessions/:id/registrations報名名單管理員/教練POST/api/notices發(fā)布通知管理員/教練所有接口統(tǒng)一返回格式{ code: 0, message: ok, data: {} }code 為 0 表示成功非 0 表示業(yè)務(wù)錯誤碼。這個約定必須在項目第一天就定好否則前后端聯(lián)調(diào)時容易各寫各的。我還把錯誤碼文檔放在項目 README 里比如 1001 表示訓(xùn)練已滿員、1002 表示訓(xùn)練已開始無法報名、1003 表示重復(fù)報名聯(lián)調(diào)時雙方對著文檔查錯誤信息能省下大量溝通時間。3. 實操開發(fā)流程與關(guān)鍵實現(xiàn)3.1 環(huán)境準(zhǔn)備Node.js 安裝配置與工程初始化開發(fā)這類項目第一步是搭環(huán)境。Node.js 我直接裝了官方 LTS 版本沒有用最新版因為 LTS 的穩(wěn)定性對項目開發(fā)更重要。裝完在終端驗證node -v和npm -v確保路徑正常。國內(nèi)環(huán)境還需要把 npm 源切換成鏡像源我用的是 npm config 命令npm config set registry https://registry.npmmirror.com這個步驟很多人會跳過但裝依賴時差距非常大尤其是 electron、sharp 這類帶二進(jìn)制文件的包用默認(rèn)源下載速度慢且容易失敗。后端工程用一個空目錄初始化npm init -y之后安裝依賴。我裝的包有 express、mysql2、jsonwebtoken、bcryptjs、cors、dotenv 和 nodemon。其中 nodemon 作為開發(fā)依賴文件變更后自動重啟服務(wù)。前端工程用 Vue CLI 創(chuàng)建vue create club-fe創(chuàng)建時選擇了 Vue 3 和 TypeScript。這里插一句業(yè)界對 TypeScript 的態(tài)度經(jīng)常分成兩派但對于管理系統(tǒng)這類表單密集、數(shù)據(jù)類型定義清晰的項目TypeScript 的優(yōu)勢能被放大能顯著減少字段名寫錯、類型不匹配這類低級問題。隨后繼續(xù)安裝 vue-router、pinia、axios 和 element-plus。環(huán)境初始化完成后有一個細(xì)節(jié)必須做在項目根目錄創(chuàng)建.env文件把數(shù)據(jù)庫連接信息、JWT 密鑰、服務(wù)端口放進(jìn)環(huán)境變量用 dotenv 加載。我見過太多項目把數(shù)據(jù)庫密碼硬編碼在 config 文件里提交到代碼倉庫這種習(xí)慣一旦倉庫權(quán)限失守整個數(shù)據(jù)庫就裸奔了。3.2 后端核心模塊實現(xiàn)后端代碼我按職責(zé)分層控制器只處理 HTTP 請求和響應(yīng)業(yè)務(wù)邏輯獨立成 service數(shù)據(jù)庫操作通過 model 層封裝。目錄結(jié)構(gòu)長這樣server/ ├── app.js ├── config/ │ └── db.js ├── middleware/ │ └── auth.js ├── controllers/ │ ├── authController.js │ ├── sessionController.js │ └── playerController.js ├── services/ │ ├── sessionService.js │ └── registrationService.js └── routes/ ├── auth.js ├── sessions.js └── players.js登錄接口是第一個需要落地的接口邏輯不復(fù)雜查出用戶比對 bcrypt 哈希密碼通過后簽發(fā) JWT。密碼絕不能明文存儲bcryptjs 的 hash 方法會自動加鹽不用自己拼隨機(jī)字符串。JWT 有效期我設(shè)成了 7 天前端在響應(yīng)攔截器里檢測到 401 就跳轉(zhuǎn)登錄頁并清掉本地緩存。報名接口是整個系統(tǒng)業(yè)務(wù)邏輯最密集的地方。我梳理了以下步驟async function registerSession(sessionId, userId, db) { const conn await db.getConnection(); try { await conn.beginTransaction(); // 1. 查出球員信息順便確認(rèn)賬號狀態(tài) const [playerRows] await conn.execute( SELECT id FROM players WHERE user_id ? AND status 1, [userId] ); if (playerRows.length 0) { throw new Error(球員檔案不存在或已禁用); } const playerId playerRows[0].id; // 2. 查出訓(xùn)練信息并鎖定當(dāng)前行 const [sessionRows] await conn.execute( SELECT id, start_time, max_participants FROM training_sessions WHERE id ? FOR UPDATE, [sessionId] ); const session sessionRows[0]; if (!session || session.start_time new Date()) { throw new Error(訓(xùn)練已開始或不存在); } // 3. 統(tǒng)計當(dāng)前有效報名人數(shù) const [countRows] await conn.execute( SELECT COUNT(*) AS cnt FROM training_registrations WHERE session_id ? AND status ! cancelled, [sessionId] ); if (countRows[0].cnt session.max_participants) { throw new Error(訓(xùn)練名額已滿); } // 4. 插入報名記錄 await conn.execute( INSERT INTO training_registrations (session_id, player_id, status, register_time) VALUES (?, ?, registered, NOW()), [sessionId, playerId] ); await conn.commit(); return { success: true }; } catch (err) { await conn.rollback(); throw err; } finally { conn.release(); } }這段邏輯里最關(guān)鍵的是第 2 步的SELECT ... FOR UPDATE。在事務(wù)里鎖住訓(xùn)練計劃記錄后兩個球員同時提交報名請求時后一個請求必須等前一個事務(wù)提交統(tǒng)計人數(shù)時拿到的才是最新值。如果不用行鎖兩個并發(fā)請求可能同時讀到剩余名額 1然后都執(zhí)行插入導(dǎo)致實際人數(shù)超過 max_participants。這個坑在真實項目中很容易出現(xiàn)尤其在活動開放報名的前幾秒。3.3 前端頁面與報名功能實現(xiàn)前端我用 Vue Router 做了三個主頁面訓(xùn)練列表頁、訓(xùn)練詳情頁、球員管理頁加上登錄頁和儀表盤頁。路由配置里加了全局前置守衛(wèi)每次跳轉(zhuǎn)前檢查本地是否存在 token沒有就強(qiáng)制去登錄頁有就繼續(xù)。管理端頁面再根據(jù) role 判斷是否允許進(jìn)入。訓(xùn)練列表頁是球員最常用的頁面核心要求是信息清晰、操作直白。每張訓(xùn)練卡片展示標(biāo)題、時間、地點、帶隊教練和剩余名額。剩余名額的計算邏輯不放在前端而是由后端接口在返回列表時直接計算好。前端拿到數(shù)據(jù)后渲染“剩余名額”字段顯示為已滿時按鈕置灰不可點擊。報名狀態(tài)的判斷是前端最容易出錯的點。我通過詳情接口一次返回三個關(guān)鍵信息訓(xùn)練基本信息、當(dāng)前用戶對該訓(xùn)練的報名狀態(tài)、報名名單數(shù)組。前端拿到之后const canRegister computed(() { return ( !myRegistration.value session.value.remaining 0 new Date(session.value.start_time) new Date() ); });這里要特別說明 computed 的依賴收集。按鈕是否可用受三個條件控制任何一個變化都要重新計算Vue 的響應(yīng)式系統(tǒng)會自動處理但前提是模板里已經(jīng)綁定到對應(yīng)的響應(yīng)式變量。如果漏掉了對 myRegistration 的依賴就會出現(xiàn)“報名成功后按鈕還是可點”的這種情況實際上就是因為 computed 緩存沒有失效。報名成功后的交互也要考慮細(xì)節(jié)。我做了兩步第一步調(diào)用報名接口成功后重新拉取詳情接口刷新數(shù)據(jù)而不是本地手動把按鈕置灰。理由很簡單本地改的只是 UI 狀態(tài)真實數(shù)據(jù)可能因為其他球員同時報名已經(jīng)變了以服務(wù)端返回的數(shù)據(jù)為準(zhǔn)更穩(wěn)妥。第二步給出提示告訴用戶報名成功如果訓(xùn)練前 24 小時不能到場可以在詳情頁自行取消。3.4 前后端聯(lián)調(diào)與細(xì)節(jié)處理前后端聯(lián)調(diào)是管理類項目里最耗時間的環(huán)節(jié)很多問題不是邏輯寫錯而是雙方對接口的約定不一致。我在 axios 封裝上做了一些固定處理減少這類問題的出現(xiàn)。首先設(shè)置統(tǒng)一的 baseURL開發(fā)環(huán)境通過 Vite 的 proxy 把/api前綴代理到后端的http://localhost:3000這樣前端代碼里不用寫死域名生產(chǎn)環(huán)境也不用手動改。其次在請求攔截器里統(tǒng)一注入 Authorization 頭service.interceptors.request.use((config) { const token localStorage.getItem(token); if (token) { config.headers.Authorization Bearer ${token}; } return config; });響應(yīng)攔截器統(tǒng)一處理兩種情況業(yè)務(wù)錯誤碼非 0 時彈出 message 提示HTTP 401 時清除 token 并跳轉(zhuǎn)登錄頁。這種集中式處理讓業(yè)務(wù)代碼里不用到處寫 try catch 和錯誤彈窗??缬騿栴}在開發(fā)環(huán)境通過 proxy 已經(jīng)解決生產(chǎn)環(huán)境則由 Nginx 反向代理解決。如果后端直接部署在云服務(wù)器上不經(jīng)過 Nginx那就得在 Express 里掛 cors 中間件并指定允許的來源白名單不要直接origin: *這樣存在被無關(guān)站點調(diào)用接口的風(fēng)險。聯(lián)調(diào)階段我還整理了一份接口自測清單每個接口至少覆蓋成功、未登錄、無權(quán)限、參數(shù)缺失四類情況確保前端拿到錯誤時能區(qū)分處理。4. 常見問題與排查技巧實錄4.1 開發(fā)環(huán)境安裝配置的三個常見坑開發(fā)環(huán)境的坑往往是卡住新手最久的地方。第一個就是 npm 腳本無法運(yùn)行的 PowerShell 報錯錯誤信息長這樣npm : 無法加載文件 D:\Program Files\nodejs\npm.ps1因為在此系統(tǒng)上禁止運(yùn)行腳本這個問題的原因很簡單Windows PowerShell 默認(rèn)執(zhí)行策略限制運(yùn)行腳本。解決辦法是以管理員身份打開 PowerShell執(zhí)行Set-ExecutionPolicy RemoteSigned確認(rèn)即可。這里要注意 RemoteSigned 只對本地腳本放行已簽名的遠(yuǎn)程腳本才允許運(yùn)行比設(shè)為 Unrestricted 要安全得多。第二個是 Node.js 版本跟 Vue CLI 或者某些依賴不兼容。比如 Node 版本過舊時Vue CLI 可能直接報錯無法啟動版本過新又有可能遇到某些原生模塊沒跟上。我的建議是長期使用 LTS 版本并且裝一個 nvm-windows 用來切換版本不同項目用不同版本的 Node這是開發(fā)多年積累下來的經(jīng)驗。第三個是端口占用。后端默認(rèn) 3000 端口被占用時Express 會報 EADDRINUSE 錯誤。排查方法是用netstat -ano | findstr :3000查看占用進(jìn)程再決定是殺掉進(jìn)程還是換端口。但在開發(fā)環(huán)境更推薦把端口配置放到.env里遇到?jīng)_突直接改環(huán)境變量不用動代碼。4.2 聯(lián)調(diào)過程中的典型問題聯(lián)調(diào)期間遇到最多的問題就是跨域。開發(fā)環(huán)境由 Vite proxy 解決但如果你跳過 proxy 直接從前端地址請求后端地址就會出現(xiàn) CORS 錯誤。這時候先確認(rèn) Nginx 或 proxy 配置是否生效再確認(rèn)后端 cors 中間件的白名單是否正確。排查口訣是先用 curl 直接請求后端接口能通就說明問題出在前端代理層。第二個問題是時間差。前端傳的start_time是帶時區(qū)的 ISO 字符串后端存進(jìn) MySQL 之后可能因為時區(qū)設(shè)置不對取出來發(fā)現(xiàn)比本地時間差 8 小時。這種問題很難靠肉眼察覺但會導(dǎo)致“訓(xùn)練 19:00 開始系統(tǒng)顯示 11:00”。解決方案是連接數(shù)據(jù)庫時在連接串里顯式指定timezone: 08:00并且數(shù)據(jù)庫表字段用 DATETIME 而不是 TIMESTAMP。TIMESTAMP 會受 MySQL 時區(qū)影響而 DATETIME 不帶時區(qū)配合后端統(tǒng)一處理更可控。第三個問題是中文亂碼。創(chuàng)建數(shù)據(jù)庫時一定要指定 utf8mb4 字符集稍微老一些的項目還在用 utf8能存中文但存不了 emoji。比如球員備注里寫了象形的表情符號直接報錯而 utf8mb4 沒這個問題。建庫語句我習(xí)慣寫完整CREATE DATABASE club_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;第四個問題是 Vue Router 的 history 模式打包后刷新 404。因為前端路由是瀏覽器端模擬的服務(wù)器上沒有對應(yīng)的物理文件。開發(fā)環(huán)境沒問題生產(chǎn)環(huán)境必須在 Nginx 里配置try_files $uri $uri/ /index.html;否則用戶在某個頁面按 F5 就整頁白屏。這個問題我第一次部署時就踩了排查了很久才發(fā)現(xiàn)是 Nginx 的 fallback 沒有加。4.3 報名并發(fā)與數(shù)據(jù)一致性問題報名模塊作為系統(tǒng)的核心并發(fā)問題必須認(rèn)真對待。除了前面講的SELECT ... FOR UPDATE行鎖我還在數(shù)據(jù)庫層做了兩道兜底。第一道是唯一索引。即使業(yè)務(wù)代碼有 bug并發(fā)插入同一球員同一訓(xùn)練的兩條報名記錄唯一索引也會讓第二條插入失敗。第二道是狀態(tài)機(jī)的約束。報名記錄一旦變成 cancelled不會允許重新變回 registered必須重新插入新記錄。這樣保證了取消操作的不可逆性歷史記錄才可信。實際還遇到過一種情況球員報名時名額還剩 1 個但同一時刻有兩個球員提交事務(wù)開得很晚導(dǎo)致其中一個失敗。這個在業(yè)務(wù)上是可以接受的因為確實只剩一個名額。關(guān)鍵是不能出現(xiàn)兩個都成功且超員這才是系統(tǒng)真正要避免的問題。我在壓測階段用并發(fā)腳本同時發(fā) 20 個報名請求逐個檢查列表人數(shù)最終確認(rèn)超員問題被鎖和唯一索引攔住了。這里要提醒的是如果用 ORM 的findOne先查再插不主動開事務(wù)加鎖ORM 層面很難保證一致性必須深入到數(shù)據(jù)庫事務(wù)那一層去設(shè)計。4.4 部署上線注意事項系統(tǒng)開發(fā)完成后我部署在一臺輕量云服務(wù)器上。前端先執(zhí)行npm run build打包產(chǎn)物是一個 dist 目錄里面全是靜態(tài)文件交給 Nginx 托管。后端代碼部署到服務(wù)器的/var/www/club-server目錄安裝生產(chǎn)依賴后通過 pm2 啟動。Node.js 進(jìn)程管理強(qiáng)烈建議用 pm2。直接node app.js啟動的話進(jìn)程一旦因為未捕獲異常退出服務(wù)就斷了還不會有任何自動恢復(fù)機(jī)制。pm2 常用命令非常簡潔pm2 start app.js --name club-server pm2 save pm2 logs club-server其中pm2 save會把當(dāng)前進(jìn)程列表保存下來配合pm2 startup生成系統(tǒng)服務(wù)服務(wù)器重啟后 Node.js 服務(wù)也會自動拉起。這個細(xì)節(jié)直接決定了系統(tǒng)能不能長時間穩(wěn)定運(yùn)行。Nginx 配置里需要同時處理靜態(tài)文件托管和接口反向代理server { listen 80; server_name your-domain.com; root /var/www/club-fe/dist; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }生產(chǎn)環(huán)境數(shù)據(jù)庫密碼、JWT 密鑰這些敏感信息我在服務(wù)器上通過系統(tǒng)環(huán)境變量注入代碼倉庫里只保留.env.example模板文件這樣即使代碼泄露也不會直接連累線上數(shù)據(jù)。這套系統(tǒng)從立項到上線大約用了一個月的業(yè)余時間主體功能全部跑通后俱樂部用了兩個賽季報名和出勤統(tǒng)計基本不再出錯?;仡^看真正值得沉淀的不是 Node.js 和 Vue 的技術(shù)棧本身而是先把業(yè)務(wù)規(guī)則梳理清楚再用合適的數(shù)據(jù)結(jié)構(gòu)和事務(wù)去承接它們。如果讓我重新做一遍我仍然會堅持先畫表格、先定接口再動手寫代碼這個順序。個人實際操作中的體會是像足球俱樂部管理這類內(nèi)部系統(tǒng)需求方要的不是花哨的界面而是清晰的操作路徑和可靠的數(shù)據(jù)。報名系統(tǒng)尤其要處理好“并發(fā)”和“狀態(tài)這兩個關(guān)鍵詞寧可一開始多花時間在事務(wù)設(shè)計和唯一索引上也不要等到線上數(shù)據(jù)出錯再補(bǔ)救。后續(xù)這個項目還可以繼續(xù)擴(kuò)展比如給報名名單加二維碼簽到、按月份導(dǎo)出訓(xùn)練報表、接入企業(yè)微信通知等核心鏈路已經(jīng)打通擴(kuò)展方向就看你自己的業(yè)務(wù)場景需要什么了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日天天九九天堂666| 野狼激情网| 中文字幕伊人| 麻豆影音天美视频| 日本三级韩三级99久久| 成人性爱全视频观看| 欧美性爱第1 页| 亚洲日韩XXX| 久久黄黄| 99热免费| 丝袜喷水在线| 0755午夜福利视频| 日本人妻天堂网站在线播放| 老色69| 美女国产一区二区久久| 色黄污美女啪啪啪免费网站| 久久精品 六十路 熟女 欧美| 风间由美日韩欧美久久| 水滴偷拍| 九九碰九九爱97超| 九九热只有精品| 噜噜噜噜天天狠狠| 超碰在线1234区| 日韩美女,国产传媒,视频一区| 久久黄黄| 五月婷婷hd| 天天看综合网| 久久五月份| 亚洲另类综合欧美| www鬼畜国产男人的天堂| 五月丁香激情啪啪| 能看的av| 精品一区二区3区| 九九成人| 97网址www| 男人的天堂啪啪啪啪啪蜜桃不卡| 97人肏| 日韩欧美三级| 久久伊人最新网址视频| 国产精品一级片在线看| 久久精品国产亚洲AV嘿嘿| 五码视频在线观看| 久久久久久久九九九九九九| 国产精品久久99日日| 日韩激情毛片一级久久久| 国产中文字幕在线点播| 人妻 中文 日韩| 啪啪啪东京| 五十路三级片| 亚洲色资源| 婷婷精品国产欧美精品亚洲人人爽| 亚av顶级裸体一区二区三区四区五区| 中文精品少妇天堂| 成人a级高清视频在线观看| Av手机版天堂网| 欧美日韩黄片精品在线| 睡产熟女乱伦| 69AV女优男人的天堂| 啊啊啊啊啊操我视频| 后入内射蜜桃臀| 日韩ab网| 欧美精品宗合| 婷婷91| 亚洲情色1区| wwe 天天干.com| 中文字幕欧美日本乱码一线二线| 五月丁香激情啪啪| 欧美72网页| 亚洲中亚日激情视频| 午夜精品久久久久久久第一页按摩| 久久岛国| 日韩不卡a级视频专区| 五月丁香综合激情| 好吊色一区| 天天操熟妇| 我要色综合网| 91丨熟女丨丰满熟女| 亚洲五月天激情| wwe 天天干.com| 亚洲AV在线资源| 1240青青草一区二区三区视频天爱| 青娱乐福利99| 色999亚洲人成色| 九九热九九热| 色香AV| 96久久精品一二三区色欲| 色婷婷亚洲婷婷| 精品成人女人久久| 1769成人国产精品视频| 久久怡红院| 亚洲综合图色在线| 九久精品| 国产99热| 亚洲国产婷婷在线播放| 亚洲国产精品乱码在线观看| 亚州性色| 熟妇操花| 久操视频在线| 中文字幕日韩人妻视频一区二区三区| 丁香五月天婷婷姐| 久久大黄片| 玖玖资源综合在线视频| 97视频新免费| 日韩性爱人人爱人人操| 中文字幕免费观看| 激情熟女12P| 大香蕉婷婷| 欧美人人天天网| 亚洲黄色视频在线观看视频| 九九久久久久久爱| 精品国产Av无码久久久伦古装| 国产成人无码网站在线视频| 国产精品97超碰| 人妻啪| 抽查国产福利主播| 蜜臀久久99精品久久久电影| 天天做天天爱天天高潮| 亚州欧美在线| 啊v视频在线观看| 玖玖草久草99蜜月一区二区三区| 深夜激情无码| 午夜黄色免费在线观看| 国产AB视频| 日韩极品无码B| 天天摸天天碰天天添青青| 日韩免费a级毛片无码a∨| 91粉芽高清在线一区二区| 亚洲有薄码区久久在线一区| 欧美日韩国内不卡| 天天日天天干天天摸天天操| 婷婷天堂站| 亚洲欧美国产精品久久久久久久| 丁香五月婷婷啪啪| 一起草在线视频| 国产av尤物| 一起草三级AV电影在线观看| 97色97好| 黄色免费网页无码| 亚洲色婷婷综合久久久久中文| 午夜男女爽爽爽在线视频 | 国产精品久久蜜乳av| 超碰人人妻| 香蕉综合网| 特污免视频| 色天使亚洲综合在线观看| 国产久久一区二区| 九九色婷婷| 97在线免费观看视频| 在线 亚洲 网爆 自拍| 精品亚洲一区在线观看| 欧美在线电影| 熟妇熟女一区二三区| 777AV电影| 日韩本不卡视频在线观看 | 天美传媒麻豆一区二区三区国产精| 国产亚洲色婷婷久久99精品91| 女优大全 - 91n| 后入人妻一区| 亚洲无线码一区国产欧美国| 丁香五六月啪啪| 亚洲成人妻日韩在线| 国产乱伦性爱AV| 91天天| 亚熟hd视频在线| 日本污ww视频网站| 级做a爱无码性色永久免费| 九草九九九| 蜜桃臀av在线观看| 日韩一区二区三区四区五区| 一起草三级AV电影在线观看| 热热色综合网| 久久久久久波多野吉衣高潮| 久久人妻丝袜一区二区三| 人人摸.人人色| 97爱亚洲| 草草草视频| 超碰97在线色男人??| 久久伊人在线五区| 成人性爱电影网| 香蕉国产精品麻豆亚洲欧美日韩| 91bbbbbb| 97国产|免费| 国产精品熟女九九九| 日日干夜夜欢| 99在线观看无大码| 天天综合网~69| 秋霞免费AV| 欧州一区二区三区四区| 在线欧美亚洲| 亚洲精品蜜桃久久久| 青青草精玖玖69精品| 欧美亚洲综合色| 精品在线观看视频在线| 久久九九国产精品| 一级久久久久久久久久久| 午夜福利一区二区影院| 尤物网站91| 亚洲人妻精品一区二区| 99操逼| 成人天天爽| 老熟妇综合| 又摸又舔在线观看网站| 欧美内射少妇| 久久爱超碰网| 国产一线二线三线av| 色爽——AV| 国模91| 东北操逼| 日韩欧美蜜桃精品久久中文字幕久久 | 欧美天天谢综合网| 日本加靬比网站发布页| 欧美日韩电影一区二区| 亚洲欧美在线综合| 人妻丝袜肏逼| 伊人网高清| 亚洲综合网91| 视频一区二区免费在线| 国产精品久久久久无码A√| 懂色中文一区二区三区| 午夜黄色免费在线观看| 日本免费二区三区| 人人操人人肉久久精品| 精品亚洲一区在线观看| 99热综合| 久久一二三级一一一| 黄色不卡视频| 97国产精选| 欧美色青| 影音先锋日本一区二区| 1024人妻熟女一区二区三区| 超碰人人色| 婷婷在线视频| 日本一久是| 欧洲一区二区三区四区在线观看| 天天摸天天操视频| 无码不卡亚洲成?人片| 国产色综合亚洲色综合吹潮| 国语av最新自产拍在线观看| 67914亚洲精品| 一及黄久一点| 蜜臀在线看片| 日B操| 嫖老熟女A片一二三区| 99热这里是精品| 国产欧美日韩臀| 国产成人精品午夜福利| 欧美AB在线| 一级性爱啪啪视频| 99热国产| 日韩中文9| 火箭成精品视频884必出精品| 无码久久国产| 国产亚洲99久久精品| 97玖玖超碰| 9久热这里只有精品| 操www| 久久综合99| 青青欧美| 岛国爱情动作片在国产AV无码专区亚洲AV漫画 | 国产三级中文有码在线视频| 欧日韩不卡视.频| 九九九九欧美| 国产91影院| 成人性爱电影网| 1区2区3区中文字幕日韩| 久久精品操| 精品高清一区二区三区三州| 久久精品免费| 天天射天天色成人| 18禁的网站在线| 情色图区| 男人a天堂手机在线版| 91爱做| 午夜成人福利影视| 久久嫩草国产成人一区| 久热热| 97欧美久久久久久久| 欧美中字二区| 日韩精品电影| 欧洲自拍第一页| 亚洲天堂一区二区| 青草精品视频-日本久久久久网站| 新91视频.cmp| 翔田千里爆乳巨臀无码| 国产一区二区三区免费视频在性观看| 国产一级高清免费观看| 97操B| 99e久久国产精品| 蜜乳AV一区| 久久色人体| 国产视频大全| 天天综合网91| 亚洲成a人片在线观看中文!!!| 伊人久久大香线蕉无码| 开心五月天激情网| 欧美成人国产精品| A 在线网址| 三级三久久线久久99久目本WW| renqi久久久久久久久久久久| 天天综合色电影| 熟妇亚洲一区二区三区| 熟女高潮合集-永久久久-成人AV| 99久在线精品99re8热| 男女啊啊啊啊啊| 在线人成亚洲视频免费观看| 亚洲AV无码AV吞精久久久久| 97久精品| 91色插| 黄片视频,下载| 97天天爽| 欧美91在线| 亚洲激情四射| 九久精品| 97超碰69| 欧美成人免费在线观看| 丁香五月激情五月| 亚洲无码一区成人免费午夜| 久久久久亚洲Aⅴ无码| 精品国产国产AV| 国产大陆天天艹| 少妇诱惑视频| 成人无码在线视频网站| 啊啊啊好舒服好爽啊啊啊视频| 欧美色女人| 一区二区三区精品黑丝白丝酒店对鸡| 欧美97在线欧| 神马久久69| 黑人操一区二区| 男人的天堂在线| 熟女这里只有精品6| 又黄又粗又硬又长又大| 可以在线观看的黄色网址| 欧洲精品欧洲精品| 九九这里只有精品| 乱性AV| 精品999日本| PMv在线观看| 97亚洲国产| 午夜精品久久久99| 日夜啪电影| 日本熟妇人妻中出视频| 你草精品在线视频| 一区二区三区免费岛国片| 无码九九九九| 二级久久网| 丁香五月天堂网| 日本成人A片网站| 伊人久久亚洲色欲综合网站 | 婷婷99| A级在线视频| 东京热99999| 97资源超碰| 欧美午夜一区二区三区| 亚洲国产另类在线中文| 精品999一区二区| 伊人久久亚洲色欲综合网站| 先锋精品av色鲁| 免费国产电影一区二区| 香蕉人欧美综合| 后入日本1234| 日韩不卡一二三四| 91丝袜美腿片| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 大香蕉懂9| 尤物AV免费网站| 99久热精品99re6热| 人人摸人人干| 老熟女中文字幕高清| 色天堂在线观看| 欧美变态激情网| 91中文精品日韩欧美在线| 综合色图区| 天天日B夜夜干B时时操B| 视频国产成人精品日本亚洲18| 欧美综合亚洲综合| 人人操人人爽人人操人人| 蜜臀AV午夜精品久| 日韩免费a级毛片无码a∨| 国产操逼网站亚洲一级黄色| 欧美丝袜中文字幕07在线| 日韩天天综合| 尤物网站91| 91精品久久久久五月天精品| 影音先锋中文字幕日本好一区二区| 女人高潮抽搐喷水视频网站| 国产精品丝袜在线| 欧美在线亚洲| 内射夫妻三片| 色乱二区| 日本熟妇精品九九| 九九热最新| 一品道视频一区二区三区| 宗合情欲网| 九久久精品| 97干色| 精品国产无码中文| 亚洲aV无码成人在线观看| 激情综合五| 伊人一区二区三区| 美女91AV| 黄色av一区二区在线| 亚洲丝袜色图| 夜夜性| 看免费一级在线播放毛片| 无套内射性感少妇视频| 日韩78m视频| 精品人妻一区二区三区四区不卡在| 在线可观看的黄色网址| 操少妞在线视频| AⅤ片水多多| 91久久久久久久| 黑人精品久久97| 亚洲精品尤物yw在线影院| 色99视频| 午夜性刺激视频免费观看| 亚洲成人久久美女| 天天天操天天天爱| 国产超碰AV在线精品| 欧美极品女人的天堂| 亚洲天堂男| 超碰日本97美女人妻人人玩人人爱| 欧美色综合网| 色婷五月天| 成人区人妻精品一| 校园春色五月天| 伊人久大| 中文啪啪视频| 天天色图| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 久96热在线观看视频| 日韩伦理久 久久 清纯| 91美女视频电影| 欧美亚洲丝袜美女电影| 国产 日韩,欧美 自拍| 日本一二区免费| 亚洲第一狼人丝袜美女另类| 亚洲无码一区成人免费午夜| 日韩天天综合| 92福利社视频| 超碰久久性爱| 色色操| 97操b| 欧美色图亚州激情| 新婚人妻扶着粗大强行坐下| 操熟女91| 97 九色| 99视频自拍| 97日韩欧美| 国产AV线| 曰本特级特黄特色黄色A级网站高清在线免费看| 欧美很很操视频| 无码丰满熟妇一区二区浪潮AV| 久草电影网| 男插女青青影院| 国产一区二区三区精品观看啪| 91成人精品| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 日韩美女高潮喷水视频| 99日韩| 国产女人和拘做爰视频 | 欧美人妖内射| 久久人妻少妇| 国产精品视频在线播放 | 精品一区二区三区四区外站| 99热网站| 99热婷婷| 精品97久久综合| 探花一区在线| 婷婷大香蕉| 亚洲色色探花| 国产精品日韩在线一区| 欧洲特黄毛片免费看欧洲毛片| 风骚少妇视频中文字幕| 麻豆国产成人精品| 1区2区3区中文字幕日韩| 久久人妻视频网| 2020中文字幕| 亚洲欧美另类少妇精品| 国产肏屁眼视频| 中文字幕亚洲欧美在线不卡| 国产诱惑| 日韩欧美加勒比| 免费一级a毛片久久久久久鸭绿欲| 人人操我人人干| 欧美日韩国产色图在线| 中文字幕老熟妇黄色视频| 黑操B| 久久 精品| 久久久久久久91| 日本黄大片在线观看视频| 精品无码一区二区三区| 国产精品婬乱一级毛片彝族| 天美麻花大全视频| 青青国产在线拍揄自揄拍| 蜜臀va69| 精品高清一区二区三区三州| 亚洲激情网一二三四区| 人人摸人人舔一区二区| 亚洲精品自拍| 久久久A∨| 久久最新视频免费观看| juliaann欧美丝袜办公室| 国产精品爱欲| 九九九九97| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 黑人精品欧美一区二区蜜桃| 九九九九久久久| 日韩操p| 亚洲。天堂。日本在线观看| 亚码激情| 久操视频资源站公开| 婷婷激情四射| 国产久久一区二区| 鲁鲁色综合网| 91精品国产日韩欧美综合| 亚洲精品熟妇1区2区3区。| www四虎| 嫩草影院在线观看精品| 日韩一级二级三级免费看完整版| 大香蕉色欲AV| 国产超碰在线一区| 综合色久| 国产中文字幕曰本毛片| 亚洲一级黄色毛片| 唯美清纯 妖精视频| 日本东京热大香蕉a片| 久久女婷| 精品国产www久久| 久久久久亚洲熟妇熟女| 久9精品| 久热99999| 欧美亚洲厕所精品偷拍91| 又黑又大又粗| 97中文字幕一区| 欧美精品偷拍| 一直超碰| 在线v中文字幕一区二区三区| 欧美第二页午夜| 色哟哟-国产专区| 国产69精品久久久久99尤物| 人妻AV 中文字幕的| 1024手机看片欧美日韩| 亚洲欧美九九| 91狠狠色丁香婷婷综合久久| 手机看片1024你懂的国产| 日本成人A片免费看| 91中文字幕| 国产一区在线看| 东北女人性交| 久久久久久99999国产精品| 亚洲欧美在线综合| 91性感网站| 18岁禁 茉莉成人久久| 99爱久久视频频| 91 丝袜在线| 四月丁香婷婷| 四季AV综合网址| 国产无遮挡| 国产suv精品一区二区四区999 | 人妻无码视频一区二区三区久久| 97在线青| 色综九九九一区| 久久久草草精品| 夜夜嗨免费视频| yazhououmeizongya| 亚洲双插| 欧美日韩在线小说 | 九九碰九九爱97| 三级三久久线久久99久目本WW| 国产一区二区三区影片| 精品国产精品一区二区| 日本三级中国三级99人妇网站| 韩国一级婬片A片AAAAA| 9九九九九视频在线观看| 91oumei| 久久久久久久久久久97| 爱爱动态试试看6 0秒| 日韩丝袜高跟制服在线观看| 蜜桃臀久久| 东京热av影院| 一级做受视频免费是看美女| 欧美呦呦性爱| 黄aaaaaaaaaaaaaaaaaa色网站| 国产高潮AA片免费看| 丁香六月综合激情| 东北女人的毛片| 18禁久极品美女久久哦哟呀!| 日韩av情韩国爱禁区av一区二区| 亚洲色图A| 精品蜜乳AV免费观看| 欧美日韩日产免费网站看| 日韩探花精品在线视频| 亚洲男人的天堂亚洲| 中文字幕在在线观看网站| 精品国产久久乱码| 九九九九AV| 国产日韩精品无码去免费专区国产| 亚洲综合精品国产一区| 精品福利视频| 18精品一二区| 欧美日韩另类在线播放| 91一起操| 欧洲精品久久| 加勒比综合| 亚洲欧美日韩精品久久久一区二区 | 人人九九精| 放黄片放3级黄片没穿衣服| 97精品熟女少妇一区| 人妻少妇一区二区| 国产欧洲精品亚洲午夜拍精品| 欧美大片91| 午夜福利视频在线一区| 亚洲欧洲精品成人| 91综合网站| 国产精品岛国片在线观看| 精品久久久久黄少妇| 九九这里只有精品| 国产成人亚洲精品无码古代早漏男| 屌色在线97视频| 精品中文一区二区| 欧美日韩大黄片| 97WW精品| 精精品人妻一区二区三区| 强奸乱伦中文字幕AV| 老熟女熟妇| 99无码| 婷婷五月综合激情| 噜噜瑟| 国产精品无码av| 一区 欧美 日韩 麻豆| 久九九九| 欧美成人9797| 欧美激情区| 五月天婷婷色色| AV在线播放网址| 久精品无码av一区二免费国产在线观看 | 欧美色日本| 麻豆国产精品午夜视频| 亚洲天堂东京热| 亚洲欧美色图片| 五月天婷婷影院| 91亚洲综合在线| 五月天婷婷色| 女人久久久| 国产精品一区人妻精品阁在线| 五月天婷婷社区| 五月激情在线| 中文字幕丰满子伦无码专区在线视频最新| 色噜噜狠狠色综合日日| 加勒比海人人操超碰在线| 暖暖精品二区三区观看| 日本精品一级二级三级| 亚洲色图加勒比| 日本性爰一道本| 热热热热日日漂亮永久永久国产日| www.亚洲成人一区| 啊啊啊好舒服视频在线观看| 自拍偷拍 高清无码| 小骚逼被操的爽不爽| 日本人人操人人操| 风韵犹存大大大大香蕉 | 色欲天天综合久久久无码网中文| 亚洲不卡不卡中文字幕不卡| 日韩av电影成人在线| 超碰中文字幕人妻草一区| 家庭乱伦国产| 欧洲一区二区三区四区在线观看| 婷婷六月色| 国产自制av蜜乳| 91艹逼精品| 久久国内| 久久久久久久97| 国产嫩草精品A88AV在线| 中文字幕在线观看永久| 欧美综合综合| 精品久久久久黄少妇| 黄片免费久久久久久久| 亚洲天堂资源网| 伊人丝袜美腿高跟在线观看高清| 国产尤物AV尤物在线观看不卡| 日韩有码专区| 精品一久久久| 狠狠操天天干| 激情 欧美 亚洲 小说| 麻豆区久久久久亚| 99热免费| 亚洲一本大道中文字幕无码在线| 久九色| 欧美 综合 亚洲| 人妻熟女字幕一区二区| 日韩精品免费高清视频在线| 成人怡红院| 日韩色女精品| 不卡超碰护士AV在线免费播放| 国产真实野战在线视频| 操国产逼| 欧日韩一二三f区| 国产91精品久久久久久久网曝门| 九九碰九九爱97| 黄色电影在线播放综合网站 | 91一区二区| 97人人操人人摸人人爱| 亚洲情色91| 国语国产操逼伊人AV网| 91精品国产91久久青草| 精品国产乱码久久久久久免费| 国产大片精久久久久久| 欧美日韩成人在线| 日本一本道A级黄色毛片试看60分钟| 97免费在线观看| 熟妇一区,二区,三区。| 久日91在线| 天美国产精品| 红杏大香蕉| 亚洲精品国产精品乱码不99| 天天干干天天干干| 96精品久久久久久久久| 九七超碰人人乐| 黑人粗大V S日韩女优视频| 2019AV天堂| 久久久com| 国产精品麻豆成人AV艾秋| 立川理惠无码一区二区| 亚洲中文国际强奸字幕| 日韩人妻制服丝袜av| 精品欧美不卡在线播放| 97国产人人| 亚洲欧美另类图片| 伊人麻豆传媒| 91欧美色| 久久日本熟妇熟色一区| 丰满人妻-区二区三区免费看 | 色综合久久88色综合久久天天| 亚洲精品一区二区精品| 天天爽夜夜爽夜夜爽精| 久久精品午夜国产亚洲AV无码| 91精品国产91综合久久蜜臀| 欧美激情综合| 青娱乐国产剧情av一区| 久久久精品网站| 超碰午夜| 国产日韩手机视频在线| 天天射天天| 天天操人人操狠狠插| 成人无码在线视频网站| 久久国产乱子伦精品免费女人| 日韩无码精品综合久久| 777AV电影| 天天视频黄网站| 国产中文字幕曰本毛片| 亚洲高清无码免费观看视频| 欧美婷婷| 欧亚乱色熟一区二区三四区| 97se综合网| 亚洲91网站| 天天天操天天天爱| 成人性交免费视屏| 天天干天天操天天操夜夜操天天操| a片自拍直播视频| 日韩av不卡在线看| 免费综合亚洲中文| 日韩国语字幕| 综合网久久| 天天情欲宗合网| 国产精品一区二区三区在线| 少妇久久久久久| 日韩中文字幕国产| 欧美亚洲日本激情在线| 99成人| 西西美女视频网| 欧美爱国产综合、| 国产精品白丝| 狠狠中文字幕| 激情五月婷| 啊啊啊啊啊啊啊好爽不要| 无码九九| 一起草av| 玖玖超碰熟| 国产久久日韩网站导航| 午夜综合在线| 欧美性色网| 国产精品一区二区校花| 亚洲高清在线| av午夜玫瑰| 四虎AV在线播放| 国产美女裸体秘 永久无遮挡| 國產尤物AV尤物在線觀看| 国产又黄又猛又粗又爽的网站| 超碰天天操你比| 视频分类 国内精品| 啊啊啊啊啊啊啊国| 久久久性少妇| 国产最火爆久久国产网站网站| 亚洲av乱伦色图网站| 黑人中出21连凳花野真衣| 伊人国产AV| 免费一级精品啪啪视频| 1024久久高清视频| 天天日天天干天天摸天天操| 蜜乳成人AV| 激情文学网伊人| 天天干夜夜肏| 精品成人亚洲午夜电影| 欧美综合骚| 好湿好紧视频| 亚洲无吗在线视频| 亚洲高清内射| 激情小说亚洲| 99热成人| 亚洲丝袜二区在线| 国产探花精品在线| 99RE在线视频精品,这里只有精品| 综合亚洲欧美| 国产无套粉嫩白浆在| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 懂色av色欲av蜜臀av| 成人AV素股で擦久久| 天天天肏屄肏屄肏屄欧美欧美| 围产精品一区二区三区视频播放| 欧美 传媒 麻豆 日韩 偷拍| 国产成人亚洲精品无| 六月色婷婷| 91欧美www| 欧美视频中文字幕区| 亭亭在线资源| 国产精品呦一区二区三区| 大香蕉色网| 久久无码一区二区二三区性色| 国产精品青青草| 青青草毛片| 亚洲欧洲偷拍一区| 亚洲黄色AV电影| 九九热AV| 亚洲精品人体| 欧美躁死她一区二区| 91精品丝袜久久久久久| 久久精品性| 蜜屁av| 亚洲成人av色网| 久久日本熟妇熟色一区| 天无日色综合| 熟妇综合一区二区三区| 歐美一級亂黃99在綫精品| J?P?NESEHD熟女熟妇伦| 蜜臀久久99精品久久久久免费观| 无码一区免费在线不卡| 99天天超碰| 久操com| 亚洲素人综合| 99re久久| 少妇一区二区三区| 台湾佬中文娱乐自偷自拍| 边做饭边操逼逼| 麻豆伊人网| 俺去俺来也在线www| 黄页网站成人免费| 天天干天天拍| 青娱乐休闲视频在线观看| 欧美少妇第一页| 国产高清成人mv在线观看| 色香网| 天美传媒国产原创中文字幕亚洲欧美另类 | 天天看特黄的免费网站| 97欧美性爱| 天天综合官网| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 99热日| 91碰碰碰| 国产精品麻豆成人av| 久久久内射良家| 日韩另类色图| 老熟女乱伦一区| 蜜桃臀一区二区三区久久| 日本超碰在线国产一区| 超碰人人操97碰| 久草电影网| 伊人国产av| 韩国一级做A片免费的| 国产精品人妻无码久久久互動交流 | 综合网亚洲在线| 91精片| 超碰1997| 91狠婷| 亚州AV无码国产精品| 美女久久久| 亚洲色入欧美| 色综合美国| 午夜理论片在线观看免费| 黑人猛交| 伊人嫩草| 青青草在线视频欧美| 五月天社区| 中文字幕一二区二三区人妻专区| 欧美 亚洲| 超碰日韩美妻| 亚洲瓯美色图| www.色婷婷.com| 天天搞在线综合网| 中文字幕一区二区视频在线观看 | 92人人操人人| 富女玩鸭子一级毛片| 成人九九| 9999久久久久| 大香蕉伊人在线成人AV在线观看| 激情av| 久久久精品视频免费观看| 亚洲中文字幕在线视频一区二区| 91狠狠综合久久| AV色五月天| 久久久久密臀一区二区| 中日无幕一二三四区| 91九色首页| 人人摸人人摸人人干| 亚洲色欲天天天堂色欲网女| 亚洲男人电影天堂| 黄页网站成人免费| 婷婷九月国产| 1204金沙人妻懂旧版免费| 成人综合网 欧美| 97超碰碰碰| 丁香五月天视频| 99热在线观看| 欧美三级中文字幕hd| 一区操逼日比视频| 综合av社区| 乱伦熟女专区| 国产无码精品久久久久久| 精品人妻一区二区免费蜜桃视频| 漂亮人妻被强中文字幕hd| 后入式福利| 欧美综合色综合| 屁股久久久久久久久| 色网综合网| 欧美91网站| 欧美日韩另类字幕中文| 久久精品国产久精国产| 亚洲国内精品成人不卡| 四季AV一区二区凹凸精品小说| 欧美白嫩女HD| 330Dv国产女人终合视频极品人与兽 | 人人操人人摸超碰| 久久久91| 久久一二三四| 天天射天天| 草莓精品视频在线免费观看| 伊人五月天婷婷| 天天色黄色影院天天操| 中国国产精品一区视频| 视频黄色国产一级| 在线视频日韩欧美国产| 五月丁香啪啪网| 日本大片日本一区二区免费高清| 国产精品老熟女一区二区| 人妻碰碰碰碰碰碰| 亚洲精品骚逼| 欧美亚洲综合999| 97在线观看免费| 亚洲狠| 国产精品一区二区手机看片| 岛国激情视频在线观看| 国产精品婬乱一级毛片彝族| 日韩不卡av一二三| 啊啊啊啊一区| 欧美精品91| 九九热午夜欧亚国产视频| 大香蕉日韩| a级免费在线观看| 翔田千里一区二区三区奶水| 顶级丝袜熟女一区二区三区| 色噜噜婷婷| 97硬碰| 亚洲天天精品| 曰韩中文人妻视频| 又粗又长又爽在线观看| 国产自偷自拍一区| 97超碰国产精品| 亚洲国产精品久久久男人的天堂| 欧美肥臀在线| 人人弄人人摸| 日本高清_区二区三区| 色99在线| 色综和网| 亚洲熟妇A V黑人| 日本高清视频xxxx| 欧美色色色| 蜜臀色乳| 天美传媒婬乱在| 性爱免费视频成人| 欧美亚洲日韩人妻在线观看| 亚洲色香| 久久男人的天堂| 伊人991| 奶水 人妻 哺乳 在线| 欧美aa一级片| 欧美操逼一二三区| 亚欧美综合网。| 久久久久九九九| hd成人一区二区在线| 久久精品黄色| 久久伊人青青草| 亚洲欲| 黑人无码一区二区| 高清无码网址| 久久久无码av精| 精品国产一区二区久久| 亚洲少妇自拍中文字幕懂色| av网站国产主播在线| 色婷婷综合网站| 日本一久是| 欧美v亚洲v综合v国产v妖精| 97人人干| 一区二区不卡免费| 尤物黄色在线观看网站| 国产乱婷婷精品二区三区| 九九九九热只有精品| 乱伦av国产| 丝袜天堂| 国产亚洲深夜激情| 操九九九九九九| 中文字幕在线免费观看 | 国产日韩美女小穴视频网站不卡| 欧美性爱91| 香港成人一级视频在线青青草| 野狼福利社区| 精品区9| 超碰在线免费一区二区三区| 91精品无码人妻系列| 后入式视频国产自| 脫衣舞一区二区三区| 性色国产东北露脸精品视频| 欧美区亚洲区偷拍区 | 国产精品久久久久久亚洲色欲| 精品久久久久久亚洲| 香蕉精品二区二区| 久综合网| 中文字幕人妻丝袜乱一区三区| 日韩另类| 一本色道熟妇| 五月婷婷激情综合| 日本精品一区二区不卡| 亚洲AV免费在线| 亚洲色图A| 夜夜爽爽爽| 96久久久| 日韩中字av一区| 无码一区免费在线不卡| 欧美在线色图| 久操网无码在线| 98福利在线视频| 亚洲av淫乱| 伊人性在线视频| 激情综合五月| 色综合加勒比| 国产偷仑| 亚洲一卡2卡3卡4卡乱码网站| 天美麻豆黄色录像| 亚洲高清无码免费观看视频| 这里都是精品| 999久久久久久久精| 欧美人人操人人插| 亚洲有码第一页| 91人妻Pr| 亚洲欧美小说| 亚洲第91页| 91狼人| 伊人色综合网| 97综合网| 欧美激情久| 久久性爱城| 日韩在线观看三级电影| 欧美曰韩国产精品| 日韩中文字幕在线视频观看| 成人性交午夜免费片| 天天摸夜夜摸| 日本www操操操| 国产传媒一区二区三区| 三级网站超变态精品| 青青草丝袜在线视频| 91超碰在线| 天美传媒av在线| 五月婷婷激情网| 大香蕉久久| 青娱乐妇女性生活| 淫荡熟女乱伦网| 奶水 人妻 哺乳 在线| 97人亚洲综合字幕| 亚洲国产高清福利视频| 92久久| 人妻丝袜肏逼| 男人亚洲91首页在线| 国产网红精品| 啊啊啊啊网站| 日韩av情韩国爱禁区av一区二区| 91亚州日韩高清| 波多野结衣先锋影音| 成人久久久| 国产又大又粗又长视频| 色狠狠综合噜一二三区| 一区二区三区欧美激情| 亚洲A曰本VA欧美VA视频| 麻豆色99999| 亚洲性猛交| 色av中文字| 91精品国产高清久久久久久,亚洲成人 | 99操逼| 亚洲欧美日韩电影网站一区| 日韩国语字幕| 亚洲色欲天天人妻无码系列专区| 韩国手机不卡无码三级视频| 亚洲人天堂| 人妻少妇精品无码专区二区密桃| 久久久熟妇熟女国产| 六六久久日韩不卡| 香蕉人人操tv| 日韩人妻播放| 操逼视频国产无套| 97资源久久| 久久久精品,3| 黄站在线免费观看| 日本蜜桃| 久久天天躁日日躁狠狠躁| 男人天堂2019亚洲| 男女做爰猛烈动高潮A片免费应用| 欧美一区二区三区另类精品| 91少妇| 国产sv美女内射| 久欲AV| 日本高清熟女久久一区| 色超碰综合| 国产又大又粗又长视频在线| 色蜜AV| 久久久九97| 水澄无码AV| 91 刺激在线| 国产精品电影| 人妻中文在线| 激情综合网五月婷婷| 天天色播亚洲综合网站| 亚洲日韩美女中文字幕乱| 欧美日韩亚洲一区二区在线观看| 欧美爱三级日韩久久| 中文字幕一区二区三区四区在线视频| 久久一区二区三区四区五区| 欧美日韩中文字幕人妻| 欧美性性性| 深夜视频| 97在线观看| 精品亚洲| 国产狂喷潮在线精品| 成人av在线播放| 日韩免费三级黄片电影| 6080YYY午夜理论片在线观看| 日韩成人在线性爱视频| 亚洲一区二区三区播放在线| 精品人妻av在线播放| AV污污污污| 色色色色电影网| 激情综合五月| 色综合中文字幕不卡| 欧美性,色九九|