免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

Spring Boot + Vue健身房管理系統(tǒng)實(shí)戰(zhàn):從數(shù)據(jù)庫設(shè)計(jì)到部署上線

Spring Boot + Vue健身房管理系統(tǒng)實(shí)戰(zhàn):從數(shù)據(jù)庫設(shè)計(jì)到部署上線 開門見山說個(gè)事前段時(shí)間幫朋友健身房做的那套管理系統(tǒng)前后大概折騰了一個(gè)多月從數(shù)據(jù)庫設(shè)計(jì)到前后端聯(lián)調(diào)再到部署上線踩的坑比想象中多。這套系統(tǒng)的技術(shù)棧就是標(biāo)題里寫的Spring Boot Vue功能上覆蓋了會(huì)員管理、課程預(yù)約、教練排班、簽到統(tǒng)計(jì)這些健身房日常運(yùn)營的核心場(chǎng)景。寫這篇東西不是為了秀技術(shù)就是想把這個(gè)項(xiàng)目從設(shè)計(jì)到落地的完整思路和實(shí)操過程記錄下來給準(zhǔn)備做類似管理系統(tǒng)的朋友一個(gè)可以抄作業(yè)的參考。這篇文章適合正在做畢業(yè)設(shè)計(jì)、課程設(shè)計(jì)或者想自己搞一套前后端分離項(xiàng)目練手的人讀不管你是后端為主還是前端為主都能找到自己能復(fù)現(xiàn)的部分。1. 項(xiàng)目概述與需求拆解1.1 系統(tǒng)定位與核心功能健身管理系統(tǒng)這名字聽著大但落到實(shí)際業(yè)務(wù)上核心就是解決健身房日常運(yùn)營里這些事誰來上課、誰買了卡、卡什么時(shí)候到期、教練的時(shí)間怎么排、會(huì)員約了課沒來怎么處理。說白了這套系統(tǒng)的本質(zhì)是業(yè)務(wù)管理系統(tǒng)不是電商系統(tǒng)也不是社交平臺(tái)所有功能都圍繞人、卡、課、預(yù)約四個(gè)核心對(duì)象展開。我做的這套系統(tǒng)最終定了四個(gè)角色管理員、前臺(tái)、教練、會(huì)員。管理員負(fù)責(zé)全局配置和統(tǒng)計(jì)報(bào)表前臺(tái)負(fù)責(zé)會(huì)員辦卡和簽到操作教練管理自己的課程和學(xué)員會(huì)員則是通過前端頁面完成注冊(cè)、選課、預(yù)約、查看記錄這些自助操作。功能模塊上我把系統(tǒng)拆成了這樣幾塊會(huì)員管理會(huì)員信息的增刪改查、會(huì)員卡類型月卡、季卡、年卡管理、卡到期提醒。課程管理團(tuán)操課程的發(fā)布、課程時(shí)間表、每節(jié)課的可預(yù)約人數(shù)、課程狀態(tài)可預(yù)約/已滿/已結(jié)束。教練管理教練基本信息、教練負(fù)責(zé)的課程列表、教練排班。預(yù)約管理會(huì)員預(yù)約課程、取消預(yù)約、簽到記錄、爽約標(biāo)記。統(tǒng)計(jì)報(bào)表每日/每周的預(yù)約量、簽到率、熱門課程排行。公告通知運(yùn)營公告的發(fā)布與展示。這套系統(tǒng)做下來最核心的業(yè)務(wù)閉環(huán)是會(huì)員注冊(cè) → 查看課程表 → 預(yù)約課程 → 到店簽到 → 教練核銷。把這條鏈路跑通系統(tǒng)的主干就算立住了。1.2 為什么選Spring Boot Vue這套組合技術(shù)選型這個(gè)話題每次都能吵半天。我直接說我的結(jié)論Spring Boot Vue是目前做前后端分離項(xiàng)目最穩(wěn)的組合沒有之一。這不是因?yàn)樗钕冗M(jìn)而是因?yàn)樗钸m合這類中小型業(yè)務(wù)系統(tǒng)的開發(fā)節(jié)奏。后端用Spring Boot理由很實(shí)在。第一生態(tài)成熟MyBatis Plus、Spring Security、Redis這些組件都有非常完善的中文文檔和社區(qū)解決方案踩了坑基本都能搜到答案。第二開發(fā)效率高Spring Boot的自動(dòng)配置和starter機(jī)制把大量繁瑣的配置工作省掉了一個(gè)main方法就能把服務(wù)跑起來對(duì)中小項(xiàng)目和單人開發(fā)尤其友好。第三Java本身的類型系統(tǒng)和Spring的依賴注入讓后期維護(hù)相對(duì)容易一個(gè)項(xiàng)目寫完之后半年再回來看代碼還是能讀懂的。前端用Vue理由同樣直接。Vue的學(xué)習(xí)曲線比React平緩模板語法直觀組件化開發(fā)模式適合這種以表單和表格為主的管理系統(tǒng)頁面。配合Element Plus組件庫后臺(tái)管理類頁面的開發(fā)速度非???。Vue Router負(fù)責(zé)路由跳轉(zhuǎn)Pinia管狀態(tài)Axios發(fā)請(qǐng)求這幾件套組合起來前端開發(fā)的工作量控制得很低。不過這里要提醒一點(diǎn)選Vue3還是Vue2這得想清楚。如果是從零開始的新項(xiàng)目直接上Vue3 Vite Element Plus。Vue2已經(jīng)停止維護(hù)了新項(xiàng)目沒必要再用組合式API都別扭的老版本。我這套系統(tǒng)就是用Vue3寫的后面所有代碼示例都是Vue3的寫法。2. 數(shù)據(jù)庫設(shè)計(jì)與后端核心實(shí)現(xiàn)2.1 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計(jì)思路數(shù)據(jù)庫是這個(gè)系統(tǒng)的地基表設(shè)計(jì)的好壞直接決定后面寫業(yè)務(wù)代碼的體驗(yàn)。我設(shè)計(jì)表的時(shí)候遵循了一個(gè)原則按業(yè)務(wù)對(duì)象拆表用業(yè)務(wù)ID關(guān)聯(lián)不做冗余字段。核心表一共有六張。會(huì)員表member的字段包括id主鍵、username、passwordBCrypt加密后存儲(chǔ)、real_name、phone、gender、card_type月卡/季卡/年卡、card_start_date、card_end_date、status正常/凍結(jié)、create_time。這里有個(gè)很重要的設(shè)計(jì)細(xì)節(jié)會(huì)員狀態(tài)和卡到期時(shí)間必須獨(dú)立存字段不要通過計(jì)算去判斷因?yàn)槎〞r(shí)任務(wù)和查詢條件都要用到這兩個(gè)字段冗余一點(diǎn)換來查詢方便是值得的。課程表course的字段包括id、course_name、coach_id關(guān)聯(lián)教練表、start_time、end_time、max_people最大預(yù)約人數(shù)、booked_count已預(yù)約人數(shù)、status可預(yù)約/已滿/已結(jié)束、intro課程簡(jiǎn)介。預(yù)約人數(shù)的控制是這個(gè)表的關(guān)鍵邏輯我后面在預(yù)約模塊會(huì)詳細(xì)講到并發(fā)控制的問題。預(yù)約表booking的字段包括id、member_id、course_id、booking_time、status已預(yù)約/已簽到/已取消/爽約、check_in_time。這張表是業(yè)務(wù)發(fā)生最頻繁的表所以索引要建好member_id和course_id都要加索引。教練表coach、公告表announcement、簽到表check_in相對(duì)簡(jiǎn)單不展開寫了。另外提醒一句如果你用的是MySQL所有表的引擎都用InnoDB字符集用utf8mb4這樣能避免很多中文亂碼和事務(wù)支持的坑。2.2 Spring Boot項(xiàng)目分層結(jié)構(gòu)項(xiàng)目結(jié)構(gòu)上我采用了最標(biāo)準(zhǔn)的四層架構(gòu)controller接口層→ service業(yè)務(wù)層→ mapper數(shù)據(jù)訪問層→ entity實(shí)體類。這是Spring Boot項(xiàng)目最經(jīng)典的分層方式每一層只做自己該做的事職責(zé)邊界清晰后面維護(hù)的時(shí)候找代碼非??臁R粋€(gè)值得參考的包結(jié)構(gòu)是這樣的com.example.fitness ├── controller/ # 接口層 ├── service/ # 業(yè)務(wù)層 │ ├── impl/ ├── mapper/ # MyBatis數(shù)據(jù)訪問接口 ├── entity/ # 數(shù)據(jù)庫實(shí)體 ├── dto/ # 請(qǐng)求/響應(yīng)對(duì)象 ├── config/ # 配置類跨域、攔截器、WebMvc等 ├── common/ # 統(tǒng)一返回結(jié)果、異常處理、工具類 ├── security/ # JWT鑒權(quán)相關(guān) └── FitnessApplication.java分層設(shè)計(jì)有個(gè)很容易被忽略的坑很多人在service層直接返回entity實(shí)體這是不對(duì)的。實(shí)體類是數(shù)據(jù)庫的映射不該直接把數(shù)據(jù)庫字段暴露給前端。我習(xí)慣單獨(dú)建一個(gè)dto包接口的入?yún)⒑统鰠⒍加胐to對(duì)象比如返回會(huì)員列表的時(shí)候用MemberDTO把必要的字段拼裝好再返回。這樣做的最大好處是數(shù)據(jù)庫表結(jié)構(gòu)變化時(shí)接口的返回結(jié)構(gòu)可以保持穩(wěn)定前端不會(huì)因?yàn)楹蠖烁牧吮斫Y(jié)構(gòu)就崩。再說說統(tǒng)一返回結(jié)果。我建了一個(gè)Result類固定結(jié)構(gòu)是{code: 200, message: success, data: {}}所有接口都返回這個(gè)格式。這樣前端攔截器只需要判斷code就知道請(qǐng)求是否成功不用每個(gè)接口單獨(dú)去解析。這個(gè)習(xí)慣看著簡(jiǎn)單但實(shí)際用起來非常爽尤其是前后端聯(lián)調(diào)的時(shí)候不會(huì)出現(xiàn)這個(gè)接口為什么返回的字段名不一樣這種問題。2.3 JWT登錄鑒權(quán)的實(shí)現(xiàn)方式管理系統(tǒng)里登錄鑒權(quán)必須做不做的話任何人都能調(diào)用接口把會(huì)員數(shù)據(jù)刪了。我用的方案是JWTJSON Web Token。這里說下整體設(shè)計(jì)流程。用戶登錄成功后后端生成一個(gè)有效期為2小時(shí)的token返回給前端。前端把token存在localStorage里每次請(qǐng)求Axios攔截器把它加到請(qǐng)求頭。后端寫了一個(gè)攔截器攔下所有非登錄接口的請(qǐng)求解析token并把用戶信息放到ThreadLocal里這樣后面每次業(yè)務(wù)操作都能拿到當(dāng)前登錄人的信息。生成token的核心代碼大概是這樣的String token Jwts.builder() .setSubject(userId.toString()) .claim(role, role) .setExpiration(new Date(System.currentTimeMillis() 7200000)) .signWith(SignatureAlgorithm.HS256, secretKey) .compact();攔截器里解析token的過程就不貼完整代碼了有一個(gè)經(jīng)驗(yàn)值得分享解析token異常要分類型處理。token過期和token被篡改返回的錯(cuò)誤信息不應(yīng)該一樣前者提示登錄已過期請(qǐng)重新登錄并跳轉(zhuǎn)登錄頁后者提示登錄狀態(tài)異常并清理本地存儲(chǔ)。這個(gè)細(xì)節(jié)直接影響用戶體驗(yàn)我見過很多項(xiàng)目在這塊做得比較粗糙用戶被卡在一個(gè)沒有明確提示的報(bào)錯(cuò)里。權(quán)限控制方面我用的是角色判斷。接口注解上加一個(gè)自定義的RequireRole(admin)攔截器里判斷當(dāng)前登錄人的角色是否有權(quán)限訪問。不需要引入Spring Security這種重框架因?yàn)橄到y(tǒng)角色只有四種簡(jiǎn)單的角色判斷足夠用引入重框架反而增加學(xué)習(xí)和調(diào)試成本。3. 前端Vue頁面設(shè)計(jì)與API對(duì)接3.1 前端技術(shù)棧與目錄結(jié)構(gòu)前端這邊用的組合是Vue3 Vite Vue Router Pinia Axios Element Plus。沒有用TypeScript原因很實(shí)際團(tuán)隊(duì)和后續(xù)接手的人都更熟JavaScript而且這套系統(tǒng)的類型復(fù)雜度不高TS的收益有限。不過如果你打算長期維護(hù)并且團(tuán)隊(duì)水平可以上TS是加分項(xiàng)。目錄結(jié)構(gòu)按功能劃分推薦這樣組織src/ ├── api/ # 接口請(qǐng)求定義 ├── assets/ # 靜態(tài)資源 ├── components/ # 公共組件 ├── router/ # 路由配置 ├── store/ # 全局狀態(tài)Pinia ├── utils/ # 工具函數(shù)request封裝等 ├── views/ # 頁面組件 │ ├── member/ # 會(huì)員管理 │ ├── course/ # 課程管理 │ ├── booking/ # 預(yù)約管理 │ ├── dashboard/ # 統(tǒng)計(jì)報(bào)表 │ └── login.vue # 登錄頁 └── App.vueapi目錄下每個(gè)模塊一個(gè)文件比如member.js、course.js、booking.js每個(gè)文件導(dǎo)出對(duì)應(yīng)模塊的接口函數(shù)。這樣做的好處是頁面組件里不直接寫請(qǐng)求URL所有接口統(tǒng)一定義后端接口路徑變了只需要改一個(gè)文件。3.2 Axios封裝的關(guān)鍵點(diǎn)Axios封裝是前端項(xiàng)目的重中之重代碼量不大但設(shè)計(jì)得好不好直接決定開發(fā)效率和聯(lián)調(diào)體驗(yàn)。我的request工具類做了三件事。第一請(qǐng)求攔截器從localStorage里取token有就加到請(qǐng)求頭的Authorization字段沒有就放行。第二響應(yīng)攔截器解包統(tǒng)一返回結(jié)果里的codecode為200就返回data部分業(yè)務(wù)代碼里直接拿到業(yè)務(wù)數(shù)據(jù)不用每個(gè)頁面再解一層。code為401就清空本地存儲(chǔ)、跳轉(zhuǎn)登錄頁。第三錯(cuò)誤統(tǒng)一彈提示網(wǎng)絡(luò)錯(cuò)誤、服務(wù)器錯(cuò)誤統(tǒng)一用Element Plus的Message組件提示頁面里不做重復(fù)的錯(cuò)誤處理邏輯。// utils/request.js 核心結(jié)構(gòu) import axios from axios import { ElMessage } from element-plus const service axios.create({ baseURL: /api, timeout: 10000 }) service.interceptors.request.use(config { const token localStorage.getItem(token) if (token) { config.headers[Authorization] Bearer token } return config }) service.interceptors.response.use( response { const res response.data if (res.code 200) { return res.data } if (res.code 401) { localStorage.clear() window.location.href /login } ElMessage.error(res.message) return Promise.reject(new Error(res.message)) }, error { ElMessage.error(網(wǎng)絡(luò)請(qǐng)求失敗請(qǐng)稍后重試) return Promise.reject(error) } ) export default service這樣封裝完后頁面里調(diào)接口就是非常簡(jiǎn)潔的寫法比如會(huì)員列表import { listMember } from /api/member const getList async () { const data await listMember({ page: currentPage.value, size: 10 }) tableData.value data.records total.value data.total }3.3 路由守衛(wèi)與權(quán)限控制路由層面我用Vue Router的全局前置守衛(wèi)做登錄攔截。邏輯很簡(jiǎn)單訪問任何一個(gè)頁面之前檢查有沒有token沒有就重定向到登錄頁。登錄之后就放行。管理員和會(huì)員看到的頁面不同這件事我用了動(dòng)態(tài)路由的思路處理路由表分成兩部分公共路由直接注冊(cè)權(quán)限路由在登錄后根據(jù)角色動(dòng)態(tài)添加。動(dòng)態(tài)路由這個(gè)功能在管理系統(tǒng)里很實(shí)用但實(shí)現(xiàn)起來有個(gè)坑路由動(dòng)態(tài)添加后退出登錄再切換賬號(hào)之前添加的路由不會(huì)自動(dòng)清除。解決方法是退出登錄時(shí)調(diào)用router.options.routes重置路由或者直接用重定向刷新頁面讓路由表重建。我踩過這個(gè)坑用后者的方式解決了簡(jiǎn)單可靠。Pinia在這里主要存兩類全局信息當(dāng)前登錄用戶的基本信息用戶名、角色、頭像和菜單的展開收起狀態(tài)。用戶信息在登錄接口返回后存入store退出登錄時(shí)清空。整個(gè)項(xiàng)目用到的全局狀態(tài)不多Pinia的模塊拆成user.js和app.js兩個(gè)就夠了。4. 核心模塊實(shí)操課程預(yù)約全流程實(shí)現(xiàn)4.1 業(yè)務(wù)規(guī)則與流程分析課程預(yù)約是這套系統(tǒng)里業(yè)務(wù)邏輯最復(fù)雜的模塊也是并發(fā)壓力最大的模塊。如果預(yù)約功能做不好整個(gè)系統(tǒng)在真實(shí)場(chǎng)景下是扛不住的。預(yù)約的業(yè)務(wù)規(guī)則我梳理出了四條會(huì)員必須登錄且會(huì)員卡未到期才能預(yù)約。同一節(jié)課一個(gè)會(huì)員只能預(yù)約一次。課程狀態(tài)為可預(yù)約才能被預(yù)約已滿或已結(jié)束不能預(yù)約。取消預(yù)約后該會(huì)員可以重新預(yù)約同一節(jié)課如果還有名額。整個(gè)流程文字描述是這樣會(huì)員進(jìn)入課程列表頁看到所有發(fā)布日期在當(dāng)天及之后的課程每門課程卡片上顯示剩余名額。點(diǎn)擊預(yù)約按鈕前端彈出確認(rèn)框確認(rèn)后請(qǐng)求后端預(yù)約接口。后端校驗(yàn)通過后寫入預(yù)約記錄同時(shí)課程表的已預(yù)約人數(shù)加一。頁面刷新后課程的剩余名額減少。4.2 后端接口實(shí)現(xiàn)與并發(fā)控制預(yù)約接口的URL是POST /api/booking請(qǐng)求體參數(shù)是{courseId: 1, memberId: 5}。Service層的bookCourse方法邏輯分五步查會(huì)員卡狀態(tài)、查課程當(dāng)前狀態(tài)、查是否已預(yù)約、判斷是否約滿、插入預(yù)約記錄并更新已約人數(shù)。這里最大的坑是并發(fā)問題兩個(gè)會(huì)員同時(shí)點(diǎn)預(yù)約恰好都查到了剩余名額1個(gè)然后都執(zhí)行插入最后一節(jié)課超員了。解決辦法我用了數(shù)據(jù)庫層面的事務(wù)加悲觀鎖。查詢課程記錄時(shí)加上SELECT ... FOR UPDATE行級(jí)鎖鎖住課程行這樣同一時(shí)間只有一個(gè)請(qǐng)求能執(zhí)行后面的預(yù)約邏輯。Transactional public void bookCourse(Long memberId, Long courseId) { Member member memberMapper.selectById(memberId); if (member null || member.getStatus() ! 1 || member.getCardEndDate().before(new Date())) { throw new BizException(會(huì)員卡狀態(tài)異常無法預(yù)約); } Course course courseMapper.selectByIdForUpdate(courseId); if (course null || course.getStatus() ! 0) { throw new BizException(該課程當(dāng)前不可預(yù)約); } int count bookingMapper.countByMemberAndCourse(memberId, courseId, 已預(yù)約); if (count 0) { throw new BizException(您已預(yù)約該課程請(qǐng)勿重復(fù)預(yù)約); } if (course.getBookedCount() course.getMaxPeople()) { throw new BizException(該課程名額已滿); } Booking booking new Booking(); booking.setMemberId(memberId); booking.setCourseId(courseId); booking.setStatus(已預(yù)約); booking.setBookingTime(new Date()); bookingMapper.insert(booking); course.setBookedCount(course.getBookedCount() 1); courseMapper.updateById(course); }這段代碼有三個(gè)要點(diǎn)。一是Transactional必須加事務(wù)保證插入預(yù)約記錄和更新課程人數(shù)是原子操作任何一個(gè)失敗都會(huì)回滾。二是selectByIdForUpdate這個(gè)方法是自己在Mapper里寫的加了FOR UPDATE關(guān)鍵字不是MyBatis Plus自動(dòng)生成的。三是業(yè)務(wù)異常要主動(dòng)拋出來讓全局異常處理器統(tǒng)一包裝成Result返回不要在Service里自己try-catch吞掉。4.3 前端頁面交互實(shí)現(xiàn)前端課程列表頁我用了Element Plus的Card組件展示課程卡片每張卡片顯示課程名、教練、時(shí)間、剩余名額底部是預(yù)約按鈕。剩余名額為0時(shí)按鈕禁用已經(jīng)預(yù)約過的課程按鈕文案變成已預(yù)約且不可再點(diǎn)。預(yù)約按鈕的點(diǎn)擊處理邏輯是const handleBook async (courseId) { try { await createBooking({ memberId: userStore.userInfo.id, courseId }) ElMessage.success(預(yù)約成功) await getCourseList() // 刷新列表 } catch (e) { // 錯(cuò)誤提示已經(jīng)在攔截器里統(tǒng)一處理了 } }這里有個(gè)易踩的坑預(yù)約成功后一定要刷新課程列表但不要整頁刷新調(diào)用getCourseList重新拉數(shù)據(jù)就好。因?yàn)檎n程卡片上的剩余名額是列表數(shù)據(jù)里的字段不重新拉數(shù)據(jù)的話前端顯示的剩余名額還是之前的用戶連續(xù)預(yù)約兩節(jié)不同的課會(huì)看到名額不對(duì)。曾經(jīng)為了省事直接用location.reload()結(jié)果彈窗消失、頁面閃爍體驗(yàn)非常差。4.4 聯(lián)調(diào)階段幾個(gè)容易踩的坑前后端聯(lián)調(diào)是整個(gè)過程里最容易出問題的時(shí)候我發(fā)現(xiàn)的問題多數(shù)集中在三個(gè)地方。第一是日期格式。后端LocalDateTime默認(rèn)序列化出來的格式是2024-11-20T14:30:00帶一個(gè)T前端如果想顯示成2024-11-20 14:30要么后端統(tǒng)一配置Jackson的日期格式要么前端做格式化處理。我建議后端直接配置全局生效省得前端每處都處理。第二是字段命名風(fēng)格。后端Java習(xí)慣用駝峰命名createTime數(shù)據(jù)庫習(xí)慣用下劃線create_timeMyBatis Plus開了駝峰映射之后沒問題。但前端聯(lián)調(diào)時(shí)看返回的JSON字段是駝峰還是下劃線必須前后端統(tǒng)一確認(rèn)好不然就會(huì)出現(xiàn)頁面拿到的是undefined這種經(jīng)典問題。第三是跨域。前后端分離開發(fā)模式下前端跑在5173端口后端跑在8080端口必然觸發(fā)跨域。我在后端寫了一個(gè)CorsConfig配置類允許指定的前端源地址跨域。上線部署后跨域配置還不能刪因?yàn)镹ginx反向代理的配置方式不同這步我在后面部署章節(jié)專門講。5. 部署上線與常見問題排查5.1 前后端打包與部署方案系統(tǒng)開發(fā)完成后部署上線這里分享一套我驗(yàn)證過很多次的方案。前端用Nginx做靜態(tài)文件服務(wù)器和反向代理后端的Spring Boot應(yīng)用打成jar包直接跑。前端打包執(zhí)行npm run build打包產(chǎn)物在dist目錄。把dist目錄上傳到服務(wù)器任意位置然后配置Nginx。后端打包執(zhí)行mvn clean package -DskipTests生成jar包后用nohup java -jar fitness-system.jar logs/fitness.log 21 啟動(dòng)。生產(chǎn)環(huán)境建議用systemd管理進(jìn)程這樣重啟方便還能開機(jī)自啟。Nginx配置有兩個(gè)關(guān)鍵點(diǎn)一是前端history路由模式必須配置try_files不然刷新頁面會(huì)404二是/api路徑要反向代理到后端端口。server { listen 80; server_name your-domain.com; root /www/fitness-front; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }try_files $uri $uri/ /index.html這行是必須的。Vue Router默認(rèn)使用history模式URL是/member/list這種真實(shí)路徑刷新時(shí)瀏覽器會(huì)向Nginx發(fā)起這個(gè)路徑的請(qǐng)求Nginx找不到對(duì)應(yīng)的靜態(tài)文件就會(huì)404。try_files把所有未知路徑回退到index.html再由前端路由接管頁面就能正常顯示了。5.2 常見問題速查表做這套系統(tǒng)的過程中我整理了一張問題排查表都是實(shí)際遇到過的按照從高頻到低頻排列。問題現(xiàn)象可能原因解決方法前端請(qǐng)求接口報(bào)403/跨域Nginx沒配代理或后端跨域配置丟失檢查Nginx的location /api配置確認(rèn)proxy_pass指向后端刷新頁面404路由history模式缺少try_files配置在Nginx location / 里加try_files $uri $uri/ /index.html預(yù)約接口數(shù)據(jù)不一致并發(fā)場(chǎng)景下沒有用悲觀鎖或事務(wù)確認(rèn)查詢課程用了FOR UPDATE鎖方法加了Transactional中文亂碼數(shù)據(jù)庫字符集不是utf8mb4ALTER TABLE xxx CONVERT TO CHARACTER SET utf8mb4登錄后馬上失效token過期時(shí)間太短或時(shí)區(qū)問題檢查JWT的expiration時(shí)間和服務(wù)器時(shí)間是否一致打包后接口地址不對(duì)前端寫死了localhost用環(huán)境變量配置接口baseURL打包時(shí)注入正確的API地址上傳的圖片顯示不了靜態(tài)資源路徑配置問題把上傳目錄配置到Nginx靜態(tài)資源路徑或用OSS存儲(chǔ)排查問題的思路也很重要。我習(xí)慣先把問題分成三類前端問題、后端問題、部署環(huán)境問題。前端問題先看瀏覽器開發(fā)者工具的Network面板接口請(qǐng)求沒發(fā)出去就是前端問題發(fā)出去沒響應(yīng)就是后端或代理問題。后端問題看日志Spring Boot的日志會(huì)打印完整的異常棧和SQL語句95%的問題看日志就能定位。部署環(huán)境問題基本集中在端口沒開、路徑不對(duì)、Nginx配置錯(cuò)誤這三類。5.3 安全加固的幾個(gè)必做項(xiàng)剛部署上線時(shí)系統(tǒng)安全性是沒法用的暴露在外網(wǎng)必須做幾件事。密碼存儲(chǔ)必須用BCrypt就算數(shù)據(jù)庫被拖走明文密碼也不能泄露。接口層面要防SQL注入MyBatis Plus的#{}預(yù)編譯機(jī)制能擋住大部分注入攻擊但還是不要用拼接SQL的方式寫復(fù)雜動(dòng)態(tài)查詢。管理后臺(tái)登錄接口要加驗(yàn)證碼。最初做系統(tǒng)時(shí)沒加驗(yàn)證碼結(jié)果上線的第二天就被掃到登錄接口開始密碼暴力嘗試。后來我引入了Hutool的驗(yàn)證碼工具庫用后端生成驗(yàn)證碼圖片登錄時(shí)校驗(yàn)驗(yàn)證碼。這步雖然增加了一點(diǎn)用戶體驗(yàn)成本但在公網(wǎng)環(huán)境下是必須的。運(yùn)維層面也有經(jīng)驗(yàn)Spring Boot的actuator接口默認(rèn)暴露了健康檢查、環(huán)境信息等端點(diǎn)如果你引入了這個(gè)依賴卻沒配置權(quán)限等于把服務(wù)器的一部分信息免費(fèi)送給別人看。生產(chǎn)環(huán)境配置里要顯式關(guān)閉這些端點(diǎn)只保留health一個(gè)就夠了。6. 寫在最后的實(shí)操體會(huì)整個(gè)健身管理系統(tǒng)做下來我最深的體會(huì)是這類管理系統(tǒng)的核心難點(diǎn)不在技術(shù),而在業(yè)務(wù)邏輯的嚴(yán)謹(jǐn)性。預(yù)約模塊的并發(fā)控制、會(huì)員卡到期時(shí)間的比較、狀態(tài)流轉(zhuǎn)的邊界條件這些看似不起眼的地方才是真正考驗(yàn)工程師功力的地方。技術(shù)棧Spring Boot和Vue只是工具把業(yè)務(wù)想清楚才是根本。如果現(xiàn)在重新讓我做一遍我會(huì)先花更多時(shí)間畫清楚狀態(tài)流轉(zhuǎn)圖而不是急著寫代碼。另外想提一個(gè)后續(xù)可以擴(kuò)展的方向這套系統(tǒng)目前只做了Web端如果健身房需要完全可以把前端換成微信小程序后端接口只要稍微調(diào)整鑒權(quán)方式就能復(fù)用基本不需要重寫業(yè)務(wù)邏輯。這個(gè)項(xiàng)目本身的價(jià)值不在于代碼量有多大而在于把一套真實(shí)業(yè)務(wù)場(chǎng)景完整落地了從需求到上線整個(gè)鏈路都走通了這個(gè)經(jīng)驗(yàn)比代碼本身值錢。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99热主页日本| 丁香六月毛片| 超碰人妻公开在线| 中文字幕黄色片| 色五月婷婷狠狠撸| av无码电影| 大香蕉五月天婷婷| 久久99婷婷| 九九热99精品| 久久久久婷婷五月热综合| 亚洲精品又粗又大又爽A片| 夜夜骑天天玩天天日| 丁香五月激情宗合网| 色99久草在线| 天天插天天干| 五月激情在线| 丁香五月成人| 99色精品| 婷婷丁香五月激情| 日本五月婷| www.色色色色| 五月天另类小说久久小说网| 日 日干 日日做| 五月丁香激情四射综合| 欧日韩成人| 中文字幕在线视频播放| 五月天天丁香婷婷| 久久99久久99久久99| 六月丁香久久| 九九久久网| 深爱婷婷网| 天天操夜夜夜拍拍拍| 激情视频婷婷五月花| 9久操| 噜噜在线| 亚洲视频一区| 一起草AV入口| 色五月丁香五| 超碰在线个人观看| 激情中文在线| www99精品| 天天综合网~91| 婷婷六月偷拍| 日本九九网| 9 1 A v久久久| 五月丁香婷久久| AV网址大全在| 欧美久久网| 人人肏逼视频在线一区二区| 日日操夜夜操中国无码| 日本毛片内射| 99只有精品| 五月丁香婷婷人体| 99re最新地址| 97香蕉久久超级碰碰高清版| 在线99热| 日韩三级视频一区二区| 91色涩| 开心五月婷婷综合在线精品素人| 国产免费av在线| 天天透天天干| 婷婷伊人久久| 另类丁香五月天区图| 五月丁香久久综合精品| 久 久9 9 热 视 频| 狠狠干无码| 亚洲视频色婷婷| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 五月天丁香综合在线| 久人人操| 玖玖在线视频福利| 五月婷婷开心综合| 婷婷91| 婷婷五月成人| 亚洲mm免费| 婷婷五月,偷窥偷拍网| 97婷婷狠狠久久综合9色| 五月天婷婷情色| 婷婷性爱网| 影音先锋按摩| 亚洲99精品欧美一区| 能看的av网站| 色五月天综合| 色噜噜五月天| 九九99九九精品免费 | 九九性爱网| 婷婷欧美综合| 97超碰,人人舔,人人操,人人摸| 婷婷六月丁香五月图区| 91偷拍视频| 五月丁香成人日| 婷婷日日夜夜| 日本熟妇乱妇熟色A片蜜桃| 丁香五月天婷婷大香蕉| 新99思思视频| 欧美乱码国产一级A片| 婷婷精品视频| 久艹伊| 亚洲天堂热| www。五月天。com| 99热国产| 伊人色综合久久久| 丁香六月婷婷综合在线| 中文人妻AV久久人妻18| 99热大香蕉| 99热这只有| 99综合| 欧美色五月| 欧美美女国产日韩一区二区久| 日日夜夜噜噜爽爽| 久久久婷婷婷| 亚洲色五月| 日日操,夜夜撸| 婷婷丁香花五月天| 久久99日本精品视频免费观看| 日本啪啪天堂| 成人综合AV| 成人做爰A片免费看视频| 色婷婷综合电影| 夜夜躁狠狠 | 五月激情综合网| 成人在线视频男人的天堂4399| 色婷婷91激情小说| 激情五月综合| 丁香五月精品视频| 色婷婷影视| bukadeavzaixian| 狠狠五月激情在线| 婷婷丁香18| 五月婷婷,狠狠操| 九九九成人在线视频| 中文字幕在线日亚洲9| 久久久久久久,99精品视频| 狠狠干五月天婷婷网| 久久激情天堂| 婷婷五月电影| 99在线精品视频免费| 五月婷婷啪啪| 美欧成人视频| 超碰不卡在线| 99热亚洲| 九热视频| 99热精在线九九久久保| 久久综合久色欧美综合狠狠| 色婷婷六月激情| 激情深爱五月天| 久9久成人精品视频| 五月丁香婷婷激情澎湃四射| 人人草碰| 综合99综合久久久久久久| 9超碰在线| 色色网站免费| 丁香五月AV| 色五月婷婷在线观看| 亚洲99精品九九在线| 三级成人网站| 亚洲精品444久久久久久| 香蕉AV777XXX色综合一区| 91男人操女人视频| 五月婷视屏在线观看| 亚洲日比视频| 五月丁香亭亭操逼| 激情五月图| 国产成人亚洲综合A∨婷婷| 婷婷九月在线| 九九99九九99| 欧美狠狠草| 超碰精品在线| 洗浴中心操B视频| 婷婷丁香五月天色色| 人人舔天天| 久久久久久久久久久-久五月天婷婷| 激情丁香网| 99爱在线| 99精品久久| wWwCom夜操wwW| 色色色色色综合| 亚洲激情综合色站| 九九综合九| 五月天综合图片| 激情五月天99色| 色综合久久天天综合网| 激情婷婷狠狠干| 色欲五月丁香| 婷婷五月天AV| 欧美成人网99网| 91成人看片| 五月婷婷丁香五月| 久久九九色| 日本综合久久| 色婷婷综合在线| 国产激情在线| 丁香五月婷婷色| 六月丁香婷婷色狠狠久久| 91操人| 色插综合网| 久久丁香婷| 色色五月丁香婷婷| 激情婷婷网| 91超碰九色| 国产精品第一国产精品| 综合色影院| 丁香五月婷婷动漫| 九九色色网| 思思re最新视频| 色色色99| 人人噜天天上| 丁香五月激情综合在线观看| 嫩模aV在线| 日韩在线观看网址| 五月丁香激情综合| www.超碰在线| 九九色色| 成人丁香婷婷| 丁香婷婷啪啪啪| 亚州操操| 啪精品| 少妇2做爰HD韩国电影| 丁香五月激情网| 97色伦另类图片小说视频 | 久草热8精品视频在线观看| 五月天精品视频| 99视频精品全部免费看| 超碰在线人妻| 五月色丁香| 182.t午在线观看| 五月婷婷激情| 性一交一乱一交A片久久四色| 26uuu国产激情视频| 欧美欧盟性爱网| 月色色综合婷婷网| 婷婷五月精品中文| 性爱激情小说AV五月丁香花| 99精品网址| 在线观看免费视频| 精品一二三区久久AAA片| 九九热AV| 深爱五月天| 婷婷激情九月| 亚洲免费99| 丁香五月婷婷在线| 99热思思| 9月色婷婷| 日本va欧美va欧美va| 天天色一道本综合婷婷| 干婷婷五月天| 日逼免费视频 | 亚洲美女裸体被操在线观看| 国产av第一专区| 中文成人在线| 五月天婷婷青青草| 狠狠综合久久综合| 热热99爱爱| 日韩AV免费| 亚洲午夜国产成人电影VA国产欧…| 六月丁香婷| 欧美va在线| 99ri在线| 777影视理论片大全在线观看 | 99re这里只有精品视频6| 天天日天天添| 欧美色小说婷婷| 第四色婷婷色五月| 五月天久久婷婷| 色色A| 这里只有精品无码| 激情五月天在线视频| 九九性视频| 日本色五月| 丁香六月婷婷色XXXXX| 亚洲激情网| 99这里都是精品| 狠狠色综合网| 色婷插| 丁香五月婷婷综合激情哟哟哟| 99精彩视频网站在线| 久久精品国产AV一区二区三区 | 亚洲精品第一国产综合亚AV| 99手机在线精品视频| 日本视频99| 99在线播放视频| 轮奸综合网| 精品一区二区三区四区五区六区介绍| 思思久热6| 5月丁香啪啪啪| 人妻久久久久久| 亚洲五月婷婷| 97涩婷婷婷婷基地| 国产99热| 婷婷五月情天| 丁香五月久久| 综合久久久婷| 国产热精品| 色色a| 久久激情视频| 伊人天堂婷婷| 狠狠艹狠狠艹| 91熟妇大香蕉| 欧美色图天堂网| 久这里只有精品| 天天xxxxxx天天日| 久久婷婷亚洲| 99偷拍视频在线日本| 婷婷亚洲影院| 婷婷五月天AV| 色涩视频久久| 日操| 狠狠香蕉| www91精品| 婷色成人| 亚洲综合色色| 六月激情丁香一道本7777| 亚洲天堂99| 。久久久久久久久久久久久久人妻| 91久久五月天| 1024欧美看片| 99热 在线观看| 久色五月丁香视频| 久久九九Com| 日韩成人中文字幕| 丁XX 成人| 99ER热精品视频| 五月丁香91| 婷婷亚洲在线| 欧美搡BBBBB摔BBBBB| 婷婷色在线播放| 丁香婷停五月激情综合深爱| 天天爱天天操| 亚洲无码成人网| 开心激情综合| 天天操天天国产三级片处女学生妹| 99精品在线播放| 狠狠的日| 秋霞av不能| 国产精品色色色色| 性av| 婷婷色播综合五月| 激情五月综合网| 综合视频久久| 国产97色在线 | 日韩| 婷婷久久色五月婷婷久久久| oVV4WIB3vFi8D| 91久久久久久久| 99狠狠操一| 色婷婷丁香香香蕉视频| 日本色超碰| 人人干Av| 91干婷婷| 99色亚洲| 亚洲成人av在线播放| 色99欧洲色19| 久久五月天丁香花| 五月天成人网在线观看| 九月丁香八月婷婷久久综合久97| 五月丁香六月激情视频| 五月婷婷色播| 婷婷五月天色| 婷婷五月天激情偷拍| 五月婷婷六月激情| 狠狠色激情在线| 久久香蕉网| WWW丁香五月| 99精彩视频| 五月丁香婷婷基地| 思思热在线观看| 怡红院 久久| 免费视频无码| 伊人狠狠干| 精品婷婷丁香五| 五月丁香花婷婷玉莉AV| 五月天激情网址| 丁香狠狠色婷婷| 欧美va视频| 九九色色| 午夜不卡成人一区二区| 丁香五月婷婷亚洲天堂| 亚洲色啪| 香蕉久久五月| 激情亚洲婷婷| 第四色色六月色综合| 五月丁香综合啪啪| 日本操逼九九九九58日本操逼| 在线观看日韩12345区| 丁香六月色婷婷综合| 丁香五月激情月| 久久婷婷综合网| 六月丁香婷婷色狠狠久久| 天天操夜夜操| 五月天色不卡| 三区激情四射av| 天堂成人A片永久免费网站| 欧美综合丁香网| www.夜夜爱.com| 五月婷啪啪| 99'无码| 色无婷婷| 99自拍网| 五月婷婷激清网| 色情开心五月| 青草视频在线播放| AV五月丁香| 九九家庭影院| 熟美女麻豆| 久久婷婷视频| 色色色无码| 久久婷婷影院| 成人免费网站免费看| 天天色播| 综合色播| 日逼免费视频| 99五月丁香丁| 超碰精品国产首页| 亚洲情综合五月天| 精品久久99| 九九色视频| 小视频久久久aaa| 五月婷婷六月爱| 婷婷五月18永久免费网站| www.色五月| 9九色首页| 五月婷色丁香| 精品国产va久久久久| 亚洲中文AV| www色五月| 99re热视频这里只精品| renre人人操国产超碰在线| 亚洲无aV在线中文字幕| 五月精品99综合| 久热免费视频| 色综合色色| 26uuu最新地址| 日本丁香五月婷婷| 色噜噜狠狠色综合无码久久欧美| 六月丁香婷婷色狠狠久久| 色135综合网| 综合色播| 99自拍网| 99综合在线| 91精品综合久久久久久五月丁香| 五月丁香色五月| 日本三级韩三级99久久| 九九自拍网| 激情五月婷婷色色| 激情婷婷丁香色五月| 少妇性按摩无码中文A片| 久久久大香蕉| 热99精品视频五月| 狠狠色大香蕉| 日韩成人电影在线播放| 日本婷久久| 婷婷深爱五月天| 欧美性爱5月天天天看| 夜夜躁狠狠 | 婷婷五月丁香基| 亚洲色婷婷| 99re思思热久久| 99九九综合久久九九| 5月婷婷6月六月丁香| 青青福利网| 欧美黑人巨大猛烈cuckold| 人人干人人干骚美女| 久久婷婷精品| 只有精品视频在线观看| 六月丁香啪| 丁香五月激情宗合网| 91久久久久久久| 91婷婷丁香五月天免费视频网站| 玖玖视频福利| 精品无码色| 色五月婷婷在线视频| 色婷婷色五月色丁香| 我爱婷婷五月天综合88| 五月丁香婷婷成人综合网| 久热这里只有精品在线| se影音资源在线观看| 99热只有精| 日本色爽| 九九热在线视频观看| 深爱激情六月天| 五月开心久久| 182.t午在线观看| 婷婷五月天最新网址| 久久久婷婷色五月资源网| www.com色播五月天| 久久Xx| 玖玖综合色| 99热这里只有99| 五月激情精品视频| 久久久久er热| 色999五月色| www.91.com处女在线直播| 亚洲精品操一操、噜一噜、摸一摸、爽 | 色玖玖玖| 亚洲国产精品成人免费一区久久久在线观看AAAA | 九九热9| 丁香玖玖| 思思热思在线精品视频| 色播激情五月天| 99精品在线观看视频| 激情丁香五月婷婷| 婷婷激情五月天激情小说| 丁香五月777| 日日日日做夜夜夜夜无码 | 五月天亚洲综合网| 五月婷婷六月丁香| 一级七香蕉| 久久五月视频| 五月天六月婷| 五月丁香六月激情| 国产精品丝| 欧美va国产va| 色99热| 鲁鲁色五月| 免费播放片大片| 色五月激情问网站| 美欧日韩国产成人在战| AV亚洲在线| 爱射综合| 日本色狠狠| 免费无码毛片一区二区A片| 欧美婷婷色五月网| www。五月天。com| 思思热视频在线观看| 草榴成人影片| 99碰碰| www.com在线操视频免费观看| 久久97| 99热这里只有精品3| 人人草人人舔| 99啪啪视频| 天天透天天爱| 婷婷5月久久综合网站| 9 1超碰九色| VfJxEwPH| 玖玖九九超碰| 天天日天天摸天天| 激情小说在线视频| 91无码视频| 中文在线视频久1| 性做久久久久久久免费看| 大香蕉五月婷婷| 婷婷香五月天| 九色亚洲| 亚洲AV成人无码久久精品老人法拉利| 国产乱妇无乱码大黄AA片| 五月婷婷六月天| 色色AV色色色东莞| 日本欧美999久久久三级片| 99精品7| 九九这里只有精品| 丁香激情五月综合网| www.婷婷.com| 9热在线观看| 丁香婷婷五月| 五月婷婷黄色毛片| 五月婷精品| 色色色色色色综合网| 好吊操这里只有精品| 婷婷色中文字幕| 激情综合99| 精品99在线| 亚洲视频国产一区| 久久五月激情| 九九热超碰| 五月丁香激情啪啪| 亚洲久热| 99精品视频在线观看| 91天堂网综合| 日本欧美成人片AAAA| av人人操| 激情五月天婷婷| 色婷婷色综合激情91| 久久这里只有精品热在99| 怡春院天天干| 亚洲第一综合| 色啪综合| 少妇被躁爽到高潮无码文| 婷婷久久五月天亚洲欧美国产日韩在线观看| www.婷婷.com| 天天天天天色| 色九月综合| 色色色色色色色色综合网| 91综合在线观看首页| 婷婷五月色天| 激情综合无码| 国产毛片欧美毛片久久久| 婷婷丁香五月激情图片| 五月丁香另类网| 激情五月天小说网| 99精品热视频只有精品10| 三男玩一女三A片| 色欲资源网| 一本狠婷婷综合| 91久久电影| 婷婷丁香五月综合| 亚洲亚洲人成综合网络| 五月天 另类图片| 丁香婷婷综合激情五月色| 91成人品| www国产亚洲色婷婷com| 99riAV国产精品视频| 啊v视频在线观看| 精品三区影院| 蜜桃婷婷狠狠久久| 国产AV一区二区三区最新精品| 亚州精品久久久久AV无码| 色色婷婷丁香五月天| 五月丁香婷婷成人网| 久热视频这里只有精品68| 激情五月婷婷啪啪| 中文字幕欧美日韩VA免费视频| 涩五月色婷婷| 婷婷五月天视| 日本久久9| 激情五月婷婷综合| 久久婷婷六月综合综合| 黄色99网| 九九综合精品| 婷婷六月视频| 九九色人| AV在线不卡网站| 桃色五月天| 女人天堂 AV| 热99精品视频在线观看| 97五月天婷婷综合激情网| 欧美激情综合色综合啪啪五月| 日本在线va| 色噜噜,噜噜色| 婷婷色五月激情强奸四射| 中字幕视频在线永久在线观看免费 | 激情五月深爱五月观看| 熟美女麻豆| 国外亚洲成AV人片在线观看| 伊人久久五月天| dingxiangtingtingliuyue| 玖玖色综合| 无码A片一区二区免费| 午夜天堂一区人妻| 天天爽天天| 五月婷婷九九热| site:feetmall.com| 色五月婷婷婷婷婷婷婷婷婷婷| 激情丁香久久久久久| 最近免费中文字幕大全高清大全1 色狠狠色噜噜AV天堂五区 | 91色操| 激情五月天婷婷丁香| 日韩无码AV电影网站| 五月开心网| 97久久人人| 亚洲va成人va成人va在线观看| 国色天香伊人狠狠色| 丁香五月在线视频| 久久综合这里只有精品1| 伊人网啪啪| 久久婷婷综合色丁香| 性色九九| 色婷婷成人色网| 亚洲久久视频| 精品乱码视频| 丁香六月婷婷| 婷婷亚洲综合| 久综合网| a色色色色色| 亚洲色五月| 国产成人+综合亚洲+天堂| 超碰com| 五月天婷婷綜合院| 久久多色| 天天艹天天综合网| 五月天色狠狠| 六月婷伊人| 激情黄色五月天| 人人干人人操人人摸人人做| 婷婷丁香五月天在线视频| 思思久ren热| 亚洲性爱99| 在线五月色播| 五月丁香久久激情网| 九九久久综合网站| 色亚洲欧洲| 婷婷久久五月天| 九九热精品99| 人妻久久久久久久 | 思思热国产视频| 丁香五月婷婷久久久| 久久er+| 99.色| 丁香六月色婷婷| 亚洲色五月婷婷| 六月婷婷色色色| 99在线观看| 99热精品在线| 香蕉曰比| www.婷婷五月天| 亚洲五月丁香综合网| 婷婷五月天在线综合导航| 六月丁香婷婷开心综合基地| 夜夜夜夜夜操| 亚洲黄色影视| 国产精品天天狠天天看| 色开心五月丁香| 亚洲AV人人操| 婷婷五月天伊人网在线观看视频| 色婷婷狠狠| 色情丁香五月婷婷精品| 亚洲国产色婷婷| 六月色丁香中文字幕| 天天做天天爱天天玩| 人人操99| 伊人婷婷大香蕉在线| 亚洲无aV在线中文字幕| 亚洲性爱99| 婷婷丁香五月亚洲| 99热在线看| 伊人久久丁香五月91| 91久久综合亚洲噜噜成人在线| 五月网激情| 九九爱激情| 婷婷香五月天| 7777久久亚洲中文字幕| 99色在线观看免费| 亭亭玉月丁香| 成人AV在线中文版| 色综合激情| 色丁香影院| 岛国av网站| 97色视频网| 婷婷五月天激情综合| 日本高清综合网五月丁香| 色婷视频| 丁香九月综合| 久久黄色片| 天天综合精品| 五月 成人 婷婷| 99热99这里有免费的精品| 欧美在线97| 亚洲天堂色| 888精品福利地址| 影音先锋偷偷色男人站| 人人操9| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 全高清无码视頻| 色天天综合| 99热66| 91精品综合久久婷婷九色| 丁香五月天av| 操一区| 激情婷婷久久| 激情五月婷婷视频一区二区三区| 99ER热精品视频| 99久久免费性爱视频`| 天堂网啪啪| 亚洲无码免费看| 九九这里精品| 成人精品视频99在线观看免费| 亚洲综合视频在线| 五月天天久久香| 91九色 熟| 婷婷丁香五月噜噜噜| 婷婷五月天激情网| 激情婷婷五月久久| 婷婷97| 97色婷婷成人综合在线观看| 色婷婷激情| 婷婷色五月天色| 婷婷五月天视频亚洲| 丁香五月激情综合久久| 丁香五月综合在线播放| 日韩国产在线精品| 国产精品久久久60086| 日韩中文字幕| 天天操天天爽天天爱| 中字幕视频在线永久在线观看免费 | 91欧美日韩| 色色丁香激情五月| 抽插特写| 日日干天天爽| 色99婷婷五月天| 丁香五月婷婷AV在线| 日韩伊人大香蕉| 人妻久久久| 美欧日韩国产成人在战| 久久性爱视频| 深爱激情网五月| 婷婷成人五月天| 99热无码精品| 国产99久久久国产精品免费看| 亚洲爱爱无码婷婷色五月| 成人片黄网站色大片免费毛片| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 色五月激情网| 亚洲婷婷丁香五月视频| 1024欧美看片| 婷婷狠狠97| 色综合久久久久| 丁香激情五月| 六月色色婷婷| 亚洲不卡123| 日本爆乳片手机在线播放| 国产脫衣舞一区二区三区| 激情久久久| 日日天天操| 久久99大| 五月天丁香综合久久国产| 婷香五月| 日韩AV免费电影在线播放| 精品A√| 久热91精品| 欧美日韩99| 操熟女成人网| 久久与婷婷| 少妇高潮呻吟A片免费看软件| 五月激情网络| 在线另类视频| 亚洲12p| 大香蕉久久婷婷| 婷婷色色狠狠| 欲色人妻| 99A片| 停停五月天激情网| 97人人做| 五月婷婷爽爽爽| 五月婷婷五月色| 六月丁香五月婷婷首页| 激情骚五月| 天天干 夜夜爽| 色135综合网| 五月天婷婷爱| 日日想日日夜日日操| 国产44页| 亚洲欧洲中文日韩久久AV乱码| 丁香五月激情婷婷婷婷在线观看| 永久的网站AAAA| 9999热精品| 亚洲天天操| 5月丁香啪啪啪| 狠狠狠婷婷五月综合| 婷婷综合干| 狠狠干综合| 五月婷婷激情中文字幕| 伊人婷婷激情| 久久婷婷热| 日韩久久欧亚| 内射在线CHINESE| 夜夜躁婷婷AV| 成人九九视频| 99热这里只有在线播放| 久久伦乱| H亚洲| 日本综合色图| 丁香五月激情啪| 久久这里只| 六月婷婷狠狠色在线观看| 激情九月天天天天婷婷| 91人人爱| 婷婷五月天成人| 久热黄色| 五月丁香色六月激情干大屄| 内射丰满人妻| 性五月激情| 久草性爱| 99热色婷婷| 色婷婷小视频| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 91色九| 欧美在线视频9| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 五月丁香色婷婷| 色婷婷A| 51国精产品自偷自偷综合| site:feetmall.com| 婷婷丁香五月天综合网| 色色精品色| 九九综合| 五月色婷| 五月天激情四射| 97视频久久| 全高清无码视頻| 97久操视频| 亚洲精品网址| aaa9区免费在线观看| www.com在线操视频免费观看| 亚洲色图欧美色图日本视频| 日本少妇裸体做爰高潮片| 五月综合久久| 五月丁香狠狠爱| 欧美日韩999| 色色网站| 玖玖色综合| 年轻的妺妺伦理HD中文| 色五月激情五月| 强壮公让我夜夜高潮A片视频| 五月激情在线| 99这里只有精品| 狠狠操狠狠| 99ER热精品视频| 中文字幕无码人妻少妇免费视频| 国产婷婷色综合AV蜜臀AV| 专区无日本视频高清8| 黄桃AV无码免费一区二区三区| 色色国产| 99视频这里有精品| 九色成人AV在线| Y11111111111少妇电影院| 丁香五月久久社区| av无码电影| 色五月婷婷在线| 九九久久精品| 天干天天干天天天天天| 五月天激情美女久久| 色色网站免费| 91色噜噜狠狠狠狠色综合| 91啪啪| 裸睡玩奶头(高H)| 九九九九九九热| 亚洲人妻电影| 五月激情视频| 激情婷婷丁香五月| 日韩爱操视频| 67194中文字幕| 综合色五月| 99视频| 在线看黄色| 日韩成人免费电影| 婷婷涩涩网| 色播播婷婷| 婷婷五月天久久久| 高清资源站日A美A欧亚…| 丁香六月欧美| 中文字幕在线免费观看视频| 深爱激情小说五月婷婷| 2025年最新亚洲在线欧美| 91九色国产熟女| 日本狠狠干| 丁香五月 无码| 婷婷五月天激情网| 天天五月情| 中文字幕在线播放视频| 超碰免费人| www.jiujiujiu| 精品一区二区三区四区五区六区介绍| 婷婷五月天综合小说网| 99ri精品视频在线观看| 日韩成人不卡| 久婷| 日日插日日干| www.99热| 欧亚中文A V| 激情婷婷色小说| 婷香五月激情视频| 九九视频在线观看视频6 | 五月亭亭欧美女人| 六月亚洲| 狠狠爱综合| 九月色婷婷婷| 【乱子伦】黄色| 亚洲欧美丁香五月天亚洲欧美| 色五月综合| 五月丁香九九| 五月噜噜| 99视频精品在线| ady狠狠入| 亚洲欧洲自拍图片专区五月天| 日韩 中文 欧美| 欧美性爱专区| 色婷婷4| 色综合激情| 狠爱婷色| 精品三区影院| 99热精品在线| AV在线资源| 色色色色网| 极骚大香蕉伊人| 五月婷婷与六月丁香图片激情| 婷婷五月丁香色综合| 天堂久久久久天堂网| 快乐婷婷五月天| 日本精品99网站| 丁香六月婷婷色XXXXX| 深爱五月天 开心网| 久久这里只有精品99| 色婷婷偷拍| 99久久极情精品一区| 久色精品| 五月婷婷久久激情| 五月婷婷性爱| 五月天伊人网| 久久久五月天婷婷| 五月久久亚洲| 无码成人AAAAA毛片AI换脸| www超碰| 色色色国产| AV动漫不卡无码免费| 色深爱五月| 91在线精品一区二区| 五六月丁香激情视频| 少妇性BBB搡BBB爽爽爽视頻| 欧美色狠婷久| 色99在线| 色天天综合天天综合频道。| 五月香婷婷| 色999;丁香五月| 91一起操| 婷婷99| 五月婷综合| 99久久99视频只有精品| 激情五月激情综合网| 丁香五月婷婷深五月| 激情五月婷婷五月| 在线观看五月婷婷网| 天天干一干| 99热在这里只有免费精品| 99视频只有精品| 久热2025无码| 专区无日本视频高清8| 五月综合激情图片| 国产麻豆视频| 婷婷色丁香六月| WWW.久久久久久久久久久久久| 泰州成人视频| 久热69| 久久久网站| 思思久久网| 拍真实国产伦偷精品| 五月激情婷婷色| 五月婷A V在线| 激情综合网五月天| 99riAv1国产在线观看| 99热都是精品| 99久久国产宗和精品1上映| 色欲一区二区三区精品A片| 国产精品久久久60086| 婷综合六月| 五月婷婷激情| 激情99。| 亚洲va久久久噜噜噜久久天堂| 丁香五月另类小说| 欧美色99| 少妇性按摩无码中文A片| 色婷婷九月综合| 婷婷的色色五月天| 婷婷六月久久综合导航| 婷婷丁香午夜综合影视| 男女激情久久| 香焦网五月天| 免费色色色| 韩国97天堂| 亚洲中文字幕AV| 久久996re热这里只有精品无码| 丁香婷婷综合影院| 婷婷五月天久久| 狠狠色狠狠鲁| 停停五月色宗合| 婷婷色五月激情| 操逼棍操逼| 五月丁香激情四射| 欧美韩国日本| 亚洲综合激情五月久久| 综合五月婷婷| 五月丁香花成人社区| 天天日夜夜爽| 影音先锋女人av鲁色资源网小说免费| 婷婷丁香五月社区亚洲| 色综合激情| 人人视频色| 97狠狠色| 沈娜娜av| 天天天天天天操| 五月丁查人人| 五月天另类小说亚洲| 丁香五月婷婷国产在线| 在线播放中文字幕| 青青草原福利在线| 九九黄色网| 九九热国产| 久久久久久久丁香五月天婷婷| 超碰免费人人肏| 开心激情婷婷| 国产美女视频久| www.日日夜夜| 91久久| 二区成人视频| 极品人妻VIDEOSSS人妻| 亚洲另类婷婷综合| 天天操夜夜爽歪歪| 九九九九九无码| 色综合久久44| 婷婷色五月天色色| 国产又色又爽又黄又免费| 久热99热| 欧美成人A片AAA片在线播放| 婷婷五月天直播| 91婷婷色 | 天天插天天狠| enecarbon-materials.com污K127封锁请涟系@wip1688 | 伊人久热91| 婷婷五月色播天| 99久热| 五月天婷婷免费| 丁香五月婷中字幕| 欧美综合丁香网| 视频综合网| 久婷| 亚洲成人另类| 六月婷婷操逼| 日本激情综合| 日本精品久久久久中文字幕| 狠狠干狠狠色| 综合99久久| 思思热视频| 天天撸天天干天天插| 激情五月天之六月婷婷| 九九热色视频| 久久综合婷婷| 五月婷精品| 日本久久性| 午夜丁香 婷婷| 色吊丝av中文字幕| 日韩啪啪视品| 亚洲九九99精品视频在线播放| 思思热在线视频精品| 伊人激情影院| 青草激情综合| 色综合网址| 色爱综合网| 一级黄色影片| 六月综合婷婷开心伊人| 五月天激情图片| 婷婷天堂综合| 国产无套精品一区二区| 日韩黄黄| 欧美日韩91| 色欲一区二区三区精品A片| 涩五月婷婷| 久久五月天婷婷| 激情五月婷婷视频一区二区三区| 熟女激情五月天| 婷婷五月天激情小说| 久久久这里有精品| 第五色婷婷| 99色在线| 中文成人在线| 老司机视频lsj爱就色| 九一牛视频探花| 9超碰在线| 任你爽精品免费视频6| 亚洲精品99| 操人妻90p| 激情婷婷另类| 婷婷五月激情天| 伊人色综合网| 嫩草视频在线观看| 夜夜爽天天爽| 免费无码毛片一区二区A片| 婷婷自拍| 久久黄色片| 五月婷婷亚洲色视频| 91凹凸在线| 色五月丁香五月| 乱岳熟女50岁| 西西4r午夜剧场| 五月婷婷日本| 天天爽爽日日做做| 啪啪五月天啪啪| 色亚洲欧洲| 亚洲中文字幕av| 蜜桃成语时李时珍 免费| 亚洲AV久久久久久久久久久久久久久久 | 激情五月深爱五月观看| 九九视频精品在线免费| 色激情五月| 成人av免费观看| 久热在线中文字幕色999舞 | 亚洲免费av观看| 五月天激情小说| 色婷婷丁香AV综合| 色婷婷丁香五月| 激情五月丁香五月| 97丁香视频| 26UUU| www.色五月.com| 五月色婷| 五月天天丁香婷婷| 狼人婷婷久久| 日日干夜夜撸夜夜骑 | 亚洲精品视频在线| 色婷婷精品视频在线播放| 丁香六月婷婷开心| 蜜乳国产网站| 在线观看亚洲视频影院| 人与禽A片啪啪| 亚洲午夜一区二区| 婷婷激情鹿城五月天| 五月婷婷激情日本| 亚洲精品久久久久久久久久吃药| 加勒比久热| 蜘蛛女免费观看完整版高清电影| 五月天综合婷婷| 青青草成人网| www.91AV.COM| 狠狠擼综合| 色婷婷免费观看| www.99色在线| 激情五月天婷婷激情| 五月丁香综合在线| 九九激情| 激情婷婷五月天丁香| 干亚洲天堂| 91人人操人人爱| 色九月丁香婷婷蜜桃在线观看| 亚洲色色色色色| 色播播五月天| 99热超碰人| 激情小说五月丁香在线视频观看视频| 婷婷五月天伊人网| 国产乱子轮XXX农村| 五月婷婷影院| 深爱婷婷网| 丁香五月激情久久麻豆| 婷婷色女| 國語久久婷| 97成人超碰免| 午夜婷婷六月天| 天天插天天干| 欧美日韩成人在线| 国产免费一区二区三区三州老师F1F1.CC | 九九热婷婷| 欧美成人网99网| 春色激情| 色五月久久成人婷婷| 亚洲综合激情五月久久| 超碰在线超碰| 久久婷婷综合五月趴| 青青草伊人婷婷| 激情五月激情综合网一级丸片 | 伊人国产婷婷五月天 | 五月天婷婷基地| 日韩99视频| 视频久久9| 六月丁香五月天| 九九99偷拍视频| 亚洲一区二区无码蜜乳av| AA片在线观看视频在线播放| 華人性愛AV在線| 综合网激情| 欧美噜噜噜草| 色色吧综合| 五月婷婷熟女| 九月丁香亭亭| 日韩不卡DvD| 97人人干人人操| 婷婷五月综合色拍| 五月丁香综合中文| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 99激情视频| 伊人婷婷青青cao| XX色综合| 日韩成人网址| 天天天天天天操| eeuus五月婷| 疯狂做受XXXX高潮A片| 美妞av| 秋霞AV吧| www.99成人视频| 香蕉97碰碰碰超视精品| 亚洲精品在线视频|