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

ARTICLE DETAIL

資訊詳情

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

SpringBoot+Vue足球青訓管理系統(tǒng)實戰(zhàn):排課與權限設計

SpringBoot+Vue足球青訓管理系統(tǒng)實戰(zhàn):排課與權限設計 1. 足球青訓管理系統(tǒng)的真實痛點為什么常規(guī)CRUD后臺根本不夠用很多開發(fā)者在接觸足球青訓俱樂部管理后臺這類項目時下意識地認為它不過是一套常規(guī)的CRUD系統(tǒng)——無非是把球員信息、教練信息、課程信息增刪改查一遍。但真正深入到業(yè)務場景里你會發(fā)現(xiàn)事情遠沒有那么簡單。青訓俱樂部管理后臺的核心難點在于業(yè)務對象的關聯(lián)性和時間維度的復雜性它和普通的電商后臺、內容管理后臺有著本質的區(qū)別。先想一個基礎問題一名小學員在俱樂部里的一天涉及多少個業(yè)務實體學員本人、負責的教練員、所在訓練梯隊、當天的訓練課次、訓練出勤記錄、體能測評數(shù)據(jù)、技術評分、家長信息、繳費記錄……這些實體之間是強關聯(lián)的某一個環(huán)節(jié)的數(shù)據(jù)變動往往會牽動其他模塊。比如學員從U8梯隊升入U10梯隊他的訓練計劃、教練分配、歷史測評數(shù)據(jù)的歸屬關系都要跟著調整。如果后臺系統(tǒng)在設計時沒有把這些關聯(lián)關系理順后期維護起來就是一場災難。另一個深層痛點是訓練計劃的周期性編排。青訓不是一次性活動而是按學期、按周、按課次持續(xù)進行的長周期培養(yǎng)過程。教練需要提前排好一周甚至一個月的訓練課表課表要支持按梯隊篩選、按教練匯總、按場地沖突檢測學員家長需要看到請假記錄和出勤反饋財務需要核對每個學員的出勤課時與繳費標準的匹配情況。這些需求單純用幾張獨立的CRUD頁面根本無法覆蓋必須有一套圍繞訓練周期展開的業(yè)務邏輯設計。還有一點是多角色權限的精細控制。這個系統(tǒng)的用戶包括俱樂部總管理員、教務主管、教練員、家長甚至有可能是學員本人查看個人檔案。不同角色的數(shù)據(jù)可見范圍完全不同教練只能看到自己帶的梯隊和學員教務能看到全部課表和出勤家長只能看到自己孩子的訓練報告和繳費賬單。如果用一套扁平化的用戶表不做角色和權限的隔離那企業(yè)級這三個字就是空談。所以這篇博客我不想只堆代碼我想從業(yè)務建模、權限設計、數(shù)據(jù)表結構、排課邏輯、實際部署踩坑這幾個維度把這個系統(tǒng)完整拆開講清楚。項目本身是基于SpringBoot Vue MyBatis MySQL這套主流技術棧實現(xiàn)的這也是國內企業(yè)級管理系統(tǒng)中最經(jīng)典、最不容易出錯、招人需求最大的組合之一。無論你是計算機專業(yè)的學生正在做畢業(yè)設計還是剛入行的Java開發(fā)想找一個完整的全棧項目練手又或者是小型體育培訓機構的技術負責人想?yún)⒖纪愊到y(tǒng)的設計思路這篇文章都能給你提供一條清晰完整的路線。先說結論這套系統(tǒng)的價值不只是能跑通而是它的業(yè)務邊界設計、權限模型、數(shù)據(jù)字典和排課算法都是經(jīng)過實際項目打磨出來的能夠直接復用到其他培訓類管理系統(tǒng)比如少兒編程培訓、舞蹈培訓、籃球訓練營中去。2. 技術選型時的權衡為什么是SpringBoot Vue MyBatis這套組合2.1 從架構演進角度看技術選型的合理性在動筆寫代碼之前技術選型是最關鍵、也最容易讓新手糾結的一步。現(xiàn)在Java后端框架選擇很多SpringBoot、SpringCloud、Quarkus、Micronaut前端更是百花齊放Vue、React、Angular、Svelte。ORM框架也一直在演進MyBatis-Plus、JPA、Hibernate各有擁躉。面對這么多選擇為什么這套青訓管理后臺最終落在SpringBoot Vue MyBatis MySQL上先說后端框架。青訓俱樂部管理后臺屬于典型的中小型企業(yè)級管理系統(tǒng)它的訪問規(guī)模通常在幾十到幾百個并發(fā)之間業(yè)務復雜度中等偏上但遠沒有達到需要微服務拆分的程度。SpringBoot在這個體量下是最穩(wěn)的選擇——它內置Tomcat、自動裝配體系成熟、生態(tài)資料海量遇到任何問題幾乎都能在社區(qū)找到現(xiàn)成答案。SpringCloud當然也能做但對這類項目來說屬于過度設計引入了服務注冊、配置中心、網(wǎng)關等一堆概念反而增加了部署和運維的復雜度。然后是前端框架。后臺管理系統(tǒng)對前端的要求是表單交互密集、數(shù)據(jù)表格展示頻繁、權限控制的界面級反饋較多。Vue在這類場景下的開發(fā)效率非常高尤其是Vue的組合式APIComposition API配合Element-Plus這類組件庫寫后臺管理頁面基本像搭積木一樣。Vue的學習曲線比React平緩模板語法直觀對團隊成員的Java背景比較友好——畢竟做這種項目的團隊主力往往是后端開發(fā)前端能力相對薄弱Vue的上手成本是最低的。ORM這塊需要多說幾句。MyBatis和JPA/Hibernate的爭論持續(xù)了很多年我的態(tài)度很明確管理后臺系統(tǒng)用MyBatis遠遠比JPA穩(wěn)妥。原因有三一是后臺系統(tǒng)的SQL復雜度高多表關聯(lián)查詢、動態(tài)條件拼接是常態(tài)MyBatis的XML映射文件給了開發(fā)者完全可控的SQL編寫能力二是JPA的N1查詢問題在復雜關聯(lián)場景下很容易踩坑需要一定的經(jīng)驗才能駕馭好而MyBatis默認就是手寫SQL性能問題提前暴露三是國內的技術社區(qū)和企業(yè)里MyBatis的使用率極高招人、交接、維護都比JPA容易。再加一層MyBatis-Plus單表操作連SQL都不用寫了開發(fā)效率能提升不少。2.2 數(shù)據(jù)庫選型和表設計的基本原則MySQL在這個項目里是順理成章的選擇。數(shù)據(jù)量級在十萬級到百萬級之間單庫單表完全夠用配合InnoDB引擎、UTF-8mb4字符集、合理的索引設計性能毫無壓力。相比PostgreSQLMySQL在國內的使用基數(shù)更大、云數(shù)據(jù)庫支持度更好、資料更豐富對這種體量的業(yè)務來說沒什么理由不用它。表設計上我要特別強調一個容易被忽視的點邏輯刪除字段和審計字段。很多人設計表的時候只關心業(yè)務字段忽略了delete_flag邏輯刪除標記、create_time、update_time、create_by、update_by這些基礎字段。在企業(yè)級系統(tǒng)中這些字段是必不可少的。邏輯刪除的意義在于防止誤刪導致的數(shù)據(jù)不可恢復審計字段的意義在于出現(xiàn)數(shù)據(jù)問題時能追蹤責任鏈。這個青訓系統(tǒng)里光是訓練出勤記錄和學員繳費記錄這兩張表就依賴審計字段來解決很多糾紛——家長說孩子上過課但系統(tǒng)沒記錄一查create_by和create_time就能定位到是哪位教練在哪個時間點錄入的。關于是否使用外鍵我的建議是物理外鍵慎用邏輯外鍵為主。MySQL在高并發(fā)寫入場景下物理外鍵會帶來額外的鎖開銷而且級聯(lián)刪除操作極易引發(fā)性能瓶頸和誤刪風險。我們設計這套系統(tǒng)時全部不用物理外鍵完全依靠應用層邏輯來維護關聯(lián)關系配合索引來保證查詢性能。這樣做的好處是數(shù)據(jù)表之間的耦合度降低后續(xù)做分庫分表或者數(shù)據(jù)遷移時阻力更小壞處是需要開發(fā)者在代碼里自己注意關聯(lián)數(shù)據(jù)的一致性。3. 核心業(yè)務模塊拆解一張圖看清青訓后臺的真實功能矩陣3.1 組織架構與人員檔案模塊這個模塊是整個系統(tǒng)的基礎沒有它其他模塊都是空中樓閣。組織架構上系統(tǒng)分為俱樂部—訓練基地—梯隊三層結構。一個俱樂部可能有多個訓練基地比如城東基地、城西基地每個基地下根據(jù)年齡段和水平分為若干個梯隊比如U8基礎組、U10提高組、U10精英組。每個梯隊有固定的主教練可能有助理教練和體能教練。人員的角色分為系統(tǒng)管理員、教務主管、主教練、助理教練、家長、學員。這里有一個業(yè)務建模上的細節(jié)學員個人檔案和學員賬戶是分開的。個人檔案記錄的是學員的身體數(shù)據(jù)身高、體重、BMI、骨齡檢測記錄、足球基礎慣用腳、位置偏好、訓練年限、緊急聯(lián)系人等學員賬戶則負責登錄認證、查看自己的訓練報告和測評成績。為什么要分開因為檔案數(shù)據(jù)是受隱私保護且更新頻率低的而賬戶信息是會變動的手機號、密碼、登錄狀態(tài)。分成兩張表之后各自的讀寫頻率和緩存策略可以差異化設計。教練員的檔案也很有講究除了基本信息和聯(lián)系方式還需要記錄執(zhí)教資質如教練等級證書編號、有效期、擅長方向守門員訓練、腳下技術、戰(zhàn)術意識、可帶教的時間段。這些字段在后面編排訓練課表時是核心的匹配條件——教務排課時系統(tǒng)要能篩選出某個時間段有空、且執(zhí)教資質匹配的教練。3.2 訓練課表與排課引擎比想象中復雜的核心模塊如果讓我選這個系統(tǒng)里最有技術含量的模塊我一定選訓練排課模塊。表面上它只是新增一個課程記錄但背后涉及三個維度的沖突檢測教練的時間沖突、場地的使用沖突、學員梯隊的并發(fā)沖突。先說教練沖突檢測。排課時需要判斷教練在目標時間段是否已經(jīng)有其他課程。這個邏輯如果用代碼硬寫很容易犯下只檢測了精確重疊而沒有檢測包含關系的低級錯誤。比如教練已經(jīng)被安排在14:00-16:00帶課新排的課程是13:30-15:30這是重疊的但如果新課程是16:30-18:30則完全沒問題。正確的沖突檢測算法應當是開始時間小于現(xiàn)有課程的結束時間且結束時間大于現(xiàn)有課程的開始時間兩者同時成立即為沖突。這套邏輯同樣適用于場地沖突檢測。我在這里踩過一個很實際的坑最初實現(xiàn)排課沖突檢測時只考慮了教練開始時間這一個唯一索引結果同一塊場地被兩個梯隊同時預訂學員到了現(xiàn)場才發(fā)現(xiàn)撞場。后來修正方案是建一個聯(lián)合檢測教練沖突查教練維度的交集場地沖突查場地維度的交集一次性把兩個條件同時校驗。這還沒完還要處理課程狀態(tài)流轉已排課Published、已取消Cancelled、已完成Completed、已結課Closed。課表模塊必須支持課程取消后的時間釋放不然取消的課程會一直占著教練和場地的資源。課程實例的生成邏輯也值得一提。排課是排課程模板但實際的數(shù)據(jù)記錄是課程實例。也就是說每周一14:00-15:30的U10精英組訓練是一個課程模板教練填好訓練主題、訓練大綱后發(fā)布每次實際執(zhí)行一次的記錄才是課程實例實例關聯(lián)當天實際出勤的學員、實際的訓練內容和教練備注。這種模板-實例的兩層結構是管理類系統(tǒng)很經(jīng)典的建模方式它讓你能夠統(tǒng)一查看本周U10精英組應該上幾節(jié)課、實際上了幾節(jié)、哪節(jié)被取消了而不是面對一堆離散的課程數(shù)據(jù)無從聚合。3.3 學員評估與發(fā)展追蹤從出勤到多維成長報告青訓系統(tǒng)的另一個特色模塊是學員成長評估。普通培訓機構的系統(tǒng)里學員可能只需要考勤和繳費記錄就完事了但足球青訓非??粗丶夹g能力的階段性評估。教練員需要按照統(tǒng)一的評分維度定期對學員的身體素質速度、耐力、靈敏、技術水平傳球、控球、射門、頭球、戰(zhàn)術意識跑位、配合、決策進行打分。這個模塊的表結構核心是學員評估表assessment_record包含學員ID、評估輪次、各維度得分、綜合評級、教練評語。評估輪次按學期階段劃分——學期初、學期中、學期末各一次形成一條學員的成長曲線。這個成長曲線不僅僅是給家長看報告用的它直接決定了學員能否升級到精英梯隊。教練手上拿著數(shù)據(jù)說話學員的晉升和降級都有量化的依據(jù)而不是看印象分。出勤模塊要和評估模塊聯(lián)動。每個課程實例開放簽到入口后教練可以逐個勾選學員為出勤或請假或缺席未到。系統(tǒng)要能自動向家長端推送出勤狀態(tài)變化這里建議通過微信模板消息或短信網(wǎng)關不建議在后臺系統(tǒng)里做復雜的實時聊天。出勤率的統(tǒng)計會直接影響學期末的評估資格——很多俱樂部規(guī)定出勤率低于80%的學員不能參加學期末的晉升評估這一規(guī)則要直接配置進系統(tǒng)由系統(tǒng)自動截斷不給教練人為操作的空間。3.4 財務繳費與訂單流水最容易忽略但絕不能出錯的模塊最后一個核心業(yè)務模塊是財務繳費。青訓管理系統(tǒng)必須包含學費訂單的創(chuàng)建、支付狀態(tài)跟蹤、退款流程、發(fā)票申請。雖然這個模塊看起來和培訓業(yè)務本身關聯(lián)度不高但它是俱樂部運營的命脈。我見過不少青訓后臺系統(tǒng)教練排課做得很好學員檔案也很完善但財務模塊只有一個簡單的繳費記錄表訂單、退款、賬單、發(fā)票這些字段全部缺位。真到了月底對賬的時候財務人員只能導出一份Excel自己加工。這套系統(tǒng)的財務模塊遵循的是標準訂單流程家長在小程序端發(fā)起報名或續(xù)費生成學費訂單含訂單號、學員、課程包、繳費金額、優(yōu)惠政策、支付方式訂單支付成功后自動通知教務主管安排分班如果學員中途退訓走退款流程退款單關聯(lián)原訂單系統(tǒng)記錄退款原因、操作人、到賬狀態(tài)。這里面有一個非常關鍵的字段設計——課程包的剩余課時數(shù)。課消按每次實際出勤扣除而不是按日歷月扣除。也就是說買了30節(jié)課的學員每參加一次訓練課課時余量減一請假未到不扣課時除非俱樂部有明確的請假扣課時規(guī)則。這套邏輯讓財務和教務之間永遠不會因為誰該扣、誰不該扣而起爭執(zhí)。數(shù)據(jù)庫層面財務模塊涉及訂單表和流水表的雙寫一致性。我的方案是訂單表保存訂單的當前狀態(tài)流水表保存每一次狀態(tài)變更的明細記錄。支付成功、發(fā)起退款、退款到賬、手動調整每一個動作都寫入流水表。這樣任何一筆訂單的前因后果都能完整追溯也方便和第三方支付平臺的對賬單進行逐筆匹配。4. 數(shù)據(jù)庫設計的實戰(zhàn)細節(jié)從物理模型到索引優(yōu)化4.1 表模型全景與核心表結構參考一套完整的青訓后臺系統(tǒng)數(shù)據(jù)庫一般包含近二十張業(yè)務表。這里不鋪開畫完整的物理模型我把幾張核心表的結構直接列出來你可以對照著自己的項目去調整學員檔案表student_profile:id: bigint主鍵student_no: 學員編號俱樂部內部編號用于檔案歸類和打印證書name: 姓名gender: 性別 0-男 1-女 2-未知birth_date: 出生日期height_cm: 身高厘米weight_kg: 體重公斤dominant_foot: 慣用腳 0-左腳 1-右腳 2-雙腳position_preference: 位置偏好guardian_mobile: 監(jiān)護人手機號emergency_contact: 緊急聯(lián)系人emergency_mobile: 緊急聯(lián)系電話physical_exam_date: 最近一次身體測試日期medical_history: 既往病史過敏、哮喘、心臟問題等status: 狀態(tài) 0-在讀 1-休學 2-離隊create_time/update_time: 審計字段訓練課程表training_course:id: bigint主鍵course_no: 課程編號grade_group_id: 梯隊IDcoach_id: 主教練IDassistant_coach_id: 助理教練ID可空field_id: 場地IDweek_day: 星期幾上課1-7start_time: 開始時間如14:00end_time: 結束時間如15:30capacity: 最大人數(shù)status: 狀態(tài) 0-草稿 1-已發(fā)布 2-已停用detail: 課程大綱描述課程實例表training_course_instance:idcourse_id: 關聯(lián)課程模板IDactual_date: 實際上課日期start_time/end_time: 實際開始/結束時間coach_signin_status: 教練簽到狀態(tài)summary: 本課總結/訓練簡報status: 0-待執(zhí)行 1-已完成 2-已取消 3-已結課學員出勤表student_attendance:idinstance_id: 關聯(lián)課程實例ID索引student_id: 學員ID聯(lián)合索引attendance_status: 出勤狀態(tài) 0-出勤 1-請假 2-缺席 3-遲到checkin_time: 簽到時間checkin_by: 簽到操作人remark: 備注學費訂單表tuition_order:idorder_no: 訂單號student_id: 學員ID索引package_id: 課程包IDtotal_amount: 訂單總金額分為單位存儲discount_amount: 優(yōu)惠金額payable_amount: 實付金額pay_status: 支付狀態(tài) 0-待支付 1-已支付 2-已退款 3-部分退款pay_channel: 支付渠道pay_time: 支付時間expire_time: 訂單過期時間4.2 索引設計這些字段必須建索引索引設計的核心原則是索引服務的是查詢條件不是表結構本身?;氐綐I(yè)務場景后端收到的高頻查詢有根據(jù)學員ID查他的歷史出勤記錄和課程記錄根據(jù)教練ID查他本月需要上的課根據(jù)日期范圍查某天某場地的所有課程根據(jù)狀態(tài)查待支付的訂單列表所以至少要有這些索引student_attendance表建立(instance_id)索引和(student_id, instance_id)聯(lián)合索引training_course_instance表建立(course_id)索引和(actual_date, status)聯(lián)合索引tuition_order表建立(student_id, pay_status)聯(lián)合索引和(order_no)唯一索引。字段類型上訂單金額一律用整數(shù)類型存分避免浮點誤差——這是一個非常經(jīng)典但總有人犯的錯。所有涉及狀態(tài)值的字段建議用tinyint并在代碼里維護一個統(tǒng)一的狀態(tài)枚舉類不要散落著魔法數(shù)字。4.3 數(shù)據(jù)字典與統(tǒng)一編碼規(guī)范數(shù)據(jù)字典這塊也建議從第一天就規(guī)范起來。性別、狀態(tài)、支付渠道這些取值要么建獨立的字典表要么在代碼里用枚舉類統(tǒng)一定義。我傾向于在代碼里定義枚舉類因為字典表的維護成本反而高而且跨系統(tǒng)使用時容易對不上。但必須有一個統(tǒng)一的規(guī)范文檔把所有枚舉值和含義寫清楚否則過幾個月你自己都忘了3代表什么狀態(tài)。主鍵生成策略我推薦使用MyBatis-Plus內置的雪花算法ID。雖然自增ID在單庫單表環(huán)境下沒有大問題但一旦未來要做數(shù)據(jù)合并比如兩個基地的數(shù)據(jù)庫合并或者數(shù)據(jù)遷移自增ID極其容易撞車。雪花ID是趨勢而且MyBatis-Plus開箱即用不需要額外引入分布式ID組件。5. 權限模型的落地實現(xiàn)RBAC如何做到既靈活又安全5.1 基于RBAC的三層權限模型企業(yè)級系統(tǒng)的核心標識之一就是權限管理。這套青訓后臺采用的是經(jīng)典RBAC基于角色的訪問控制模型具體落為三層用戶表、角色表、權限菜單/按鈕表中間用用戶-角色關聯(lián)表和角色-權限關聯(lián)表連接。用戶表單獨設計成member_account和業(yè)務崗位表教練檔案、學員檔案通過account_id字段關聯(lián)。這樣設計的原因在于一個賬戶可以關聯(lián)多個業(yè)務角色嗎在這個系統(tǒng)里不行。一個學員的賬號不可能同時是另一個梯隊的教練但這種一人多身份的場景在其他系統(tǒng)里是真實存在的所以把賬戶體系和業(yè)務檔案解耦是最穩(wěn)妥的。角色層面系統(tǒng)預置四類角色超級管理員SUPER_ADMIN、教務主管EDU_MANAGER、教練員COACH、家長PARENT。超級管理員擁有所有菜單和操作權限教務主管擁有課表編排、人員管理、財務管理、數(shù)據(jù)統(tǒng)計權限但沒有系統(tǒng)配置和審計日志的查看權限教練員擁有課表查看、學員檔案查看、出勤錄入、評估打分的權限不能查看財務數(shù)據(jù)家長只能查看自己綁定學員的檔案、課表、出勤、評估報告和繳費記錄。5.2 數(shù)據(jù)權限按鈕權限之后必須解決的粒度問題RBAC解決了能不能訪問這個菜單的問題但沒有解決能訪問哪些數(shù)據(jù)的問題。教練A登錄系統(tǒng)后理論上他有查看學員檔案的菜單權限但他只能看到他帶的梯隊里的學員不能讓他在學員列表里看到全俱樂部幾千個孩子的名字和電話。這就是數(shù)據(jù)權限的范疇。我的實現(xiàn)方案是基于對象的權限過濾。在學員列表查詢的Service層先獲取當前登錄用戶的角色和關聯(lián)的梯隊ID列表然后作為查詢條件注入到MyBatis的SQL動態(tài)拼接中。超級管理員和教務主管不加梯隊條件教練員注入他所帶梯隊的ID集合家長只能通過我的孩子接口訪問不開放學員列表查詢權限。這套邏輯寫起來不復雜但它是區(qū)分玩具系統(tǒng)和企業(yè)級系統(tǒng)的關鍵細節(jié)。5.3 登錄認證與安全加固的細節(jié)認證方案上我不推薦用傳統(tǒng)的Session方案更推薦JWTJSON Web Token。因為后臺管理系統(tǒng)的前端可能同時部署在多個渠道——PC瀏覽器、運營人員使用的平板、甚至嵌入到小程序后臺。JWT無狀態(tài)、跨域友好適合這種多端接入的場景。登錄成功后后端簽發(fā)JWT包含userId和role信息過期時間設置為8小時前后端約定所有請求頭里帶Authorization: Bearer 。有一件容易忽略但極其重要的事JWT密鑰的管理。密鑰不能硬編碼在代碼里更不能提交到Git倉庫。正確姿勢是放在配置文件里并通過環(huán)境變量注入部署時由運維單獨設置。密碼加密方面使用BCrypt算法不用MD5。MD5撞庫太容易了BCrypt的自適應成本因子讓暴力破解的成本成倍增加這是安全底線。還有一個接口防刷的細節(jié)。登錄接口必須加驗證碼建議用圖形驗證碼滑動驗證的方式連續(xù)失敗超過5次鎖定賬號15分鐘防止暴力破解。所有寫操作接口在Controller層做參數(shù)校驗在Service層做業(yè)務校驗兩層都過才允許落庫。6. 后端核心邏輯的代碼實現(xiàn)要點排課沖突檢測與數(shù)據(jù)權限6.1 排課沖突檢測的完整實現(xiàn)思路排課模塊是最能體現(xiàn)一個開發(fā)者代碼功力的地方。下面給出沖突檢測Service方法的骨架這里省略了部分模板代碼只突出核心邏輯public void createCourse(CourseCreateRequest request) { // 1. 參數(shù)校驗重復字段、必填字段 // 2. 教練時間沖突檢測 boolean coachConflict checkTeacherTimeConflict(request.getCoachId(), request.getWeekDay(), request.getStartTime(), request.getEndTime()); if (coachConflict) { throw new BusinessException(該教練在所選時間段已有課程安排); } // 3. 場地沖突檢測 boolean fieldConflict checkFieldTimeConflict(request.getFieldId(), request.getWeekDay(), request.getStartTime(), request.getEndTime()); if (fieldConflict) { throw new BusinessException(該場地在所選時間段已被占用); } // 4. 校驗通過后插入課程記錄 courseMapper.insert(convertToEntity(request)); }private boolean checkTeacherTimeConflict(Long coachId, Integer weekDay, LocalTime startTime, LocalTime endTime) { // 查同一天教練所有處于有效狀態(tài)的課程 ListTrainingCourse existingCourses courseMapper .selectActiveByCoachAndWeekDay(coachId, weekDay); for (TrainingCourse course : existingCourses) { // 關鍵判斷新課程與現(xiàn)有課程存在時間重疊 if (startTime.isBefore(course.getEndTime()) endTime.isAfter(course.getStartTime())) { return true; } } return false; }核心就一行判斷startTime小于現(xiàn)有課程endTime且endTime大于現(xiàn)有課程startTime。這兩個條件同時成立說明時間段必然有交集。這個邏輯不僅適用于課程編排也可以復用到場地預約、教室租賃、會議室預訂等各種時間資源沖突檢測場景是值得背下來的小函數(shù)。6.2 數(shù)據(jù)權限過濾的MyBatis-Plus實現(xiàn)數(shù)據(jù)權限的落地我用的是MyBatis-Plus的Wrapper查詢。在Service層動態(tài)拼接查詢條件public PageResultStudentProfileVO queryStudentList(StudentPageQuery query) { LambdaQueryWrapperStudentProfile wrapper new LambdaQueryWrapper(); // 根據(jù)當前用戶角色動態(tài)注入數(shù)據(jù)權限條件 if (isCoachRole(getCurrentUserId())) { ListLong gradeGroupIds getCoachGradeGroupIds(getCurrentUserId()); if (CollectionUtils.isEmpty(gradeGroupIds)) { // 教練沒有任何梯隊直接返回空數(shù)據(jù) return PageResult.empty(); } wrapper.in(StudentProfile::getGradeGroupId, gradeGroupIds); } // 其他查詢條件如姓名模糊搜索、狀態(tài)篩選 if (StringUtils.hasText(query.getName())) { wrapper.like(StudentProfile::getName, query.getName()); } // 分頁查詢 PageStudentProfile page new Page(query.getPageNum(), query.getPageSize()); studentMapper.selectPage(page, wrapper); return convertToPageResult(page); }這種方式的好處是直觀好維護壞處是每個查詢接口都要重復編寫數(shù)據(jù)權限判斷邏輯。如果項目后期查詢接口數(shù)量膨脹可以考慮把數(shù)據(jù)權限抽成注解攔截器的形式通過自定義注解自動解析角色和權限條件。但中小型項目不需要過度設計Service層手寫完全夠用反而容易調試。6.3 事務控制和異常處理的統(tǒng)一約定寫SpringBoot后端時事務千萬不能只加在Controller層或者干脆不寫。正確做法是所有包含多表寫操作的Service方法上加Transactional(rollbackFor Exception.class)。比如創(chuàng)建課程時需要同時插入課程表、更新教練的可預約時間段緩存、記錄操作日志這三步必須在一個事務里任何一步失敗都要全部回滾否則會出現(xiàn)課程創(chuàng)建成功但教練時間被占用的不一致狀態(tài)。異常處理要用全局異常處理器統(tǒng)一收口。在RestControllerAdvice里定義異常映射BusinessException返回業(yè)務錯誤碼和提示信息參數(shù)校驗異常返回400未登錄返回401無權限返回403系統(tǒng)異常統(tǒng)一返回500并記錄日志。這樣做的好處是前端接到的永遠是結構統(tǒng)一的JSON不用為每種異常單獨適配。7. 前端Vue實現(xiàn)的高效路線基于Element-Plus的后臺腳手架前端部分我用的是Vue 3 Vite Pinia Vue Router Element-Plus的組合。這套組合是當前寫管理后臺效率最高的搭配之一。Vite冷啟動速度極快Element-Plus組件庫覆蓋了后臺系統(tǒng)90%以上的界面需求Pinia做狀態(tài)管理比Vuex清晰很多。項目的核心目錄結構是這樣的src/ ├── api/ # 接口請求封裝按業(yè)務模塊拆分為文件 ├── assets/ # 靜態(tài)資源 ├── components/ # 通用組件上傳、富文本、搜索表單等 ├── layout/ # 后臺整體布局側邊欄、頂欄、標簽頁 ├── router/ # 路由配置含動態(tài)路由邏輯 ├── store/ # Pinia狀態(tài)用戶信息、權限標識、菜單狀態(tài) ├── views/ # 頁面組件按模塊組織 │ ├── course/ # 課表管理 │ ├── student/ # 學員管理 │ ├── coach/ # 教練管理 │ ├── finance/ # 財務管理 │ └── system/ # 系統(tǒng)設置 └── utils/ # 工具函數(shù)格式化、下載、鑒權7.1 動態(tài)路由與菜單的權限聯(lián)動前端權限的動態(tài)路由是整個后臺體驗的關鍵。用戶在登錄后獲取到當前角色允許訪問的菜單樹和后端返回的權限標識列表然后通過Vue Router的addRoute方法動態(tài)添加路由。這一步做到位后普通教練登錄時不會在側邊欄看到財務管理菜單即使他手動在瀏覽器地址欄輸入財務頁面的路徑路由守衛(wèi)也會攔截并跳轉到403頁面。路由守衛(wèi)的偽代碼如下router.beforeEach(async (to, from, next) { const userStore useUserStore(); if (!userStore.token) { next({ path: /login, query: { redirect: to.fullPath } }); return; } if (!userStore.permissionsLoaded) { try { const userInfo await userStore.fetchUserInfo(); const accessRoutes await userStore.buildRoutes(userInfo.roles); accessRoutes.forEach(route router.addRoute(route)); userStore.permissionsLoaded true; next({ ...to, replace: true }); } catch (error) { userStore.reset(); next({ path: /login }); } return; } next(); });7.2 課程排期日歷組件的高效選擇課表管理的前端頁面不建議自己用表格硬畫課程時間表直接用FullCalendar是效率最高的方案。FullCalendar是一個成熟的開源日歷組件支持周視圖、月視圖、日視圖允許拖拽事件調整時間正是排課場景需要的交互體驗。將課程實例渲染為日歷上的事件點擊事件彈出課程詳情抽屜可以查看學員出勤列表、教練備注、操作取消或結課。這里有一個交互細節(jié)值得提一下教練的課程總覽頁面和周視圖的加載性能。如果一次性把未來三個月的課程實例全部拉下來前端渲染會卡頓。優(yōu)化方案是日歷組件切換日期范圍時單獨調用接口只查詢當前展示時間范圍內的課程數(shù)據(jù)同時在事件展示時做聚合處理——同一時間段、同一場地的課程實例合并為一個事件塊點擊后展開具體課程列表。7.3 與后端權限對應的按鈕級控制菜單控制是路由層面按鈕層面還需要更精細的控制。比如教練頁面上的錄入出勤按鈕只有COACH和EDU_MANAGER角色能看到學員檔案里的修改家庭住址按鈕只有家長本人登錄自己的賬號時才能操作。這種按鈕級控制可以用一個自定義指令v-permission實現(xiàn)// 全局注冊權限指令 app.directive(permission, { mounted(el, binding) { const requiredPerms binding.value; // 例如 [coach:attendance:create] const userStore useUserStore(); const hasPermission userStore.permissions.some(p requiredPerms.includes(p)); if (!hasPermission) { el.parentNode?.removeChild(el); } } });頁面模板里直接使用el-button v-permission[coach:attendance:create] typeprimary clickopenAttendanceDialog 錄入出勤 /el-button這樣前后端雙重控制安全性和體驗都到位了。8. 實際部署與聯(lián)調中踩過的坑這五個問題最值得記錄8.1 時區(qū)問題導致課表全部偏移這是部署階段遇到的第一個坑。服務器默認時區(qū)是UTCMySQL連接串里沒有配置serverTimezone導致前端頁面上顯示的課程時間比實際時間晚了8個小時。排課接口寫入數(shù)據(jù)庫LocalDateTime時MyBatis的JDBC驅動做了時區(qū)轉換但查詢回來時沒轉對整個課表亂套。解決方案MySQL連接串統(tǒng)一加上serverTimezoneAsia/ShanghaiuseSSHfalse這里的useSSL按環(huán)境配置同時數(shù)據(jù)庫服務器和Java應用服務器統(tǒng)一設置時區(qū)為Asia/Shanghai。這個坑非常常見尤其當你從本機開發(fā)本機默認東八區(qū)部署到云服務器默認UTC時幾乎必然觸發(fā)。8.2 文件上傳大小限制和Tomcat默認配置沖突系統(tǒng)里要做學員體檢報告和訓練照片的上傳Vue端用Element-Plus的el-upload組件。開發(fā)階段一切正常部署到測試環(huán)境后發(fā)現(xiàn)圖片上傳時接口直接報404。查了一個多小時才發(fā)現(xiàn)是Nginx的client_max_body_size默認只允許1MB而體檢報告掃描件動輒兩三MB。這不是后端代碼問題是反向代理層的配置問題。處理方式在Nginx的server塊中增加client_max_body_size 20m;同時SpringBoot里也要同步配置spring.servlet.multipart.max-file-size20MB和max-request-size30MB。兩層都要配只配一層都會失敗。8.3 跨域配置導致登錄接口偶發(fā)失敗前后端分離部署時Vue跑在域名ASpringBoot接口跑在域名B跨域問題是必然的。我在后端寫了一個全局CORS配置類允許指定來源、指定請求頭和請求方法。配置上線后大部分接口正常但登錄接口偶爾報錯Access-Control-Allow-Origin header contains multiple values。后來排查發(fā)現(xiàn)是登錄時后端返回了自定義響應頭而Spring的CORS過濾器又自動加了一個Access-Control-Allow-Origin重復了。解決方案統(tǒng)一在Spring的CORS配置中聲明所有的跨域規(guī)則同時確保業(yè)務代碼中不要把請求頭相關的內容寫到response里。配置類只保留一個不要同時在Filter和Interceptor兩層配置避免頭信息重復。8.4 JWT過期后前端靜態(tài)資源無法加載這個問題比較隱蔽。用戶登錄后長時間不操作JWT過期。這時用戶在某個頁面點擊刷新瀏覽器Nginx會先嘗試加載該頁面對應的JS/CSS靜態(tài)資源但這些靜態(tài)資源請求也被前端路由守衛(wèi)攔截了——因為axios攔截器統(tǒng)一給所有請求加了Authorization頭而靜態(tài)資源請求根本沒有token服務器返回401。解決方案把靜態(tài)資源請求和API請求分開處理。axios攔截器只給API請求加Authorization頭通過判斷請求URL前綴來實現(xiàn)Nginx層對靜態(tài)資源路徑直接放行不做任何登錄校驗。這個坑在開發(fā)階段很難發(fā)現(xiàn)因為開發(fā)時前端和后端是不同端口靜態(tài)資源直接由Vite服務返回根本不經(jīng)過后端。8.5 財務報表導出時Excel亂碼和內存溢出財務管理的月度報表需要導出Excel最初用了簡單的POI版本數(shù)據(jù)量超過三千行時導出接口變得極慢還偶發(fā)內存溢出。優(yōu)化方案是用阿里開源的EasyExcel它基于SAX模式流式讀寫內存占用大幅降低。導出接口改為先寫臨時文件再異步傳輸給前端前端下載后再刪除臨時文件。另外注意設置Excel的字符集為UTF-8否則中文文件名在部分瀏覽器里會是亂碼。// EasyExcel流式導出的核心寫法 String fileName URLEncoder.encode(月度課消報表.xlsx, UTF-8); response.setContentType(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet); response.setCharacterEncoding(utf-8); response.setHeader(Content-Disposition, attachment;filename fileName); EasyExcel.write(response.getOutputStream(), TuitionReportRow.class) .sheet(課消統(tǒng)計) .doWrite(reportRowList);9. 這套系統(tǒng)的應用邊界與二次開發(fā)建議說句實在話這套SpringBoot Vue MyBatis MySQL的青訓俱樂部管理系統(tǒng)單論技術棧并不算前沿但它勝在業(yè)務模型貼近真實場景、代碼結構清晰、權限模型完整。對于個人開發(fā)者來說它是一次很好的全棧能力訓練對于團隊來說它是一個足以支撐中小型俱樂部日常運營的可靠基座。如果你恰好要把它作為畢業(yè)設計或者面試項目來呈現(xiàn)我建議你在二次開發(fā)時重點做這幾件事一是把訓練評估模塊做得更細加入更多維度的雷達圖可視化讓家長端能直觀看到孩子的各項能力成長曲線二是加入消息通知模塊當課程取消或臨時調整時通過郵件和短信觸達家長提升系統(tǒng)的人性化程度三是做一個小程序端微信小程序或支付寶小程序這是家長最常用的入口也是在面試講解時最有亮點的擴展點。如果你在真實運營一家足球俱樂部我建議先梳理清楚運營流程再上系統(tǒng)不要讓系統(tǒng)反過來綁架流程。比如請假扣不扣課時的規(guī)則、教練評分的審核機制、退費的審批層級這些業(yè)務規(guī)則必須在系統(tǒng)開發(fā)前定下來不然后期改起來成本極高。技術上這套系統(tǒng)完全夠用真正的難點在于業(yè)務規(guī)則能不能用代碼表達清楚。最后回到最開始的話題管理后臺系統(tǒng)的核心競爭力從來不在技術有多炫而在于它把現(xiàn)實世界的復雜業(yè)務約束表達得有多準確。一個能把排課沖突、權限隔離、課時統(tǒng)計、評估流轉都處理妥當?shù)暮笈_哪怕技術再樸素也是好系統(tǒng)。這也是我在設計這套青訓后臺時始終堅持的原則——少一點炫技多一點嚴謹。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久9视频| 欧美综合91| 噜噜噜在线视频| 91九九九吃| 黄污污污污| 欧美一级A片不卡视频。| 蜜臀在线网站| 欧美偷| 99久久这里只有精品| 一区二区三区视频国产免费| 免费试看60秒| 97中文字幕九区| 我中文字幕6区| 欧美色图私拍91| 超碰精品在线| 伊人五月天激情| 久96热在线观看视频| 一区二区视频你懂的| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 人妻81p| 欧美亚洲特P| 亚洲国产精品久久久男人的天堂| 97久久超碰国产网站| 婷婷五月在线视频| 91人妻爽爽人人做人人澡| 国产 无码 一区二区| 婷婷av在线中文字幕| 久久激情婷婷| 性91| 欧美色干| 五十路熟女人妻一区二区在线观看| 狠操91,com| 肥臀熟女福利视频一区二区| 精品91摸| 天天操天天射青青草| 色色亚洲| 中文字幕 一区二区 亚洲无码| 成人欧美一区二区三区黑人一| 少妇滛荡视频| 天天爽天天操| 防屏蔽在线视频| 国产AV高清AV无码| 五月激情影院| 国产成人亚洲精品自产在线| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 日本天天干天天操一区| 最新日本中文字幕| 国产精品自在自拍视频| 91久久久久久久久18| 顶级丝袜熟女一区二区三区| 欧美做爰无码A片视频| 每日更新AV| 亚洲国产一级精品毛一级精品看免费视频 | 婷婷五月天av| 久久五月份| 久久精品欧美一区蜜桃| 91 丝袜在线观看| 亚洲天天自拍| 日韩性爱小视频| 青娱乐老司机视频| 精品中文日韩字幕视频| 啊啊在线| 亚洲天堂加勒比| 中文字幕欧美精品亚洲日韩蜜臀| 久久精品无码专区| 男人天堂网站| 美國A片| 五月天综合网| 久久高清无码夜夜操| 欧美日韩人妻精品一区二区三区| 精品午夜福利| 人妻一区视频| 亚州成人A√| 热久久九九热| 超碰 欧美| 亚洲se91| 高清成年美女黄网站免费大全| 亚洲偷拍自拍在线视频| 97超碰亚洲| 狠狠躁久久躁| 国产日韩手机视频在线| 啊视频在线| 色妺妺在线视频| 色哟哟av网址| 韩国免费播放一级毛片| 亚洲欧美精品91| 人妻 制服 日韩 中文 在线| 13小男生GAY自慰脱裤子| 嗯啊抽插大香蕉网页| 五月丁香影院| 69丨亚洲丨精品丨入口免费播放| 成人国产视频在线观看| 性爱1区| 97干天天| 91综合在线| 黄色高清无码无码破解免费暗网| 熟妇人妻一区二区三在线 | 日韩操啪| 天天爽天天干| 日本 情色 1区2区3区| 欧美色www亚洲国产阿娇要播| 香蕉人人操tv| 欧美日韩青操| 首页中文字幕中文字幕免费| 亚洲一二三| 亚洲资源站| 青青草天天亲夜夜操网| 伊人四虎综合| 国产成人精品亚洲日本| 人妻内射一区二区在线视频| 亚洲国产精品V?在线播放| 色爱国产| 97视频免费播放| 国产自产91区13区| 久久久久亚洲Av无码专区老牛影视| 爱我干综合| 啊啊啊啊好大好硬啊啊啊啊啊 | 97一区二区蜜臀| 蜜臀99精品国产高清在线观看| 神马久久久久久伦理片| 国产九区| 日韩操逼HD| 蜜桃中文字日产乱幕4区| 超碰在线91| 激情五月婷婷| 水多多映视AV| 欧美亚综合色图| 亚洲网站一区二区在线| 熟妇一区二区三区| 国产午夜在线观看视频| 久久久久久久国产| 伊人黄色视频免费观看| 99热这里只有精品1| 国产人伦a片信息免费片| 国内成人圈中文字幕无码视频| 欧美日韩国产黄色片| 亚洲涩涩| 亚欧国产无码精品在线| 日本精品一级二级三级| 91国精产品| 很很热性爱视频| 懂色AV网| 欧美高清性猛交| 精品高清av中文字幕| 美女主播色欲91抠b在线播放| 人妻无一区二区三区| 哈哈操电影AV| 色综合久久88色综合久久天天| 国产97/欧美| 五月丁香啪啪网| 花花AV导航| 九九久久久九九| 91色人妻| 青女偷拍网| 国产日本熟女顶级一区二区三区视频 | 青青青在线高清视频在线一二三四区| 国语人妻精彩刺激| 香蕉久久AⅤ...| 97国产精品久久久久| 91九色首页| 十八禁啪啪视频| 99热8| 猛交交| 十八禁视频一区二区| 欧美综合传媒| 无码九九九九| 老司机午夜精品福利视频一区二区| www超碰| 亚洲国产精品无码AV久久| 青青草日本中文字幕| 91在线精品| 亚洲欧美电影| 欧美96交| 熟女网站最新| 久操视频免费在线观看| 久久99网站| 亚洲黄片免费在线播放| 欧美色图另类图片| 老熟妇一区二区三区啪啪| 91色情黑丝搞鸡在线观看一区二区三区三州| 久操操AV电影| 激情综合网激情综合| 久草毛片| 日韩八十路老熟女| 亚洲欧洲无码97久久精品| 久久五月天婷婷| 成人七区| 久久精品日韩| av爱爱爱| 国产在线能看的你懂的| 17c嫩草51久久91嫩草| 狠狠操狠狠燥| 岛国999| 中文字幕少妇色| 五月婷婷综合在线| 丁香五月婷婷啪啪| 亚洲激情在线| 9色在线| 国产欧美岛国精品一区| 99色热国产视频精品| 亚洲色人| 另类TS人妖一区二区三区| 欧美色偷偷| 欧美爱国产综合、| 欧美性Fer办公室秘书| 和协无码影院| 97超碰天天| 96AV久久久| 人妻日日夜夜精品| 丝袜狠狠草尤物人妻av91| 99这里有精品视频| 久久久久久91香蕉国产| 亚洲国成人情色好看电影| 小草精彩毛片| av线电影| 色偷偷综合91久久噜噜| 国产97/欧美| 蜜桃AV天堂| 久久是精品| 爱丝福利| 一区二区三区不卡视频| 狠狠爱综合网| 人人操人人搞人人草| 乱伦1色页| 在免费jIzzjIzz在线视频| 亚洲av影院在线观看| 久久草在线综合视频| 99热婷婷| 四虎视频在线观看| 欧洲亚洲综合| 99re在线| 乱伦av.com| 天天爽人人综合免费7799| 3571色综合一区二区二区| 日本在线一二| 亚洲老司机123专区| 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲有码第一页| 97欧美久久久久久久| 极品出轨视频网站| 99久久亚洲精品无码毛片潘甜甜| 91午夜无码| 操一区| 亚洲av总站| 激情四射婷婷六月天| 91国产丝袜白虎| 12一15性XXXX粉嫩国产| 中文字幕在线日亚州9| 91欧美偷拍| 日韩精品午夜操呦呦不卡影院| 七月丁香婷婷| 久久精品国产亚洲AV片多多| 国产黄a三级三级三级av在线看 | 久久av一级av少妇av高潮| 国产精品免费视频不卡| 豆1无夜无码| 一起草视频在线| 中字幕人妻一区二区三区| 天天干人妇| 91久久午夜无码鲁丝片久久人妻| 中文字幕一区二区无码成人| 欧美国产伊人久久久久| 久久 亚洲 日韩 人妻| 国产9熟妇视频网站| 免费视频在线一区二区不卡| 麻豆天美国美国产AV| 97超色| 亚洲 中文字幕 精品| 强奸xx国产| 少妇内射www在线观看视频| www.91视频网| 女人双腿搬开让男人桶| 国产精品久久久久久久久久久久久久久久 | 老熟女综合| 久久久久国产一区二| 熟女色图在线| 97操| 射 色综合| 国产中文字幕在线观看| 日韩一级成人毛片免费观看 | 天天草天天日| 九九热精品免费视频| 亚洲加勒比色图| 成人无码在线视频网站| 91九色丨国产丨爆乳| suv精产一二三区| 中日高清无码操逼视频| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 久久男人天堂| 欧洲免费一区二| 亚洲国产综合图区中文字幕| 综合婷婷| 天天伊人| 91人妻超碰| 国产精品久久久久久久久久久久久久吹 | 中文字幕丝袜国产第一页不卡| 美腿色图| 亚洲欧美综合区自拍另类| 1204av韩国| 久久亚州精品成人Av无| 国产免费一区| 操比国产| 日本精品一区二区不卡| 中文字幕在线观看丝袜| 啊啊啊好舒服视频| 蜜臀av在线播放一区二区三区| 国产精品乱码久久| 欧美日韩人人精品| 成人性爱av| 极品后入免费视频| 综合啪啪| 天美传媒精品一区二区| 性欧美天天| 中字幕人妻一区二区三区| 日韩9999| 亚洲成?V人片在线观看福利| 91另类| 日本不卡卡一区| 精品国产乱码| 精品999一区二区| 丝袜狠狠草尤物人妻av91| 日本精品一区三区| 综合久久久久久久久91| 欧美精品系列| 夜夜嗨AV蜜臀av| 在线A日本| 91AV国产精品| 久久最新视频免费观看| 五月丁香激情啪啪| 欧美日本中字另类在线| 91美女片在线| 久久久久ab| 91狠狠综合久久| 日韩啊V| 男人的天堂久久狠| renqi久久久久久久久久久久| 国产高清成人免费视频| 中文久久96| 亚州国产精品乱| 午夜激情成人在线观看| 日本幼女18+| 精品久久99| 国产福利av精彩对白| 思思久热在线精品66| 亚洲文学偷乱拍啪啪啪啪| 综合色图亚洲欧美| 中文字幕 国产区| 国产丝袜美女在线一区| 少妇久久久久久久| 欧洲站一级二级三级h| 97色冈| 久久香蕉国产线看观看猫咪av| 操国产逼| 久艹日日日| 丰满少妇精品一区二区| 大香蕉之青青草原| 亚州色图狠狠干| www.夜夜| 欧美日韩99| av无码av无码专区| 国产精品激情久久久久久久| AAAA欧美日韩| 久久成年片色大黄全免费网站| 精品国产a∨一区天美传媒| 久久久久亚洲一区女同性恋中文字幕| 丁香五月天婷婷姐| 91人人看| 国产天天骚| 东京太热久久久| 国产成人无码久久精品| 99综合| 中文字幕一区二区三区视频播放| 欧美大香蕉同搞| 无码直播久久久| 香蕉99秘 一区精品蜜桃臀| 人伦四五区| 久久视频,这里只有精品 | 日本不卡在线二区三区| 欧美激情在线观看视频| 欧美 亚洲| 超碰碰97资源站| 久久久女人| 欧美96交| 97手机日韩| 亚州色综合| 日韩无限资源| 天天看精品动漫视频一区| 97色碰| 欧美欧美啪啪视频| 国产AV色黄看到爽| 国产99久久99热这里只有精品15 | 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 日本加靬比网站发布页| 青青草视频久久久久| 嫩草 人人网精品| 丁香婷婷激情五月天无毒不卡| 人妻插插人妻人| 国产传媒日本欧美专区| 色哟哟1区2区| 免费男人的天堂| 人妻丝袜二区| 日本乱人伦片中文三区| 午夜激情成人在线观看| 國產尤物AV尤物在線觀看| 伊人久操| 一区二区三区精品黑丝白丝酒店对鸡| 欧美人妻二区三区| 欧洲亚洲人人爽爽视频| 清纯唯美亚洲| 久久綜合很很很| 日韩情色AV| 欧美在线综合| 亚洲精品97| 激情抓乳插进去啪啪啪日韩 | 四季av一区二区凹凸精品小说| 一卡二卡三卡| 国产美女口爆吞精视频| 熟女突然公开看18禁影片| 天天日天天舔天天喷天天射| 白 大 人妻 区 在线| 天天天做天天天爱天天天爽| 97精品网| 人成午夜免费大片| 97色视频在线| 亚洲色图欧美色图另类图片| 天天综合网日韩7799| 婷婷久久久| 日韩精品9999| 99999精品| 久久久久久久国产视频| 日韩紧密久久| henhen91| 艹少妇网站| 青青青国产| 中文字幕日韩情色| 黄在线| 呦女网站| 99国内熟女露脸视频| 黑人黄片在线免费观看| 丁香五月色| 久久999久| 操久久久久| 一起草日韩| 久热伊人99re| 男人久久天堂| 综合网色| 97欧美色| 3028国产精品| 青青草色情网站视频| 97干在线视频| 欧美色五月| 941超碰| 性色av大全| 亚洲另类综合欧美| 精品夜夜澡人妻无码AV| 制服乱伦| 亚洲色婷婷综合久久久久中文| 天天搞在线综合网| baiduhicn.com。| 久久精品 六十路 熟女 欧美| 人妻熟女字幕一区二区| 久久久久女教师免费一区 | 日本黄色大片一级视频免费麻豆| 九九热免费国产视频婷婷伊人五月 | 91福利网在线观看| AV高清一区| 中文一区二区三区影院| 中文字幕二区日韩天堂| 9丨久久九九九| 2020视频1区2区3区| 91第一页| 中文字幕国产精品1区| 天天日夜干| 91视频国品一二三区| 色97欧美| 东京热男人的天堂网| 91熟女在线| 97视频在线观看播放与子乱对白在线……| 成人久久久| 亚洲色人妻综合| 国产在线观看一区二区三区| 99青青草国产视频| 久久久亚洲高清不打码| 天天影视网色欲色香| 亚洲第一无码播放立川理惠| 韩日欧亚a级| 天天综合,91综合永久| 大色综合| 日韩精品三级片长长久久| 色狠狠 - 百度| 欧洲性人爱视频| 99操逼| 久久AV无码AV| 国产一区二区久久| 丁香五月激情网| 日韩性爱啪啪视频| a片亚洲一本通视频| 一级特级aaaa毛片免费观看| 不卡二三区人妻少妇| 中文字暮97| 日韩激情啪啪啪| 麻豆熟妇乱妇熟色A片在线看| 玖玖97综合| 国产精品亚洲高清在线| 97操B| 国产婷婷一区| 久操精品网| 国产综合色精品在线观看| 亚洲成人妻日韩在线| 91久久久久久| 国产日韩区| 无码粉嫩白虎一线天b区| 亚洲天堂另类小说男人| 狠狠色婷婷777| 欧美18 在线观看| 亚洲精品97p| 久插综合| 一区二区三区在线资源| 色乱二区| 日韩精品字幕| 91丰满| 亚欧美综合网。| av天天在线观看| 强奸乱伦日韩AV| 国产辣妈在线视频福利| 999热日韩精品| 人妻爽爽啪视频| 97香焦色区| 日韩中文字幕在线视频观看| 免费少妇一区二区| 性综合网| 校园春色第一页| 超碰伊人在线| 最新精品久久蜜桃 | 亚洲天堂男人天堂网| 激情人妻另类| 最新精品久久蜜桃| 亚洲综合有玛| 久久国产精品91| 丁香九月激情| 免费一级视频特黄色大片| 亚洲精品毛片在线观看| 成人无码在线视频网站| 中国AAAAAA黄色片| 日少妇视频| 日韩91网站| 日本高清视频在线观看黄已三辽| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 97超碰磁| 操操操五月天婷婷丁香影院| 91春色| 无码78| 综合 亚洲 欧美| 欧美男人的天堂| 蜜臀99久久精品久久久久久| 欧美综合色图片| 男人天堂最新手机版在线青青草| 人乳av| 疯操AV| 精品夜夜澡人妻无码AV| 久久人妻熟女一区二区| 天天肏天天干| 久久精品国产精品一区| 51国产午夜精品视频| 午夜啪| se吧提供91精品国产91久久久久久 | 激情久久av一区av二区av| 国产精品成人无码av无码免费| 欧美日韩国产高清在线一二三区 | 97九色人妻| 亚洲综合色男人网| 成人AV素股で擦久久| 丰满少妇一区二区三区专区| 中文字幕乱碼在线| 熟女高潮合集-永久久久-成人AV| 中国黄色特级精品一区二区三区片| 中国的操老妇女| 日产精品久久久一区二区| 欧美激情内射| 乱伦熟妇一区二区| 国产AV无码AV| 亚洲色图久久成人| 91网站18在线| 青青草原av| 亚洲成人贴图| 亚洲欧美综合区自拍另类| 亚欧国产无码精品在线| 大胆91| 九九成人精品| 深夜激情 | 岛国人妻少妇av在线观看| 白丝在线一区| 亚洲97在线观看| 午夜福利无毒不卡| www久久久| 天堂精品小草| 97se亚洲综合自| 亚洲精品白浆高清久久久久久| 插日本熟女视频| ss久久| 天天日骚逼熟女| 日韩在线观看三级电影| 福利伊人玖玖国产| 精品久久久av| 亚洲人妻色图| 国产人伦a片信息免费片| 日韩人妻精品久久久久| 九九热在线精品视频| 天天日天天看| 亚洲九月丁香| 丝袜综合| 久久久久久9| 91精品伊人久久久大香线蕉91| 亚洲国产一区二区三区在线| 5252色欧美在线男人的天堂| 成年人三级黄色片视频| 欧插网站| 97亚洲综合在线| 欧美日韩在线国产在线| 高清不卡一二三区视频......| 久久久91福利姬| 99久久精品无码一区二区毛片免费| 综合久久婷婷| 狠狠操狠狠燥| 日韩A优精品在线观看| 91色图片| 国产精品人妻无码久久久老鸭窝 | 好爽免费视频| 天天做天天爱天天高潮| 日本最新1区2区3区| 亚洲国产91精品一区二区久久| www.狠狠干.coom | 国产一区二区啪啪视频| 是还免费视频1727我| 综合伊人激情| 青青草黑寡妇男人天堂| 亚洲伊人成综合成人网| 猛交交| 97在线免费视频观看| 国产亚洲国产超碰| 亚洲人精品久久久| 日韩性爱电影一区| 97草草| av日韩在线观看电影| 亚洲综合情色| 加勒比久久综合网高清| 中文字幕精品久久久久人妻红杏ⅰ| 91AV入口| 精品一区二区麻豆| 欧美日韩激情无码专区| 欧美性爱网97| 综合欧美激情网| AV色五月| 婷婷五月天激情四射| 无马一区二区| 欧美性天天影视| 99久久亚洲精品无码毛片潘甜甜| 91电影色诱| 精品久久久高清无码| 久久久久久久久久精| 国产高清MV操逼视频| 亚欧美综合| AV中文在线| 91丨人妻丨国产丨丝袜| 大香蕉欧美伊| 强奸乱伦av电影| 日本在线999| 国产精品情侣啪啪| 中文精品一区二去| 九九九九九九免费视频| 五月丁香啪| 日韩成人无码| 九9热伊人| 欧美操人| 不卡中文字幕aⅴ在线| 超碰久在线天天做| 丁香五月激情综合| 亚洲av综合伊人久久| 内射黑丝袜| 色综合五月天| 强奸国产精品视频| 91综合天天看| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 日本三级一区二区 在线| 天天综合站| 97超碰色五月| 国产日韩在线播放| 午夜精品久久一区二区| 97精品在线| 蜜桃色色网站视频三区| 精品人体无圣光凹凸| 亚洲人综合19| ai欧美亚洲小说| 碰碰在线视频| 日本在线不卡v二区| 校园春色五月天| 久久人妻无码毛片A片麻豆| 国产精品色色| AV不卡在线| 一级毛片电影免费看| 中文字幕免费看| 玖玖爱综合| 熟妇在线视频一区二区| 午夜福利在线合集| 日韩性爱啪啪视频| JuliaAnnXXX888| 性交一区二区在线播放| 中文字幕精品丝袜| 日韩婷婷| 日本国产高清色www视频在线| 老司机午夜精品视频| 久久97视频| 视频在线中文字幕| 日本精品免费一区二区三区四区| 国产成人亚洲精品自产在线| 日韩丝袜二区| 377p欧洲日本亚洲大胆| 九九九精品成人免费视频小说| 国语精品对白| 超碰这里有精品| 国产白丝在线| 麻豆福利视频导航| 亚欧美天堂在线| 欧美乱色| 激情一区二区三区在线观看| 亚洲第一在线视频| 五月丁香社区婷婷日韩欧美精品影院 | 免费观看国产小粉嫩喷水精品午| 日本伦乱九九九综合| 欧美综合91| 欧美激情区| 99热伊人| 亚洲天天操| 香蕉视频精品亚洲一区二区三区在线播| 欧亚韩国999| 久久久免费视频18| 久久熟女嫩草成人片免费| 四虎影视永久在线观看精品免费网站| 加勒比av官网在线| 精彩久久中文| 人妻丰满熟妇av无码区蜜桃| 一区超碰一区| 亚洲一区中文字幕| 青草一区二区| 搡老女人老91妇女老熟女| 看全色黄大色大片免费视频| 成年无码动漫av片无尽在线| 无遮挡男女激烈动态图| 亚洲成aⅴ人片不卡无码| 久久久久久久伊人精品| 思思热免费在线视频| 中文一区在线视频| 凹凸视频特色日本特黄| 99性爱| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 色路综合| 97爱| 亚洲精品天堂久久A∨51成人漫| 乳欲人妻办公室奶水| 乱伦3P视频| 久久五月综合| 韩日男人的天堂| 中国的操老妇女| 易易A毛视频| 国产亚洲福利第一页丝袜| 国产人妖的免费的视频| A片三级无码| 天天日老熟妇| 亚洲自拍一区夜夜操| 青青草原成人| 激情婷婷综合久久| 综合欧美激情网| 六月色婷婷| 青青草在线视频欧美| 熟妇高潮二区三区| 中文字幕丰满子伦无码专区在线视频最新| 人人干黄色| 五月丁香激情综合| 高树玛利亚无码流出| 9999久久久久| 久久一二三四| 亚洲成人福利电影免费 | 国产在线观看一区二区三区| 秋霞无码av鲁丝片一区| 大香蕉免费中文| 免费网色网站| 97Ai亚洲| 亚洲无码AV九九九| 天堂日本亚洲欧美| 九九九九精品在线| 久久日韩精品一区二区| 五月婷婷基地| 五十路人妻在线| 精品人妻中文字幕高清| 色噜噜人妻丝袜a∨先锋影| 少妇蜜汁| 欧美成人精品欧美一级乱黄一区二…| 午夜操逼不卡| 91精品电影18| 极品人妻少妇综合| 国产传媒操逼视频| 色婷婷成人综合| 大香蕉线| 女人午夜视频777| 9精品在线| 中文字幕三四区| 狠狠色色| 久久久久深夜无码| 日韩亚洲国产视频| 91jk色拍| 亚洲欧美成人网站AAA| 亚洲色久| 亚洲欧美内射| 精品黑人一区二区| 人妻熟妇久草在线| 91精品久久久| 骚逼一区二区| 日本黄色精品专区网站| 中文字幕日韩国产传媒欧美精品| 五月天久久人妻| 亚洲天堂无码| 五月天亚洲网| 欧亚性爱啪啪| 学生妹天天看| 国产精品极品美女视频| 精品999日本| 搡老女人911熟妇老熟女| 久久极品一区二区| 超碰在线一区二区三区| 日韩人妻精品久久久久| 欧美性暴力猛交| 九九激情网| 加勒比海人人操超碰在线| www.99在线| 精品国产乱码久久久久久久久久毛片| 懂色AV蜜臀无码精品APP| 欧美在线综合| 妺妺跟我一起洗澡没忍住| 男人成人黄色视频在线观看免费下载| 色色香蕉| 亚洲人精品午夜不卡| 一区三区啪啪| 97在线公开视频| 日日狠狠久久偷偷色综合免费| 日韩97在线| 91大神电影天堂| 黄片qw| 大香蕉伊然在亚洲91| 欧美性爱视频免费一区一A| 中文字幕免费看| 亚洲中文字幕网| 麻豆久久一区二区三区| 青青草吊丝| 岛国激情视频软件| 欧美综合传媒| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 亚洲 欧美 另类 日韩 人妻一区| 国产精品无码av嫩草| 国产精品一二三| 欧美性特| 亚洲精品尤物yw在线影院| 中文久久96| 在线另类| 超清福利精品视频在线| 青青草玖玖爱| 九九热免费视频| 久久性爱视频免费看| 伦在线97| 9999久久久久| 亚洲男人综合| 日日日日做夜夜夜夜做无码97| 婷色五月天| 激情 欧美 亚洲 小说| 国产欧洲精品亚洲午夜拍精品| 久操热线| 91伊人久| 超碰97国产欧美| 美骚妇av高清在线| 综合久久中文字幕综合日韩精品| 亚洲福利影院一区久久| 色香91| 男人天堂.AB| AV污污污污| 91激情| 91精品婷婷国产综合久久| 大鸡吧尹人在线| 日韩不卡毛片Av免费高清| 日本一区二区中文字幕久久| 裸体美女久久久| 性站| 国产超碰| 尤物黄色在线观看网站| 国产馆| 在线观看 99热| 男女打扑克高清网站| 特级丰满少妇一级AAAA爱毛片| 蜜桃狠狠色伊人亚洲综合网站| 啊啊啊啊啊好舒服视频| 极品粉嫩一区二区| 九热视频| 亚洲日韩成人性爱视频| 日韩精品色呦呦| 少妇久久久久久久| 天天躁日日躁狠狠狠躁| 国产第二页| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | caoni国产亚洲av| 日韩欧美性吧婷婷乱伦大香蕉| 日韩综合第八区国产精品| 色大香蕉97N| 97激情97激情| 97WW精品| 男人的天堂啪啪啪啪啪蜜桃不卡| 亚欧性爱ab| www.99中文字幕| 吖在线不卡一区二区国产剧情| 欧美狠狠| 99热在线观看| 亚洲久9| 美女高潮国产高清| www男人天堂| 91综合天天看| 51一区二区三区| 啊嗯嗯啊好大好爽| 色网1| 搡老女人老91妇女熟女| 日本新免费二区三区| 91网18| 国产熟女一区二区丰满| 人人色人人射人人妻| 超碰超碰95| 亚洲影视综合网| 资源在线观一 二| 素人播放一区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日韩精彩免费| 亚洲、日韩、综合、另类| 日本有码影片下载| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 人妻少妇被猛烈进入中| 人人看人人爰人人操| 少妇一区二区三区高速| 一类无码操逼视频| 中文字幕aⅴ在线视频| 屁屁影院一区二区三区国产| 成人免费福利在线观看| 人人操人人狠狠操| 丁香五月天堂网| 精品女人999| 国产av青草| 97精品97| 51一区二区三区| 9久久精品| 亚洲 无码 偷拍| 亚洲激情综合另类男同| av日韩手机在线影视| 99精品久久久久久久婷婷蜜桃| 99视频在线| 久久25| 婷婷九月国产| 理论久久婷婷网8| 亚洲欧美日韩中文播放| 天天摸夜夜添无码小视频| 91动漫操逼视频| 日韩精品区二区三区不卡| 一区麻豆 高清中文字幕| 久久久久久久久久久久久久久久9 亚洲成人妻日韩在线 | 超碰97COm中文| 免费成人在线观看91| 亚洲国产麻豆一区二区三区| 99超级碰免费视频| 嫩草 人人网精品| 96精品一区| 91情色| 亚洲AV无码黄色强奸| 992这里有精品| 四虎884a| 亚洲色图日韩丝袜制服一区二区五月在线| 久久超碰com| 一区二区三区黄片免费观看| 五月婷婷色| 日本大香蕉| 国产精品播放| AV不卡在线| 丝袜制服字幕在线| 五月天人妻综合| 超碰在线人妻中文字幕| 亚洲成?V人片在线观看福利| 天天干天天日天天射黄色大片| 男人成人黄色视频在线观看免费下载| …亚洲黄色厕厕女女在线播…| www.av在线视频| 91neishe| 日本在线15p| 黄色大片免费在线| 先锋精品av色鲁| 97久久天天综合色天天综合色电影| 欧美在线91| 欧美性生活综合| 男人网站婷婷| 国产精品点击进入在线影院高清| 日本三级R| baiduhicn.com。| 欧美性爱第1 页| 婷婷丁香六月天| 综合色久欲| 丰满岳乱妇一区二区三区| 国产精品久久发布| 中文字幕激情小说| 国产精点久久久成人| 亚洲限制级| 成年人网站在线免费观看| 免费夜夜爱黄色视频毛片| 激情视频图片| www.伪伪| 久久久久久中文版| a片偷拍视频| 800zy一区二区| 中国人高清www色视频免费| 99熟女| 国产乱码久久久| 手机看片1024你懂的国产| 欧美影音在线| 可以在线观看的黄色网址| 日韩av色图综合| 欧美日韩在线视频网站| 偷拍 精品 另类 四区| 亚洲情色视频| 麻豆60秒| 亚洲中文字幕熟女| 熟妇人妻一区二区三区| 青娱乐休闲视频在线观看| 内射白嫩美女| 男女无套 免费网站| 国产黄a三级三级三级av在线看| 91人妻人人澡人人爽人人精品| 丁香五月婷婷啪啪| 国产精品乱码久久久| 综合网欧美在线| 中文字幕99999| 啊啊啊啊视频免费| 自拍偷拍第26| 亚洲激情天堂网| 性开放中文AV高清无码免费看| 超碰97久久国| 亚洲日韩成人性爱视频| 午夜福利合集| 久青草影院| 丁香七月婷婷| 亚洲永久AV无码精品秋霞| 精品国产乱码| 欧美在线 亚洲| 日韩免费性爱视频在线观看| 亚洲第一页色网| 久久午夜伦| 免费成人在线观看91| 97爱b| 四虎影视精品| 久操av在线| 青青草日本中文字幕| www.天天干| 强奸乱伦av电影| 少妇熟女1区2区3区| 综合色久欲| 四虎视频在线观看| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 亚洲综合色男人网| 26UUU欧美日本| 加勒比海成人视频网| 强免费黄色网址| 色香综合| 操死我了嗯嗯嗯| 午夜国产成人福利视频| 欧洲综合色图| 神马影院午夜福利久久久| 午夜高清成人在线视频| 麻豆成人影音在线| 超碰地址97| 色五月亚洲| 午夜超爽| 超碰诱惑| 91欧美美女日韩国产婷婷| 偷窥自拍A片| 精品人妻中文字幕高清| 国产免费一区| 99热这里只有精| 国产亚洲色婷婷久久99精品91葵花宝典| 日韩大香蕉AV影片| 999综合色| 久操综合在线| 国产真实野战在线视频| 试看日韩黄片| 婷婷探花久久精品一区| 九月AV| 九九黄色网| 在线国产福利网址导航| 啊啊啊爽爽| 综合大香蕉美。| 久热精品色情| 黄色网址久久精品欧美喷水| 青娱乐国产盛宴视频| 欧美在线91| 四虎精品永久在线观看| 乱老熟女一区二区三区| 夜夜嗨一区二区| 一起草精品人妻| 小视频国产| 男人亚洲天堂| 99re黄| 丝袜视频网国产90| 伊人久久亚洲中文字幕不卡| 青草青青久久久久久国产| 自拍偷拍2025在线观看| 操www| 国产二区三区免费视频| 色九久| 亚洲女优有码无码高清| 男人的亚洲天堂| 99啪啪| 亚洲色欲一区二区三区| 色婷婷丁香五月| 久久综合精品一区二区三区| 综合久久婷婷| 最新啪啪视频| 人人潮人人摸| 中文字幕日韩电影人妻| 欧美一级在线观看成人| 中国熟妇| 亚洲欧美国产精品久久久久久久| 中文字幕精品乱码| 欧美久久久15P| 伊人青青一区成人视频在线观看区| 激情五月天色色| 国产福利第一视频| 怡红院一区二区熟女人妻| 久久亚洲AV无码专区国产精品| 欧美性爱免费短视频| 成人精品久久久午夜福利| 91免费看一区二区三区| 97超碰欧美| 91无码西班牙视频在线| 超碰97久久| 一级毛片电影免费看| 尤物网站91| 九九九精品成人免费视频小说| 国产在线视频午夜精华在| 日本孕妇一区二区视频操逼免费看 | 亚州男人天堂| 久久一区二区三区四区五区| 试看60秒 爽| 精品久久久av无码免费| 91久久免费视频互動交流| 看免费的黄片| 日本天天操| 一区二区三区欧美激情| 91碰碰碰| 91在线美女| 97日视频| 精品女同一区| 天天亚洲|