免费国产精品自在自线-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
返回資訊列表
大香蕉人人人| 2025天天操| 日本综合久久| 狠狠做深爱婷婷久久综合一区| 大香蕉免费9| 天天日天天爽夜夜爽| 五月四色婷婷| 老司机午夜福利视频金瓶梅| 99噜噜| 五月丁香影视| 久热一区| 色播婷婷大香蕉| se色99| 色色五月婷婷| 9久热免费视频99| 五月丁综合在线观看| 大地9中文在线观看免费高清| www.久久99| 全部老头和老太XXXXX| 亚洲色优| 五月丁香激情婷婷| 天天日婷婷| 丁香九月婷| 有码一区二区三区| 99超碰欧美| 激情小说婷婷| 欧美狠狠地| 五月丁香日本片| 91久久九色| 人人插操| 99国产精品久久久久久久久久久| 热思思九九| 国产欧美熟妇另类久久久| 亚洲丁香五月| 五月天成人手机在线视频| 激情五月www| 精品人妻一区二区三区四区不卡在| 九九热av| 亚洲色啪| 日韩操人| 色婷操逼| 综合玖玖性爱免费视频| 五月天婷婷久久| 久久在线人妻| 婷婷丁香综合成人| 99热成人在线| www.夜夜操| 色五月天在线| 久久人妻视步| www色五月| 天天日天天舔天天摸| 久久99网| 大香蕉伊在| 亚洲人成播放网站| 久久天堂色| 婷婷色色欧美综合网| www夜夜操wwwcon| 99在线精品免费视频| 丁香婷婷激情| 久久婷婷五月综合色区| 日本va欧美va国产激情| 国外亚洲成AV人片在线观看| 99在线视频。| 9久久精品| 激情黄色小说五月天| 激情小说色五月| 91操在线视频| 色五月婷婷丁香五月| 激情五月综合网最新| 日本天堂网站99| 国产AV一区二区三区最新精品| 久久99久久99精品免视看婷婷| 99久久综合| 超碰久热| 九九久久9 9在线观看| 五月天久久色| 99碰网站| 天天综合插插| 五月丁香六月玩女人| 婷婷五月激情丁香| 欧美色婷婷| 欧美精品99久久久| 69热91天堂| 99精品综合| 97成人在线视频| 天堂草在线看www| 79色色色色| 夜夜谢天天干| 99综合免费视频| 国产精品18久久久| www.射伊蕉婷婷| 亚洲天堂啪啪| 国产资源91在线| 天天舔天天操| 激情丁香五月| 99热综合在线| 精品51XX| 久久99热这里只频精品6学生| 99热久久这里只有精品| WWW99热| 狠狠狠婷婷五月综合| 亚洲狠狠狠色婷婷综合激情久久久| 久久人妻高清中文| 超碰久热| 久久新| 五月丁香六月色婷| 天天爽天天日| yjzz亚洲国产| 99精品视频免费在线播放| 五月丁香六月情亚洲| 久久婷婷丁香五月宗合| 五月丁香久久久日婷婷久久婷婷日| 这里只有精品9| 色婷婷香蕉| 一点色成人网| 97碰超级人人看| 五月丁香成人| 中文AV网| 无码人妻激情| 五月婷婷婷婷网| 婷婷色五月激情| 中文字幕中文有码在线| 日本色噜| jiZZdr| 五月丁香婷色| 婷婷五月图片小说网| 婷婷九月丁香| 182TV亚洲| 97色伦另类图片小说视频 | 日韩综合网络男女香蕉a片| 久草热视频在线观看| 深夜男女福利刺激影院一区完整| 色99网站| 婷婷人妻激情| 欧美日韩AAA| 久久久噜噜噜久久人妻| 久热九九| 婷婷色五月天在线观看| 亚洲永久免费| 国产综合色婷婷精品久久| 人妻无码视频网| 五月丁香婷婷色色| 色久女| 色噜婷婷| 欧美激情综合五月色丁香| 五月婷婷激情| 337p午夜影院| 五月天激情色色| 99视频精品全部免费看| 99精在线| 成人超碰AV| 狼人久草| 色五月网址| 久久女人九九| www.色九月| 五月婷婷亚洲综合在线| 国产亚洲色婷婷久久99精品91| 99re欧美精品| 色停停五月天| 啪色综合| 人人摸人人搞| 激情黄色小说五月天| 久久草大香蕉| 亚洲瑟瑟精品在线| 激情五月婷婷色色| 色婷婷丁香五月| 综合色视频| 色永久| www.韩日视频| 综合网亚洲| 91VIP在线观看| 五月天成人小说网| 丁香五月区| 久久婷婷91| 久超超碰| 亚洲V国产V欧美V久久久久久| 色五月婷婷少妇人妻| 久久人妻精品| 五月婷婷色激情| 9久热在线视频| 色婷婷五月综合| 欧美日韩成人在线网| 丁香五月情| 午夜免费试看| 雪千夏麻豆| 五月丁香六月婷婷手机无线| 2015超碰| 亚洲爆乳无码精品AAA片蜜桃| 岛国资源网| 久久久全国免费视频| 另类综合国产| 丁香五月天.com| 六月婷婷综合| 99久久精品网| 99久久99九九99九九九| 秋霞AV吧| 色婷婷狠狠爱| 久久一热| 免费视频无码| 久色五月| 99在线观看视频免费| 少妇大叫太大太粗太爽了A片| 天天综合.com| 久99视频在线观看| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 五月婷婷欧洲| 激情99| 天天综合色综合| 五月天伊人久久久久| www久久99| 深爱五月天婷综合| 色色五月天网站| 丁香六月综合激情| 99色精品| 六月丁香婷婷尤物| 开心五月综合激情网| 婷婷综合在线| 91热久久| www.激情五月| 1010日日无码| 激情婷婷五月天伊人在线观看| 中文字幕在线人妻| 激情色五月天| 久久久久人妻| 狠狠爱综合网| 99激情| 丁香五月AV综合激情| 超碰人人99| 免费无码毛片一区二区A片| 色婷婷丁香五月在线观看| 日本久久网| 91亚洲视频| 99爱视频在线观看这里只有精品| 婷婷五月天亚洲综合| 视频这里只有精品16| 99人妻碰碰碰久久久久视| 无码少妇高潮喷水A片免费| 精品人妻伦一二三区久| 欧美va欧美va差| www.夜夜操.con| 色色色色区| 久久人妻熟女一区二区 | 深爱激情综合网| 久久aaa| 婷婷五月大香蕉| 热99色| 国产69久久久欧美黑人A片| 任你操精品免费| site:wpjngj.com| 五月天另类图片区99| 日本网站久久| 97在线视频 欧美| 伊人在线视频| 国产亚洲精品久久久久久久久动漫| AV在线资源| 五月久久婷婷丁香| 99久久99视频| 六月丁香av| 无码yw| 精品五月花| 影音先锋91网站在线观看| 五月丁香六月激情| 六月丁香网| 亚洲激情五月| 亚洲精品字幕| 无码一区二区三区四区五区91c| 操人妻AV| 久久久久久久,99精品视频| 天久综合91综合首页| 中字幕视频在线永久在线观看免费| 丁香九月婷婷| 99热| 玖玖激情网| 91n啪啪| 激情综合网激情五月丁香五月俺也去| 婷婷情色五月| 婷婷五月中文字幕| AV在线中文| 五月天色综合| mmm1717.6dbm人人爱人人操| 五月停停丁香| 玖玖五月丁香| 久久ww| 国产午夜伦鲁鲁| 亚洲春色奇米影视| 九九九九大香蕉| 91丨九色丨熟女丰满| 久热91精品| 欧美天堂久久| 97色色网| 激情五月最新网址| 婷婷黄色| 色欲资源网| 丁香五月伊人| 色播五月婷婷| 国产三级在线播放| 丁香5月激情网| 日本va网站| 丁香五月骚喷水视频| 久热这里只有精品视频6| 五月丁香婷婷三级| 婷婷五月天堂| 色婷婷啪啪| 一区二区免费看| 丁香五月天在线观看视频| 日本色婷婷综合| 99热国产在线| 色色五月天婷婷| 婷婷五月天亚洲综合网| 五月天操逼网| 欧美搡BBBBB摔BBBBB| 色婷婷精| 婷婷亚洲激情在线观看视频| 色五月亚洲| 99re这里只有| 先锋资源91| 99超在线| 另类综合色| 亚洲无码99| WWW久久99久久99久久| 五月婷久久草| 婷婷五月色丁香在线看| 永久精品| 婷婷久久亚洲| www.婷婷五月天| 五月天综合久久| 精品国产a| 久去色色| 婷婷婷婷婷开心无码播放| 91人妻人人操人人爽| 五月情丁香色| 午夜激情综合| 丁香五月综合无码趴趴| 亚洲VA在线| 婷婷亚洲影院| 丁香婷婷超碰 | 97人人干人人操| 天天色中文字幕女优AV| 涩涩涩,com| 99超级碰碰| 热99视频精品在线| 开心婷婷五| 婷婷社区五月天| 夜精品无码A片一区二区蜜桃| 色五月婷婷1| 少妇口诉沐足视频播放器网址| 五月天婷婷网站888| 欧美综合激情| 天天操天天谢| 国产又爽又猛又粗的视频A片| 色婷亚洲五月丁香| 综合噜噜| 久久久久五月丁香| 99久久这里只有精品免费官网| 操日视频| 婷婷射图五月天| 精品成人无码A片观看香草视频| 啊v视频在线观看| 99在线精品免费视频| 极品少妇XXXX精品少妇偷拍| 婷婷综合网在线| 成人va在线播放| 人人妖人人97| 69色色视频| 成人美女网| 丁香六月婷婷五月天| 99操逼| 五月婷网| 久操人妻| 色五月婷婷婷婷婷婷婷婷婷婷| 日韩另类在线观看| 色婷婷大香蕉| 色99网| 五月伊人网| av在线激情| 91.com男女操| 爱射综合| 国产激情综合| 操人妻90p| www激情| 欧美va视频| 玖玖爱综合网| 久久五月天大美女| 国产精品人成A片一区二区| 国产夫妻操逼内射视频| 婷婷丁香日韩五月| 日本在线99| 97碰免费视频在线| 日本色色网| 丁香九月综合| 色九九中文字幕| 欧美日本va| 日韩在线一级| 五月丁香在线| 婷婷开心激情综合五月天| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 五月天社区婷婷| 草做免费在线观看| 综合色吧| 青草青草视频2免费观看| 伊人大香五月天| 婷婷伊人激情婷婷| 婷婷五月天激情综合深爱| ..真实国产乱子伦毛片| 丁香六月婷婷综合啪啪| 精品乱码久久久久| 五月婷婷亞洲中文| 97视频91| 淫视馆av三区| 久久激情五月| 开心五月婷婷99| 香蕉99网| 99久视频| 天天干一干| 丁香五月婷婷狠狠色| 五月天精品| 丁香六月色婷婷| 亚洲AV成人在线| 九九热在线99| 亚洲热久久| AAA久久久| 精品无码久久久久久久久| 日韩操| 亚洲无码成人网| 五月丁香婷婷啪啪| 丁香婷婷五月色成人网站| 色黑鬼导航| 99se丁香| 色婷婷丁香五月| 月婷婷婷婷五月| 亚洲一个色| 久久婷婷大香蕉| 亚洲九九视频| 丁香五月影视| www.99热这里只有精品| 丁香婷婷少妇| 日韩成人精品中文字幕| www.久9| AA片在线观看视频在线播放| 免费黄色视频网址| 五月婷婷激情综合av| WWW.桔色成人.COM入口| 色综合色色| 亚洲成人中文字幕| 婷婷丁香综合网| 色爱亚洲| 在线色色| 欧美综合123区| 成人五月天。COM| 九九视频在线观看| 亚洲啪视频| www.久热| 九九久热| 五月婷婷网站| 天天干天天爽天天爽| 丁香婷婷精品视频| 91超级碰在线视频| 超碰成人av| 丁香五月 激情文学| 欧美性猛交99久久久久99按摩| AAA久久| 久久这里有精品| 九九色99| 日日噜狠狠色综合久久| 开心五月婷婷在线视频免费观看| 亚州激情在线视频| 激情五月综合六月丁香婷婷狠狠干| 亚洲一区二区无遮挡A片| 人人操人人爱丁香五月| 天天色天天色天天色天天色天天色天天色| 丁香婷婷基地| 91人妻人人操人人爽| 五月丁香婷婷综合网色欲| 丁香五月婷婷啪啪视频| 91传媒无码人妻精| 大香蕉娱乐| 五月丁香 狠狠爱| 久久久一级AAA| 香蕉人妻AV久久久久天天| 人妻久久久| 大香蕉人妻| 色五月综合网| 天海翼中文字幕高| 91久久九| 26uuu偷拍亚洲欧洲综合| 久久九九九九| 超碰在线精品| 桃色Av色哟哟| 五月婷在线色视频| 97色色色色色| 狠狠爱激情网| A久久| 人与禽A片啪啪| 久久婷婷丁香花综合网| 一本狠婷婷综合| 五月丁香激情综合网| 亚洲视频伍月婷婷| 97碰久久| 欧美三级巜人妻互换| 碰97 久| 久久婷婷五月天激情新地址| 美女伊人久久| 久久激情五月| 青草视频在线蜜臀| 亚洲成人人人操| 中文在线成人| 99啪啪| 丁香五月天久久| 久久精品天| 亚洲综合婷婷五月| caopeng97日韩| 丁香六月亭亭久久综合| 91美女被操| 亚洲妇女熟BBW| 成人 九九九九| 五月丁香六月婷婷啪啪| 五月婷AV| 久久五月天婷婷| 青柠影视免费高清电视剧| 色综合久久88色综合天天| 五月的色婷婷高潮| 粉嫩AV久久一区二区三区| 超碰免费电影| 丁香五月天偷拍| 天天爽日日爽夜夜爽| 996er热| 黄色录像网点| 天天爱天天做天天日| 99er这里只有精品视频| 午夜色丁香| 婷婷伊人綜合中文字幕| 国产原创视频91九色| 亚洲午夜AV| 天天爽天天爽夜夜爽| 丁香六月婷婷色播| 激情 久久 婷婷| 国产AV不卡福利| 激情五月婷婷欧美极品| 久久人人九九| 婷婷综合在线视频| 1995年关宝慧版蜘蛛女| 中文字幕婷婷五月天| 人人做人人看人人摸| 开心激情久久久久久久| 久久久com| 日韩aⅴ视频| 婷婷五月天视| 97久久人人操| 97在线干| 大陆肏屄视频| 色婷婷六月| 亚洲有码在线视频| 亚洲bt丁香五月天婷婷激情小说| 婷婷五月花| 精品激情| 激情五月天网站| 色五月丁香91| 在线色五月婷婷| 五月丁香成人网| 美欧成人视频| 丁香五月在线观看| 色九月丁香婷婷蜜桃在线观看| 五月天婷婷基地丁香| 婷婷色操| 九月婷婷激情| 五月天色婷婷综合| 久久一品区| 天天射色五月天| yazhoujiqingav| 情欲综合网| 婷婷五月天影院| 日本色色网站| 天天爽天天爽| 五月停停色| 九九这里有精品| 日韩婷久| 亚洲天堂aaa| 日韩一级淫乱片一区二区三区| 婷婷五月精品在线| 综合色、色综合| 国产免费性爱| 另类小说五月天激情| 国外亚洲成AV人片在线观看| XXXX岛国| 国产伦亲子伦亲子视频观看| 激情婷婷狠狠干| 成人精品视频99在线观看免费| 丁香丁香激情网| 久久亚洲婷婷| 人人干AV| 月丁香久久久| 激情 婷婷| 婷婷欧美激情综合| 超碰成人免费| 成人久久天天x资源站| 国产69久久久欧美黑人A片| 婷婷丁香一月| 丁香五月激情啪啪啪啪| 综合伊人久久| 影音先锋xfplay资源男人网| 午夜无码熟熟妇丰满人妻| 亚洲一区先锋影音| 91干婷婷| 色婷婷激情四射视频| 999婷婷综合| 成片免费播放| 五月丁香婷婷成人综合网| 婷婷丁香综合网| 亚州操人在线视频| 在线观看av网站| 26uuu国产| 精品九九视频| 亚洲无码yw| av人人干| 激情五月色在线播放| 色婷婷狠狠久久YY| 大香网伊人久久综合| 99亚洲大片精品永久在线观看| 99碰碰碰| 丁香五月天色婷婷| 丁香婷在线| 日本99在线| 精品夜夜澡人妻无码AV| 九九热精品视频| 婷婷五月天堂网| 丁香综合日产精品久久| 久久五月天视频| av在线超清中文| 丁香伊人五月色婷婷五十路| 91爱操| 日日操日日干| 色色婷婷丁香| 五月丁香日逼| 好好日激情五月天| 97婷婷狠狠久久综合9色| 狠狠狠狠狠狠| 五月婷婷丁香| 亚洲五月情| 久久婷婷综合网| 99九九这里有免费视频| 天天综合色| 亚洲另类日本| 五月丁香六月激情综合在线| 久操福利| 婷婷五月天丁香久久| 成人看片网站| 亚洲激情综合网| 天天天操天天天日| 深爱五月天天| 熟女色专区| 99爱爱网| 一区二区你懂的| 人妻啪啪啪| 欧洲激情精品婷婷| 激情五月丁香激情综合网| 超碰在线成人| 五月天色软件| 综合aV在线| 色五月婷婷基地| 亚洲99在线| 婷婷亚洲色| 丁香五月婷婷呀| 97久久视频| 秋霞AV淫| 五月丁香色婷基地综合久久| 99在线免费视频播放| 天天日天天舔| 伊人婷婷大香蕉| 99热97| 五月桃花网综合| 婷婷五月天av| 日韩啪啪网| 亚洲综合色色色| www.久久久.com| 日本欧美成人片AAAA| 婷婷色情五月| 色婷婷视频综合| 天天操夜夜玩!| 丁香五月六月久久综合 | 丁香五月婷婷色| 99无码精品| 欧美激情五月天| 国产婷婷五月色情综合| 婷婷五月天在线综合| 婷婷色Av| 丁香六月婷婷综合在线| 五月网在线| 激情五月深爱婷婷| 久久精热| 99玖玖在线视频| 婷久久| 婷婷在线免费| 欧美性爱五月天| 国产成人片| 午夜不卡久久精品无码免费| 婷婷丁香综合网| 婷婷五月综合基地| 五月丁香六月婷婷的女人| www综合久久| 欧美性久| 色婷五月天| 97干在线| 五月丁香直播| 色婷五月天综合网| 久久婷丁香五月| 91尤物九色在线| 97色色色色| 激情九九综合网| 操逼棍操逼| 另类激情综合| 色婷婷久久| 99在线精品视频| av婷婷六月丁香社区在线观看| 牛牛澡牛牛爽| 日本色色网站| 99噜噜噜在线播放| 武汉美女啪啪视频免费一级片 | 免费播放片大片| 久久婷婷综合五月天| 操骚货在线| 人人人操 超碰| 日本性视频| 欧美VA视频| 天天情天天狠天天透| 激情纯色婷婷五月天在线不卡视频| 五月婷婷欧美激情| 996er热| 国自产拍偷拍精品啪啪一区二区 | 天天色五月婷婷91久久久久久久| 在线观看免费狠狠色丁香香综合| 美女丁香五月天| www.丁香六月婷婷久久天堂影院.con| 国外亚洲成AV人片在线观看| 激情综合在线播放| 久久视频这里都是精品| 久狠日av| 天天综合网站| 极品嫩草| 久久久久久天天日天天爱| 六月丁香久久| 婷婷五月天AV| 嫩草视频观看| 成人婷婷深爱综合网| 激情婷婷五月天| 激情九月丁香婷婷| 色优久久| 色综合另类| 五月丁小婷婷激情四射| 五月婷丁香花| 亚洲九九视频| 红桃91人妻爽人妻爽| 婷婷激情丁香五月婷婷激情丁香五月婷婷| 久久九九99亚洲国产久精综合| 亚洲色婷婷| 丁香综合久久| 丁香五月婷婷色五月| 成人在线不卡| 亚洲激情五月| 激情五月四色| 熟女人妻视频| 思思热久久阴99| 五月色网| 亚洲人妻Av| 亚洲色爱综合| 五月丁香花激情啪啪网| 99热这里只有精品50| 最近中文字幕大全免费版在线 | 亚洲V国产V欧美V久久久久久| 99色热视频| 五月婷激情| 骚货艹网站视频| 日日夜夜天天| 五月丁香婷婷啪啪| 婷婷五月天成人网| 97视频.干com| 五月丁香六月综合激情| 夜色爱爱亚洲| 亚洲丁香五月| 天天操天天国产三级片处女学生妹| 五月天婷婷青青| 综合色色网| 欧美成人无码一区二区三区| 国产无套精品一区二区| 五月丁香婷婷基地| 五月成人网站| 婷婷第六色| 丁香激情网| 九九99视频精品| 9久精品| 五月婷成人网| 亚洲字幕AV一区二区三区四区| 99热这里在线精品| 国产人妻人伦精品一区二区| 色婷婷五月天天天做| 热91久| 久久九九99亚洲国产久精综合| 亚洲乱码日产精品BD| 99精品在线下载| 国产精女同一区二区三区久| m色激情网| 亚洲婷婷综合视频| 综合成人小说婷婷| 7超碰自拍| 久久这里只有精品热在99| 久热这里只有精品6官网亚洲| 婷婷五月天小说| 丁香五月激情六月综合| 国产亚洲精品久久久久久久久动漫| 亚洲亚洲人成综合网络| 五月丁香狠狠| 成人网站av免费网站推荐| 欧美五月婷婷| 五月噜噜噜色综合| 亚洲岛国电影| 五月丁香婷婷婷激情爱爱| 五月丁香激情综合网| 99免费在线视频| 六月丁香婷婷天堂| 日本黄色精品| 天天综合在线网| 日日干综合| 热99.com婷婷| 婷婷五月激情欧美| 色五月天成人在线| 美国不卡视频| 国产日比| 丁香五月综合在线观看| 综合久久五月天| 亚洲乱码日产精品BD| 热99在线| 丁香婷婷人妻| 中文字幕在线人妻| 婷婷丁香五月亚洲| 激情五月天无人视频在线| 97视频久久| 色网五月婷婷| 变态另类9| 丁香五月98| 日本久久婷婷| 91人人人人人| 欧美色色色色色| 99国产小视频免费观看| 一级性感毛片| 国产乱人偷精品人妻A片| 五月丁香激情综合网| 精品婷婷五月天| 激情婷婷五月少妇| 99在线精品免费视频| 久色激情| 亚洲久久婷婷| 丁香五月天信号| 久久九九九九| 第九色区av天堂| 亚洲不卡欧洲| 337久久| 26uuu成人网| 婷婷情爱五月天6| 天天摸天天爽| 九九Av| 国产在线自| 婷婷最新地址| www.99在线| 99色视频| 精品人妻久久久久| 色。 婷婷婷| 99er日韩| 99热丁香| 色色色色色五月| 成人超碰网| 96丁香六月婷婷蜜桃综合久久| 久久五月天色婷婷| 激情六月婷| 五月丁香婷婷婷婷综合网| 日本三级韩三级99久久| 丁香五月婷婷操逼| 综合aV在线| www.91色| 色久综合| 99re思思热久久| 丁香五月香蕉| 伊人五月天| 亚洲色情网站| 五月深爱激情网| ji'qing'luan'ren'lun| 美臀自射自家人妻| 永久的网站AAAA | 色五月激情网| 91狠狠色色丁香婷婷综合久久| 丁香五月激情在线| av性爱在线| 涩婷婷五月天| 国产乱妇乱子伦| 九九久久这里只有精品XB| 人妻videos人妻高清| 亚洲色9| 五月婷婷综合热| 99re这里只有精品99| 99色激| 狠狠综合| 久久久久网站| 婷婷欧美综合| 97视频91| 99免费热在线精品| 99久久久国产大片| wuyuedingxiang99| 日韩无码一区二区三区四区| 色情丁香五月天| 五月视频日本免费观看| 国产Va视频| 激情五月激情综合网一级丸片| 综合婷婷| www99热| 婷婷五月激情黄色| 亚洲黄网在线| 2015超碰| 婷婷九九| 丁香五月六月久久综合 | 天天爱天天做天天爽| 婷婷五月丁香五月天| 色婷婷裸体色性在线| 91精品综合久久久久久五月丁香| 亚洲操操操| www.精品99| 婷婷在线精品| 怎么样可以看免费的一级av| 亚洲第一成人AV| 五月婷婷七月丁香| 色婷婷亚洲婷婷| 色婷婷色久综| WWW,五月| 99热这里全是精品| 亚洲妇女熟BBW| 色婷婷影音| 婷婷天堂综合| 丁香五月在线视频| 婷婷狠狠色| 久月婷婷| 玖玖婷婷免费| 婷婷五月天丁香激情| 99色在线视频观看| 99.色| 丁香九月婷婷综合| 伊人综合网站| 吊色AV男人的天堂| 婷婷五月丁香综合| 91se精品国产| 婷婷五月情色| 亚洲色激情| 激情综合网址| 国产精品涩涩涩视频网站| 久久怡红院| 91久久九| 久热成人| 丁香欧美| 一区视频网站| 久久久久久久久月丁| 五月天三级久久| 99精品视频免费观看,| 亚洲色五月| 在线中文AV| 婷婷丁香九月| 五月婷婷激情综合视频| 亚洲午夜av| Www.se.久久| 国产韩日亚洲美州欧亚综合在线| 99热九九热| 9久精品| 色婷婷色情| 丁香五月天精品| 原琪琪色影院| 色欲久久99精品久久久久久| 五月激情五月丁香| 婷婷五月影院| 五月天丁香婷婷视频网址| 五月天激情图片| 日韩六十路91性交电影| 99热精品中文字幕| www,色综合| 人妻精品久久久久久久| 夜夜躁爽日日| 亚洲天堂啪啪| 可以免费看AV网站| 欧美三级巜人妻互换| 中文字幕AV在线播放| 噜噜视频| 五月停视频天堂| 这里只有精品视频国产| 日韩超碰在线| 久久国产高清| 99.色| 精品久久久久成人码免费动漫| 99九色视频在线观看| 五月天丁香婷婷社区| 665566 无码| 天天干天天干天天干天天干天天干天天干天天| 色99在线视频| 性生活视频98791| 激情丁香图片| 99热香港| 99秘 在线| 免费97碰碰| 久草a片| 午夜丁香五月天综合| 亚洲激情四射色| 去干网av| 99色在线| 五月婷婷三级| 久久色情| AV成人在线播放| 色99色| 五月婷婷色色网址| 99热在线只有精品| 五月丁香婷久久| 人人草人人视| 丁香综合日产精品久久| 婷婷开心激情综合五月天| 国产亚洲99久久精品| 夜夜躁狠狠| 99热这里只有精品66| www.激情.com.| 超碰AV在线| 六月婷婷深深爱| 亚洲欧洲另类| 天堂爱爱| 日韩无码AV电影网站| 小视频一区| 久久天堂女人| 婷婷五月六| 3p久久| 99热大香蕉| 欧美日本综合网| 人人摸人人干| 婷婷五月天亚洲综合| 色婷婷五月综合色婷婷| 欧美日韩成人在线网| 99riAV国产精品视频| 五月婷婷六月丁香在线| 色色色综合视频| 这里只有精品96| 99亚洲色色| 婷婷va| 九九99免费视频| 99er免费在线观看| 男人操女人高潮91视频| 噜噜视频| 玖玖色综合网| 乱精品一区字幕二区| 婷婷六月天亚州| 三级毛片7979| 天天日,天天干,天天操| 天天天添天天操| 日逼影音先锋AV男人资源站| 色婷婷www| 五月婷婷激情综合| 狠狠插.com| 久久天堂网| 五月婷婷五月丁香综合| 色色97丁香婷婷五月天| 九热免费视频| 综合在线丁香五月| 91九色无码内射| 精品久久99码| 婷婷五月婷婷五月| 久久9久久| 欧美激情综合| 色五月av| 狠狠色五月激情| 久久婷婷资源| 色99在线观看| 99热精品中文字幕| 亚洲一个色| 激情玖玖综合网| 99热激情| 婷婷久久综合久色| 无码四色色色| 十二区无码| 五月天婷婷综合网| 日日夜夜爽| 久久丁香婷婷五月天| 亚洲超碰中文字幕| 九九在线精品| 俺去也五月| 丁香久久AV| 久婷婷婷| 1024欧美看片| 婷婷综合视频| 精品99视频| 色色欧美色色| 五月天激情综合在线| 免费成人网在线观看| 丁香六月婷婷综合| ww久久| 99九九精品| 五月丁香婷婷五月色| 久热婷婷| 97热超碰| 久久九九激情五月天 | 成人做爰高潮A片免费视频| 欧美色99| 播五月丁香六月| 丁香五月综合高清在线| 欧美日韩成人在线网站| 五月婷婷啪啪啪啪| 婷婷综合五月| 99在线视频播放| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 亚洲99激情| 婷婷情色五月天| av在线不卡播放| 欧美午夜乱妇午夜福利| 99热网站| 婷婷色播婷婷| 婷婷丁香五月色| 人人舔人人| 中国AV性爱观看| 亚洲五月婷婷在线| 色综合激情| 草一草avb| 日韩成人影片在线观看| 99精品视频免费观看近期发布| 人人操AV| 五月天综合色| 久久综合人妻| 婷婷精品在线| 久热综合| 婷婷色综合| 超碰人人干| 99视频只有精品| 九九热视频精品| 天干夜夜操| 99热这里只有精品 搜| 久久96热| 二人电影免费版在线观看| 天天摸天天肏| 激情色色| 天天看A片| 99成人网一区| 久久久五月天| 六月婷婷之青青草| 欧美天天综合网站上去吧| 婷婷激情五月天激情在线| anquye伊人| 夜夜躁狠狠| 一二三区视频韩国| 色播五月丁香综合| 五月丁香狠狠地噜噜噜噜| 婷婷五月天综合色| 久狠日av| 丁香五月天社区| 欧美 日韩 成人| 狠狠色狠狠| 99精品视频免费观看| 99视频只有精品| 99ER热精品视频| AAA级久久久精品| 中文超碰视在线| 中文字幕乱码亚洲精品一区| 九九精品9| 亚洲午夜Av| 超碰在线国产9| 他改变了拜占庭| 九九99免费视频| 久久99热这里| 狠色色狠网| 五月婷婷69| 伊人久久艹| 婷婷综合| 狠狠爱婷婷五月天| 色热久| 亭亭丁香aV| 婷婷在线免费| 婷婷五亚洲| 激情久久久久| 9久热精品在线视频| 五月丁香在线观看国产| 久久99激情| 婷婷成人综合免费视频| 色婷婷丁香中文在线播放| 五月天婷婷色| 九九热只有精品| 日韩青青| 超碰免费大香蕉| 色婷婷五月六月丁香综合视频| 一级二级香港秋霞欧美欧美秋霞| 亚洲色五月婷婷| 色婷婷五月在线| 国产无遮挡又黄又爽免费网站| 国产AV网页| 色综合久久天天综合网| 激情欧美婷五月| 天天做天天爽| 少妇人妻偷人精品无码视频新浪| 婷婷五月天av小说| 99热精品在线观看| www,av好吊操| 久久99久久99久久99人受| 日韩中出视频| 国产熟女一区二区三区五月婷| 99精品久久久久久久婷婷久久| 超碰9| 欧美三级巜人妻互换| 久久久久亚洲AV成人无码电影| 嫩草综合网| 97资源碰碰| www.激情五月天.com| www.天天色综合| 五月婷视频| 久久六月婷婷| 婷婷久热| 久久机热/这里只有精品| 99精品在线观看| 美腿丝袜AV天堂网| 欧美综合在线五月天色婷婷| 国产黄色av| 婷婷色狠狠| 日操| 噜噜狠狠色综无码久久合欧美| 中文字幕按摩做爰| 九九精品自拍| 激情五月,激情综合网| 国外亚洲成AV人片在线观看| 91婷婷色| 五月婷婷真爱激情网| 九九无码AV| 五月份婷婷| 碰碰女| 国产黄色一级片| 激情五月婷婷综合视频| 婷婷丁香五月综合| 五月丁香香蕉| 国产精品VA在线| 99福利视频导航| 玖玖在线资源视频| 亚洲中文字幕av| 超级黄色片| 综合激情五月天六月婷免费视频| 午夜精品久久久久久久爽| 另类色视频| 91狠狠色色丁香婷婷综合久久| 亚洲欧洲小视频9| 激情婷婷综合五月少妇| 午夜不卡久久精品无码免费| 中文网AV| 思思热这里只有精品| 欧美色色色色色色色色色色| www夜夜| 日韩精品一区二区刘| 丁香五月综合在线播放| 国产国产乱老熟女视频网站97| 婷婷久久五月| 久久性爱视频网站| 大香蕉婷婷| 日日操日日撸| 亚洲乱码在线观看| 欧美综合五月丁香六月婷| 婷婷五月色综合| 亚洲美女网Va| 伊人网啪啪| 人人九色| 国产激情在线| 超级碰碰91| 色激情综合| 久久98| 99热欧| 97碰碰九九视频| 婷婷五月伦理|