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

ARTICLE DETAIL

資訊詳情

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

SpringBoot教育培訓辦公系統(tǒng):業(yè)務建模到權限實戰(zhàn)

SpringBoot教育培訓辦公系統(tǒng):業(yè)務建模到權限實戰(zhàn) 剛拿到“基于Springboot教育培訓辦公系統(tǒng)【附源碼文檔】”這個標題的時候我第一反應是這不就是每個計算機專業(yè)學生都繞不開的經典畢設方向么。但仔細想想市面上這類項目雖然多真正能講清楚“為什么這么設計”的卻沒幾個。如果你是正在選畢設題目、準備找工作的應屆生或者想給自家小培訓機構做套管理系統(tǒng)的開發(fā)者這個標題背后其實藏著一整套很成熟的信息化管理方案。它不單單是一個SpringBoot練手項目而是一個完整的業(yè)務閉環(huán)課程怎么排、學員怎么管、課時怎么記、審批怎么走、數據報表怎么出。我見過太多人做這類系統(tǒng)的時候上來就建表寫接口做到最后發(fā)現業(yè)務邏輯擰成一團亂麻。這篇就把我實際開發(fā)這類系統(tǒng)時踩過的坑、做出的取舍、還有那些文檔里從來不寫清楚的細節(jié)一次講透。1. 教育培訓機構到底需要什么樣的辦公系統(tǒng)1.1 別急著敲代碼先理清業(yè)務場景很多人拿到題目就急著搭環(huán)境、建項目這是做管理系統(tǒng)的大忌。教育培訓辦公系統(tǒng)這個標題拆解下來其實是三個詞的組合教育課程與教學、培訓招生與班級、辦公流程與審批。這三塊業(yè)務的用戶角色、數據模型、操作流程完全不同硬塞在一起肯定會出問題。從實際業(yè)務角度看一個典型的培訓結構大致是這樣運轉的市場部門招來咨詢的學員銷售或教務人員把學員安排進一個班級班級關聯著某位老師、某個教室、某個固定的上課時間。學員上課要記考勤、記課時消耗課后要產生課后反饋。老師的工資往往和課時掛鉤財務要按課時結算。再加上日常的請假申請、調課申請、物資報修、通知公告發(fā)布這些零散的事情如果沒有一套系統(tǒng)管理靠Excel和微信群遲早要亂套。我開發(fā)的時候第一步不是寫代碼而是把所有的線下流程都畫了一遍。這個階段最重要的產出物就是那張權限-角色矩陣表。系統(tǒng)里至少有三種角色管理員、教務老師、授課老師。有些場景下還有財務和學員賬號。每種角色能看哪些菜單、能操作哪些數據必須在動手前明確下來。否則等代碼寫完了再改權限體系那個痛苦程度不亞于重寫。1.2 功能模塊拆解從課程到財務的一張網把一個籠統(tǒng)的“辦公系統(tǒng)”拆成具體可落地的功能模塊我習慣用一張表來完成需求收斂模塊核心業(yè)務關鍵數據面向角色課程管理課程創(chuàng)建、上下架、課程分類課程名稱、封面、價格、課時數管理員、教務排課管理班級排課、教室分配、調課申請班級、教師、教室、時間教務學員管理學員檔案、報名記錄、課時賬戶姓名、手機號、剩余課時教務、財務教師管理教師檔案、授課課表、課時統(tǒng)計教師信息、授課班次管理員、教師報名中心咨詢記錄、試聽安排、正式報名意向狀態(tài)、跟進記錄教務審批中心請假、調課、報修、離職交接流程類型、當前節(jié)點、審批人全員財務統(tǒng)計課消統(tǒng)計、教師工資核算、營收報表課時單價、消課數量財務、管理員系統(tǒng)管理用戶、角色、菜單、操作日志賬號、角色編碼管理員這份清單的價值在于每一行都是一個獨立的開發(fā)迭代單元。你可以先做課程和學員再順著報名和排課把業(yè)務串起來最后補上審批和財務統(tǒng)計。模塊之間的接口在最初設計時就預留好后期開發(fā)會順暢很多。1.3 需求邊界怎么收斂MVP思維的實戰(zhàn)意義其實這個系統(tǒng)能做的遠不止上面這些模塊。比如線上選課、直播課堂、自動排課算法這些都是“加分項”。但作為畢設或者第一版辦公系統(tǒng)最重要的是先跑通一個最小可用閉環(huán)創(chuàng)建一個課程 → 排一個班級 → 錄入一個學員 → 完成一次報名 → 上一節(jié)課消一次課時 → 財務統(tǒng)計數據。我在實際開發(fā)中見過很多失敗的案例都是因為在做第一版的時候追求大而全把自動排課算法、在線支付都框了進來結果核心的報名、消課邏輯反而沒做好。管理系統(tǒng)的核心永遠是數據的準確性和操作的便捷性。先把MVP跑通讓數據能在各個模塊之間順暢流轉后面再慢慢疊加功能這是做業(yè)務系統(tǒng)最穩(wěn)的路線。2. 技術棧選型為什么是SpringBoot MyBatis-Plus Vue2.1 后端SpringBoot不是唯一答案但它是正確答案SpringBoot在這個領域幾乎成了標準答案。原因不復雜它把SSM時代那些繁瑣的XML配置全部收編了讓開發(fā)者能把更多精力放在業(yè)務邏輯上。配合MyBatis-Plus單表CRUD幾乎不用寫SQL分頁查詢一行注解就能搞定這在課程列表、學員列表這類純展示型接口里能省掉大量重復勞動。關于版本選型我建議SpringBoot 2.7.x配合JDK1.8或者SpringBoot 3.2.x配合JDK17。如果你是第一次接觸這類項目強烈推薦前者。原因很現實網上的教程、博客、踩坑記錄絕大多數是基于JDK8的遇到問題能找到現成答案。JDK17配合新版SpringBoot雖然性能更好但其間的兼容性坑比如某些老版本依賴在JDK17下直接跑不起來會讓你在排查環(huán)境問題上消耗大量精力。項目的包結構我建議按這個方向組織com.example.education ├── common // 通用返回、異常處理、工具類 ├── config // 配置類安全、跨域、攔截器 ├── controller // 接口層只做參數接收和結果返回 ├── service // 業(yè)務層核心邏輯 ├── mapper // 數據庫訪問層 ├── entity // 數據庫實體 ├── dto // 前端交互數據傳輸對象 ├── vo // 視圖返回對象 └── utils // JWT、日期處理、Excel導入導出這種分層結構不是憑空定的它的核心邏輯是依賴單向流動Controller依賴ServiceService依賴Mapper每一層只做自己該做的事。尤其是DTO和Entity分離這一點很多新手不理解。我舉個例子新增學員的時候前端傳過來的字段可能有“確認密碼”“驗證碼”這些字段在數據庫的學員表里根本沒有如果用Entity去接前端參數這些字段就會報錯或者污染實體類。用DTO隔離前端參數、用Entity對應數據庫字段、用VO控制返回內容分開之后每個類的職責都特別清晰改起來也不怕牽一發(fā)動全身。2.2 前端Vue3 Element Plus為什么是黃金搭檔前端這塊Vue3配合Element Plus是最穩(wěn)妥的選擇。Element Plus里已經封裝好了表格、表單、彈窗、樹形控件、日期選擇器這些后臺系統(tǒng)的高頻組件幾乎不需要額外寫樣式。加上Vue Router做菜單路由跳轉Pinia做全局用戶狀態(tài)存儲Axios統(tǒng)一處理請求和響應攔截前端整個骨架就很清晰了。關于前端項目的結構Vite Vue3 Pinia Vue Router Axios是現在的主流搭配。開發(fā)的時候我習慣用npm run dev啟動本地開發(fā)服務器接口代理到后端8080端口這樣可以實現前后端分離開發(fā)后端接口寫好一個前端就聯調一個不用等全部做完了再對接。一個實用的小技巧是請求攔截器和響應攔截器要提前寫好。請求攔截器里統(tǒng)一附加token響應攔截器里統(tǒng)一處理業(yè)務碼。比如后端返回401就自動跳回登錄頁返回500就彈出錯誤提示。這套機制是所有管理系統(tǒng)的基座越早落地越好否則你在每一個接口里都要寫一遍錯誤處理代碼冗余量會非常難看。2.3 為什么不選微服務、為什么用RBAC權限模型經常有人問為什么不用Dubbo、Spring Cloud那一套答案很樸素一個培訓機構的辦公系統(tǒng)用戶量撐死幾百上千人用微服務拆開只會徒增麻煩。服務拆分、注冊中心、配置中心、鏈路追蹤每一樣都是額外的運維負擔這個體量完全用不上。權限這塊我更推薦RBAC基于角色的訪問控制模型。它的核心就五個字用戶掛在角色上角色掛在權限上。開發(fā)的時候數據庫中會準備三張核心表用戶表、角色表、權限表再加上用戶角色關聯表、角色權限關聯表這兩張中間表。登錄時把用戶擁有的權限集合查出來存到Redis里訪問接口的時候通過Spring Security的過濾器判斷當前用戶是否有對應權限標識比如“system:user:add”。這套機制的好處是靈活——新來了一個“助教”角色只需要在角色表里配一下權限不需要改代碼。缺點當然也有每次修改角色權限都要重新登錄才生效但在實際使用中這個問題完全可接受。3. 數據庫設計先畫好表再寫代碼3.1 核心表結構解析五張最關鍵的表教育培訓系統(tǒng)里我認為最核心的表是這五張課程表、班級表、學員表、報名表、課時流水表。這五張表串起了機構最核心的業(yè)務輪子。課程表管理“賣什么”字段至少包含課程名稱、課程分類、總課時數、課程單價、封面圖URL、課程介紹、狀態(tài)上架/下架。班級表管理“怎么教”字段至少包含班級名稱、關聯課程ID、授課老師ID、教室位置、開課日期、上課時間段、最大人數、當前人數。學員表管理“誰在學”字段至少包含姓名、手機號、性別、年齡、來源渠道、備注。報名表管理“交易關系”字段至少包含學員ID、班級ID、報名時間、繳費金額、支付方式、報名狀態(tài)。課時流水表管理“消耗記錄”字段至少包含學員ID、班級ID、上課日期、消耗課時數、操作人ID。這幾張表之間怎么關聯直接決定了系統(tǒng)的數據流轉是否順暢。我畫表的時候會專門畫一張簡易的關系圖課程表1對多關聯班級表班級表1對多關聯報名表學員表1對多關聯報名表報名表和班級表聯合決定了課時流水表的生成口徑。這里最關鍵的一個業(yè)務問題是一個學員報了多個班級每個班級的課時是獨立計量的所以課時流水必須同時記錄學員ID和班級ID不能只記學員ID。這個細節(jié)你要是做漏了后面統(tǒng)計課時余額的時候絕對會出大問題。3.2 狀態(tài)機讓數據流轉不出錯業(yè)務流程里那些“狀態(tài)”字段新手最容易隨便定。一個報名狀態(tài)有人用0和1有人用字符串“已報名”“已退費”到了統(tǒng)計的時候各種判斷條件寫得到處都是改一個狀態(tài)就要全項目搜索。我的建議是提前定義狀態(tài)字典并且用常量類集中管理。比如排課狀態(tài)可以定義為狀態(tài)碼含義操作0待開課班級已創(chuàng)建未到首次上課時間1開課中當前時間在排課時間段內2已結課所有課時已消耗完3已停課因故暫停需要管理員介入審批場景更明顯一個調課申請從“待審批”到“已通過”或“已駁回”就是一個典型的流程狀態(tài)機。如果數據庫里隨意存儲狀態(tài)業(yè)務流程的約束就會失控。比如一個已經被駁回的申請理論上不應該允許再次通過但數據庫層面如果沒有約束就會出現邏輯漏洞。我的經驗是每個狀態(tài)流轉的觸發(fā)動作必須由后端代碼嚴格校驗比如“調課申請”這個流程只有當當前狀態(tài)是待審批時審批通過操作才被允許執(zhí)行。下面是我常用的狀態(tài)流轉示例代碼/** * 審批狀態(tài)流轉待審批 - 已通過 / 已駁回 * 這是最基礎的狀態(tài)機控制核心思路是先查狀態(tài)再改狀態(tài) * 并且在更新SQL中加入狀態(tài)作為條件防止并發(fā)問題。 */ public void approve(Long applyId, Integer status) { Apply apply applyMapper.selectById(applyId); // 前置校驗只有待審批狀態(tài)才能進行審批操作 if (apply.getStatus() ! ApplyStatus.PENDING) { throw new BizException(當前狀態(tài)不允許審批操作); } // 用 status 作為更新條件防止并發(fā)場景下的重復審批 int rows applyMapper.updateStatus(applyId, ApplyStatus.PENDING, status); if (rows 0) { throw new BizException(該申請已被處理請勿重復操作); } }這段代碼里最關鍵的是updateStatus這個SQLUPDATE apply SET status #{newStatus} WHERE id #{id} AND status #{oldStatus}。只有舊狀態(tài)匹配時才會更新成功這就是樂觀鎖的思路。雖然一個管理系統(tǒng)的并發(fā)量不會太高但這樣寫以后狀態(tài)絕對不會被非法的操作弄亂。3.3 數據庫設計的坑與補救方案再說三個我實際開發(fā)中遇到的坑。第一個坑是把價格設計成整數類型。培訓機構的課時單價動輒幾十到幾百元還經常有“9.9元體驗課”用整數類型存價格意味著精確到元但如果你存的是折扣價或者涉及金額計算分以下的精度問題就會暴露。MySQL里應該用DECIMAL(10,2)Java里用BigDecimal。用double或者float算錢在金額累加和比較時會出現精度漂移財務對賬的時候就麻煩了。第二個坑是軟刪除和唯一索引沖突。學員表里手機號本來應該是唯一的但如果你做了物理刪除那退費的學員再報名時就可以重新插入一條這時候唯一索引沒問題。但如果你做的是邏輯刪除is_deleted 0/1那被刪除的學員記錄還在表里再次報名插入同一手機號時唯一索引直接拒絕插入。解決方案有兩個一是允許同一個手機號有多條記錄查詢時過濾is_deleted0二是把唯一索引改成聯合字段比如手機號刪除狀態(tài)但這種方式在MyBatis-Plus里實現起來比較別扭。最簡單粗暴的方案是給手機號加一個隨機后綴再刪除比如13800000000_del_20240101這樣既保留了歷史記錄又不影響唯一索引。第三個坑是沒有created_by和updated_by字段。管理系統(tǒng)幾乎所有表格的數據都需要追蹤是誰創(chuàng)建的、誰修改的。很多人做畢設的時候表結構里只有創(chuàng)建時間、修改時間沒有操作人。等后期做“操作日志”或者“數據審計”的時候才發(fā)現要返工。我的建議是每一張業(yè)務表都統(tǒng)一加上create_time、update_time、create_by、update_by這四個基礎字段用MyBatis-Plus的自動填充功能統(tǒng)一維護省心很多。4. 核心模塊實戰(zhàn)從登錄到排課的完整鏈路4.1 登錄鑒權JWT Spring Security的實現要點登錄模塊是所有管理系統(tǒng)的門戶也是安全問題的重災區(qū)。這里我選擇的是JWTJSON Web Token配合Spring Security的方案核心思路是用戶登錄成功后后端生成一個token返回給前端前端后續(xù)每次請求都在Header里帶上這個token后端通過過濾器驗證token的合法性并解析出用戶身份。// JWT工具類核心方法生成token public String generateToken(Long userId, String username, ListString roles) { MapString, Object claims new HashMap(); claims.put(userId, userId); claims.put(username, username); claims.put(roles, roles); return Jwts.builder() .setClaims(claims) .setExpiration(new Date(System.currentTimeMillis() 7 * 24 * 60 * 60 * 1000)) .signWith(SignatureAlgorithm.HS256, SECRET_KEY) .compact(); }這段代碼里token有效期設了7天。實際開發(fā)中你會發(fā)現JWT的有效期不能設太長也不能太短。太長了用戶改了密碼之后老token還能繼續(xù)用有安全隱患太短了用戶操作到一半就提示登錄過期體驗極差。我的習慣是普通登錄接口簽發(fā)7天有效期token用戶修改密碼后強制要求重新登錄。如果你還想做得更完善可以引入Refresh Token機制但作為辦公管理系統(tǒng)這套機制已經足夠。Spring Security配置的核心是放行登錄接口攔截其他接口。具體做法是自定義一個JwtAuthenticationFilter繼承OncePerRequestFilter在過濾器中解析token并設置SecurityContext。配置類里要改的地方主要有三處SecurityFilterChain中放行哪些URL登錄、注冊、驗證碼、ExceptionHandler統(tǒng)一處理未登錄返回401、密碼加密用BCryptPasswordEncoder。這里有個實操中的細節(jié)前端路由守衛(wèi)和后端攔截要配合好。前端在路由跳轉時檢查本地有沒有token沒有就強制回登錄頁后端在接口返回401時讓前端自動清理本地token并跳轉。這兩個環(huán)節(jié)都要做否則會出現前端頁面看得見、接口卻全部401的尷尬情況。4.2 課程與排課模塊一節(jié)課是怎么被管理起來的課程創(chuàng)建是整套系統(tǒng)的起點。管理員在課程管理頁面創(chuàng)建一門課填寫課程名稱、分類、課時數、原價與售價上傳封面圖狀態(tài)默認是“未上架”。此時數據庫中只多了一條課程記錄還不會產生任何業(yè)務流轉。管理員把這個課程關聯到一個班級指定授課老師和上課時間課程才開始有實際意義。班級和排課是這個模塊的難點。比如一個月薪過萬的培訓班每周六上午9點到12點上課一共上16次課。這樣一個班級在系統(tǒng)里怎么落地我的做法是班級表存基礎信息課程ID、教師ID、開始日期、周幾上課、開始時間、結束時間、總課時數每次上課記錄單獨放在“上課記錄表”里。/** * 根據班級排課規(guī)則生成具體上課記錄 * 這里面有一個很容易被忽略的業(yè)務問題節(jié)假日是否停課 */ public void generateClassSessions(Long classId, LocalDate startDate, Integer weekday, LocalTime startTime, LocalTime endTime, Integer totalSessions) { ListClassSession sessions new ArrayList(); LocalDate date startDate; int count 0; while (count totalSessions) { DayOfWeek dayOfWeek date.getDayOfWeek(); if (dayOfWeek.getValue() weekday) { // 排除節(jié)假日這里調用一個系統(tǒng)配置表來判斷 if (!isHoliday(date)) { ClassSession session new ClassSession(); session.setClassId(classId); session.setSessionDate(date); session.setStartTime(startTime); session.setEndTime(endTime); session.setStatus(SessionStatus.NOT_STARTED); sessions.add(session); count; } } date date.plusDays(1); } classSessionMapper.batchInsert(sessions); }這段代碼把“每周六上課”的具體日期全部算出來。另外一個重點是上課記錄表與班級狀態(tài)聯動如果班級被停課或結課了對應的上課記錄狀態(tài)也要跟著變。這里的思路是“生成記錄但不自動鎖定”上課記錄的真正狀態(tài)是由“是否已點名”決定的。老師可以在上課記錄上操作“開始上課”這時候系統(tǒng)自動刷新班級狀態(tài)為“開課中”然后進行點名、記錄考勤。4.3 報名與學員管理事務邊界要抓住報名是整個系統(tǒng)里最需要小心操作的場景——它同時涉及學員數據、班級人數、財務數據、課時賬戶四個方面的變更。在Spring中一個方法需要加上Transactional事務注解保證要么全部成功、要么全部回滾。事務的邊界我用一個例子來說明。學員報名流程包含以下步驟新增學員記錄如果學員不存在 → 修改班級當前人數 1 → 新增報名記錄 → 根據繳費金額增加學員的課時余額 → 寫入操作日志。這五個操作里任何一步失敗前面已經執(zhí)行成功的步驟也必須回滾。否則就會出現“班級人數增加了但報名記錄沒有生成”或者“繳費金額收到了但學員課時沒到賬”的慘案。這段邏輯里其實還有一個業(yè)務判斷容易踩坑同一個學員重復報名同一個班級。按照正常業(yè)務流程學員不允許重復報名同一個班。但是如果你只靠前端按鈕的“禁用”來控制用戶直接調接口就能繞過。后端必須寫校驗邏輯查報名表里是否存在該學員ID 該班級ID 狀態(tài)為有效的記錄。Transactional(rollbackFor Exception.class) public void enrollStudent(EnrollDTO dto) { // 1. 校驗學員是否存在不存在則創(chuàng)建 // 2. 校驗班級人數是否已滿 // 3. 校驗是否重復報名學員ID 班級ID 未退費 int count enrollMapper.countByStudentAndClass(dto.getStudentId(), dto.getClassId(), 0); if (count 0) { throw new BizException(該學員已報名此班級請勿重復報名); } // 4. 新增報名記錄 修改班級人數 增加課時余額 寫日志 }課時余額的統(tǒng)計邏輯也需要想清楚。簡單方案是報名的同時給學員賬戶扣一筆錢、加課時數然后每次上課消耗課時時做減法。但這種方式在退費、轉班、贈送課時等場景里容易出混亂所以我在設計時多建了一張“課時流水表”報名時插入一條“充值時”的流水上課扣課時時插入一條“消耗”的流水學員當前剩余課時數就是充值與消耗之和。這樣后續(xù)出財務審計報表的時候每一筆課時變動都有來源可追溯。4.4 辦公審批模塊一個通用審批流程怎么落地很多用戶看到“辦公系統(tǒng)”就會自然地期待OA審批功能。但培訓機構場景下的審批往往比想象中簡單無非是請假申請、調課申請、退費申請、采購申請。基于這個現實我設計了一個比較輕量的通用審批數據結構。審批主表id、申請類型請假/調課/退費、申請人ID、申請原因、當前節(jié)點、狀態(tài)待審批/通過/駁回/撤回 審批記錄表id、審批單ID、審批人ID、審批結論通過/駁回、審批意見、審批時間這里的核心設計是審批流支持多級審批。比如采購申請可能就要“教務主管審批 → 校長終審”兩步。我的做法是審批訂單的“當前節(jié)點”不是存一個固定數字而是通過一個approval_flow_config配置表動態(tài)算出。每一級審批通過后當前節(jié)點 1直到達到最終節(jié)點后整體狀態(tài)變?yōu)椤耙淹ㄟ^”。這個方案靈活度高不同審批類型可以配置不同層級的審批流程。調課申請是這個模塊里邏輯最重的場景。它本質上是一個“修改班級上課時間”的申請審批通過后要自動清理舊的排課記錄并生成新的上課記錄。這類聯動操作可以放在審批通過后的回調方法里public void onApprovePass(String applyType, Long bizId) { switch (applyType) { case SCHEDULE_CHANGE: // 獲取舊排課規(guī)則清空原有上課記錄生成新的上課記錄 regenerateSessions(bizId); break; case REFUND: // 計算應退金額生成紅沖流水關閉報名狀態(tài)班級人數減一 processRefund(bizId); break; // 其他審批類型... } }這個回調方法的設計讓審批模塊和業(yè)務模塊解耦了審批模塊只需要管理“審批單”的狀態(tài)流轉至于審批通過之后要做什么交給對應業(yè)務模塊自己處理。這種方式在代碼層面雖然看起來多了一次switch判斷但整個系統(tǒng)的擴展性會好很多。以后要加一種新審批類型只需要在審批配置表中配置然后在回調方法里新增一個case即可。4.5 文件上傳頭像、課程封面與導入模板教育培訓系統(tǒng)里的文件上傳主要有三類用戶頭像、課程封面、Excel導入學員信息。最穩(wěn)妥的做法是后端接收文件 → 保存到本地磁盤 → 返回可訪問URL。開發(fā)時我通常把文件存儲路徑配置成可外部訪問的靜態(tài)資源目錄。簡單版實現在SpringBoot里只需做兩件事第一在application.yml里配置上傳文件大小限制和存儲目錄第二寫一個文件上傳的Controller方法用MultipartFile接收文件并調用transferTo()保存。spring: servlet: multipart: max-file-size: 10MB max-request-size: 20MB custom: upload-path: /data/files/ access-path: /files/**代碼里再重寫WebMvcConfigurer把這個上傳目錄映射成靜態(tài)資源路徑Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/files/**) .addResourceLocations(file: uploadPath); }這個方案的特點就是簡單、零依賴適合學習和測試場景。但如果你要部署到生產環(huán)境或者云服務器上把文件直接存在應用服務器本地是有隱患的磁盤滿了沒人知道、服務重啟的遷移麻煩。我的經驗是開發(fā)階段先用本地存儲等上線前再替換為對象存儲服務。我在代碼里預留了接口上傳服務先定義一個接口本地存儲和云存儲各自實現這樣切換時只改一行配置就行。這個設計雖然在一開始多花了一點時間但后面省了很多事。5. 實操過程如何把項目跑起來5.1 快速部署后端前端數據庫的一鍵式啟動文檔里說的“附源碼文檔”指的是一套完整可運行的代碼和配套說明。但拿到源碼后能不能跑起來又是另一回事。我見過太多人卡在環(huán)境配置這一步了。這里我把最關鍵的啟動步驟梳理一下。后端啟動步驟導入數據庫腳本通常是一個.sql文件→ 修改application.yml里的數據庫賬號密碼 → 啟動Redis如果項目用到→ 啟動SpringBoot應用確認8080端口無沖突 → 用Swagger或者接口文檔做一次冒煙測試比如調用登錄接口。前端啟動步驟安裝Node.js建議16版本→ 進入前端目錄執(zhí)行npm install→ 修改.env.development里的接口代理地址 → 執(zhí)行npm run dev→ 瀏覽器訪問前端頁面。所謂“能跑起來”最低標準就是打開頁面 → 用管理員賬號登錄 → 能正常瀏覽菜單 → 能創(chuàng)建一個課程 → 能新增一個學員 → 能退出登錄。只要這五個操作全部走通說明代碼沒有大問題可以開始進行二次開發(fā)。這里提示一個常見問題數據庫初始化時很多同學發(fā)現執(zhí)行.sql腳本時報錯提示表不存在。這多半是因為腳本里的SQL語句包含了建庫語句CREATE DATABASE而你當前位置已經在其他數據庫下執(zhí)行導致的。解決很簡單腳本文件開頭如果有USE xxx語句先手動執(zhí)行它切換數據庫再執(zhí)行后面的單詞。另一種更穩(wěn)妥的方式是先在數據庫管理工具里創(chuàng)建一個空庫然后選擇“運行SQL文件”導入腳本。5.2 改造指南如何把項目變成你自己的畢設拿到一套源碼之后真正要面對的挑戰(zhàn)是——怎么把它變成有自己的特色、能過查重、能上講臺答辯的項目。我的看法是與其糾結“怎么隱藏源碼來源”不如花時間做一次有深度的業(yè)務改造。改造方向一般從這三個角度切入第一個方向是業(yè)務流程拓展。比如原始系統(tǒng)學員報名后需要人工確認到賬你可以做成“報名成功后自動生成電子合同和發(fā)票申請”原始系統(tǒng)只能按“每節(jié)課消耗固定課時”你可以改成“支持按分鐘計費的自習室模式”。這些改造不是換個名字而是真實地改變了數據結構和業(yè)務邏輯答辯的時候你能說得清楚每一步。第二個方向是功能增強。比如在課時消耗模塊增加“課程到期自動提醒”用Spring的定時任務每天掃描即將結課的班級并給教務人員發(fā)送站內通知?;蛘呓o課程增加“試聽次數限制”每個學員對同一課程只能試聽一次防止薅羊毛。這類功能獨立性強新增幾張表或者在已有表上增加字段就行不破壞原有的代碼結構。第三個方向是數據分析與可視化。給系統(tǒng)配上ECharts圖表把“每月報名人數趨勢”“課程類別占比”“教師課時量對比”做成直觀的儀表盤頁面。這里的工作量集中在聚合查詢SQL上比如SELECT DATE_FORMAT(create_time,%Y-%m) AS month, COUNT(*) FROM enroll WHERE ... GROUP BY month。這種改造既好看又容易講還能體現你的數據庫查詢能力。5.3 文檔結構一份完整技術文檔應該怎么寫很多同學只看重代碼忽略了文檔。但畢設或者開源項目的評分中文檔占的比重遠比想象中高。一份合格的工程技術文檔至少應該包含以下內容項目背景與意義用兩三百字說明為什么要做這個系統(tǒng)解決了什么實際問題需求分析功能需求、非功能需求性能、安全、易用性技術選型及理由為什么用SpringBoot、為什么用Vue、為什么用MySQL每個選擇要寫出對比和取舍數據庫設計ER圖可以用表格代替 每張表的核心字段說明 關鍵表之間的關聯關系系統(tǒng)詳細設計模塊劃分、核心流程畫文字描述版流程圖、接口列表系統(tǒng)測試至少列出10條核心測試用例覆蓋登錄、報名、審批等關鍵業(yè)務路徑項目總結完成度、不足與改進方向寫文檔有一個小技巧先寫接口文檔再寫詳細設計最后寫需求分析。原因是接口定義了你到底做了什么寫起來最順手根據接口可以反推設計邏輯需求分析是給外行看的內容放在最后寫反而更容易寫出高度。6. 常見問題與排查技巧實錄6.1 這六大坑我替你先踩了一遍做這類項目有幾個高頻問題基本每個開發(fā)者都會遇到。我把最常見的整理成一張表格方便對照排查問題現象根本原因解決方案啟動后端口被占用8080端口已被其他程序使用命令行執(zhí)行netstat -ano前端調接口報404接口代理配置錯誤檢查vue.config.js里的proxy配置target是否指向后端地址登錄后接口返回403Spring Security攔截了預檢請求在SecurityConfig中放行OPTIONS請求并配置CorsConfigurationSource允許跨域上傳圖片無法預覽靜態(tài)資源映射路徑配錯檢查配置類中addResourceHandlers的路徑是否與/files/**匹配且uploadPath以file:開頭數據庫表名或字段名報錯表名與MySQL保留字沖突使用反引號包裹表名或者在實體類上用TableName指定表名前端編譯時提示模塊找不到npm install安裝不完整刪除node_modules目錄后執(zhí)行npm install重新安裝這里重點說下第一個問題“端口被占用”。很多人開發(fā)時同時開了好幾個項目8080端口經常被占用。查占用進程最直觀的方法是Windows下執(zhí)行netstat -aon | findstr :8080記住最后一列的PID然后執(zhí)行taskkill /PID {PID} /F結束進程。Mac系統(tǒng)就簡單一些執(zhí)行l(wèi)sof -i :8080找到進程后kill -9 {PID}。不過更推薦的做法是每個項目都在application.yml里配置不同的端口比如這個項目用8080另一個用8081避免端口沖突。6.2 登錄環(huán)節(jié)的隱藏坑BCrypt密碼校驗失敗如果登錄報了Encoded password does not look like BCrypt這個錯原因基本只有一個數據庫里的密碼字段不是BCrypt格式。Spring Security的BCryptPasswordEncoder要求數據庫中存儲的密碼必須是{bcrypt}前綴加哈希值的形式或者至少是$2a$開頭的BCrypt哈希串。如果你在導入數據的時候直接把明文密碼“123456”寫進了數據庫BCrypt校驗的時候就會報這個錯。最簡單的解決辦法是寫一個臨時的數據初始化接口給需要登錄的用戶統(tǒng)一生成BCrypt加密的密碼public static void main(String[] args) { BCryptPasswordEncoder encoder new BCryptPasswordEncoder(); System.out.println(encoder.encode(123456)); }把這個輸出寫入數據庫的密碼字段然后用“123456”去登錄就正常了。另外提醒一句線上系統(tǒng)一定不要用弱密碼但開發(fā)階段用一個統(tǒng)一測試密碼很方便真正部署的時候記得改掉。6.3 部署上線注意的四個細節(jié)本地開發(fā)跑通之后真實部署還會有一些差異。如果你打算把這個系統(tǒng)部署到服務器上下面幾個細節(jié)值得提前考慮第一數據庫備份策略。培訓機構的數據是身家性命務必配置自動備份。最簡單的方案是Linux服務器上用crontab定時執(zhí)行mysqldump備份文件保留最近7天再配合云服務商的對象存儲定期異地上傳。第二HTTPS證書。如果系統(tǒng)需要公網訪問最好一開始就申請免費SSL證書配置上。原因很簡單瀏覽器對HTTP的限制越來越多而且用戶密碼在明文HTTP下傳輸非常危險。免費的證書現在很多部署也只要十幾分鐘。第三日志收集與監(jiān)控。生產環(huán)境沒有日志就是睜眼瞎。SpringBoot默認集成了Logback建議配置按日期和大小滾動分割日志文件保留日志目錄讓出問題的時候能搜索。有條件的話接入一個簡單的監(jiān)控告警比如磁盤空間不足、服務宕機自動恢復能省掉很多半夜出問題的痛苦。第四前端部署方式。Vue項目打包后生成的是純靜態(tài)文件可以放在Nginx里直接跑。這個環(huán)節(jié)里最容易出錯的是前端路由刷新404的問題因為Vue Router的history模式在Nginx下默認找不到對應的后端路由必須在Nginx的配置文件里加try_files $uri $uri/ /index.html;。針對這個問題如果你不熟悉Nginx配置可以先用hash模式跑路由等有余力了再切history模式。6.4 加分細節(jié)如何在答辯和演示中脫穎而出先說一個別人不一定告訴你的點評委或者用戶最關心的往往不是你實現了多少功能而是你是否理解每一個功能為什么這么做。所以答辯前建議把“刪除學員時數據如何處理”“審批駁回后流程怎么走”“課時消耗如何統(tǒng)計”這類業(yè)務細節(jié)的代碼過一遍做到能給外行講明白的程度。另外一個增加印象分的實操細節(jié)是數據填充。答辯演示之前先在數據庫里填充一批看起來真實的模擬數據比如30名學員、20門課程、帶各種狀態(tài)的審批單若干。演示的時候操作不會顯得空截圖素材也好看。這個步驟可以提前寫一個DataInitializer類在項目啟動時自動檢測數據量并插入模擬數據做完之后你會發(fā)現整個系統(tǒng)的頁面質感完全不一樣。7. 最后再分享兩個我自己用著很舒服的設計細節(jié)第一個是統(tǒng)一返回體R對象的規(guī)范。我從第一行業(yè)務代碼開始就堅持所有接口返回統(tǒng)一的JSON結構{ code: 200, message: 操作成功, data: {} }有人說這樣做有點死板但實際開發(fā)中統(tǒng)一返回體最大的好處是——前端可以在響應攔截器里一次性處理所有接口的報錯邏輯。不管是登錄過期、參數異常、還是服務器異常只要code不是200前端統(tǒng)一彈出message提示完全不需要在每個接口里重復寫一遍。這種做法讓長期維護變得異常輕松。第二個是時間字段的統(tǒng)一處理。MySQL中時間存儲建議用datetimeJava實體中用LocalDateTime前端交互時用時間戳。這三個轉換很容易埋坑MySQL的datetime用字符串傳輸給前端前端解析會出現時區(qū)偏差的問題后端返回LocalDateTime給前端如果沒配置全局格式化又會變成一串難看的數組。我的解決方案是在SpringBoot中配置全局的Jackson時間格式化spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT8配合在實體類的LocalDateTime字段上加JsonFormat(pattern yyyy-MM-dd HH:mm:ss)注解。這樣整個系統(tǒng)的所有時間顯示都是統(tǒng)一的“2024-06-01 14:30:00”格式前端不用做任何額外處理。這個小細節(jié)讓我在聯調階段省了不少溝通成本。做這類系統(tǒng)我最真實的感受是管理系統(tǒng)的復雜度不在技術而在業(yè)務。把培訓機構線下那些瑣碎的流程梳理清楚用數據結構去表達它們之間的關聯再通過接口把操作串起來整個系統(tǒng)的骨架就立住了。技術上的東西反而很成熟框架選對了剩下的就是耐心和細致。如果你正在做或者打算做一個類似的教育辦公系統(tǒng)我的建議是別貪多先把課程、班級、學員、報名這一條主鏈路跑通再去擴展審批、統(tǒng)計那些外圍功能。一條鏈路打通之后你自然就明白哪些地方需要優(yōu)化、哪些功能值得擴展了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99爽视频| 五月婷在线视频免费播放| 欧美一级操逼视频| www,色婷婷| 玖玖爱伊人| 亭亭五月丁香五月天激情| 原琪琪色影院| 熟女人妻一区二区三区免费看| 久久亚洲网| 高清无码网址| 五月天色丁香| 99热精品网| 播丁香五月婷婷欧美| 日韩欧美一级大黄网站| 久久99久久99精品免视看婷婷| 成人av免费观看| 婷婷 亚洲图片 丁香| 中文字幕中文有码在线| 亭亭五月丁香五月天激情| 婷婷月综合| 五月J香蕉婷婷| 99热激情| 天天爽天天操| 夜夜操夜夜姧| 五月开心六月婷婷在线播放网站| 99热99久久| www.婷婷com| 99.N在线视频| 丁香五月激情婷婷| 九九色综合| 国产操逼网站| 噼里啪啦在线观看免费完整版视频| 五月天五月婷五月激情网| 9 1 A v久久久| 99精品久久| 人妻精品久久久久久久| 五月天激情图| 五月色丁香成人| 激情床戏| 99综合色色色| 久久精品99| 99热最新国内| 色色99| 国产精品色婷婷99久久精品| 激情五月色综合| 97AV在线视频| 五月丁香婷草| 丁香五月AV| 欧美色激情四射| 99热婷婷| 色婷婷久久久| 五月婷婷啪啪啪| 五月综合在线婷婷图片| 亚洲婷婷五月天在线激情综合网| 九九re精品视频在线观看| 狠狠干狠狠操狠狠爱| 丁香五月综合| 大香蕉色婷婷伊人在线| 91碰九色| 久久婷五月婷| 丁香五月综合| 99人这里只有精品| 色久五月天| 午夜爱爱爱成人| 久久欧洲久久| 亚洲色vA| 久色资源网| 久久五月综合| 99精品福利视频| 日日爽日日| 日韩精品色| 九九草热在线观看| 色 色 色综合com| 99色视频在线观看| 伊人网色婷婷五月天| 丁香六月婷婷色XXXX| 深爱五月婷婷开心中文字幕| 婷婷六月综合在线| 九九视频这里是精品五月| 99久久99热| 丁香五月激情六月| 激情 婷婷| 夜夜夜夜夜操| 色色操| 人妻人人操| 五月天婷婷视频小说| 五月婷婷开心五月| 日日操夜夜爽| 婷婷成人视频| 香蕉久久五月| 日亚二欧美| 婷婷久久18| 夜夜撸日日骑| 99re思思热久久| 97色永久免费视频| 九月丁香| 五月丁香亭亭电影久久| 丁香花五月天激情| 第四色五月激情网| 乱轮A片| 婷婷久久丁香| 五月激情六月宗合| 大鸡巴伊人网| 免费AV在线| 91超级碰碰| www.91久久| 五月色婷婷亚洲 | 大香蕉五月丁香| 五月激情综合网| 婷婷伊人五月天| www.丁香六月婷婷久久天堂影院.con| 国产av影片| 五月丁香爱婷婷深深| 天天成人综合视频| 人妻无码精品一区| 五月婷婷精品| 五月欧美色播| 色综合大香蕉| 五月婷婷色欲| 夜夜 操无码| 日日日影院| 亚洲激情AV| 欧美情色电影一区二区| 另类视在线| 婷婷久久久久| 色色色色av777| 淫视馆AV在线| 超碰中文字幕在线| 天天射综合网夜夜操| 超碰在线人人| 伊人碰碰婷婷| 日韩成人精品一区久久久久| 综合色99| 九九av在线| 婷婷激情综合网| 欧美成人网99网| 五月花婷婷| 国产99久9在线| 婷婷丁香成人| 久久Xx| 97人妻碰碰中文无码久热丝袜| 狠狠色综合网站久久久久| 婷婷丁香高潮了| 天天操B| 色五月天 丁香| 亚洲色色爱| 日本色天堂| 亚洲网在线观看| 婷婷丁香六月综合激情站| 色六月视频| 狠狠干婷婷| 婷婷黄色| www色色com| 99热在线中文字幕| 99在线精品观看99| 成人丁香五月| 婷婷开心激情| 久9无码视频| 人妻久久久久久久久久| 一本道在线电影| 婷婷色五月天色| 六月婷婷私欲| 亚洲免费成人电影AV| 狠狠色官网| 97干在线观看视频| 久九色| www.精品99| 狠狠色大香蕉| 婷婷丁香在线播放| 欧在线一区| 久久五月丁香伊人青草| XX色综合| 99热99这里有免费的精品| 综合色色色| 激情丁香婷婷六月天| 婷婷久久久| 久久刺激网| 婷婷涩五月| 97人操人免费视频| 欧美色五月| 婷婷五月中文在线| 国产成人精品一区二区三区视频 | 亚洲热视频| 夜夜操加勒比| 九九草热在线观看| 久艹久| 六月丁香婷婷综合在线| 9久久久久久久久久久| 久久久久久97| 欧洲99视频在线| 激情五月天婷婷| 婷婷久久久久久久| 91久久18| www热久久yy9| 五月总合激情网| 国产在线aaa片一区二区99| 99色热视频| 九九热精品| 东京热免费视频| 六月婷婷五月丁香| 五月婷婷亞洲中文| 91九色在线| 大香蕉五月天婷婷| 色小说五月天| 亚洲小视频免费播放| 色色色五月婷婷| 欧洲99视频在线| 中文人妻AV久久人妻18| 噜噜色婷婷| 九九99九九99九九99视频网| 热91久| 婷婷五月天成人小说| 干一干xxxx| 亚洲五月花| 爱草视频在线| 91色逼| 99热这里只有精品9| 超碰chaompinm| 操九色| 色婷婷综合久色AV五色最新| 微拍92| 99re视频在线播放| 五月草影视| enecarbon-materials.com污K127封锁请涟系@wip1688 | 少妇水多A片太爽了| 一级性爱视频| 天天爽天天弄| 久久人人九九| 色婷婷婷婷| 九九AV在线| 色日本颜射| 99啪啪视频| 色爱综合视频| 99久久九九| 91干视频| 狠狠艹狠狠艹| 婷婷五月激情六月丁香 | 亚洲人妻av| 亚洲国产成人在线| 丁香五月综合婷婷| 91色涩| 亚洲无码色色| 人妻中文字幕网| 九九超日本| wwccc久久久| 大香蕉五月天婷婷| 亚洲婷婷五月草久| 夜夜嗨一区二区三区直播内容 | 五月丁香六月激情综合| 伊人婷婷大香蕉| 午夜日日| 国产精品美女| 午夜成人网站在线观看| 色5月婷婷| 91色在线| 精品久久99| 色播婷婷五月天| 久色网址| 开心 五月 综合| 丁香五月av| 99开心五月五月丁香激情| 丁香五月久久| 天天做天天爱天天摸| 六月丁香激情网| 九玖视频这里只有精品| 丁香六月婷婷久久综合| 丁香五月综合在线播放| 日韩三十六页| 人人干人人看| 婷婷五月激情综合| 思思热久久久久思思热| 五月天婷婷Av| 免费黄色AV| 性生活视频98791| 色99热| 久久刺激网| 99综合久久| 99re6热在线精品视频播放速度| 天天干天天操天天拍| 久久丁香| 亚洲V国产V欧美V久久久久久| 九九人人自拍| 日狠狠| 激情99热| 另类丁香综合| 99视频在线精品免费观看2| 五月丁香成人网| 99久在线精品99re8热| 99色看这里只有精品| 色婷婷五月天av在线| 色综合天天天天做夜夜| 五月丁香六月成人| 久草热8精品视频在线观看 | 99免费热视频在线| 强辱丰满人妻HD中文字幕| 色五月婷婷天天操夜夜操| 亚洲综合色婷婷文学| 婷婷六月插屄激情| 九九精品99久久久| 丁香六月婷婷| 九九99在线| 91狠狠色| 九九久久综合网站| 九九热99免费视频| 亚洲情综合五月天| 婷婷色在线播放| 五月丁欧美| 97操操网| 五月丁香好婷婷A片网| 99热免费网站| 欧亚中文A V| 玖玖99免费视频| 亚洲VA欧美VA| 综合精品99| 六月激情综合| 思思热视频在线观看| 丁香五月首页| 狠狠狠狠狠狠草| 99色干| 激情丁香五月激情婷婷| 操操国产| 精品九九久久| 97色色视频| 色婷婷五月天激情在线观看| 99r这里只有精品哦| 91在线视频观看午夜福利| 激情99| 日韩狠狠色| 中文字幕在线免费看线人| 成人五月天视频| WWW·天天操·视频?| 久婷婷久草| 美女五月天| 五月天六月婷婷电影| 97人人射| 99re青青草| 色99色| 夜夜干 夜夜操| 丁香五月婷婷深爱综合激情| 午夜丁香 婷婷| 在线观看国产高清视频免费网站 | 欧美成人一区二区三区在线视频| 综合99综合久久久久久久| 天天干肏夜夜| 九九激情网| 色蜜婷婷| 六月丁香AV| 五月丁香六月激情在线| 99热在线中文字幕| 少妇激情五月天| 狠狠狠狠狠狠草| 欧洲S级在线观看| WWW.HENHENL.| 男人操女人高潮91视频| 中文字幕 中文字幕明步| 五月丁香六月婷婷网| 五月婷无码| 4399亚洲视频| 欧美三级黄色片久久| 99久热视频在线| 久久久婷| 色五月五月婷婷| 午夜婷婷久久| 九九热精品在线| 精品免费99| 91免费在线视频6| 99热婷婷| 欧美精品99| 久久婷婷电影| 第四色色六月色综合| 97五月天| 九九在线精品| 日日干日日| 人妻人人操| 激情爱爱网站| 超碰99资源站| 性爱视频久久| 激情五月天之六月婷婷| 久久亚洲婷婷| 91凹凸在线| 久久婷婷六月综合综合| 色99无码| 日本天堂免费99| 丁香五月成人自拍| 亚洲视频码| 97色色婷婷| 91欧美| 996热re视频精品视频| 五月天激情视频| 直接看的AV| 亚洲综合丁香五月天| 色五月成人在线| 激情五月亚洲综合网| 婷婷丁香色五月天久久88| 久久激情视频| 色之综合网| wwW天天干| 激情综合播播| 先锋男人99资源| 新99思思视频| 五月丁花色综合网| 久8色色| 五月六月激情| 综合网五月| 激情五月婷婷五月丁香五月开心五月| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 伊人99热| 日韩黄在免| 婷婷五月丁香基| 婷婷在线中文字幕| 久草五月婷| 亚洲午夜一区二区| 中文字幕在线日亚州9| 香蕉综合在线| 激情播丁香| 午夜九九电影| 精品51XX| 色婷婷激情四射视频| 五月天丁香婷| 亚洲成人在线播放| 五月天天丁香婷婷| 国产色99| 九九色中文| 婷婷丁香五月天色播网站| 五月丁香色婷婷伊人| 激情亚洲五月| 久久五月天色| 人妻AV在线| 丁香六月婷婷久久综合| 婷婷综合在线网| 一区操| 成人在线综合| 99 热国产在| 天天舔天天摸天天射| 婷婷五月天在婷| 激情五月色播五月| www,天天干| 风流少妇A片一区二区蜜桃| 激情五月黄色| 97操碰视频| 九九视频这里是精品五月| 日本AAAAAAAAAAAAAA片| 九月激情网| 国产做爰视频免费播放| 1024欧美日韩精品久久久| 国产综合婷婷| 精品国产va久久久久久久| 天天操天天日天天操| 激情五月天综合网| www.婷婷六月天| 91综合网| 色婷婷综合久色AV五色最新| 99热费观看| 色婷婷亚洲婷婷| 婷色五月天| 一本道在线电影| 日本天堂久久| 男人天堂伊人五月丁香| 婷婷五月天综合在线| 狠狠草狠狠草| 伊人大蕉香| 久久精彩综合视频| 婷婷国产成人| AA片在线观看视频在线播放| 久久与婷婷| 亚洲爱爱无码婷婷色五月| 五月丁香六月婷婷色日| 丁香五月电影| 一级二级色大片| 狠狠 婷婷| 五月婷婷导航| 色五月丁香A欧美com | 超碰人妻公开在线| 亚洲精品视频在线播放| 日日夜夜久| 人人摸人人干| 99热综合在线| 亚洲情欲| 人操综合| 视频一二区| 亚洲无码成人性爰网| 丁香婷婷九月| 久热9热| 激情婷婷亚洲五月| 五月天婷婷av| 五月婷婷六月综合| 五月丁香激情深爱婷婷| 亚洲精品一区中文字幕乱码| 超碰九九热| 天天做天天爱天天综合网| 色激情五月天| 97久久精品| 五月天婷婷无码视频| 日日干夜夜干| 五月婷婷六月丁香免费| 亚洲啪啪网| 色婷婷亚洲综合网站| 激情色中文| 综合网啪| 九九热在线视频观看免费10| 婷婷五月天成人综合网| 中文字幕乱码亚洲精品一区| 热99国产精品| 久久99婷婷| 91xxxx九色| 婷婷激情5月| 亚洲乱码精品久久久久..| 日本欧美国产| 99视频激情四射| 丁香狠狠色婷婷久久无码视频| 激情五婷精品网在线观看网址| 五月丁香六月婷婷久久肏| 色99xx| 五月丁香综合啪啪対白| 99精彩视频| 玖玖在线视频| 五月天婷婷色综合| 精品婷婷| 99热久| 97色欧美| 97色在线观看视频| 97黑人精品区| 国产精品美女| 九洲一级A片| 中文久久婷婷| 日韩欧美成人片| 激情久久丁香| 任你搞网站| www.天天干| 99热99草97| 深爱五月激情| 色婷婷影| 91男同| 日韩狠狠色| 91avse| 激情综合区| 五月婷色| 26uuu.| 色色亚洲| 五月丁香婷婷激激激综合网色播| 久久受www免费人成| 亚洲一区二区无码蜜乳av| 久久精品一区二区三区四区| 久热中文字幕在线线观看 | 五月色婷婷综合| 激情骚五月| 婷婷五月激情丁香| 久婷久婷激情肉| 热五月婷婷| 丁香六月久久| 五月天开心网| 开心五月婷婷激情网| 天天日天天肏天天奸| 五月天激情图| 婷婷五月六月丁香| 久久精品9| 色色丁香| www,奇米影视| 色在线视频网2025| 日本啪啪天堂| 亚洲国产精品SUV| 99热首页在线30| 蒲京久久无码视频| 丁香五月婷婷五月天| 激情视频91| 激情五月综合网| 无码网| 97一区二区| 99爱在线精品视频免费观看| 婷婷丁香五月天影院 | 天天摸天天肏| 国产乱子轮XXX农村| 欧美激情-区二区三区| 久久国产高清| 夜夜干夜夜操| 99热这里只有精品1998| 色99在线看| 五月天色色色| 激情黄色小说五月天| 成人人操| 日韩人妻无码专区| 婷婷五月丁香综合人妻| 欧美精品A片一区在线观看| 婷婷导航| 婷婷激情综合网| 9超碰在线| 99爱爱| 五月丁香啪啪拍| 九月av在线| 99ri在线视频| 日日狠夜夜狠| 99九九中文字幕视频| 天天干天天干天天操| 五月丁香婷婷婷婷综合网| 亚洲av成人一区二区电影在线| 亚洲情色一区| 免费观看的AV| 最新久久网址| 婷婷亚洲在线| 婷婷91| 激情激情激情网| 99资源在线视频| 丁香五月影院| 天天爱综合网| 色9色| 97丁香视频| 91一起操| 开心网五月色婷婷| 爱草视频在线观看| 9精品视频在线观看| 六月丁香五月婷婷| 五月丁香婷婷免费视频| 91视屏在线观看com.wwwvv| 天天综合91入口| 久久香蕉影院| 久久婷婷综| 日夜夜天天| 日韩欧美一级大黄网站| 91狼友视频在线观看| 精品无码视频| 亚洲五月丁香综合网| 4438全国最大视频成人网站在线观看| 91啪啪视频| 538在线精品| 一區四區歐美日韓| 久久久久久久97| 色综合久久8| 亚洲色色色| 丁香五月最新地址| 亚洲狠狠狠| 婷婷六月丁香在线| 91超碰在线观看| 爱操天堂| 中文字幕精品无码一区二区| 五月婷婷狠狠干| 秋霞电影理论| 第四色五月激情网| 婷婷午夜精品久久久| 亚洲美女裸体被操在线观看| 成年人丁香五月| 九九热在线观看视频| 五月丁香综合久久| AV电影在线播放| 久热伊人在91| 果冻传媒A片一二三区| 五月色亚洲| 在线天堂9| 欧美美美女性色视频| 色久五月| 五月激情丁香久久综合网| 日本久久99久久| 婷婷六月成人| 五月激情在线| www.狠狠| 日本久久天堂| 大香蕉婷婷丁香天堂AV| 五月天播播中文字幕| 国产高清RV综合aVa| 久久五月天精品视频| 97超碰在线免费观看| 激情色情五月天| 丁香五月亚洲综合丝袜| 欧美黑人巨大性生话| 色色色色网| 久热免费视频| 婷婷色五月在线视频| 开心五月婷婷99| 6080av| 99精品视频在线6| 久久久久久久8| 涩五月丝袜婷婷| 欧美日韩国产一二区| www.婷婷com| 强辱丰满人妻HD中文字幕| 婷婷99狠狠| 一起草Av| 婷婷五月天成人| 国产操碰| 狠狠搞狠狠操| 丁香激情网| 国产精品美女| 成人版视频在线观看| 99精品网| av久热| 色999五月色| 国产成人av在线播放| 五月天激情久久| 99精品免费视频| 日本色五月婷婷| 日韩aaa| 五月天久久综合| 亚洲在线综合| 日本色道视频网站| 开心激情网五月天| 日韩无码专区| 国产暴力强伦轩1区二区小说| 五月婷婷激情网| 丰满少妇猛烈A片免费看观看| 拍真实国产伦偷精品| 26uuu成人网| 激情第四色| 亚洲日本韩国| 久久综合五月情| 色噜久| 91丨九色丨熟女| 婷婷久久免费| 色10月婷婷视频| 精品国产人人爱人人| 玖操97| 五月激情网站| 色综合久久44| 亚洲激情综合| 亚洲99精品九九在线| 九九成年视频| 8区视频在线| 五月婷婷在线短视频| 五月丁婷婷| 色插综合网| 丁香成人色情五月天| 天天干天天干天天| 色色色色综合| 性做久久久久久久免费看| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 婷婷丁香五月色偷偷| 狼友视频在线观看18| 五月丁香六月婷婷中合网| 五月婷婷视频ab| 超碰国产在线观看| 色婷婷久久| 婷婷色色宗合网| www,色婷婷| 色五月婷婷久久| 婷婷六月激情丁香| 丁香五月天婷婷中文字幕| 99久久6| 久久久久久久久久久久久9| www一起操在线观看| 九九Av| 播五月丁香六月| 天天肏在线观看| 国产AV一区二区三区最新精品| 伊人九九九久| www久久99| AV国产有码| 成人视频在线免费播放| 亚洲人妻av伦理| 亚洲AV永久无码影院黑人| 午夜成人AV在线| 色婷婷精品小视频| 五月婷婷视频| .精品久久久麻豆国产精品| 丁香五月天天| 天天人人天天爽| 国产.亚洲.欧洲视频在线| 99热这里有精品| 欧美性交一区二区三区| 秋霞三级色戒| 亚洲另类视频| 欧美成人精品三区综合A片| 久久影视婷婷五月| 婷婷5月天av| 丁香五月激情网| 亚洲视频在线网站| 国产成人+综合亚洲+天堂| 色丁香久综合在线久综合在线观看| 天堂网啪啪| 综合AV网| 天天日日人| 激情 婷婷| 婷婷五月丁香99| 五月丁香六月婷婷精品| 久久九九国产精品怡红院| 午夜成人片400| 99re久久| 精品丁香五月天在线播放| 少妇人妻偷人精品无码视频新浪| 色99自拍| 99热99这里有免费的精品| 97色色婷婷| 九九九九成人| 五月天色婷婷av| 丁香五月天资源网| 久777| 色情五月综合婷婷| 婷婷丁香五月色| 亚洲日韩操B| 婷婷五月天Av| 婷婷五月丁香基地| 欧美99视频| 丁香五月六月婷婷殴美综合| 五月天大香蕉av| 久久五月天精品视频| 五月婷婷六月丁香综合| 色五月婷婷影视| www.av骚货| 国产FREESEXVIDEOS性中国| 另类视频在线| 狠狠干狠狠干| 婷婷娌伦网| 天天色激情| 久久婷婷一级片| 丁香婷五月天| 麻豆AV一区二区三区| 淫视馆aV二区一区| 欧美五月婷婷| 婷婷综合玖玖五月| 99色热视频| 91久久久久久| 天天做天天要天天爱| www.色9| 97久久五月丁香婷婷| 这里只有精品免费观看网占| 免费观看全黄做爰的视频| 激情五月图| 天天操婷婷| 亚洲精久久| 99碰碰| 丁香五月婷婷激情网| 人妻aV在线| 五月丁香婷婷啪啪综合| 五月天国产| 狠狠色噜噜狠狠亚洲A∨| 亚洲 五月 婷婷 成人| 五月网站| 丁香五月天激情综合网| 无码少妇高潮喷水A片免费| 亚洲综合色网站| 丁香婷婷激情| 人人爽在线视频综合网| 91精品久久久久久77777| 婷婷色激情网| 亚洲免费婷婷| 亚洲精品va| 九九亚洲视频| 五月6香色婷婷视频| 九九热re99re6在线精品| 久艹大香蕉| 婷婷五月天国产在线播放| 亚洲色婷婷久久99精品91| 狠狠狠五月婷婷六月丁香| 国产午夜精品一区二区三区四区 | 91人久| 婷婷的99视频网站| 99综合自拍| 欧洲亚洲免费视频9| 色欲一区二区三区精品A片| 色你久久| 99热伊人| 午夜理论片最新午夜理论剧| 偷偷与邻居做爰完整视频| 激情丁香五月激情婷婷| 亚洲日比视频| 婷婷色亚洲| WWW·色色色·COM| 日本久久婷婷| 深爱激情中文五月天av| 婷婷五月丁香五月| 五月丁香人人婷婷在线观看| 97碰碰九九视频| 九九亚洲视频| 中文字幕,综合,91| 日韩无码色色| 六月综和久久| 99在线视频。| 五月天天爱| 精品99在线| 五月激情小说| 天天干天天 亚洲| 日本三级色| 久热91精品| 婷婷在线观看五月天在线视频| 久久99国产综合精品免费| 婷婷五月天成人网站| 婷婷五月中文字幕| 综合网色| 五月激情婷婷女| 棕合影院色色| 色九月婷婷丁香| 五月婷婷丁香啪啪| 丁香五月激情五月| 亚洲在线操| 91啪级电影| 综合精品99| 色婷婷丁香| 五月丁香花激情综合网| www.97碰碰com| 日日干夜夜干| 天天爱天天做天天| 五月天婷婷激情网| 日日操无码| www.色九月| 色综合播放| 六月婷婷最新网址| site:pnnrt.com| 欧美婷婷五月天综合| 日韩在线一级| 日本一级淫| 久青操| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 欧美久久婷婷| 小香蕉av| 久操福利| 日日夜夜爽爽| www.五月婷婷久久.com| 色婷婷成人色网| 另类图片天天影视在线观看| 五月天五月婷五月激情网| 色哟哟www| 欧美色男人网站| 久久婷婷五月丁香网| 伊人婷婷激情| 99日本在线| 亚洲美女裸体被操在线观看| 丁香五月电影| 丁香五月亚洲| 琪琪理论片| 精品成人在线观看| 国产jd1024基地手机看国产| 色爱亚洲| 丁香五月在线播放| 日 日干 日日做| 国产激情av| 淫视馆av三区| 五月婷婷99热| 噜噜色com| 五月激情另类| 婷婷五月天黄色| HD久久精品视频| 亚洲九九视频| 色五月色图| 色99欧洲色19| 日韩狠狠色婷婷| 色色五月天丁香婷婷| 五月丁香婷婷狠狠操| 成人精品一区日本无码网| 久久看婷婷| 色播五月| 欧美性爱5月天天天看| 天天人人综合| 色情五月天丁香社区| 久久激情婷婷| av操B网站| 五月婷婷五月天| 丁香五月六月综合激情| 丁香九月婷| 人橾人| 久久久久久久,99精品视频| 国产精品第一国产精品| 丁香五月香蕉| 九九色色网| 久婷婷色| 色五婷婷开心缴| 婷婷色成人| 香蕉综合在线| 一级性感黄色内射视频| 97电影99热| 久久蜜臀婷婷| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 日韩99视频| 五月激情网五月综合网| 深爱女色婷婷丁香五月亚洲图区| 91久久婷婷| 97色97干| 丁香五月网址| www.99精品视频| 99人人操| 人人97操| 五月婷狠狠| 影音先锋男人av资源站| 爱爱网址9| 黄色热99| 日韩精品AV一区二区三区| 婷婷五月天影院| 黄桃AV无码免费一区二区三区| 天天日夜夜拍| 婷婷欧美| 天天插天天插| 精品一二三区久久AAA片| 婷婷久久综合| 99热这里是精品| 裸体做A爰片毛片A片免费| 九月婷婷综合| 亚洲国产精品VA在线看黑人| 欧美69久成人做爰视频| 亚洲精品久久久无码| 少妇人妻丰满做爰XXX| 蜜桃五月天| 免费无码毛片一区二区A片| 疯狂做受XXXX高潮A片| A片试看120分钟做受图片| 丁香五月欧美| 开心五月激情网| 99原创自拍视频在线观看| AV网在线| 五月婷av| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 精品无码人妻一区| A A色色| 再綫Av免费視品| 3p日韩网站视频| 天天摸天天高潮天天爽| 综合深爱五月| 99热这里只有精品免费| 丁香久月| 久久六月天| 久久伊人五月天| 久久久国产精品黄毛片| 丁香婷婷五月份| 色色六月| 91.com男女操| 丁香色五月直播| 最新五月天婷婷影| 五月婷婷开心丁香| 99视频在线观看网址| 久久久久久久97| 六月综合婷婷开心伊人| 欧美顶级少妇做爰HD| 久草丁香婷婷1024| 看逼中文字幕| 色色婷婷五月天| 久久成人性爱| 激情六月婷| 无码色色| www久久久久久久97| 99久久婷婷国产综合| 久久久久久欧美精品se一二三四| 五月四色激情| 色五月婷婷91在线| 九九热自拍| 色情·com| 欧美丁香五月天| 热中文字幕| 99色一| 综合网五月| 高清无码网址| 伊人99久久| 婷婷色在线视频| 五月丁香亭亭成人电影| 久久久久人妻精选| 婷婷操逼| 五月天丁香婷婷视频网址| 丁香六月激情毛片| 五月天激日本色情在线| 六月婷婷私欲| 五月婷婷六月天| 91色久| 超碰五月婷婷五月天| 久久伊人五月天| 激情五月婷婷综合色播小说| 色色色五月婷| 免费无码毛片一区二区A片| 欧美啪啪网| 思思视频精品| 婷婷成人视频| 涩五月婷婷| 久久狠婷婷| 黄色99视频| 久久人妻视步| 91九九| 四射综合网| 五月深爱婷婷| 婷婷五月激情的图片| 亚洲乱码日产精品BD| 色吊丝永久访问网址| 欧美成人热| 狠狠色成人影片| 国产精品18久久久| 久99久热| 深爱五月最新网址| 久久久久久久人妻| 丁香六月欧美| 琪琪理论片| 五月丁香久久久久| 玖玖色综合色| 久久婷婷伊人| 天天爽综合网| 青青草五月天| 日本乱论99| 五月婷婷少妇之| 九九99九九99九九99视频网| 九月丁香久久网| 国产成人+综合亚洲+天堂| 色婷婷综合网站| 九九这里只有精品| 大香蕉婷婷丁香| 久久婷婷丁香六月天| 色婷婷五月在线| 99re青青草| 五月婷婷丁香色吧网| 91成人性爱视频| 97久久久免费福利网址| 色五月婷婷天天操夜夜操| 久机视频这只有精品| 欧美日韩日韩成人| 六月丁香婷婷开心综合基地| 色婷婷丁香| 天堂五月婷婷| 天天谢天天操| 少妇出轨做爰高潮A片| 五月天丁香六月综合| 色综合色| 97操碰98| 成人婷婷深爱综合网| 久久久婷| 六月婷婷九月丁香| 天天干狠狠| 天天做天天爱天天爽| 99精品热视频| 七七色色综合| www. 五月. com| 欧美性爱5月天天天看| 国产成人精品一区二三区熟女在线| 最新AV在线观看| 婷婷五月六月激情| 色五月激情五月| 天天综合色丁香| 天天摸色吧天天摸色吧| 五月综合激情啪啪啪啪啪| 高清无码.com| 日本精品99网站| 五月天激情久久| 色七七九九| 91天堂网综合| 能看的av网站| 九九人人看| 国产午夜一区二区三区| 黄色aa观看aaguochan| 婷婷五月天激情AV影院| 国产乱妇无乱码大黄AA片| 精品婷婷五| 99视频这里有精品| 五月婷婷av| 99热自拍| 大香蕉九九| 激情丁香社区| 碰超99| 91狠狠综合久久久久久| 97碰| 91久久久久久| 99热99在线| 色色a| 天天日夜夜高潮| 久久在线视频免费观看| 久久网站观看免费欧洲国产| 婷婷综合五月天| 爱草视频在线| 五月婷婷中文| 五月婷婷丁香啪啪| 日本一级| 激情九月综合| 五月婷六月| 影音先锋女人av鲁色资源网小说免费| AV九九| 五月激情丁香五月| 五月丁香六月激情| 丁香六月婷婷开心| 激情五月丁香五月| 五月丁香六月激情网| 九久九精品| 色五月婷婷丁香五月| 丁香六月婷婷色播| 久久99视频| www,8050,午夜三级| 青草青草视频2免费观看| www.夜夜騎夜夜狠| 超碰亚洲欧美| 欧美25p| 婷婷五月天激情综合| 岛国AV网| 99re这里只有精品国产99| 99婷婷狠狠成为人免费视频| 天天插天天| 色婷婷另类| 亚洲视频二区| 狠狠操狠狠爱| 影音先锋女人AA鲁色资源| 色天天综合成人网| 亚洲婷婷五月天| 99re这里有精品手机在线| 激情色情五月天| 丁香五月成人av| 丁香五月九九| 色综合久久天天综合网| yazhou seshipin| 教师性爱毛片| 丁香五月天激情免费在线观看AV777| 99福利导航| 色五月综合| 天天干天天 亚洲| 99 福利 导航| www.激情| 激情五月深爱五月观看| 国产99久久久国产精品免费看| 日日夜夜婷婷| 色久女| 人妻丰满精品一区二区A片| www99热| 久久精彩综合视频| 色135综合网| 丁香婷婷性久久| 99热 免费| 日本在线观看aaa 99| 欧洲一区二区| 婷婷激情五月天色| 精品99*| 97色啪| yazhouzonghesese| 丁香六月| 亚洲精品亚洲人成人网| www色中色综合| 天天久久狠狠色综合| 亚洲国产精品VA在线看黑人| 99re热视频这里只精品5| 97碰啪啪| 婷婷五月天综合激情| 亚洲无码影音| 久操大| 天天拍夜夜爽| 久久99精品久久久久子伦| 丁香激情五月天| 天天天天天天操| 国产精品久久久99视频| 婷婷激情综合色五月久久91| 九九人人操| 欧美激情综合色综合色| 999激情视频| 熟女人妻视频| 激情av| 丁香五月网在线观看| 国产亚洲99久久精品| 久久免费少妇高潮99精品| 五月激情啪啪| 久久婷婷五月综合色和| 丁香五月网络网络| 激情婷婷网| 另类少妇人与禽zOZZ0性伦| 狼友超碰| 这里只有视频精品| 91久久久久久久91| 午夜不卡久久精品无码免费| 人妻综合网| 激情婷婷丁香色五月| 天天色视频| 久色| 99综合一区| 欧美群妇大交乱婬网| 开心久久网婷婷| 国产精品久久久久久久久久| 超碰在线视屏| 丁香美女主播视频在线观看| 天天操夜夜爽天天操| 五月激情射| 这里只有精品视频| 欧美日韩成人高清在线| 狠狠色五月| 亚州激情网| 久久婷婷五月综合激情国产| 五月伊人91| 五月综合色| AV性爱在线| 五月天激情小说网| 久久66精品| 亚洲第一色色色色| 丁香五月精品视频| 狠狠99| ww超碰在线|